数据库实验 图书馆管理系统.doc_第1页
数据库实验 图书馆管理系统.doc_第2页
数据库实验 图书馆管理系统.doc_第3页
数据库实验 图书馆管理系统.doc_第4页
数据库实验 图书馆管理系统.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、目的与要求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、 实验仪器及设备 计算机、SQL Server2005、C#5、 设计步骤(一)准备工作1、选择DBMS,本设计选择SQL Server20052、选择编程环境,本设计选用Visual studio 2010 C#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. 在做一个系统设计时,即使它很复杂,但是遇到困难不要灰心,要有耐心,虚心向老师及同学请教,任何程序问题只要我们认真对待都是可以解决的。附录连接数据库代码: SqlConnectionStringBuilder connectStringBuilder = new SqlConnectionStringBuilder(); connectStringBuilder.DataSource = CHINA-76384DCD7; connectStringBuilder.InitialCatalog = BookMangeMessageSystem; connectStringBuilder.IntegratedSecurity = true;登陆代码:getID.CommandText = SELECT password FROM mm where mname= + textBox1.Text + ; con.Open(); password = getID.ExecuteScalar().ToString(); if(String.Equals(textBox2.Text.ToLower().Trim(), password.ToLower().Trim() manager manager1 = new manager(); manager1.Show(); manager1.managerID = LoadingID; break; else DialogResult result = MessageBox.Show(登录失败,用户密码不正确, 系统消息, buttonType, iconType, 0, 0); break; 修改密码代码: getID.CommandText = SELECT password FROM RM where RName= + 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() SqlCommand changePassword = new SqlCommand(); changePassword.Connection = con; changePassword.CommandText = update RM set password = + textBox2.Text + where rname= + ReaderID + ;添加信息代码: connection.Open(); SqlCommand command = new SqlCommand( insert into BM values(+textBox1.Text+,+textBox2.Text+,+textBox3.Text+),connection); SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText, connection); DataSet dataset = new DataSet(); adapter.Fill(dataset); frmStatusMessage.Close();借书登记代码: connection.Open(); SqlCommand command1 = new SqlCommand( insert into PA values( + textBox1.Text + , + textBox2.Text + ), connection); SqlDataAdapter adapter1 = new SqlDataAdapter(command1.CommandText, connection); DataSet dataset = new DataSet(); adapter1.Fill(dataset); SqlCommand command2 = new SqlCommand( update BM set outtime= + textBox3.Text + where BNO= + textBox2.Text + , connection); SqlDataAdapter adapter2 = new SqlDataAdapter(command2.CommandText, connection); adapter2.Fill(dataset); frmStatusMessage.Close()借书记录查询代码:connection.Open(); SqlCommand command; if (comboBox1.Text.Trim() = 按恪读者?序号?查询) command = new SqlCommand( SELECT * FROM PA WHERE RNO= + textBox1.Text + , connection); else if (comboBox1.Text = 按恪图?书酣序号?查询) command = new SqlCommand( SELECT * FROM PA WHERE BNO= + textBox1.Text + , connection); 读者信息查询代码: connection.Open(); SqlCommand command; if (comboBox1.Text.Trim() = 按恪序号?查询) command = new SqlCommand( SELECT * FROM RM WHERE RNO= + textBox1.Text + , connection); else if (comboBox1.Text = 按恪人?名?查询) command = new SqlCommand( SELECT * FROM RM WHERE RNAME= + textBox1.Text + , connection); 还书登记代码:connection.Open(); SqlCommand command1 = new SqlCommand( delete from PA WHERE BNO= + textBox2.Text + , connection); SqlCommand command2 = new SqlCommand( update bm set outtime=00000000 where bno=+textBox2.Text+,conne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论