3110006494刘郁阳数据库课程设计.doc
课程设计论文课程名称 数据库课程设计 题目名称_图书馆藏书管理系统_目录1.引言52.需求分析52.1数据需求52.2功能需求52.3功能层次图53.相关技术64.概念结构设计64.1数据实体描述与分ER图64.2整体ER图85.逻辑结构设计105.1数据库逻辑结构设计105.2完整性设计105.3具体逻辑模型设计:106.数据库的实施116.1创立数据库与数据库对象116.2用户界面的设计和实现、应用程序编码167.系统功能测试237.1登录界面测试237.2数据操作248.总结261.引言图书借阅管理系统是智能办公系统的重要组成局部。目前,图书借阅管理系统正以方便、快捷的优点慢慢渗入人们的生活,将传统的图书管理方式彻底的解脱出来,提高管理效率,减轻管理人员的工作量,减小出错概率,使读者可以花更多的时间在选择图书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。采用数据库技术生成的图书管理系统将会极大的方便借阅者并简化图书馆管理人员的劳动,使管理人员从繁忙、复杂的工作进入到一个简单、高效的工作中。基于这个问题,开发了图书管理系统。系统实现了借还书的方便性、高效性、有效性和与时性。2.需求分析2.1数据需求有图书信息,信息,读者信息和借阅信息四大局部,其中图书信息包括图书号、书名、类型、名、数量、位置、作者;信息包括名、 、地址、 、联系人;读者信息包括学号、XX、班级、 、学院;借阅信息包括图书号、学号、结束日期、还书日期。2.2功能需求1在读者信息管理局部,可以查询读者信息,可以对读者信息进行添加、修改与删除的操作; 2在书籍信息管理局部,可以浏览书籍信息,可以对书籍信息进行维护,包括添加、修改与删除的操作; 3在借阅信息管理局部,可以浏览借阅信息,可以对借阅信息进行可修改维护与操作。2.3功能层次图图书藏书管理系统学生信息管理书籍管理借阅者信息记录借还书增加还书统计删除查找借书3.相关技术本次课程设计使用Microsoft SQL Server 2021和Microsoft Visual Studio 2021中的Visual C#进行开发实验工作。首先在SQL Server中建立好数据库并参加数据,然后使用Visual C#的窗体应用程序进行数据库的连接,完成各种操作。4.概念结构设计4.1数据实体描述与分ER图4.1.1图书信息实体图书信息图书号书名类型作者名位置数量4.1.2实体信息名 联系人 地址4.1.3借阅者信息实体借阅者信息学号XX学院 班级4.1.4借还登记信息实体借还登记信息图书号结束日期学号还书日期4.2整体ER图出版设书籍借阅者出版借阅名 地址联系人图书号社名书名类型数量位置作者结束日期还书日期学号XX班级学院 1NNM5.逻辑结构设计5.1数据库逻辑结构设计为了完成需求分析中确定的根本功能和概念设计中模块的划分,通过基于3NF的数据库设计方法通过分析,各数据表已达第三范式,构造了4张根本表。此外,在根本表上定义了一些约束条件,包括根本表上数据类型和数据长度的限制以与是否允许为空或表内是否取值唯一的限定。5.2完整性设计完整性包括实体完整性,参照完整性,用户定义完整性。实体完整性是系统自行定义的,规定各关系的关键字不能为空值而且不重复。参照完整性属于表间规那么。(1)定义表:名是主关键字, 、地址、 、联系人不允许为空。(2)定义读者表:其中学号为主关键字,属性还包括XX、班级、 、学院。(3)定义借还书时间表:书号以与学号是主关键字。(4)定义现有图书表:书号是主关键字,类型、作者、位置不允许为空,名列为外部关键字。5.3具体逻辑模型设计:借阅者信息表字段名字段类型长度主外键约束约束条件学号字符型10主键唯一,不能为空XX字符型20不能为空班级字符型20不能为空 字符型15唯一,不能为空学院字符型60不能为空表字段名字段类型长度主外键约束约束条件名字符型20主键不能为空 字符型15唯一,不能为空地址字符型60不能为空 字符型20不能为空联系人字符型20不能为空图书信息表字段名字段类型长度主外键约束约束条件图书号字符型10主键前2位是英文字母,后5位是数字书名字符型50不能为空类型字符型20不能为空名字符型20外键参照名数量字符型5大于等于1,小于等于1000位置字符型50前1位是英文字母,后3位是数字作者字符型50不能为空借还书登记表字段名称字段类型长度是否主键约束条件图书号字符型10复合主键参照图书信息表学号字符型10复合主键参照读书信息表结束日期Smalldatetime外键不能为空还书时间Smalldatetime外键不能为空6.数据库的实施6.1创立数据库与数据库对象1数据库的创立:CREATEDATABASE图书馆藏书管理系统ON(NAME=图书馆藏书管理系统,FILENAME='F:X图书馆藏书管理系统.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=students_log,FILENAME='F:X图书馆藏书管理系统.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)2四个表的建立:USE图书馆藏书管理系统GOcreatetable借阅者信息表(学号char(10)primarykeynotnull,XXchar(20)notnull,班级char(20)notnull,char(15)uniquenotnull,学院char(60)notnull)USE图书馆藏书管理系统GOcreatetable表(名char(20)primarykeynotnull,char(15)uniquenotnull,联系人char(20)notnull,char(20)notnull,地址char(60)notnull)USE图书馆藏书管理系统GOcreatetable图书信息表(图书号char(10)primarykeycheck (图书号like'A-ZA-Z0-90-90-90-90-9'),书名char(50)notnull,类型char(20)notnull,名char(20)foreignkeyreferences表(名)ondeletecascadeonupdatecascade,数量char(20)check(数量>=1 and数量<=1000)notnull,位置char(50)check(位置like'A-Z0-90-90-9')notnull,作者char (50)notnull)USE图书馆藏书管理系统GOcreatetable借还书登记表(图书号char(10)foreignkeyreferences图书信息表(图书号)ondeletecascadeonupdatecascade,学号char(10)foreignkeyreferences借阅者信息表(学号)ondeletecascadeonupdatecascade,结束日期smalldatetimenotnull,还书日期smalldatetimenotnull,primarykey (图书号,学号)3参加数据use图书馆藏书管理系统goinsertinto表values ('清华大学','01088888888','姚老师','100025','')insertinto表values ('高等教育','01077777777','李老师','100025','')insertinto表values ('长江文艺','02711111111','谭老师','403014','武汉')insertinto表values ('XX教育','02299999999','陈老师','300407','XX')insertinto表values ('机械工业','01044444444','庄老师','100025','')insertinto表values ('中央编译','01055555555','孙老师','100025','背景')insertinto表values ('XX外语','02155555555','华老师','200001','XX')insertinto表values ('广州','02066666666','杨老师','515100','广州')insertinto表values ('世界图书','02077777777','吴老师','515100','广州')use图书馆藏书管理系统goinsertinto图书信息表values ('AB10001','数据库应用与设计','信息管理','清华大学','20','S101','崔嵬')insertinto图书信息表values ('AB10002','数码单反教程','摄影','高等教育','20','S102','蔡卡花')insertinto图书信息表values ('AB10003','希腊神话故事','文艺','长江文艺','20','X101','施瓦步')insertinto图书信息表values ('AB10004','时间简史','科技','XX教育','20','S103','霍金')insertinto图书信息表values ('AB10005','供给链管理','管理','机械工业','20','G101','王施球')insertinto图书信息表values ('AB10006','沉思录','哲学','中央编译','20','C101','奥勒流')insertinto图书信息表values ('AB10007','大学英语','外语','XX外语','20','D101','童佳')insertinto图书信息表values ('AB10008','老外看广州年','纪实','广州','20','L101','王晓玲')insertinto图书信息表values ('AB10009','托业单词','外语','世界图书','20','T101','金莉')insertinto图书信息表values ('AB10010','软件工程导论','计算机','清华大学','20','R101','张海潘')insertinto图书信息表values ('AB10011','统计学原理','管理','高等教育','20','T101','罗威')insertinto图书信息表values ('AB10012','广州一日游','旅游','广州','20','G101','姚铭浩')insertinto图书信息表values ('AB10013','我和春天有个约会','文学','世界图书','20','W101','张志民')insertinto图书信息表values ('AB10014','数据库系统设计','计算机','清华大学','20','S104','李春')use图书馆藏书管理系统goinsertinto借阅者信息表values ('3110006503','苏建龙','网络工程班','计算机学院')insertinto借阅者信息表values ('3110006504','王国泰','网络工程班','计算机学院')insertinto借阅者信息表values ('3110006505','吴林骏','网络工程班','计算机学院')insertinto借阅者信息表values ('3110006506','吴潇博','网络工程班','计算机学院')use图书馆藏书管理系统goinsertinto借还书登记表values ('AB10001','3110006503','2021-6-11','2021-6-10')insertinto借还书登记表values ('AB10002','3110006504','2021-6-11','2021-6-10')insertinto借还书登记表values ('AB10003','3110006505','2021-6-11','2021-6-10')insertinto借还书登记表values ('AB10004','3110006506','2021-6-11','2021-6-10')4数据库关系图:6.2用户界面的设计和实现、应用程序编码1登录界面using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace RADDataDemopublicpartialclassForm7 : Form public Form7() InitializeComponent(); privatevoid Form7_Load(object sender, EventArgs e) privatevoid button1_Click(object sender, EventArgs e) string name = "admin"string pass = "0000"if (name = textBox1.Text.Trim() && pass = textBox2.Text.Trim() Form2 form = newForm2(); form.Show();this.Hide(); else MessageBox.Show("你输入的用户名或密码不正确!");return; privatevoid button2_Click(object sender, EventArgs e) Application.Exit(); 2选择要查看的表using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace RADDataDemopublicpartialclassForm2 : Form public Form2() InitializeComponent(); privatevoid button1_Click(object sender, EventArgs e) Form4 A = newForm4(); A.Show(); privatevoid button2_Click(object sender, EventArgs e) Form5 A = newForm5(); A.Show(); privatevoid button3_Click(object sender, EventArgs e) Form1 A = newForm1(); A.Show(); privatevoid button4_Click(object sender, EventArgs e) Form3 A = newForm3(); A.Show(); privatevoid Form2_Load(object sender, EventArgs e) privatevoid button5_Click(object sender, EventArgs e) Application.Exit(); 3进入某个表(表为例)using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace RADDataDemopublicpartialclassForm4 : Form public Form4() InitializeComponent(); privatevoid表BindingNavigatorSaveItem_Click(object sender, EventArgs e) this.Validate();this.表BindingSource.EndEdit();this.tableAdapterManager.UpdateAll(this.图书馆藏书管理系统DataSet); privatevoid Form4_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“图书馆藏书管理系统DataSet.表中。您可以根据需要移动或移除它。this.表TableAdapter.Fill(this.图书馆藏书管理系统DataSet.表); privatevoid button1_Click(object sender, EventArgs e) Form6 form = newForm6(); form.Show();this.Close(); 4查询窗体表为例using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.Reflection;using System.Collections;namespace RADDataDemopublicpartialclassForm6 : Form public Form6() InitializeComponent(); private System.Data.DataTable MyTable = new System.Data.DataTable();privatevoid button1_Click(object sender, EventArgs e) MyTable.NewRow();string mysql = "select * From 表 where (名 like '%" + this.textBox1.Text + "%')" mysql += "and ( like '%" + this.textBox2.Text + "%')" mysql += "and (联系人 like '%" + this.textBox3.Text + "%')" mysql += "and ( like '%" + this.textBox4.Text + "%')" mysql += "and (地址 like '%" + this.textBox5.Text + "%')"string MySQLConectionString = global:RADDataDemo.Properties.Settings.Default.图书馆藏书管理系统ConnectionString;SqlConnection MyConnection = newSqlConnection(MySQLConectionString); MyConnection.Open();SqlDataAdapter Myadapter = newSqlDataAdapter(mysql, MyConnection); Myadapter.Fill(MyTable);this.dataGridView1.DataSource = MyTable;if (MyConnection.State = ConnectionState.Open) MyConnection.Close(); privatevoid button2_Click(object sender, EventArgs e) Form4 form=newForm4(); form.Show();this.Close(); privatevoid Form6_Load(object sender, EventArgs e) 7.系统功能测试7.1登录界面测试1登录失败2登录成功跳转到:7.2数据操作(1)数据的添加2数据的删除3数据的修改4数据的查询8.总结 本次课程设计让我懂得了更多的关于数据库的知识,系统完成了对数据库的连接,对数据有查看、添加、删除、修改的功能。在设计的过程中,了解到破坏了完整性的处理方法,学习到了查询代码的使用。但由于时间不够,该系统在借还书籍方面只有少许涉与,更多的是对数据的管理,而且登录用户也只设定了一个。相信有了这次的学习经验,对以后此类的系统设计会许多的帮助。14 / 14