资源描述
首都师范大学信息工程学院成人2013年第一学期(数据库原理)期末试卷年级专业: 软件工程(软件质量与测试) 试卷类型:课程设计 姓名:刘伟 学号:3131008127 成绩:题目:图书借阅管理系统图书借阅管理系统摘要随着网络技术的高速发展,计算机应用的普及,利用计算机对图书的日常管理势在必行。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分工作仍需要手工完成,工作起来效率比较低,管理员不能及时了解图书馆内各类图书的借阅情况,读者需要的图书难以在短时间内找到,不便于动态及时地调整图书结构。本文论述了基于ACCESS 2003的图书馆管理系统的实现思路和开发过程,包括需求分析、系统设计、系统实现,系统测试等方面。目录1.开发背景12.需求分析13.系统设计13.1系统目标13.2业务流程图23.3系统功能结构图24.数据库设计34.1数据库概要设计34.2数据库逻辑结构设计44.3表关系55.编码及实现55.1登录界面设计55.2系统主页设计65.2.1系统主页界面65.2.2系统主页实现过程75.3图书管理模块设计75.3.1图书管理模块界面75.3.2图书管理的实现过程85.4读者管理模块设计115.4.1读者管理模块界面115.4.2读者管理的实现过程125.5借阅管理模块设计125.5.1借阅管理模块界面125.5.2借阅管理的实现过程136.系统测试156.1登录功能测试166.2图书管理测试166.3读者管理测试166.4借阅管理测试177.开发环境及注意事项171. 开发背景随着现代图书流通市场竞争的愈演愈烈,如何以一种新的管理方式提高图书流通信息的反馈速度,降低库存占用,加快资金周转,提高工作效率,已经成为提高竞争力的关键。信息技术的发展给图书的管理带来了新的力量,通过图书馆管理系统对图书的全程管理,不仅摆脱了人工管理所固有的一系列弊端和问题,更重要的是提高了工作效率。2. 需求分析长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较繁琐。在借书时,读者首先将要借的书好借阅证交给工作人员,然后工作人员将每本书的信息卡片好读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。在还书时,读者首先将要还的书交给工作人员,然后工作人员根据图书信息找到相应的书卡好借阅证,并填写相应的还书信息。从上述描述中可以发现,传统的手工流程存在着种种不足。首先处理借书、还书业务流程的效率很低;其次处理能力比较低,一断时间内,所能服务的读者人数只能是很有限的。为此,图书借阅管理系统需要为解决上述问题,提供快速的图书信息检索功能及快捷的图书借阅、归还流程。3. 系统设计3.1 系统目标根据图书馆日常图书管理工作的需求,图书借阅的管理流程,该系统实施后应达到以下目标。1. 界面设计友好、美观,易维护,易操作。2. 图书信息,读者信息,借阅信息的分类管理。3. 借阅,归还图书功能。4. 实时查询图书,读者及借阅信息。5. 图书,读者,借阅相关信息统计功能。3.2 业务流程图图书借阅管理系统的系统流程如图3-1所示。读者图书借阅图书归还管理获取读者信息获取图书信息借阅成功归还成功借阅信息处理图书出库图书入库更新读者信息,图书信息,借阅信息图3-1 系统流程图3.3 系统功能结构图根据图书借阅管理系统的特点,可以将其分为系统设置、读者管理、图书管理、借阅管理4个部分,其中各个部分及其包括的具体功能模块如图3-2所示。图书借阅管理系统系统设置读者管理图书管理借阅管理登录注销统计信息新增读者删除读者修改图书删除图书图书借出图书归还新增图书修改读者查找读者查找图书借阅查询图3-2 系统功能结构图4. 数据库设计本系统采用ACCESS 2003数据库,名称为图书借阅管理系统.mdb,其中包含3张表。下面分别说明数据库的概要设计及逻辑设计。4.1 数据库概要设计通过对本系统进行的需求分析、系统流程设计以及系统功能结构的确定,规划出系统中使用的数据库实体对象,具体说明如下。图书类:书名,作者,出版社,价格,图书编号,库存。 读者类:姓名,性别,读者编号,电话,身份证号,已借数量。实体E-R图如图4-1所示:图4-1 实体 E-R图4.2 数据库逻辑结构设计根据实体E-R图,设计出数据表的结构。以下是主要数据表的数据结构和用途。1. 图书借阅表用于保存所有已借阅图书的信息,该表的结构如表4-2所示。表4-2 图书借阅表字段名数据类型长度主键描述借阅编号自动编号10是借阅编号图书编号文本100否图书编号图书名称文本100否图书名称借出时间日期/时间短日期否借出日期归还时间日期/时间短日期否归还日期读者编号文本50否读者编号读者姓名文本20否读者姓名罚金货币10否罚金2. 图书信息表用于保存所有图书信息,该表的结构如表4-3所示。表4-3 图书信息表字段名数据类型长度主键描述图书编号自动编号100是图书编号书名文本100否图书名称出版社文本100否出版社名称作者文本80否作者姓名价格货币10否图书价格库存数字4否库存量3. 读者信息表用于保存所有读者信息,该表的结构如表4-4所示。表4-4 读者信息表字段名数据类型长度主键描述读者编号自动编号50是读者编号读者姓名文本50否读者姓名性别文本50否读者性别身份证号文本50否身份证号电话文本50否联系电话已借数量数字4否已借数量4.3 表关系 图4-5 “图书借阅管理系统” 表间关系图5. 编码及实现5.1 登录界面设计在登录窗口中添加2个文本框控件,分别用于输入用户名和密码,1个commandButton控件。用于触发登录事件,界面如图5-1所示。图5-1 登录界面以下是“登录”按钮的click事件的主要代码 :Private Sub login_Click()Dim a, b As StringIf IsNull(用户名) ThenMsgBox (请输入用户名!)ElseIf IsNull(密码) ThenMsgBox (请输入密码!)Elsea = Me.用户名b = Me.密码If a liuwei Or b 123 Then MsgBox (用户名或密码有误!) Me.用户名 = Me.密码 = Me.用户名.SetFocusElseMsgBox (欢迎登录图书借阅管理系统!) DoCmd.Close DoCmd.OpenForm 主页End IfEnd IfEnd Sub5.2 系统主页设计5.2.1 系统主页界面管理员通过“登录”模块验证后,可以登录到图书借阅管理系统的主页。系统主页主要包括读者管理、图书管理、借阅管理、统计信息4部分。系统主页界面如图5-2所示。 图5-2 系统主页界面5.2.2 系统主页实现过程(1) 添加一个标签控件用于显示系统名称。(2) 添加4个commandButton控件用于各功能模块入口。(3) 使用openform命令进行各窗体的链接。(4) 添加1个commandButton控件用于退出系统。(5) 使用close命令退出系统。5.3 图书管理模块设计5.3.1 图书管理模块界面图书管理模块主要包括查看图书详细信息、添加图书信息、修改图书信息、删除图书信息、导出图书详细信息5个功能。在主页点击“图书管理”进入到图书管理页面。页面运行效果如图5-3所示。图5-3 图书管理界面5.3.2 图书管理的实现过程1. 设计步骤(1) 本模块使用的数据表是“图书信息”。(2) 新建主窗体,并在主窗体中引用子窗体,用于显示所有图书信息。(3) 上方添加文本框和commandButton控件,用于图书信息查找,导出。(4) 下方添加文本框和commandButton控件,用于图书新增,修改,删除。2. 实现代码commandButton控件均用单击事件触发,实现代码如下:“查询”图书功能代码:Private Sub 查询_Click()Me.存书查询子窗体.RequeryEnd Sub“删除”图书功能代码:Private Sub 删除_Click()Dim code, SQL As StringIf Me.图书编号 = 自动编号 ThenMsgBox 请在上方列表中选择要删除的图书!Elsecode = Me.图书编号SQL = Delete * FROM 图书信息 Where 图书编号= & codeCurrentProject.Connection.Execute SQLMsgBox 删除成功!Me.存书查询子窗体.RequeryEnd IfEnd Sub“新增”图书功能代码:Private Sub 新增_Click()Dim zz,cbs,kc,jg,sm,SQL As StringIf Me.图书编号 自动编号 Then Me.书名1 = Null Me.作者1 = Null Me.出版社1 = Null Me.价格1 = Null Me.库存1 = Null Me.图书编号 = 自动编号ElseIf IsNull(书名1) ThenMsgBox 请输入书名!ElseIf IsNull(作者1) ThenMsgBox 请输入作者!ElseIf IsNull(出版社1) ThenMsgBox 请输入出版社!ElseIf IsNull(价格1) ThenMsgBox 请输入价格!ElseIf IsNull(库存1) ThenMsgBox 请输入库存!Elsezz = Me.作者1cbs = Me.出版社1kc = Me.库存1jg = Me.价格1sm = Me.书名1SQL = insert into 图书信息(作者,出版社,库存,价格,书名) values( & zz & , & cbs & , & kc & , & jg & , & sm & )CurrentProject.Connection.Execute SQLMsgBox 新增成功!Me.存书查询子窗体.RequeryEnd IfEnd Sub“修改”图书功能代码:Private Sub 修改_Click()Dim code,zz,cbs,kc,jg,sm,SQL As StringIf Me.图书编号 = 自动编号 ThenMsgBox 请在上方列表中选择要修改的图书!Elsecode = Me.图书编号zz = Me.作者1cbs = Me.出版社1kc = Me.库存1jg = Me.价格1sm = Me.书名1SQL = update 图书信息 set 作者= & zz & ,出版社= & cbs & ,库存= & kc & ,价格= & jg & ,书名= & sm & Where 图书编号= & codeCurrentProject.Connection.Execute SQLMsgBox 修改成功!Me.存书查询子窗体.RequeryEnd IfEnd Sub5.4 读者管理模块设计5.4.1 读者管理模块界面读者管理模块主要包括读者新增,读者修改,读者删除,读者查找,读者导出5个功能。在主页点击“读者管理”进入到读者管理页面。页面运行效果如图5-4所示。图5-4 读者管理界面5.4.2 读者管理的实现过程1. 设计步骤(1) 本模块使用的数据表是“读者信息”。(2) 新建主窗体,并在主窗体中引用子窗体,用于显示所有读者信息。(3) 上方添加文本框和commandButton控件,用于读者信息查找,导出。(4) 下方添加文本框和commandButton控件,用于读者新增,修改,删除。2. 实现代码commandButton控件均用单击事件触发,部分实现代码如下:“查询”读者功能代码:Private Sub 查询_Click()Me.读者查询子窗体.RequeryEnd Sub“删除”读者功能代码:Private Sub 删除_Click()Dim code, SQL As StringIf Me.读者编号 = 自动编号 ThenMsgBox 请在上方列表中选择要删除的读者!Elsecode = Me.读者编号SQL = Delete * FROM 读者信息 Where 读者编号= & codeCurrentProject.Connection.Execute SQLMsgBox 删除成功!Me.读者查询子窗体.RequeryEnd If End Sub“新增”,“修改”读者功能代码同新增修改图书类似,这里不重复说明。5.5 借阅管理模块设计5.5.1 借阅管理模块界面借阅管理模块主要包括图书借出,图书归还、借阅查找,借阅导出4个功能。在主页点击“借阅管理”进入到借阅管理页面。页面运行效果如图5-5所示。图5-5 借阅管理界面5.5.2 借阅管理的实现过程1. 设计步骤(1) 本模块使用的数据表是“图书借阅”。(2) 新建主窗体,并在主窗体中引用子窗体,用于显示所有借阅信息。(3) 上方添加文本框和commandButton控件,用于借阅信息查找,导出。(4) 下方添加文本框和commandButton控件,用于图书借出,图书归还。2. 实现代码commandButton控件均用单击事件触发,实现代码如下:“查询”借阅信息功能代码:Private Sub 查询_Click()Me.借阅查询子窗体.RequeryEnd Sub“归还”图书功能代码:Private Sub 归还_Click()Dim a, b, c, d, e, f, g, h, k As StringDim i, j As IntegerIf Not IsNull(归还时间) ThenMsgBox 该图书已归还,不需要再次归还!Elsea = Me.借阅编号f = Me.读者编号1g = Me.图书编号1h = Me.借出时间c = Datei = DateDiff(d, h, Now)b = update 图书借阅 set 归还时间= & c & where 借阅编号= & ad = update 图书信息 set 库存=库存+1 where 图书编号= & ge = update 读者信息 set 已借数量=已借数量-1 where 读者编号= & fCurrentProject.Connection.Execute bCurrentProject.Connection.Execute dCurrentProject.Connection.Execute eIf i = 15 ThenMsgBox 归还成功!Me.借阅查询子窗体.RequeryElsej = (i - 15) * 5k = update 图书借阅 set 罚金= & j & where 借阅编号= & aCurrentProject.Connection.Execute kMsgBox 归还成功!图书借出时间超过了15天,应交罚款: & j & 元Me.借阅查询子窗体.RequeryEnd If End If End Sub“借出”图书功能代码:Private Sub 借出_Click()Dim a, b, c, d, e, f, g As StringDim h, i As IntegerIf IsNull(图书名称1) ThenMsgBox 请输入图书名称!ElseIf IsNull(读者姓名1) ThenMsgBox 请输入读者姓名!Elsea = Me.图书编号1b = Me.图书名称1c = Me.读者编号1d = Me.读者姓名1h = DLookup(库存, 图书信息, 图书编号= & a & )If h = 0 ThenMsgBox 该图书已没有库存,请选择其他图书!Elsee = insert into 图书借阅(读者编号,读者姓名,图书编号,图书名称) values( & c & , & d & , & a & , & b & )f = update 图书信息 set 库存=库存-1 where 图书编号= & ag = update 读者信息 set 已借数量=已借数量+1 where 读者编号= & cCurrentProject.Connection.Execute eCurrentProject.Connection.Execute fCurrentProject.Connection.Execute gMsgBox 借出成功!Me.借阅查询子窗体.RequeryEnd If End If End Sub6. 系统测试模块功能测试,就是为了检查在模块中有没有不能实现或实现有问题的功能,或是运行是否稳定以及能否反复使用。以下是对系统的主要功能进行测试的步骤及其测试结果。6.1 登录功能测试测试目的:测试登录功能是否运行正常。测试步骤:1.进入登陆界面;2.输入用户名liuwei,密码:111,点击登陆;3.输入用户名liuwei,密码:123,点击登陆。期望结果:1.当输入输入用户名liuwei,密码:111时,登陆不成功,提示“用户名或密码有误!” 2.当输入用户名输入用户名liuwei,密码:123时,登陆成功。提示“欢迎登录图书借阅管理系统!”实测结果:经测试此功能运行正常。6.2 图书管理测试测试目的:图书信息能否修改并成功保存到数据库中。测试步骤:1.成功登陆图书借阅管理系统2.点击添加主页“图书管理”3.在图书信息列表中选择一条要修改的图书信息4.修改下方显示的图书信息5.点击“修改”期望结果:提示“修改成功”并在图书列表中正确显示修改后的图书信息。实测结果:经测试此功能运行正常。6.3 读者管理测试测试目的:能够根据用户输入条件查询出符合条件的数据测试步骤:1.成功登陆图书借阅管理系统2.点击添加主页“读者管理”3.在读者管理页面上方“姓名”字段里输入“三”4.点击“查询”期望结果:可以搜索出所有姓名里包含“三”的读者。实测结果:经测试此功能运行正常。6.4 借阅管理测试测试目的:能够成功归还图书测试步骤:1.成功登陆图书借阅管理系统2.点击添加主页“借阅管理”3.在借阅管理列表中选择一条含有归还时间的借阅信息4点击“归还”5.在借阅管理列表中选择一条没有有归还时间的借阅信息6.点击“归还”期望结果:执行第4步后会提示:“该图书已归还,不需要再次归还”。 执行第6步后会提示:“归还成功”相关读者已借数量减1,相关图书库存数量加1。实测结果:经测试此功能运行正常。7. 开发环境及使用注意事项(1) 开发环境:Microsoft OFFICE ACCESS 2003(2) 数据库:ACCESS 2003(3) 本系统管理员用户名为:liuwei,密码为:123。(4) 因为系统编写时包含了宏和VBA,所以启动系统时会有以下提示,如图 7-1所示。请选择“否”。 图7-1 安全提示(5) 如果用ACCESS 2007 查看请在选项信任中心宏设置启用所有宏。(6) 因为兼容性问题光盘上的数据库系统会报一个查询更新错误,以致无法执行增删改操作,暂时还没找到解决办法。如要演示图书管理系统请用另外提交的压缩包里的数据库系统。18
展开阅读全文