数据库课程设计报告——图书馆管理系统(共18页).doc
精选优质文档-倾情为你奉上说明书指导老师: 学生姓名: 班级: 学号: 完成日期:2010年6月23日数据库技术原理课程设计报告一、 设计内容课题名称:图书馆管理系统(1) 课程设计目的使学生在学完数据库技术原理这门课程后,能够充分理解和掌握这门技术,所以进行这样一个课程设计。 (2) 功能要求本系统至少应该包含图书的基本信息、读者的基本信息、读者借阅图书的信息,用户信息等。要求能够实现图书信息的维护、读者信息的维护、图书的借阅登记处理、各类信息的查询、用户的管理等功能。图书馆管理人员实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、对工作人员和管理人员的信息进行查看及维护;图书借阅者可直接查看图书馆图书情况。 二、 系统设计1、需求分析(1)信息需求书籍信息:图书ID ,书名,分类号,作者,出版单位,单价,册数,页数,出版日期,登记日期,备注。职员信息:职员ID,姓名,性别,电话,家庭住址。学生信息:姓名,性别,系部,电话,借阅证类型编号,办证日期。图书类型信息:图书类别编号,图书类别名称,上级图书编号。借阅证类型信息:借阅证类型编号,借阅证类型名称,借阅证有效期限,最大借阅量,最大借阅时间。图书借阅信息:图书ID,学生ID,职员ID,借阅日期,归还日期,备注。(2)功能模块划分图书信息查询提供按图书名称进行查询,查询结果应以主表明细格式显示,即查询结果记录显示在一个表格中,在明细部分显示当前记录的所有信息。图书入库由管理员凭借密码进入图书入库界面进行操作,能够对图书进行入库、过时无用图书清除出库的操作,同时要能够查看书库中所有图书信息。系统设置模块下面应设置图书类别设置和借阅证类型设置两个子模块,分别实现对图书类别和借阅证类型的增加、删除操作。借阅登记模块由人员信息设置、图书借阅登记两部分组成。而在人员设置下面可在同一个窗口口中是实现对图书馆职员和读者信息的登记、修改和删除等功能;图书借阅有管理员对读者借阅图书进行信息登记。退出系统模块主要是退出图书管理系统,关闭与数据库连接。(3)系统总体结构系统总体结构见(图A)2、概念设计(1)设计局部ER模式 实体和属性的定义: 书籍(图书ID ,书名,分类号,作者,出版单位,单价,册数,页数,出版日期,图书查询系统设置图书入库借阅登记退出系统图书类别设置借阅证类型设置添加入库新书图书借阅登记人员信息设置删除出库图书图书馆管理系统添加图书类别删除图书类别添加借阅证类型删除借阅证类型添加读者信息删除读者信息添加管理员信息删除管理员信息(图A)登记日期,备注);职员(职员ID,姓名,性别,电话,家庭住址);student(姓名,性别,系部,电话,借阅证类型编号,办证日期);booktype(图书类别编号,图书类别名称,上级图书编号);cardtype(借阅证类型编号,借阅证类型名称,借阅证有效期限,最大借阅量,最大借阅时间); borrowinfo(图书ID,学生ID,职员ID,借阅日期,归还日期,备注)。书籍读者管理员借阅信息管理借阅生成借阅证书籍类别信息分类姓名性别电话职员ID家庭住址借阅证类型编号性别姓名系部电话有效期限办证日期借阅时间类型名称类型编号借间量类别编号类别名称上级编号备注归还日期借阅日期出版日期作者学生ID职员ID图书ID分类号单价出版单位册数备注书名图书ID登记日期页数(图B)(2)设计全局ER模式根据上面局部ER模式中实体和属性的定义,将所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构,其全局ER图见(图B)。3、关系数据库的逻辑设计概念设计的结果是ER图,因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义:书籍(图书ID ,书名,分类号,作者,出版单位,单价,册数,页数,出版日期,登记日期,备注);职员(职员ID,姓名,性别,电话,家庭住址);student(姓名,性别,系部,电话,借阅证类型编号,办证日期);booktype(图书类别编号,图书类别名称,上级图书编号);cardtype(借阅证类型编号,借阅证类型名称,借阅证有效期限,最大借阅量,最大借阅时间); borrowinfo(图书ID,学生ID,职员ID,借阅日期,归还日期,备注)。三、数据库实现1、创建数据库打开查询分析器,输入创建数据库的语句并运行,程序代码如下:use mastergocreate database 图书管理数据库onprimary ( name = bm1,filename = 'D:Program FilesMicrosoft SQL ServerMSSQLData图书管理数据库_Data.MDF',size = 10mb,maxsize = 200,filegrowth = 2)log on( name = bmlog1,filename = 'D:Program FilesMicrosoft SQL ServerMSSQLData图书管理数据库_Log.LDF',size = 1mb,maxsize = 20,filegrowth = 1)go2、创建数据库中的表打开查询分析器,输入创建表的语句并运行,程序代码如下:专心-专注-专业create table 书籍(图书ID int primary key,书名 nvarchar (100) ,分类号 int ,作者 nvarchar (20),出版单位 nvarchar (50),单价 int,册数 int,页数 int ,出版日期 nvarchar (10),登记日期 nvarchar (10),备注 nvarchar (50) );create table 职员( 职员ID int primary key,姓名nvarchar (20),性别nvarchar (10),电话nvarchar (20),家庭住址nvarchar (100) );create table student (学生ID int primary key,姓名 nvarchar (20),性别 nvarchar (10),系部 nvarchar (10),电话 nvarchar (20),借阅证类型编号 nvarchar (100) ,办证日期nvarchar (20) );create table booktype ( 图书类别编号 int primary key , 图书类别名称 varchar(20) not null, 上级图书编号 int );create table cardtype ( 借阅证类型编号 varchar(10) primary key, 借阅证类型名称 varchar(20) , 借阅证有效期限 smallint , 最大借阅量 smallint , 最大借阅时间 smallint );create table borrowinfo ( 图书ID int primary key, 学生ID int not null, 职员ID int , 借阅日期 nvarchar (20), 归还日期 nvarchar (20), 备注 varchar(16) );亦可以在创建表的同时为数据库赋部分初值,程序代码如下:insert into 书籍 values ('3','西游记','1','余秋雨','作家出版社','25','1','167','2008.11','2009.3','')insert into 书籍 values ('4','三国','2','沈从文','华文出版社','30','1','236','2008.10','2009.3','')insert into 书籍 values ('5','葫芦娃','2','王晓方','作家出版社','120','4','1600','2007.12','2009.3','')select * from 书籍insert into 职员 values ('1','张东荪','男','61983','红卫')insert into 职员 values ('2','里斯','男','63963','六堰')insert into 职员 values ('5','陈琳','女','63563','汽车学院')select * from 职员nsert into student values ('1','赵浩','男','电信','64643','1','2009.6')insert into student values ('2','钱可','女','管理','64326','1','2009.6')insert into student values ('5','周天','女','外语','68375','1','2009.6')select * from studentinsert into booktype values('1','英语','4');insert into booktype values('2','计算机','5');insert into booktype values('6','文学',' ');select * from booktypeinsert into cardtype values('1','教师','6','10','60 ');insert into cardtype values('2','学生','4','6','30');select * from cardtypeinsert into borrowinfo values ('2','4','4','2009.5','2009.6',' ')insert into borrowinfo values ('3','2','2','2009.4','2009.5',' ')insert into borrowinfo values ('6','1','3','2009.7','2009.8',' ')select * from borrowinfo3、创建ODBC数据源打开控制面板,在管理工具/数据源/系统DSN目录下为图书管理数据库创建一个名为PIN的ODBC数据源,后面的的VB窗体中的ADO控件的数据源全部与PIN数据源连接,通过这样,就可以将数据库中的信息与VB工程连接起来。四、系统可视化界面实现(系统调试)按照系统设计阶段的系统总体结构,确定系统各个功能模块分布,利用VB中相关控件的可视化界面,创建出友好的的可视化操作界面。在控件中加入相关实现该功能的VB程序语言,调试这些语句,使其代码无误,并能够实现相应的功能,1、图书馆管理系统主页主要程序代码为窗口转换用到show,退出用到end。2、借阅登记及图书入库登陆界面 在登陆界面涉及用户名及密码验证,其程序如下:If Text1.Text = "ABC" And Text2.Text = "123" Then MsgBox "欢迎你, ABC用户!" Else MsgBox "你输入的密码错误!" Text1.Text = "" Text2.Text = "" Text1.SetFocus End If 图书入库.Show登录窗口1.Hide3、图书入库窗口及显示全部图书窗口窗口中相关按钮程序如下:添加按钮:Adodc1.Recordset.AddNew保存按钮: Adodc1.Recordset.Update Adodc1.Refresh MsgBox "已成功添加新记录", vbQestion + vbOKOnly 第一条按钮:Adodc1.Recordset.MoveFirst下一条按钮:Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst End If删除按钮:Dim i As Integer i = MsgBox("真的要删除该记录吗?", vbYesNo + vbExclamation, "提示") If i = vbYes Then Adodc1.Recordset.Delete Adodc1.Refresh MsgBox "删除图书信息成功!", vbOKOnly, "提示" End If查看全部按钮:图书信息.Show删除首条记录按钮: Dim i As Integer i = MsgBox("真的要删除该记录吗?", vbYesNo + vbExclamation, "提示") If i = vbYes Then Adodc1.Recordset.Delete Adodc1.Refresh MsgBox "删除图书信息成功!", vbOKOnly, "提示"End If4、图书查询窗口窗口中相关按钮程序如下:查找按钮: If Len(Text1.Text) > 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from 书籍 where 书名 = '" & _ Trim(Text1.Text) & " '" Adodc1.Refresh Else MsgBox ("请指定要查找的书名") End If5、图书类别设置窗口窗口中相关按钮程序如下:添加按钮:Adodc1.Recordset.AddNew保存按钮: Adodc1.Recordset.Update Adodc1.Refresh MsgBox "已成功添加新记录", vbQestion + vbOKOnly第一条按钮:Adodc1.Recordset.MoveFirst下一条按钮:Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst End If删除按钮:Dim i As Integer i = MsgBox("真的要删除该记录吗?", vbYesNo + vbExclamation, "提示") If i = vbYes Then Adodc1.Recordset.Delete Adodc1.Refresh MsgBox "删除图书信息成功!", vbOKOnly, "提示" End If6、借阅证类型设置窗口7、人员信息设置窗口这个窗口主要是完成读者个人信息、图书馆职员信息的添加删除操作,必须是管理员通过登录账号和密码以后才能进行此操作,大大提高了信息的安全性。这个主窗口下面还有两个子窗口,分别显示所有读者信息和所有职员信息。窗口中相关按钮程序如下:借阅者信息中查找按钮: If Len(Text1.Text) > 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from student where 姓名 = '" & _ Trim(Text1.Text) & " '" Adodc1.Refresh Else MsgBox ("请指定要查找的学生姓名") End If职员信息中查找按钮: If Len(Text1.Text) > 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from 职员 where 姓名 = '" & _ Trim(Text1.Text) & " '" Adodc1.Refresh Else MsgBox ("请指定要查找的姓名") End If8、图书借阅登记窗口该窗口中主要程序和前面图书入库窗口相关按钮相同,前已经列出,在这里就不在累述。五、课程设计总结与体会对于这次课程设计,我在两个月以前变开始着手准备。主要分为两步,第一步是自学VB程序语言,第二步变是数据库的设计。在进行课程实际之前,首先必须确定可视化界面的开发工具。由于大一阶段已经学过C语言程序设计,起初我打算使用C+语言来完成此次数据库课程实际,但在自学完C+语言以后,发现它与C语言的最大区别在于类的应用上,而这已是C+语言有如此强大功能的原因,也正是由于这个原因,如果使用C+语言来我完成此次课程实际,其难度将会较大。相比与C+语言类的难操作性,VB语言的可视化操作界面使用起来更为简单,它将类完全封装为控件的形式,使用者只需调用相应控件即可实现相应功能,这比C+语言完全使用程序语言实现类功能,大大减少了繁琐程度。所以最终我选择使用VB语言来完成课程设计。在确定可视化界面开发工具以后,接下来要考虑的便是数据库的开发工具,根据老师的要求以及数据库课程的学习,我选择使用SQL Server 来进行数据库的开发,这主要是因为在数据库技术原理这门课程中,我们学习的正是MS SQL Server的SOL语言,使用它作为数据库的开发工具将更为简单,更重要的,SQL语言功能强大,当今许多的公司数据库开发都将其作为首选,如果能够掌握这一开发工具,对以后的学习和工作都将带来很大的帮助。在进行这次课程设计的过程中遇到了很多的问题,但也正是这些问题的出现,让我学到了许多还没有在课内学习的知识,对已学知识的理解更加深刻,也掌握的更加牢固。在进入系统程序实现阶段时,首先摆在眼前的便是如何将数据库与可视化操作界面联系起来,通过前台可视化界面的相关操作,实现对数据库中数据的添加、删除、修改等功能。由于在之前已经翻阅了大量的文献资料,了解到许多连接两者的方法,比如用Data控件、Ado Data控件、DAO、ADO等均可实现,通过比较选择,我最终选择使用ADO来实现二者的链接。在确定这以后,又有问题出现了,那就是到底是使用ADO的属性连接字符串进行操作还是使用ODBC数据源进行连接,在比较以后,我发现使用ODBC数据源连接更为简单,所以最终选择使用ODBC数据源进行两者的连接。上面列出的仅仅只是课程设计过程中遇到到的许多问题中的一个,通过对这些问题的一一解决,我学到了许多知识。与此同时,通过这样一个课程设计,极大地提高了我的实际动手能力,这里主要是对相关软件的使用能力,使我对VB和SQL Server的功能了解更加深刻,对其操作也更为熟练。更为重要的是,在进行数据库的设计过程中,我严格按照数据库技术原理这门课程中设计数据库的相关要求进行设计,使所设计的数据库满足3NF,尽量满足BCNF的设计要求。通过这样一个过程,是我对数据库技术原理这门技术理解的更加深刻,也掌握的更加牢固。