电子科技大学成都学院实验报告册课程名称: mysql图书管理系统*名:**学号: **********院系:微电子技术系专业:集成(嵌入式)*师:**2012 年 12 月 22 日图书管理系统小组成员:徐源唐东南1.背景1.1.1课程设计背景某大学图书馆开发一个图书管理系统,要求在读者登记处可以将读者的信息添加,信息系统中保存,当读者信息发生变化,对计算机内容进行修改,当读者办理退卡手续要删除此读者信息,图书管理负责图书和出版社的管理,读书借还处进行借书管理,还书管理,罚款处理,库存查询,图书排行榜,生成超期未还书的读者,进行通知.给不同用户设置不同权限,供用户访问数据库.1.1.2编写目的让学生熟练掌握mysql中的创建数据库、创建表、显示、查询、select语句、视图、存储过程、创建检索、对表的添加、删除、修改和用户权限的设置等基本运用,并通过编写这个图书管理系统,来实际演练,达到融会贯通的效果。
1.1.3软件定义Mysql是目前最流行的开源的中小型关系数据管理系统,目前被广泛的应用于internet上得中小型网站中,它由mysql AB公司开发、发布并支持。
本实验用的是mysql 5.1版本1.1.4开发环境本实验用的是mysql 5.1版本,windows71.2数据需求图书馆管理信息系统需要完成功能主要有:1. 读者基本信息的输入,包括借书证编号、读者姓名、读者性别。
2.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。
3.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。
4.书籍类别信息的查询、修改,包括类别编号、类别名称。
5.书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。
6.书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。
7.借书信息的输入,包括读者借书证编号、书籍编号、借书日期。
8.借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
9.还书信息的输入,包括借书证编号、书籍编号、还书日期。
10.还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
11.超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。
12.超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等1.3事物需求(1)在读者信息管理部分,要求:a.可以查询读者信息。
b.可以对读者信息进行添加及删除的操作。
(2 )在书籍信息管理部分,要求:a.可以浏览书籍信息,要求:b.可以对书籍信息进行维护,包括添加及删除的操作。
(3)在借阅信息管理部分,要求:。
a.可以浏览借阅信息。
b.可以对借阅信息进行维护操作。
(4)在归还信息管理部分,要求:a.可以浏览归还信息b.对归还信息可修改维护操作(5)在管理者信息管理部分,要求:a.显示当前数据库中管理者情况。
b.对管理者信息维护操作。
(6)在罚款信息管理部分,要求:a.可以浏览罚款信息b.对罚款信息可以更新1.4关系模式(一)书籍类别(种类编号,种类名称)(二)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期)(三)书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称,出版日期,登记日期)(四)借阅(借书证编号,书籍编号,读者借书时间)(五)还书(借书证编号,书籍编号,读者还书时间)(六)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)以上通过关系代数方法的进行运算得到所需要的结果,在实验结果中可以看到。
1.5流程图借书及图书剩余量更新功能(利用存储过程实现)delimiter $$create procedure js_manager(in r_id char(10),in r_name char(10),in sex char(2), in r_sf char(8), in birthday datetime, in r_ic char(18),in r_tele char(11),in r_addr varchar(30), in r_zip char(6),in b_id,char(6),in js_time datetime,in hs_time datetime, in js_quantity int) begininsert into borrowing_place values(r_id,b_id,js_time,hs_time,js_quantity);update librarian set book_sy=book_sy-js_quantity where book_id=b_id andread_id=r_id;//更新图书剩余量select read_name from readers where read_id=r_id;if read_name =null then //readers表中没有r_id的个人信息的话,将登记insert into readers values(r_id,r_name,sex,r_sf,birthday,r_ic,r_tele,r_addr,r_zip);end if;end$$程序实现的功能是借阅者借书时登记其个人信息,若以前登记过,就不在重复插入,将借阅者所接的书和借书日期、应该还书日期、和借书数量做记录,同时更新图书的剩余量方便后来的借阅者查询是否这本书还有。
还书、图书剩余量及罚款功能(利用存储过程实现)delimiter $$create procedure book.fines(in sjhs datetime ,in xh char(10), in sh char(10))begindeclare day tinyint;select datediff(sjhs,hs_time) into day from borrowing_place where read_id=xh andbook_id=sh); //计算出超期天数将天数存到day的变量中if day >0thenselect (day*0.2*js_quantity) as '罚金' from borrowing_place where book_id=sh andread_id=xh; //计算出超期借阅者应该的罚款金额end if;update librarian set book_sy=book_sy + (select js_quantity from borrowing_placewhere book_id=sh and read_id=xh);//更新图书剩余量delete from borrowing_place where read_id=xh and book_id=sh;//删除此条还书信息end$$程序实现的功能是借阅者还书时根据借阅的编号和所还书的号来计算出超期时间,如果超期,就计算出罚金,对借阅者进行罚款处理,同时更新图书的剩余量和删除这位借阅者的借阅信息。
图书借阅排行榜功能(利用存储过程实现)delimiter $$create procedure js_ph()beginselect book_id,book_name,book_sy from librarian group by book_sy;end$$程序的功能是通过select语句选择出图书剩余量和图书相关信息,根据图书剩余量升序排列,图书编号排在最前的是借出数量最多,以此增加了图书知名度。
图书剩余量查询功能(利用存储过程实现)delimiter $$create procedure sycx()select book_id,book_name,book_sy from librarian group by book_id;end$$程序的功能是查询出图书剩余量,供借阅者查看,以免造成借书时却没有这本书的尴尬局面。
催还过期图书通知功能(通过视图功能实现)create view hs_remind()asselect read_id,book_id, datediff(hs_time,now()) as '超期天数' from borrowing_placegroup by read_id;select * from hs_time where 超期天数>0 ;程序利用视图实现计算出借阅者所借书的超期天数,通过select选择出超期天数为正的借阅者学号,方便管理员知道哪些借阅者有超期未还的书,好及时通知还书。
退借阅卡删除登记信息功能(通过存储过程实现)delimiter $$create procedure logout(in r_id char(10))select book_id from borrowing_place where read_id=r_id;delete form readers,jtcy where read_id=r_id;end$$程序实现的功能是借阅者要求注销借阅卡时,根据借阅卡上的借阅编号,来删除登记信息,当然先查询借阅处信息表,看看该借阅者有没有未还完的书。
借阅者基本信息修改功能(通过存储过程实现)delimiter $$create procedure read_alter(in r_id char(10),in r_name char(10),in shenfen char(10),in r_ic char(18),in tel char(11),in r_addr char(30))beginupdate readers setread_id=r_id,read_name=r_name,read_sf=shenfen,read_ic=r_ic,read_tele=tel,read_addr=r_addr;end$$程序功能是通过update更新借阅者的重要信息,达到借阅者信息改变时修改借阅者信息,这种方法有点修改起来有点麻烦,但是由于能力有限,现阶段只能凑合着用了哦。
2.E-R图根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。
用E-R图一一描述这些实体。
借阅者(readers)与图书管理处(librarian)实体集之间的联系的关系模式为:Readers(read_id,jt_id,read_name,sex,read_sf,read_ic,read_tele,birthday,read_addr,read_zip)Librarian(book_id ,book_name,book_pub,book_author,book_price,book_num,book_sy) Borrowing_place(read_id,book_id,js_time,hs_time,js_quantity)Borrowing_place的主码是由read_id和book_id两个属性的组合起来构成一个主码3.数据表设计1.概念结构设计在mysql中通常把每一类数据对象的个体称为‘实体’,每类对象个体的集合称为实体集,这个图书管理系统主要涉及‘借阅者’、‘图书’两个实体集,其他的非主要实体集为‘家庭成员’。