《数据库原理》课程设计报告学生姓名:班级、学号:所在学院:专业:课程设计题目:图书馆管理系统指导教师:2012年1月3日-1-一、需求分析……………………………………2功能需求…………………………………………………………2数据需求…………………………………………………………3二、建库结果……………………………………3三、系统开发设计………………………………5四、关键和难点问题以及相应的解决方案……7关键………………………………………………………………7难点问题以及解决方案…………………………………………8五、对课程教学和课程设计的体会和建议……8体会………………………………………………………………9建议………………………………………………………………9-2-需求分析一、功能需求图书管理系统的主要任务是便于用户对图书的浏览、查询。在实现该系统时,为了该系统功能更完善,将其细分为登录模块、结束模块、还书模块、图书信息模块等模块。接下来具体分析每个模块的需求。1、用户登录模块:该模块主要进行用户权限验证,只有具备一定权限的用户才能进入系统。2、图书管理模块:该模块主要进行图书基本信息的管理,包括添加、删除、编辑以及查看图书信息等3、读者管理模块:该模块主要读者基本信息的管理,包括添加、删除、编辑以及查看读者信息等。4、图书报表模块:该模块主要用于打印和导出报表,如图书信息、读者信息以及借书等。5、图书查询模块:该模块主要用于图书信息的查询,包括图书信息查询、外借图书的查询以及借书学生信息的查询等。6、系统设置模块:该模块主要用于对系统进行设置,如这只罚款金额和借书天数,以及用户信息管理和数据备份等。通过功能分析,本系统的功能可用如图所示系统模块图来表现。-3-2、数据需求通过对数据库的功能分析,初步确定需要获得以下数据信息数据库用户(用户名,密码)某图书信息(图书编号,名称,作者,出版商,类别,状态)图书类型(类别号,类别名称)出版商信息(出版商编号,出版商名称)读者信息(借书卡号,学号,姓名,性别,班级,地址,)班级信息(班级编号,班级名称)建库结果●核心E-R图:由于图书管理系统主要用来处理读者借阅图书这一个任务,该任务的主要实体集是读者和书,又根据他们之间的联系——借阅归还,得到图书馆管理系统的核心E-R图如下:-4-根据E-R图,设计如下7个数据表1、用户信息表User_余昆鹏字段类型说明备注User_idVchar(50)用户名主键PasswdVchar(50)密码2、图书信息表BookInfo_余昆鹏字段类型说明备注Book_idInt图书编号主键Book_nameVchar(50)图书名称AuthorVchar(50)作者Publication_idInt出版商编号Cat_idint分类编号3、读者信息表Student_余昆鹏字段类型说明备注Library_idInt借书卡号主键Class_idInt班级编号Roll_idInt学号NameVchar(50)姓名SexVchar(50)性别AddressVchar(50)地址-5-4、借书还书信息表Issue_余昆鹏字段类型说明备注Book_idInt图书编号主键Issue_dateDatetime借书日期Library_idint借书卡号5、班级编号表Class_余昆鹏字段类型说明备注Class_idInt班级编号主键Class_nameVchar(50)班级名称6、出版商编号表Publication_余昆鹏字段类型说明备注Publication_idInt出版商编号主键Publicarion_nameVchar(50)出版商姓名7,、图书类别表Class_余昆鹏字段类型说明备注Cat_idInt类别编号主键Cat_nameVcahr(50)类别名称系统开发设计第一步创建数据库第二步实现主窗体。新建MDI窗体,作为系统的主界面第三步实现系统各模块1、创建公用模块。-6-创建公用模块modDatabase。用以连接数据库,定义recordset对象。并在此模块中定义系统启动的main()函数创建公共模块modSysTrayIcon。对公用函数进行调用创建公共模块modOther实现其他的公共功能2、编写用户登录模块。对用户权限进行验证3、编写图书管理模块。该模块包括“图书信息”,“出版商信息”,“图书分类信息”三个窗体。在图书信息管理窗体中实现添加新图书,删除图书以及查看所有图书信息等功能在出版商信息管理窗体中实现添加出版商信息,删除出版商信息以及查看所有出版商信息等功能。在图书分类信息管理窗体中实现添加和删除图书分类信息以及查看所有图书分类信息4、编写图书报表模块。包括图书信息报表,读者信息报表和借书报表实现对信息的打印和导出功能。5、编写读者管理模块。包括学生信息窗体,班级信息窗体,借书信息窗体,还书窗体其中,学生信息窗体实现添加和删除学生信息以及查看所有学生信息;班级信息窗体实现添加和删除班级信息以及查看所有班级信息;借书信息窗体实现添加和删除借书业务以及查看所有借出图书;还书窗体处理还书信息并根据借书是否超期来计算罚款金额6、编写图书查询模块。该模块包括图书信息查询,外借图书查询和学生-7-信息查询功能,分别通过图书查询信息窗体,外借图书信息查询窗体和学生信息查询窗体实现。7、系统设置模块。该模块用于实现设置罚款金额,设置借书最多天数,用户信息管理和数据备份管理等功能。其中用户管理窗体实现添加和删除用户信息以及查看所有用户详细信息。数据备份窗体实现选择备份路径功能。关键和难点问题以及相应的解决方案关键.1数据库的建立。该图书管理系统的功能是实现对图书信息,读者信息以及对借阅信息进行管理和查询。一个完备的数据库是实现以上功能的基础。2数据库的连接。程序中数据的来源完全来自数据库,因此数据库的连接格外重要。在本程序中,数据库的连接及实现数据的返回是在modDatabase共有模块中实现的。难点及解决方案1数据库的连接。数据库的连接既是关键也是我在程序设计中的难点。在设计过程中,数据库的连接耗时最多,当然在这个地方学到的也很多。首先是连接字符串出错,还有就是利用ADO控件连接数据时会出现数据不显示的问题。解决方法:为了使代码编写简便,我将数据库的连接放在了modDatabase-8-共有模块中,需要通过ADO对象来连接,之前对ADO对象连接不太熟悉,于是深入学习了ADO中connection对象,command对象,recordset对象的知识,弄懂了ADO对象连接的方法。最后根据本机设置对连接字符串做如下修改:cn.ConnectionString=driver={sqlserver};server=(local);uid=sa;pwd=;Database=Library_余昆鹏,实现了数据库的成功连接。针对ADO控件连接的问题,则是通过检查控件各属性值,最中找出错误原因。2主程序的建立。这部分的问题主要集中在代码的编写上,通常会在代码输入过程中出现低级错误,然后在编译时出错。最初我在总是在书写了整个模块的代码后才去运行程序,这使得在编译时出现的错误更多查找错误也更加困难。解决方法:及时检查代码的书写,减少低级错误,每写完一段代码就运行检查是否出错。对课程教学和课程设计的认识体会以及建议体会通过这次的课程设计,使我们了解了一个简单的图书管理系统的设计过程,并且基本掌握了SQLserver2005的基本用法,VisualBasic6.0的基本用法,掌握数据库的基本知识及其应用情况,加深对该课程的理解,在这次设计过程中使我们对编程和数据库的开发建立了浓厚的兴趣。-9-在设计过程中遇到了很多的问题,但是最后通过自己的努力、同学之间的互相帮助和在网上寻找最后都得到了解决,虽然这次的设计的系统很简单,也不是很完善,但是现在的过程却是相当不容易。首先要考虑数据库怎么样和应用程序连接起来,其次是怎样是程序的界面更美观。在设计中我深深感觉到自己掌握的知识还远远不够,已掌握的知识在运用过程中也怎会出现这样那样的问题。是我认识到实践是掌握知识最重要的环节,只有把学到的知识应用到实践中去,多做多练,才可以把理论的精华发挥出来。数据库一门非常复杂且庞大的知识,数据库的设计还要要求具有很高的编程能力,自己在这方面要学的实在还是很多。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。培养了自己对编程的兴趣,发现了自己的不足,这次课程设计就是一堂宝贵的实践课。建议希望以后老师可以在课程设计之前,对数据库应用程序的设计流程和方法做一个简单的介绍,这样可以使我们在开发过程中对流程有一个总体的认识,减少弯路。老师在课程教学过程中经常会提我们回答问题,我感觉这样很挺好的,可以让我们在课堂上保持较高的注意力。还有就是希望老师能够告诉我们下堂课要讲的内容,使我们能提前做好复习工作。最后祝老师新年快乐!!