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

上传人:土8路 文档编号:10267145 上传时间:2021-05-03 格式: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 二、需求分析阶段0 2.1 用户对系统的要求 1 2.11 管理员1 2.12 读者1 2.2 数据流图 3 2.3 数据字典 5 2.4安全性需求 7 2.5一致性需求 8 2.6完整性需求 8 三、概念结构设计8 3.1 把所有局部图综合成一个系统的总图12 4.1 读者关系模型14 4.2 管理员关系模型14 4.3 图书关系模型14 五、数据库物理设计阶段 14 5.1 确定数据库的物理结构14 5.2 各个管理系统功能图15 5.2.1、读者管理系统 15 5.2.3、管理员系统 16 六 数据库实施阶段 6.3 编制与调试应用程序 18 6

2、.4 数据库试运行 18 七、数据库的运行与维护 18 7.1 系统集成效果18 7.2 调试过程中遇到的问题 18 7.3 总结体会 18 八系统的部分界面的截图 一、题目(问题)描述和要求一、题目(问题)描述和要求 图书管理系统是学校、政府、企业管理机制中的重要组成部分,通过对我 校图书管理系统的查询和对图书管理员的咨询,开发了图书管理系统。系统中 解决了图书管理事务中的图书入库、图书入库、图书检索、借还图书等情况的 问题。系统中包含七个功能模块:系统登录、图书信息查询、读者信息查询、 管理员对系统的维护、图书入出库,借还图书和其他。 系统使有 sybase 公司推出的 pb 进行前端开发

3、,pb 是基于 WINDOWS 的面向 对象的可视化开发工具。它采用了当今软件设计的最新技术,具有开发效率高、 设计灵活、生成的软件界面友好美观等特点。系统中通过 pb 和数据库进行无缝 连接,大量应用了 pb 中的控件和触发事件。后端的开发工具是 Microsoft sql server 2005,整个数据库都是相互关联的,使数据库具有较高的完整性,一致 性和安全性。 二、需求分析阶段二、需求分析阶段 图书综合信息管理系统的最终读者包括管理员,读者。从两个不同的读者视角 出发管理和查询图书信息系统。 2.12.1 读者对系统的要求读者对系统的要求 2.112.11 管理员管理员 (1)信息需

4、求。管理员能够查询读者借书有关的全部信息,包括读者的基本信 息,读者借书还书以及违规现象的所有信息,还应能够查询当前图书信息。 (2)处理需求。 管理员应能够查询修改读者的基本信息; 查询修改图书信息包括图书的入库出 库的更新。 (3)安全性与完整性要求 安全性要求: 系统应设置访问读者的标识以鉴别是否是合法读者及其密码。 系统应对不同的数据设置不同的访问级别,限制访问读者可查询和处理 完整性要求: 各种信息记录的完整性,信息记录不能为空 各种数据间相互联系的正确性 相同的数据在不同记录中的一致性 2.122.12 读者读者 (1)信息需求。查询本人基本信息、图书的基本信息;根据检索类型检索图

5、书 信息。 (2)处理需求:借书、还书。 (3)安全性与完整性要求 安全性要求: 读者拥有读者名及其密码。仅仅可以查询本人基本信息和借还图书 完整性要求: 各种信息记录的完整性,信息记录不能为空;各种数据间相互联系的正确性; 相同的数据在不同记录中的一致性 2.22.2 数据流图数据流图 、管理员数据流图:、管理员数据流图: 管理员 查询 增删 改 读者信息,借还书信息以及罚款 信息 读者信息 读者表 查询 增删 改 读者信息 读者表 查询 增删 改 图书表,图书类 别表图书,图书 状态表 图书信息 图书信息 、读者数据流图数、读者数据流图数 读者 查 询 读者信息 读者表 查 询 图书表 读

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

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

8、天50 次,查询300 次 存取方式:检索与更新 (5 5)处理过程:)处理过程: 处理过程名:管理员对图书的登记处理 说明:图书的入库,需要对图书进行登记,存档 输入:图书入馆 输出:图书的各种信息 处理:图书登记过程就是对图书的登记,处理频度为每月一次,每当有新书入 库时,都需要对其进行登记存档便于以后的处 2.42.4安全性需求安全性需求: 考虑到不同读者的权限不同,第一次进入该系统时系统会根据你输得读者名判 断你是管理员还是读者还是读者,进入数据库主窗口中。这样系统就可赋予不 同读者不同的权限。每位读者根据自己的身份不同,可以进行不同的操作。对 于读者来说当进行不属于自己权限允许的步骤

9、时无法打开,因为进入时不能进 行的操作就已经变为灰色无法执行。管理员有权力行使所有的管理功能,读者 只能进行一般的查询及借还书。例如读者无权增删图书信息,无权修改其他读 者相应信息。 2.52.5一致性需求一致性需求: 在图书管理系统相关的表之间,有较强的关联性,为了实现一致性的需求, 我们在各个表之间建立起了一致性约束。在此主要以实体完整性约束、参照完 整性约束为主描述和说明,因为这两种完整性约束是关系数据库最重要的完整 性约束。两表中任何一个的改变都将影响对方在系统中的信息,顾而在添加及 删除的时候作用十分重要,减少信息的被破坏和不正确信息的录入。 另外就是数据类型的约束,防止不匹配数据的

10、录入造成的信息失真。 2.62.6完整性需求完整性需求: 根据图书管理系统的要求,为保持数据的完整性,采用了数据库的事务机制, 防止出现操作故障。 三、三、概念结构设计概念结构设计 图书信息管理系统中的实体有管理员、图书,读者 读者 姓名性别密码允许借书量已借书量 编号 学生实体的属性 联系电话 图书 书名作者出版社 登记日 期 ISBN编号 图书实体的属性 关键词 管理员 密码姓名性别 出生日 期 权限 登录名 图书实体的属性 3.13.1各个实体间关系 (1) 读者可以借书还书,可以查询图书信息和自己本人信息。 (2) 管理员可以查询图书信息和读者信息以及读者借还书信息;还可以修改 读者,

11、图书信息。还可以维护系统(包括图书信息维护,图书状态维护, 读者信息维护,图书类别维护) E-R 图: 读者 管理员 管 理 借阅图书 归还 管 理 借阅日期 还书日期 罚款 1 N 1 N 1 1N N 四、逻辑结构设计 本系统的数据库管理系统使用 sql server 2005.下面将概念设计的 E-R 图转换 成关系模型。关系的候选码用下划线标出。 读者关系模型 4.1 读者关系模型 读者(读者编号,姓名,性别,密码,允许借书量,已借书量,联系电话, 登录名) 此为读者实体对应的关系模式。 4.2 管理员关系模型 管理员(登录名,密码,姓名,性别,出生日期,权限) 此为管理员实体对应的关

12、系模式。 4.3 图书关系模型 图书(编号,书名,作者,出版社,登记日期,ISBN,关键词,登录名, 借阅日期,还书日期,罚款) 此为图书实体对应的关系模式。 五、数据库物理设计阶段 5.1 确定数据库的物理结构:在整个系统中总共建了 9 张表: Book 表主要用来存储图书信息 字段名字段中文名数据类型是否为空 book图书编号varchar(20) No ISBN ISBN varchar(50) No b_name图书名称varchar(40) No kindnumber图书类别varchar(20) No statenumber图书状态varchar(20) No b_author图书

13、作者varchar(20) Yes b_print出版社varchar(50) Yes b_kw关键词varchar(40) Yes b_wt登记日期smalldatetime Yes Reader 表主要存储读者的个人信息及借还书记录 字段名字段中文名数据类型是否为空 readernumber读者编号varchar(20) No r_name读者姓名varchar(50) No r_password密码varchar(50) No r_pbn允许借书量int No r_abn已借书量int No r_sex性别char(2) Yes r_wp工作单位varchar(50) Yes r_add

14、ress住址varchar(50) Yes r_phone电话varchar(20) Yes Libririan 表主要记录图书管理员的信息 Librarian 表 字段名字段中文名数据类型是否为空 l_login登录名varchar(10) No l_password密码varchar(10) No l_grant权限tinyint No l_name姓名varchar(50) No l_sex性别char(2) Yes l_bt出生日期smalldatetime Yes Kind 表是记录区分图书种类 Kind 表 字段名字段中文名数据类型是否为空 kindnumber类别编号varcha

15、r(20) No k_value值varchar(10) No State 表表现的是图书状态 State 表 字段名字段中文名数据类型是否为空 statenumber状态编号varchar(20) No s_value值varchar(10) No Bookborrow 表 字段名字段中文名数据类型是否为空 Book图书编号varchar(20) No Readernumber读者编号varchar(20) No B_name图书名称varchar(20) No R_bt借书日期Datetime No R_rt应还日期Datetime No Fine 表记录读者的罚款明细 Fine 表 字段

16、名字段中文名数据类型是否为空 f_number罚款编号varchar(20) No book图书编号varchar(20) Yes readerrnumber渎者编号varchar(20) Yes f_datetime罚款日期smalldatetime Yes f_money应罚金额money Yes Input 表 字段名字段中文名数据类型是否为空 book图书编号varchar(20) No B_name图书名称varchar(40) Yes B_print出版社varchar(20) Yes Kindnumber图书类别varchar(20) Yes Incount入库数量Int Yes

17、 Intime入库时间Datetime Yes Output 表 字段名字段中文名数据类型是否为空 book图书编号varchar(20) No B_name图书名称varchar(40) Yes B_print出版社varchar(20) Yes Kindnumber图书类别varchar(20) Yes outcount出库数量Int Yes outtime出库时间Datetime Yes 数据库涉及到的主键,外键,索引表 建立主键 表名主键名主键字段 BookPk_bookBook(图书编号) ReaderPk_readernumberReadernumber(读者编号) Librari

18、anPk_loginLogin(登录名) StatePk_statenumberStatenumber(状态编号) KindPk_kindnumberKindnumber(类别编号) FinePk_f_numberF_number(罚款编号) 建立外键 表名外键名称字段名对应表 Bookfk_book_statenumberstatenumberstate Bookfk_book_kindnumberkindernumberkind bookfk_book_readernumberreadernumberreader finefk_fine_bookbookbook fineFk_fine_r

19、eadernumberreadernumberReader inputfk_input_kindnumberkindernumberkind outputfk_output_kindnumberkindernumberkind 建立索引 表名索引名字段名唯一索引 BookI_book_bookbook是 BookI_book_isbnISBN否 bookI_book_b_nameB_name否 bookI_book_readermunberreadernumber否 bookI_book-kindnumberKindnumber否 5.3 各个管理系统功能图 5.2.15.2.1、读者管理系统

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

21、读 者信息取消其操作权限,及时对图书的类别,状态,进行维护 管 理 员 系 统 查询读 者信息 按图 书编 号 按读 者编 号 插 入 图 书 修改图 书信息 保 存 图 书 修 改 图 书 查询图 书信息 系统维 护 图 书 类 别 图 书 信 息 读 者 信 息 图 书 状 态 删 除 图 书 六、数据库的实施阶段六、数据库的实施阶段 6.16.1 编制与调试应用程序编制与调试应用程序 6.1.1 数据库的模块:七个功能模块:系统登录、图书信息查询、读者信息查 询、管理员对系统的维护、图书入出库,借还图书和其他。 6.1.1.16.1.1.1 系统登录模块系统登录模块:在登录模块中我们实现

22、了一些权限的约束,只有在授 权范围内的用户才有权利登录系统,其他情况系统自动报错,而且在用户输入 错误信息次数超过 3 次,则会退出登录系统,防止了一些非法用户登录 string correct_pswd if sle_1.text= then /pop a message box messagebox(信息提示,用户名不能为空) /sle_1 get the focus sle_1.setfocus() elseif sle_2.text= then /pop a message box messagebox(信息提示,密码不能为空) /sle_2 get the focus sle_2.s

23、etfocus() else g_input_time=g_input_time+1 g_user=sle_1.text g_pwd=sle_2.text /取出数据库用户口令表格中对应用户的口令 select r_password into:correct_pswd from reader where readernumber=:g_user; /将数据库中保存的口令和用户输入的口令作比较 if g_pwd=correct_pswd then open(w_parent) close(w_reader) else if g_input_time3 then messagebox(警告,输入用

24、户口令的次数太多!) close(w_reader) else messagebox(警告,输入的用户口令有误,请重新输入) end if end if end if 6 61.1.21.1.2 图书信息查询模块图书信息查询模块:图书信息查询模块主要实现了根据图书的编号检 索图书的信息,主要实现的代码:string ll_number string isbn,name,author,keyword ll_number=trim(em_1.text) isbn=sle_1.text name=sle_2.text author=sle_3.text keyword=sle_4.text dw_3

25、.retrieve(ll_number) if dw_3.rowcount()=0 then messagebox(错误! ,输入的用户编号或密码错误!) dw_3.insertrow(0) return end if open 事件中: sqlca.autocommit=true dw_1.retrieve(ll_number) dw_3.settransobject(sqlca) dw_3.insertrow(0) dw_1.settransobject(sqlca) dw_3.retrieve() /dw_1.retrieve() 6.1.1.36.1.1.3 读者信息查询模块读者信息查

26、询模块:读者信息查询模块主要是通过调用后台的存储过 程来实现的,代码如下: use librarysystem go create procedure getdetails number varchar(20) as select * from reader where readernumber=number 6.1.1.46.1.1.4 读者借还书模块读者借还书模块:读者借还书模块主要实现的是先根据读书的图书的 编号先检索出图书信息,然后读者输入自己的编号查看自己的借书记录,读者 在看见自己的允许借书量不为零时,此时读者借书,其中借书按钮的代码如下: 借书代码: string bmc,bbh

27、,dbh integer rk,pk dbh=trim(em_2.text); bbh=trim(em_1.text); select b_name into:bmc from book where 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 where readernumber=:dbh; /

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

29、h=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 - 1 update reader set r_pbn=:pk , r_abn=:rk where readernumber=:bbh; if sqlca.sqlcode0 t

30、hen messagebox(!,!) else messagebox(提示,还书成功!) end if 罚款按钮: 确认罚款: date fk,yh string number,test decimal je,jenew integer jh; fk=today() test=trim(em_1.text) select readernumber into :number from fine; select rt into:yh from borrowbook where readernumber=:test; jh=(year(fk)-year(yh)*365+(month(fk)-mon

31、th(yh)*30+(day(fk)-day(yh)*1 if fkyh then je=jh*0.5 else messagebox(错误!,无需罚款!) end if 6.1.1.46.1.1.4 图书出入库模块:图书出入库模块:图书出入库模块是通过增加图书和删除图书的记录 实现的,部分代码如下:增加记录:图书入库: dw_1.scrolltorow(dw_1.insertrow(0) dw_1.setfocus() dw_1.setcolumn(1) messagebox(提示!,入库成功!) cb_3.enabled=false cb_4.enabled=false 6.1.1.56.

32、1.1.5 系统维护模块:系统维护模块:在系统维护模块中,管理员通过了对读者信息的维护, 图书信息的维护,图书类别的维护,图书状态的维护,来实现对 信息的修改, 读者信息的修改,图书类别以及图书状态的修改 在图书类别的维护中,如果输入的图书类别的编号不满足所定义的字符长度, 则系统报错,这主要是调用了触发器来实现:触发器代码如下: use librarysystem go create procedure getdetails number varchar(20) as select * from reader where readernumber=number 6.1.1.66.1.1.6:

33、其他模块:其他模块:该模块包括关于和退出两个界面,关于主要是这个系统版 权所有和开发信息,退出就是退出该界面 说明:说明:1 定义 reader 表的过程中,对性别字段使用了 check 约束:在 check 约 束的对话框中输入:check r_sex=男or r_sex=女 2 在定义 borrowbook 表中,对 r_bt(借书日期)字段使用了 default 值约束:默 认为当前日期,在 default 对话框中输入:getdate() 3 在出入库表中对,出入库时间 intime 和 outtime 都使用了默认值约束:默认 为当前日期,在 default 对话框中输入:getda

34、te() 6.26.2 数据库试运行数据库试运行 七、数据库的运行与维护七、数据库的运行与维护 7.17.1 系统集成效果系统集成效果 系统基本开发完成,其功能基本满足用户对图书信息的查询,对本人信息 的查询,以及借还书和过期罚款的需求;满足了管理员对图书和读者信息的查 询和修改,对读者借还书记录的查询和修改,对图书出入库的操作和系统维护 的需求。 7.27.2 调试过程中遇到的问题调试过程中遇到的问题 在读者信息查询时,我们调用了存储过程来实现信息的检索,在实现的过 程中我们遇到了好多错误,在不断上网搜素和同学们的交流中才解决了此问题。 尤其是在调用存储过程的时候,在前台调用的时候总是出错,

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

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1