数据库实验 图书馆管理系统方案.docx
《数据库实验 图书馆管理系统方案.docx》由会员分享,可在线阅读,更多相关《数据库实验 图书馆管理系统方案.docx(14页珍藏版)》请在冰豆网上搜索。
![数据库实验 图书馆管理系统方案.docx](https://file1.bdocx.com/fileroot1/2022-10/25/882fec71-4236-4bc6-bea8-6a77e7b0bcd2/882fec71-4236-4bc6-bea8-6a77e7b0bcd21.gif)
数据库实验图书馆管理系统方案
一、目的与要求
1.本实验是为计算机科学与技术等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。
通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。
为后继课程和毕业设计打下良好基础。
2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。
3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。
是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。
2、实验容
针对一个具有实际应用场景的中小型系统(本设计为图书馆管理系统)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。
大致分为如下步骤:
1.理解系统的数据库需求,分析实体及实体间联系,画出E-R图:
1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。
2)设计实体之间的联系,包括联系类型和联系的属性。
最后画出完整的E-R图。
2.根据设计好的E-R图及关系数据库理论知识设计数据库模式:
1)把E-R图转换为逻辑模式;
2)规化设计。
使用关系式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。
3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。
4)用SQL语言完成数据库模式的设计。
3.数据库权限的设计:
1)根据系统分析,完成授权操作;
2)了解学习收回权限的操作。
4.完成用户界面的设计,对重要数据进行加密。
5.连接数据库,用宿主语言实现系统所需的各种操作:
1)实现数据记录的录入、删除、查询和修改。
2)以视图的形式完成复杂查询,比如多表、多条件等。
3、实验原理
该系统所使用的原理有概念模型、三层模式、关系表理论、式理论等。
4、实验仪器及设备
计算机、SQLServer2005、C#
5、设计步骤
(一)准备工作
1、选择DBMS,本设计选择SQLServer2005
2、选择编程环境,本设计选用Visualstudio2010C#
3、连接数据库,设置连接管理
(二)概念模型设计
1、本系统涉及到的实体及其属性图如图1所示如下:
图1实体及其属性图
2、图书管理系统的E-R图如图2所示。
图2图书馆管理系统E-R图
(3)逻辑模型的设计
根据图2建立的E-R图选用关系模式建立关系表如下所示:
1、关系模式描述:
(1)管理员(,密码)
(2)读者(读者编号,,借书本数,密码)
(3)图书(图书编号,图书名,借出时间)
(4)借书登记(图书编号,读者编号)
2、建立的以上关系模式的关系表:
表1.1管理员的属性表
表1.2管理员的数据表
表2.1读者的属性表
表2.2读者的信息表
表3.1图书的属性表
表3.2图书的数据表
表4.1借阅记录的属性表
表4.2借阅记录的数据表
(4)完整性设计
1、实体完整性:
根据E-R得出各个基本关系的主属性(不能取空值,见各属性表设置)、外码如下所示
(1)管理员(,密码)主码:
(MName)
(2)读者(读者编号,,借书本数,密码)主码:
(RName)外码:
读者编号(BNo)
(5)图书(图书编号,图书名,借出时间)主码:
图书名(BName)外码:
图书编号(BNo)
(6)借书登记(图书编号,读者编号)主码:
(图书编号,读者编号)即(BNo,RNo)
2、参照完整性:
各个关系之间寻在的属性的引用如下所示,其中主码用下划线标出了。
(1)读者(读者编号,,借书本数,密码)
借书登记(图书编号,读者编号)
(2)图书(图书编号,图书名,借出时间)
借书登记(图书编号,读者编号)
3、自定义完整性:
是编程数据库设计时用户自己设置的,如可以把各关系的主码设为唯一值。
(5)规化设计
此数据库关系属于3式,由于从实体的完整性主码的标注中可以看出每一个非主属性既不部分依赖于码也不传递依赖于码,所以为3NF。
(6)SQL语言的考察:
完成关系表的建立后可以实现查询、插入、删除和更改等操作,即能实现单表和多表的组合查询。
(七)权限设置:
如学生登陆后对成绩表只有查询的权限而没有更新的权限等。
(八)图书馆管理系统图形化用户界面设计如下所示:
图1登陆界面
图2读者登陆后的界面
图3读者修改密码界面
图4读者借阅记录查询界面
图5管理员登陆后界面
图6管理员添加图书界面
图7管理员添加读者界面
图8管理员查询读者界面
图9管理员查询图书界面
图10管理员查询借阅记录界面
图11管理员添加借书登记界面
图12还书登记界面
六、设计结果
本设计主要是三大模块,一种不一部分是共同模块,再者是分为管理员和读中文模块,这两个主要模块完成的相关操作见图13所示,各界面的设计见图1-图12所示,程序的关键代码见附录,由于代码较长,所以每一部分只保留了重要操作代码,主要是对数据库的操作代码,详情见附录。
图13模块最后设计实现的功能
七、思考题
1.如何从一个实际的题目中设计概念模型?
答:
(1)确定出实体及其属性;
(2)确定主码及各实体之间的关系;(3)用E-R图表示各实体间的关系
2.如何将一个概念模型转换成关系模型?
答:
根据概念模型中的E-R图确定关系,即一表,然后确定出各元组和属性,并完成完整性约束,则从概念模型转化为关系模型。
八、课程设计总结
本课程设计结合数据库和C#完成了图书馆管理系统的设计,基本功能操作都实现了,在设计和编程过程中也遇到了许多问题,具体总结如下所示:
1.系统设计难的不是界面的设计而是正确建立数据库的同时在C#中实现数据库的相关操作。
2.本系统运行时出现不足的地方也是有的,如个界面的框没有在一起,以至于实现每个操作都要打开相应的界面窗体,结果就出现好多界面都没关掉,在验收时老师已经帮助给出建议,让我们以后设计时注意,再者是程序中有的表示确定的一些按钮忘记设置提示了,如添加图书信息有个“添加”按钮,点这个按钮后没有提示,其实已经添加成功了,这需要改进加进去。
3.本程序在进行数据库时是把封装在一起的,不至于每次访问数据库都建立,这样可以使程序更加简单。
4.通过本系统的成功设计可以熟练掌握相关DBMS里的对于数据库的相关操作及相关操作的语句实现,在以后运用中方便了很多。
5.在做一个系统设计时,即使它很复杂,但是遇到困难不要灰心,要有耐心,虚心向老师及同学请教,任何程序问题只要我们认真对待都是可以解决的。
附录
连接数据库代码:
SqlConnectionStringBuilderconnectStringBuilder=newSqlConnectionStringBuilder();
connectStringBuilder.DataSource=@"CHINA-76384DCD7";
connectStringBuilder.InitialCatalog="BookMangeMessageSystem";
connectStringBuilder.IntegratedSecurity=true;
登陆代码:
getID.CommandText="SELECTpasswordFROMmmwheremname='"+textBox1.Text+"'";
con.Open();
password=getID.ExecuteScalar().ToString();
if(String.Equals(textBox2.Text.ToLower().Trim(),password.ToLower().Trim()))
{
managermanager1=newmanager();
manager1.Show();
manager1.managerID=LoadingID;
break;
}
else
{
DialogResultresult=
MessageBox.Show("登录失败,用户密码不正确","系统消息",buttonType,iconType,0,0);
break;
}
修改密码代码:
getID.CommandText="SELECTpasswordFROMRMwhereRName='"+ReaderID+"'";
con.Open();
password=getID.ExecuteScalar().ToString();
if(String.Equals(textBox1.Text.ToLower().Trim(),password.ToLower().Trim()))
{
if(String.Equals(textBox2.Text.ToLower().Trim(),textBox3.Text.ToLower().Trim()))
{
SqlCommandchangePassword=newSqlCommand();
changePassword.Connection=con;
changePassword.CommandText="updateRMsetpassword='"+textBox2.Text+"'wherername='"+ReaderID+"'";
添加信息代码:
connection.Open();
SqlCommandcommand=newSqlCommand(
"insertintoBMvalues('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')",connection);
SqlDataAdapteradapter=newSqlDataAdapter(command.CommandText,connection);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
frmStatusMessage.Close();
借书登记代码:
connection.Open();
SqlCommandcommand1=newSqlCommand(
"insertintoPAvalues('"+textBox1.Text+"','"+textBox2.Text+"')",connection);
SqlDataAdapteradapter1=newSqlDataAdapter(command1.CommandText,connection);
DataSetdataset=newDataSet();
adapter1.Fill(dataset);
SqlCommandcommand2=newSqlCommand(
"updateBMsetouttime='"+textBox3.Text+"'whereBNO='"+textBox2.Text+"'",connection);
SqlDataAdapteradap