《数据结构课程设计报告图书馆管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告图书馆管理系统.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据结构与算法课程设计报告( 2011- 2012年度第2学期)图书馆管理系统 学院英才实验学院学生姓名张浩然班级学号08指导教师陈端兵完成日期2012.61.1 课程设计目的巩在图书馆中,当借书人员越来越多时,对图书馆图书管理是一项琐碎、复杂而又需要十分认真的工作,对图书馆图书借出和还回图书及剩余图书信息的统计工作量很大,但又是不允许出错的,如果实行手工操作,每天借出图书和还回图书信息需要手工填写大量的表格,这就会耗费图书馆管理员大量的时间和精力。为了减轻图书馆管理员的负担,提高工作效率,同时也为了提高图书馆的现代化服务水平,因此,我们用所学的C#知识做了一个图书馆信息管理系统,让我们可以很
2、好的利用图书馆信息管理系统来登记图书馆图书信息。固并加深学生对C+语言程序设计知识的理解;1.2 课程设计内容1)利用C语言设计一个图书馆管理系统。2)基本要求: 1: 管理员登陆后,可以进行的操作 (1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等); (2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量); (3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息; (4)查看学生的信息; (5)添加图书的信息(图书号,书名,作者,出版社,数量等); (6)修改图书的信息(图书号,书名,作者,出版社,数量等); (7)删除图书的信息(
3、图书号,书名,作者,出版社,数量等); (8)查看图书的信息;2: 学生登陆后,可以进行的操作 (1)查看学生自己借阅的数目信息; (2)借阅图书; (3)归还图书; (备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。)2 系统需求分析2.1 系统目标实现一个留言板2.2 主体功能1留言能选择保存路径 2.能签署留言日期 3.能选择留言打开路径并阅读留言4.能转存留言。2.3 开发环境VC+6.0 ,C#环境3 逻辑设计方案(1) 图书管理系统概念模型图2-1 图书管理系统的整体E-R图(2) 图书管理系统逻辑模型读者信息:(读者编号、姓名、单位、性别、读者类别名、登记时间、已借书
4、数量、电话、住址、超期次数)读者类别信息:(读者类别名、可借书数量、借书日期)书籍信息:(图书编号、书名、作者、类别编号、出版社、出版日期、入库时间、馆藏数量、可借复本、价格)书籍类别信息:(类别编号、图书类别名)书籍唯一识别信息:(书名、图书序号、图书编号)借阅信息:(序号、读者编号、图书编号、图书序号、借阅时间、归还时间)(3) 图书管理系统物理模型数据表 读者类别表表名属性名数据类型字段长是否允许为空约束条件读者类别(userCate)读者类别名(cateName)varchar10否主键可借书数量(borrNum)int否借书期限(borrTime)int否书籍信息表表名属性名数据类型
5、字段长是否允许为空约束条件书籍信息(book)图书编号(bookId)char10否主键书名(bookName)varchar20否作者(author)varchar20否类别编号(bkCateId)varchar6否外键出版社(publish)varchar20否出版日期(pubTime)date入库时间(checkIn)date否可借复本(bkNum)varchar6否价格(price)money书籍识别表表名属性名数据类型字段长是否允许为空约束条件书籍识别(book category)书名(bookName)varchar20否主键图书序号(orderNum)char6否图书编号(boo
6、kId)char10否书籍类别表表名属性名数据类型字段长是否允许为空约束条件图书类别(book category)类别编号(bkCateId)varchar6否主键图书类别名(bookCate)nvachar20否读者信息表表名属性名数据类型字段长是否允许为空约束条件读者信息(userTb)读者编号(userId)char6否主键姓名(userName)varchar10否单位(userDep)nvarchar20性别(userSex)varchar2否默认为男读者类别名(cateName)varchar10否外键登记时间(userReg)date否已借书数量(userBkNum)int电话(
7、userTel)varchar11住址(userAdd)varchar30超期次数(overtimes)char6借阅表表名属性名数据类型字段长是否允许为空约束条件借阅信息(lending)序号(id)int否主键,自动编号读者编号(userId)char6否外键图书编号(bookId)char10否外键图书序号(orderNum)char6否借阅时间(lendDate)date否归还时间(rtnDate)date3 物理设计方案(1) 创建数据库create database libraryon(name=library,filename=d:library.mdf)(2) 创建表(包含外键
8、)创建读者类别表create table userCate(cateName varchar(10) not null primary key,borrNum int not null,borrTime int not null)创建书籍类别表create table bookCateGory(bkCateId varchar(6) primary key not null,bookCate nvarchar(20) not null)创建书籍识别表create table bookName(bookName varchar(20)not null primary key,orderNum c
9、har(6)not null,bookId char(10)not null,)创建书籍信息表create table book(bookId char(10) not null primary key ,bookName varchar(20) not null foreign key references bookName,author varchar(20) not null,bkCateId varchar(6) not null foreign key references bookCateGory,publish varchar(20) not null,pubTime date
10、null,checkIn date not null default 2004/09/01,bkNum varchar(6) not null check (bkNum0),price money null)创建读者信息表create table userTb(userId char(6) primary key not null,userName varchar(10) not null,userDep nvarchar(20) null,userSex varchar(2) default 男 check (UserSex in (男,女),cateName varchar(10) not
11、 null foreign key references userCate,userReg date not null default 2005/03/10,userBkNum int null,userTel varchar(11) null,userAdd varchar(30) null,overtimes char(6) null)创建借阅信息表create table lending(id int identity(0001,1) not null primary key,userId char(6) not null foreign key references userTb,bo
12、okId char(10) not null foreign key references book,orderNum char(6)not null,lendDate datetime not null,rtnDate datetime null)(3) 创建相关约束和绑定规则创建图书类别取值范围为计算机类、管理类、电子类、机械类的规则,并与相应的列绑定create rule bkLimi as bookCate in(计算机类,管理类,电子类,机械类)exec sp_helptext bkLimi exec sp_bindrule bkLimi,bookCateGory.bookCate向
13、借阅表插入一条记录时,读者表相应的读者已借书数量+1create trigger userBkNum_trion Lendingafter insertas begindeclare z char(6)select z=userId from insertedupdate userTbset userBkNum=userBkNum+1 where userId=zand overtimes0endgo读者每超期未还书一次,读者表的超期未还次数+1create trigger overtimes_a2on lendingafter insertasbegindeclare x char(6)de
14、clare v char(10)declare w datedeclare e intdeclare o dateselect x=userId from insertedselect v=cateName from userCateselect w=lenDdate from insertedselect e=borrTime from userCate where cateName=vselect o=rtnDate from insertedupdate userTbset overtimes=overtimes+1 where overtimes5 and userId=x and d
15、ateadd(dd,e,w)0rollback tran save_here /*事务的回滚语句*/gocommit tran go向useercate表插入数据insert userCate values(本科生,03,60)insert userCatevalues(教师,20,90)insert userCatevalues(研究生,05,60)向bookname表插入数据insert bookNamevalues(VB程序设计,05,TP101)insert bookNamevalues(JAVA程序设计,02,TP102)insert bookNamevalues(C程序设计,10,
16、TP103)insert bookNamevalues(微观经济学,12,EC101)insert bookNamevalues(经济学概论,03,EC102)insert bookNamevalues(西方经济学,17,EC103)insert bookNamevalues(机械制图,08,JX101)insert bookNamevalues(机械传动,15,JX102)insert bookNamevalues(光电子器件物理学,07,DZ101)insert bookNamevalues(数字电子技术,11,DZ102)向book表插入数据insert bookvalues(EC102
17、,经济学概论,李刚,EC,电子工业出版社,2008-04-23,2008-05-30,30,35.00)insert bookvalues(EC103,西方经济学,赵志延,EC,清华大学出版社,2009-01-01,2009-01-20,50,37.00)insert bookvalues(JX101,机械制图,杨君伟,JX,机械工业出版社,2007-06-01,2009-01-20,20,30.00)insert bookvalues(JX102,机械传动,工业部,JX,机械工业出版社,2008-03-21,2009-01-20,30,06.00)insert bookvalues(TP10
18、1,VB程序设计,王义,TP,清华大学出版社,2008-01-01,2009-01-01,40,30.00)insert bookvalues(TP102,JAVA程序设计,张明,TP,机械工业出版社,2007-03-05,2008-10-03,35,25.00)insert bookvalues(DZ102,数字电子技术,蒋卓勤,DZ,北京大学出版社,2007-03-05,2008-10-03,50,60.00)insert bookvalues(DZ101,光电子器件物理学,卢俊,DZ,电子工业出版社,2007-03-05,2008-10-03,40,50.00)insert bookva
19、lues(TP103,C程序设计,谭浩强,TP,清华大学出版社,2007-07-05,2008-10-12,30,27.00)insert bookvalues(EC101,微观经济学,李小刚,EC,北京大学出版社,2008-03-05,2008-10-03,25,25.00)向usertb表插入数据insert userTbvalues(G001,关羽,电子系,default,研究生,2009-04-24,03,23431,2-510,0)insert userTbvalues(G002,刘备,教育系,default,研究生,2008-09-01,04,34563,4-302,05)inse
20、rt userTbvalues(S001,黄忠,经管系,default,本科生,2009-04-24,02,23452,5-301,0)insert userTbvalues(S002,赵云,计算机系,default,本科生,2009-02-01,02,12345,3-101,01)insert userTbvalues(T001,马超,外语系,default,教师,2007-04-01,05,34212,10-201,05)insert userTbvalues(T002,张飞,计算机系,default,教师,2005-03-01,03,23421,1-101,02)insert userT
21、bvalues(L001,黄月英,法学系,女,教师,2006-05-25,05,23517,11-203,0)insert userTbvalues(L002,孙尚香,教育系,女,本科生,2009-03-12,02,20458,6-301,02)insert userTbvalues(P001,小乔,外语系,女,教师,2005-06-27,03,26537,11-202,03)insert userTbvalues(P002,大乔,经管系,女,本科生,2008-10-11,03,56824,6-213,0)向lending表插入数据insert lendingvalues(G001,DZ101
22、,01,2008-02-01,2008-03-22)insert lendingvalues(G002,EC101,02,2006-01-23,2006-03-01)insert lendingvalues(S001,EC102,03,2010-07-01,2010-08-01)insert lendingvalues(S002,TP103,04,2010-11-05,null)insert lendingvalues(T001,TP101,05,2008-06-30,2008-09-22)insert lendingvalues(T002,TP101,06,2008-08-28,2008-1
23、1-10)insert lendingvalues(L001,EC102,07,2010-07-05,2010-09-02)insert lendingvalues(L002,DZ102,08,2010-11-06,null)insert lendingvalues(P001,JX102,09,2009-07-25,2009-07-30)insert lendingvalues(P002,EC103,10,2010-05-08,2010-07-02)insert lendingvalues(L001,EC101,03,2010-07-01,2010-09-24)insert lendingva
24、lues(L001,EC103,07,2010-07-01,2010-09-24)insert lendingvalues(L001,TP101,11,2010-07-05,2010-09-24)insert lendingvalues(L001,TP102,04,2010-07-05,2010-09-24)insert lendingvalues(L001,TP103,10,2010-09-24,2010-10-12)insert lendingvalues(L001,JX102,12,2010-09-24,2010-10-12)insert lendingvalues(L001,JX101
25、,02,2010-10-15,2010-12-27)insert lendingvalues(L001,DZ101,09,2010-10-15,2010-12-27)insert lendingvalues(L001,DZ102,17,2010-11-03,null)insert lendingvalues(L001,EC102,20,2010-09-05,2010-12-03)4 相关操作(1) 创建索引代码:create index book_authorInfoon book(bookName,author)测试结果:(2) 存储过程-通过图书的类别和价格查询图书的书名代码:create
26、 procedure book_check类别名 nvarchar(20),价格 money,书名 varchar(20) outputasselect 书名=bookName from book,bookCateGorywhere bookCate=类别名 and price=价格 and book.bkCateId=bookCateGory.bkCateIdgodeclare 类别名 nvarchar(20)declare 价格 moneydeclare 书名 varchar(20)Set 类别名=管理类 Set 价格=37.00 exec book_check 类别名=类别名, 价格=价
27、格, 书名=书名 outputPrint 当图书类别为:+类别名Print 且图书价格为:print 价格print 则图书名为:+书名go测试结果:(3) 触发器1-未还书读者的信息不能删除代码:create trigger del_useron userTbinstead of deleteasprint对不起,未还书的读者不能删除!godelete from userTb where userBkNum0go测试结果:读者信息没有被删除触发器2-超期未还累计达五次的读者不能借阅代码:create trigger overtimes_a1on lending after insertas
28、begindeclare c char(6)declare b char(6)declare d datedeclare f dateselect b=userId from insertedselect d=lenDdate from insertedupdate userTbset c=overTimes where userId=b if c=5print对不起,您超期未还累计达五次,不能再借阅!delete from lending where lendDate=dif c (select AVG(Price) from Book)and BkCateId in (select BkC
29、ateId from Book group by BkCateId)测试结果:按时间先后,统计上一年度之前借了书的学生信息代码:select userTb.*,lendDate from userTb join lending on userTb.userId=lending.userId and LendDate10)测试结果:4小结这两周我们进行了C#程序设计综合训练,其主要训练内容是对图书馆管理系统的设计和数据库的连接的综合练习。在这期间,我们运用了所学的C#程序设计知识和数据库的添加、连接等相关知识。在程序设计时我们充分发挥组员的特长,做合理的分配,相互合作。首先我们具体分析了图书馆管
30、理系统的功能,做出了合理的分工,再根据功能需要做进一步的设计。接下来做数据库模块,页面设计,页面连接数据库等也逐一的完成。其中遇到的问题是:数据库连接问题,页面及数据连接的整合问题。虽然我们在这次练习中遇到了问题,但是我们并没有放弃,我们在老师的指导下,同学们的相互帮助下,还有对图书资料的查询下,这些问题都逐一解决。对这次C#程序设计综合训练,我们还是存在了数据的整合问题,看似简单的连接整合,做起来却比较麻烦。由于时间关系,我们做得不是那么完美,但是我们都在尽心尽力做,在这次团队合作中收获了很多意想不到的东西。在综合练习中,应用到了我们学到的知识,还提高了我们的动手能力、操作能力和团队合作能力。相信我们会慢慢学到更多的知识,来提升自己,在这里,我们要谢谢老师那么不辞辛苦的教我们知识,指导我们完成了这次的综合练习。参考文献1谭浩强.C程序设计(第三版)M.北京:清华大学出版社,2007.2王育坚.VC+面向对象编程教程(第2版)M.北京:清华大学出版社,2008.3李英.Visual C+编程与项目开发M,上海:华东理工大学出版社,2008.4吴跃.数据结构与算法,北京:机械工业出版社,2010.