数据库课程设计报告
专    业:    微电子技术系     
班    级:      2940710820       
姓    名:                   
指导教师:                 
成    绩:                     
2011年12月12日
一、课程设计概述
1.课程设计背景
某大学图书馆开发一个图书管理系统,要求在读者登记处可以将读者的信息添加,信息系统中保存,当读者信息发生变化,对计算机内容进行修改,当读者办理退卡手续要删除此读者信
息,图书管理负责图书和出版社的管理,读书借还处进行借书管理,还书管理,处理,库存查询,图书排行榜,生成超期未还书的读者,进行通知.给不同用户设置不同权限,供用户访问数据库.
2.编写目的
让学生熟练掌握mysql中的创建数据库、创建表、显示、查询、select语句、视图、存储过程、创建检索、对表的添加、删除、修改和用户权限的设置等基本运用,并通过编写这个图书管理系统,来实际演练,达到融会贯通的效果。
3.软件定义
Mysql是目前最流行的开源的中小型关系数据管理系统,目前被广泛的应用于internet上得中小型网站中,它由mysql AB公司开发、发布并支持。本实验用的是mysql 5.1版本
4.开发环境
sumproduct函数月份求和本实验用的是mysql 5.1版本,windows2007
二、需求分析
1.问题的提出
1:怎么通过mysql和信息之间的关系来创建图书管理系统的数据库及表?
2:怎样来实现对插入读者信息并保存、修改及删除?
3:怎么来实现对图书的管理?
4:怎样实现对借书后在读书借还处添加读者借书信息和还书后删除读者借还处中的借书信息且更新图书管理处的图书数量?
5:怎么实现对超期读者进行操作和生成这些读者的名单,以方便通知?
6:怎样实现图书的借书排行榜和查看库存书量?
7:怎么样来根据不同用户对数据库的等级的不同来设置这些用户的权限?
2.需要完成的功能及各部分功能概述
1读者登记建卡处的功能是对读者基本信息进行登记,读者信息发生变化对读者基本信息进行修改,读者要求退还借书卡时对读者信息进行删除等操作
2:图书管理处的功能是对图书和出版社、作者、书价,数量,剩余书量进行管理更新
3图书借还处的功能是对借出书的登记。
4基于上面3大模块,进行细分一:1、通过创建存储过程对读者通过insert进行登记2、通过alter或update来修改和更新读者信息3、通过delete来对读者信息删除,二:1、对图书的添加、更新和修改也用到存储过程2、在对图书剩余量的更新是通过图书借还处和图书管理处之间的书号来发生联系,对存储过程对这个字段进行调用达到更新目的,三:1借书管理都是通过建立存储过程来实现登记处的登记同时也在借书处登记借读信息,同时更新图书的剩余量,还书管理处js正则对象的方法是根据还书的读者号和书号来选定要清除的借读信息,同时也更新图书剩余量信息,还要根据存储过程传来的read_id和book_id及js_quantity(借书数量)的参数计算出是否超期,超期的天数,最后算出罚金,显示出来。2、产生超期未还书的读者的名单是通过视图来实现显示3、对图书排行我也是通过存储过程实现4: 对图书进行借出量排行,增加图书的热度和知名度和图书的剩余量查询。
编译器gcc
5:新建读者用户和管理员用户,对他们分别设置不同的权限,在mysql的安装文件下的bin目录进行登录
流程图
借书及图书剩余量更新功能(利用存储过程实现)
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)
begin
insert 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 and read_id=r_id;//更新图书剩余量
select read_name from readers where read_id=r_id;
kera什么意思
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))
begin
declare day tinyint;
select datediff(sjhs,hs_time) into day from borrowing_place where read_id=xh and
book_id=sh);  //计算出超期天数 将天数存到day的变量中
if day >0
then
select (day*0.2*js_quantity) as '罚金' from borrowing_place where book_id=sh and
read_id=xh; //计算出超期借阅者应该的金额
先序中序后序遍历二叉树end if;
update librarian set book_sy=book_sy + (select js_quantity from borrowing_place
where 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()
begin
select book_id,book_name,book_sy from  librarian group by book_sy;
end$$
程序的功能是通过select语句选择出图书剩余量和图书相关信息,根据图书剩余量升序排列,图书编号排在最前的是借出数量最多,以此增加了图书知名度。
图书剩余量查询功能(利用存储过程实现
mysql是什么系统
delimiter $$
create procedure sycx()
select book_id,book_name,book_sy from librarian group by book_id;
end$$
程序的功能是查询出图书剩余量,供借阅者查看,以免造成借书时却没有这本书的尴尬局面。
催还过期图书通知功能(通过视图功能实现)
create view hs_remind()