数据库课程设计论文图书管理系统.doc

上传人:仙人指路1688 文档编号:2395799 上传时间:2023-02-17 格式:DOC 页数:24 大小:467KB
返回 下载 相关 举报
数据库课程设计论文图书管理系统.doc_第1页
第1页 / 共24页
数据库课程设计论文图书管理系统.doc_第2页
第2页 / 共24页
数据库课程设计论文图书管理系统.doc_第3页
第3页 / 共24页
数据库课程设计论文图书管理系统.doc_第4页
第4页 / 共24页
数据库课程设计论文图书管理系统.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《数据库课程设计论文图书管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计论文图书管理系统.doc(24页珍藏版)》请在三一办公上搜索。

1、目录一、题目(问题)描述和要求0二、需求分析阶段02.1用户对系统的要求12.11管理员12.12读者12.2数据流图32.3 数据字典52.4安全性需求72.5一致性需求82.6完整性需求8三、概念结构设计83.1把所有局部图综合成一个系统的总图124.1读者关系模型144.2管理员关系模型144.3图书关系模型14五、数据库物理设计阶段145.1确定数据库的物理结构145.2各个管理系统功能图155.2.1、读者管理系统155.2.3、管理员系统16六 数据库实施阶段6.3 编制与调试应用程序186.4 数据库试运行18七、数据库的运行与维护187.1系统集成效果187.2 调试过程中遇到

2、的问题187.3 总结体会18八系统的部分界面的截图一、题目(问题)描述和要求图书管理系统是学校、政府、企业管理机制中的重要组成部分,通过对我校图书管理系统的查询和对图书管理员的咨询,开发了图书管理系统。系统中解决了图书管理事务中的图书入库、图书入库、图书检索、借还图书等情况的问题。系统中包含七个功能模块:系统登录、图书信息查询、读者信息查询、管理员对系统的维护、图书入出库,借还图书和其他。系统使有sybase公司推出的pb 进行前端开发,pb是基于WINDOWS的面向对象的可视化开发工具。它采用了当今软件设计的最新技术,具有开发效率高、设计灵活、生成的软件界面友好美观等特点。系统中通过pb和

3、数据库进行无缝连接,大量应用了pb中的控件和触发事件。后端的开发工具是Microsoft sql server 2005,整个数据库都是相互关联的,使数据库具有较高的完整性,一致性和安全性。二、需求分析阶段图书综合信息管理系统的最终读者包括管理员,读者。从两个不同的读者视角出发管理和查询图书信息系统。2.1读者对系统的要求2.11管理员(1)信息需求。管理员能够查询读者借书有关的全部信息,包括读者的基本信息,读者借书还书以及违规现象的所有信息,还应能够查询当前图书信息。(2)处理需求。管理员应能够查询修改读者的基本信息; 查询修改图书信息包括图书的入库出库的更新。(3)安全性与完整性要求安全性

4、要求:系统应设置访问读者的标识以鉴别是否是合法读者及其密码。系统应对不同的数据设置不同的访问级别,限制访问读者可查询和处理完整性要求:各种信息记录的完整性,信息记录不能为空各种数据间相互联系的正确性相同的数据在不同记录中的一致性2.12读者(1)信息需求。查询本人基本信息、图书的基本信息;根据检索类型检索图书信息。(2)处理需求:借书、还书。(3)安全性与完整性要求安全性要求:读者拥有读者名及其密码。仅仅可以查询本人基本信息和借还图书完整性要求:各种信息记录的完整性,信息记录不能为空;各种数据间相互联系的正确性;相同的数据在不同记录中的一致性2.2数据流图、管理员数据流图:管理员查询增删改读者

5、信息,借还书信息以及罚款信息读者信息读者表查询增删改读者信息读者表查询增删改图书表,图书类别表图书,图书状态表图书信息图书信息、读者数据流图数读者查询读者信息读者表查询图书表读者信息图书信息图书信息借还书图书信息图书表图书信息、总数据流图读者信息管理员查询增删改读者信息读者表借书表,罚款表查询增删改图书表图书信息图书信息查询读者查询查询读者查询书借还书,以及罚款信息查询2.3 数据字典1)数据项:Book表中数据项列名:book别名:图书编号描述:唯一标识每一本图书的数字编号数据类型:varchar长度:20列名:kindname别名:图书类别描述:图书的所属的一种类别数据类型:varchar

6、长度:20其他数据项的定义同理。(2)数据结构:名称:读者档案描述:记录读者的个人信息及借还书情况。定义:读者信息=读者编号+读者姓名+密码+允许借书量+已借书量+性别+工作单位+住址+电话其他数据结构的描述同理。(3)数据流:数据流名:图书信息数据流说明:图书信息数据结构在系统内的流向数据流来源:管理员接收事务数据流向:管理员处理事务(4)数据存储:数据存储名:图书信息说明:图书信息存储,作为备用信息保存编号:最为图顺唯一标识,有管理员编辑输入的数据流:图书信息数据流,来自图书输出的数据流:图书档案,用于管理员与读者数据结构:图书档案存取频度:每天50次,查询300次存取方式:检索与更新(5

7、)处理过程:处理过程名:管理员对图书的登记处理说明:图书的入库,需要对图书进行登记,存档输入:图书入馆输出:图书的各种信息处理:图书登记过程就是对图书的登记,处理频度为每月一次,每当有新书入库时,都需要对其进行登记存档便于以后的处2.4安全性需求: 考虑到不同读者的权限不同,第一次进入该系统时系统会根据你输得读者名判断你是管理员还是读者还是读者,进入数据库主窗口中。这样系统就可赋予不同读者不同的权限。每位读者根据自己的身份不同,可以进行不同的操作。对于读者来说当进行不属于自己权限允许的步骤时无法打开,因为进入时不能进行的操作就已经变为灰色无法执行。管理员有权力行使所有的管理功能,读者只能进行一

8、般的查询及借还书。例如读者无权增删图书信息,无权修改其他读者相应信息。 2.5一致性需求: 在图书管理系统相关的表之间,有较强的关联性,为了实现一致性的需求,我们在各个表之间建立起了一致性约束。在此主要以实体完整性约束、参照完整性约束为主描述和说明,因为这两种完整性约束是关系数据库最重要的完整性约束。两表中任何一个的改变都将影响对方在系统中的信息,顾而在添加及删除的时候作用十分重要,减少信息的被破坏和不正确信息的录入。另外就是数据类型的约束,防止不匹配数据的录入造成的信息失真。2.6完整性需求: 根据图书管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障。 三、概念结

9、构设计图书信息管理系统中的实体有管理员、图书,读者读者姓名性别密码允许借书量已借书量编号学生实体的属性联系电话图书书名作者出版社登记日期ISBN编号图书实体的属性关键词管理员密码姓名性别出生日期权限登录名图书实体的属性3.1 各个实体间关系(1) 读者可以借书还书,可以查询图书信息和自己本人信息。(2) 管理员可以查询图书信息和读者信息以及读者借还书信息;还可以修改读者,图书信息。还可以维护系统(包括图书信息维护,图书状态维护,读者信息维护,图书类别维护)管理员E-R图:11管理管理借阅日期N1NN借阅图书读者N1归还还书日期罚款四、逻辑结构设计本系统的数据库管理系统使用sql server

10、2005.下面将概念设计的E-R图转换成关系模型。关系的候选码用下划线标出。读者关系模型4.1读者关系模型读者(读者编号,姓名,性别,密码,允许借书量,已借书量,联系电话,登录名)此为读者实体对应的关系模式。4.2管理员关系模型管理员(登录名,密码,姓名,性别,出生日期,权限)此为管理员实体对应的关系模式。4.3图书关系模型图书(编号,书名,作者,出版社,登记日期,ISBN,关键词,登录名,借阅日期,还书日期,罚款)此为图书实体对应的关系模式。五、数据库物理设计阶段5.1确定数据库的物理结构:在整个系统中总共建了9张表: Book表主要用来存储图书信息字段名字段中文名数据类型是否为空book图

11、书编号varchar(20)NoISBNISBNvarchar(50)Nob_name图书名称varchar(40)Nokindnumber图书类别varchar(20) Nostatenumber图书状态varchar(20) Nob_author图书作者varchar(20)Yesb_print出版社varchar(50)Yesb_kw关键词varchar(40)Yesb_wt登记日期smalldatetimeYesReader表主要存储读者的个人信息及借还书记录字段名字段中文名数据类型是否为空readernumber读者编号varchar(20)Nor_name读者姓名varchar(5

12、0)Nor_password密码varchar(50)Nor_pbn允许借书量intNor_abn已借书量intNor_sex性别char(2)Yesr_wp工作单位varchar(50)Yesr_address住址varchar(50)Yesr_phone电话varchar(20)YesLibririan表主要记录图书管理员的信息Librarian表字段名字段中文名数据类型是否为空l_login登录名varchar(10)Nol_password密码varchar(10)Nol_grant权限tinyintNol_name姓名varchar(50)Nol_sex性别char(2)Yesl_b

13、t出生日期smalldatetimeYesKind表是记录区分图书种类Kind表字段名字段中文名数据类型是否为空kindnumber类别编号varchar(20)Nok_value值varchar(10)NoState表表现的是图书状态State表字段名字段中文名数据类型是否为空statenumber状态编号varchar(20)Nos_value值varchar(10)NoBookborrow表字段名字段中文名数据类型是否为空Book图书编号varchar(20)NoReadernumber读者编号varchar(20)NoB_name图书名称varchar(20)NoR_bt借书日期Dat

14、etimeNoR_rt应还日期DatetimeNoFine表记录读者的罚款明细Fine表字段名字段中文名数据类型是否为空f_number罚款编号varchar(20)Nobook图书编号varchar(20)Yesreaderrnumber渎者编号varchar(20)Yesf_datetime罚款日期smalldatetimeYesf_money应罚金额moneyYesInput表字段名字段中文名数据类型是否为空book图书编号varchar(20)NoB_name图书名称varchar(40)YesB_print出版社varchar(20)YesKindnumber图书类别varchar(

15、20)YesIncount入库数量IntYesIntime入库时间DatetimeYesOutput表字段名字段中文名数据类型是否为空book图书编号varchar(20)NoB_name图书名称varchar(40)YesB_print出版社varchar(20)YesKindnumber图书类别varchar(20)Yesoutcount出库数量IntYesouttime出库时间DatetimeYes数据库涉及到的主键,外键,索引表建立主键表名主键名主键字段BookPk_bookBook(图书编号)ReaderPk_readernumberReadernumber(读者编号)Librari

16、anPk_loginLogin(登录名)StatePk_statenumberStatenumber(状态编号)KindPk_kindnumberKindnumber(类别编号)FinePk_f_numberF_number(罚款编号)建立外键表名外键名称字段名对应表Bookfk_book_statenumberstatenumberstateBookfk_book_kindnumberkindernumberkindbookfk_book_readernumberreadernumberreaderfinefk_fine_bookbookbookfineFk_fine_readernumbe

17、rreadernumberReaderinputfk_input_kindnumberkindernumberkindoutputfk_output_kindnumberkindernumberkind建立索引表名索引名字段名唯一索引BookI_book_bookbook是BookI_book_isbnISBN否bookI_book_b_nameB_name否bookI_book_readermunberreadernumber否bookI_book-kindnumberKindnumber否5.3各个管理系统功能图5.2.1、读者管理系统读者可以进行图书的检索,可以按图书编号查询图书信息查看

18、自己需要的书目的相关信息,可以查询自己的信息和借书情况,可以借阅和归还相关图书,当自己的图书过期时会提示让读者罚款等等读者 系 统查询读者信息查询图书信息借阅图书归还图书按图书编号检索按读者编号检索5.2.2、管理员系统读者可以进行图书的检索查看图书信息库存从而确定是否图书入库,查看图书借阅记录统计各类书的借阅情况从而确定该书是否属于冗余书目来确定出库。管理读者信息系统读者退学了及时删除读者信息取消其操作权限,读者入学了及时插入读者信息增加其操作权限。管理读者信息系统读者离职了及时删除读者信息取消其操作权限,及时对图书的类别,状态,进行维护管 理 员 系 统查询读者信息按图书编号按读者编号插入

19、图书修改图书信息保存图书修改图书查询图书信息系统维护图书类别图书信息读者信息图书状态删除图书六、数据库的实施阶段6.1编制与调试应用程序6.1.1数据库的模块:七个功能模块:系统登录、图书信息查询、读者信息查询、管理员对系统的维护、图书入出库,借还图书和其他。6.1.1.1系统登录模块:在登录模块中我们实现了一些权限的约束,只有在授权范围内的用户才有权利登录系统,其他情况系统自动报错,而且在用户输入错误信息次数超过3次,则会退出登录系统,防止了一些非法用户登录string correct_pswdif sle_1.text= then/pop a message boxmessagebox(信

20、息提示,用户名不能为空)/sle_1 get the focussle_1.setfocus()elseif sle_2.text= then/pop a message boxmessagebox(信息提示,密码不能为空)/sle_2 get the focussle_2.setfocus()elseg_input_time=g_input_time+1g_user=sle_1.textg_pwd=sle_2.text/取出数据库用户口令表格中对应用户的口令select r_password into:correct_pswdfrom readerwhere readernumber=:g_

21、user;/将数据库中保存的口令和用户输入的口令作比较if g_pwd=correct_pswd thenopen(w_parent)close(w_reader)elseif g_input_time3 thenmessagebox(警告,输入用户口令的次数太多!)close(w_reader)elsemessagebox(警告,输入的用户口令有误,请重新输入)end ifend ifend if61.1.2图书信息查询模块:图书信息查询模块主要实现了根据图书的编号检索图书的信息,主要实现的代码:string ll_numberstring isbn,name,author,keywordl

22、l_number=trim(em_1.text)isbn=sle_1.textname=sle_2.textauthor=sle_3.textkeyword=sle_4.textdw_3.retrieve(ll_number)if dw_3.rowcount()=0 thenmessagebox(错误! ,输入的用户编号或密码错误!)dw_3.insertrow(0)returnend ifopen事件中:sqlca.autocommit=truedw_1.retrieve(ll_number)dw_3.settransobject(sqlca)dw_3.insertrow(0)dw_1.se

23、ttransobject(sqlca)dw_3.retrieve()/dw_1.retrieve()6.1.1.3读者信息查询模块:读者信息查询模块主要是通过调用后台的存储过程来实现的,代码如下:use librarysystemgocreate procedure getdetailsnumber varchar(20)asselect * from readerwhere readernumber=number6.1.1.4读者借还书模块:读者借还书模块主要实现的是先根据读书的图书的编号先检索出图书信息,然后读者输入自己的编号查看自己的借书记录,读者在看见自己的允许借书量不为零时,此时读者

24、借书,其中借书按钮的代码如下:借书代码:string bmc,bbh,dbhinteger rk,pkdbh=trim(em_2.text);bbh=trim(em_1.text);select b_name into:bmcfrom bookwhere book=:bbh;insert borrowbook (book,bookname,readernumber) values(:bbh,:bmc,:dbh); select r_pbn into:pk from reader where readernumber=:dbh; select r_abn into:rk from reader

25、where readernumber=:dbh;/ sle_1.text=string(pk)/ sle_2.text=string(rk) pk = pk - 1 rk = rk + 1update reader set r_pbn=:pk , r_abn=:rk where readernumber=:dbh;messagebox(提示,借阅成功!)/end if在图书还书时,读者在输入图书的编号后,会检索出图书借阅表的信息,显示用户归还的时间是否过期,如果过期读者不能归还图书,必须在交完罚款单后才能借书,这样就实现了对用户的约束,其中部分代码如下:还书按钮代码:string bbh,db

26、hinteger rk,pkdbh=trim(em_2.text);bbh=trim(em_1.text);delete from borrowbook where book=:dbh; select r_pbn into:pk from reader where readernumber=:bbh; select r_abn into:rk from reader where readernumber=:bbh; pk=pk + 1 rk=rk - 1update reader set r_pbn=:pk , r_abn=:rk where readernumber=:bbh; if sql

27、ca.sqlcode0 then messagebox(!,!)elsemessagebox(提示,还书成功!)end if罚款按钮:确认罚款:date fk,yhstring number,testdecimal je,jenewinteger jh;fk=today()test=trim(em_1.text)select readernumber into :number from fine;select rt into:yh from borrowbookwhere readernumber=:test;jh=(year(fk)-year(yh)*365+(month(fk)-month

28、(yh)*30+(day(fk)-day(yh)*1if fkyh thenje=jh*0.5elsemessagebox(错误!,无需罚款!)end if6.1.1.4图书出入库模块:图书出入库模块是通过增加图书和删除图书的记录实现的,部分代码如下:增加记录:图书入库:dw_1.scrolltorow(dw_1.insertrow(0)dw_1.setfocus()dw_1.setcolumn(1)messagebox(提示!,入库成功!)cb_3.enabled=falsecb_4.enabled=false6.1.1.5系统维护模块:在系统维护模块中,管理员通过了对读者信息的维护,图书信

29、息的维护,图书类别的维护,图书状态的维护,来实现对 信息的修改,读者信息的修改,图书类别以及图书状态的修改在图书类别的维护中,如果输入的图书类别的编号不满足所定义的字符长度,则系统报错,这主要是调用了触发器来实现:触发器代码如下:use librarysystemgocreate procedure getdetailsnumber varchar(20)asselect * from readerwhere readernumber=number6.1.1.6:其他模块:该模块包括关于和退出两个界面,关于主要是这个系统版权所有和开发信息,退出就是退出该界面说明:1定义reader表的过程中,

30、对性别字段使用了check约束:在check约束的对话框中输入:check r_sex=男or r_sex=女2在定义borrowbook表中,对r_bt(借书日期)字段使用了default值约束:默认为当前日期,在default对话框中输入:getdate()3在出入库表中对,出入库时间intime和outtime都使用了默认值约束:默认为当前日期,在default对话框中输入:getdate()6.2 数据库试运行七、数据库的运行与维护7.1系统集成效果系统基本开发完成,其功能基本满足用户对图书信息的查询,对本人信息的查询,以及借还书和过期罚款的需求;满足了管理员对图书和读者信息的查询和修

31、改,对读者借还书记录的查询和修改,对图书出入库的操作和系统维护的需求。7.2 调试过程中遇到的问题在读者信息查询时,我们调用了存储过程来实现信息的检索,在实现的过程中我们遇到了好多错误,在不断上网搜素和同学们的交流中才解决了此问题。尤其是在调用存储过程的时候,在前台调用的时候总是出错,出现如下错误:上网一搜素,结果粘了一段代码之后就好了string sqlsql = exec getdetails + right(sqlsyntax,len(sqlsyntax) - (pos(sqlsyntax,) - 1)dw_1.setsqlpreview(sql)return 07.3 总结体会通过本次课程设计,我基本掌握了pb编程数据库的建立、连接以及建表建查询,使我更进一步了解了面向对象编程的内涵,领略了pb和sql server的博大精深,以及其高效率的开发环境,pb真的是很好的开发工具。由于设计时间较短,加之本人水平所限,此系统只能初步运用pb强大功能的一些基本控件,如因此在设计过程中可能有漏洞或不尽如人意的地方,这有待于以后进一步完。由于对知识的有限有很多功能在如此短的时间内本人无法实现。系统部门模块的截图:管理员登录界面菜单界面:读者信息查询界面:此界面调用了存储过程图书信息查询界面:图书入库界面:图书类别维护界面:此界面调用了触发器

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号