高校图书管理系统的设计与实现(共18页).docx

上传人:飞****2 文档编号:14276920 上传时间:2022-05-03 格式:DOCX 页数:18 大小:45.03KB
返回 下载 相关 举报
高校图书管理系统的设计与实现(共18页).docx_第1页
第1页 / 共18页
高校图书管理系统的设计与实现(共18页).docx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《高校图书管理系统的设计与实现(共18页).docx》由会员分享,可在线阅读,更多相关《高校图书管理系统的设计与实现(共18页).docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上高校图书管理系统的设计与实现一、项目功能随着计算机的广泛运用,图书馆或者一些企业内部,甚至是书店,在正常运行过程中总是面对大量的读者信息、还书信息。因此需要对读者资源、书籍资源、借书信息等进行管理,及时了解各个环节中信息的变更。图书管理系统的主要功能是实现图书管图书借阅和归还的管理的自动化。围绕这一主要功能,本系统涉及到以下核心功能:借书管理、归还管理,还有一些基本的辅助功能:用户管理、图书管理、统计查询。二、 需求分析:1. 学生的身份信息及借阅情况(1) 借阅者(读者)的身份信息:读者号、姓名、性别等。(2) 这些信息保存在图书馆读者数据库,读者可以凭借自己的读者

2、号(借书证号)及密码登录图书馆管理系统进行个人资料的修改和借阅情况的查询。一般只能查询本人的信息,在不知道他人读者号及密码的情况下,就能有效保护读者个人隐私。2. 图书信息及被借阅情况(1)图书信息包括:书号、书名、作者、出版社等。(2)每本图书信息会汇总在一起,保存在图书馆的图书数据库,读者可以在登陆图书馆管理系统后根据需要进行图书的搜寻与查询,在得到满意的查询结果后,再去图书馆进行借阅。而对于每本被借出的书,管理系统又会将相应的读者号、借出日期和应还日期保存在数据库中,供读者查询和系统管理。3. 图书馆系统管理员身份信息及工作情况(1)图书馆系统管理员身份信息包括:管理员号、姓名、性别等。

3、(2) 这些数据保存在图书馆管理员数据库中,图书管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除、修改、图书借阅者的基本信息。具体模块如下:学生模块:学生模块个人信息修改查询图书信息借阅图书管理员模块:管理员模块个人信息修改添加图书信息修改图书信息学生信息管理图书借阅登记三、数据库设计1、概念结构设计实体“图书”的属性有:书号,书名,出版社,类别,数量实体“学生”的属性有:学号,姓名,性别,班级,密码 实体“管理员”的属性有:工作号,姓名,性别,密码E-R如下: “图书”E-R图:图书类别书名书号数量出版社“读者”E-R图:学生性别姓名密码学号“管理员”

4、E-R图:管理员密码姓名工作号性别总E-R图:密码姓名性别工作号管理员新密码mm旧密码学生管理图书管理班级N借书时间N出版社MN借阅图书类别书号书名学号学生姓名性别密码还书时间2、逻辑结构设计图书(书号,书名,出版社,类别,数量)学生(学号,姓名,性别,班级,密码)管理员(工作号,姓名,性别,密码)图书类别(书号,书名,类别)借阅(学号,书号,学生姓名,书名,借书时间,还书时间)学生管理(管理员工作号,学号,学生姓名,学生旧密码,学生新密码)3、物理结构设计(1)book表(图书信息表)列名数据类型长度约束说明_idInt10主键not null书号b_nameVarchar20not nul

5、l书名b_pubVarchar20not null 出版社Sort_idInt12外键not null类别编号b_numberInt5not null数量(2)student表(学生信息表)列名数据类型长度约束说明S_idInt12主键not null学号S_nameVarchar20not null姓名S_sexChar2not null性别S_classVarchar20not null班级S_pwdVarchar20not null密码(3)manager表(管理员信息表)列名数据类型长度约束说明M_idInt12主键not null工作号M_nameVarchar20not null姓

6、名M_sexChar2not null性别M_pwdVarchar20not null密码(4)Sort(图书类别表)列名数据类型长度约束说明Sort_idInt12主键not null类别编号Sort_nameVarcher20not null类别名称B_idint10Not null书号(5)borrow(借阅信息表)列名数据类型长度约束说明S_idInt12主键not null学号B_idInt10主键not null书号S_nameVarchar20not null学生姓名B_nameVarchar20not null书名Borrowtimedatetimenot null借书时间re

7、turntimedatetimenot null还书时间(6)student_manager(学生管理表)列名数据类型长度约束说明M_idInt12主键not null管理员工作号S_idInt12主键not null学生学号S_nameVarchar20not null学生姓名S_pwd_oldVarchar20not null学生旧密码S_pwd_newVarchar20Not null学生新密码四、数据库的实现1、数据库数据库名对象定义SQL语句说明bookstorecreate database library;创建名为library的数据库2、表表名对象定义SQL语句说明bookcr

8、eate table book(b_id int(10) not null,b_name varchar(20) not null,b_pub varchar(20) not null,sort_id int(12) not null,b_number int(5) not null,primary key(b_id);alter table bookadd constraint fk_boforeign key(sort_id ) references sort(sort_id )on update cascadeon delete cascade;1. 创建book(图书信息表)2. 并添

9、加名为fk_bo的外键约束,b_sort为此表的外键,参照sort表中的sort_id字段studentcreate table student(s_id int(12) not null,s_name varchar(20) not null,s_sex char(2) not null,s_class varchar(20) not null,s_pwd varchar(20) not null,primary key(s_id);创建student(学生信息表)managercreate table manager(m_id int(12) not null,m_name varchar

10、(20) not null,m_sex char(2) not null,m_pwd varchar(20) not null,primary key(m_id);创建manager(管理员信息表)Sortcreate table sort(sort_id int(12) not null,sort_name varchar(20) not null,b_id int(10) not null,primary key(sort_id);创建sort(图书类别表)borrowcreate table borrow(s_id int(12) not null,b_id int(10) not nu

11、ll,s_name varchar(20) not null,b_name varchar(20) not null,borrow_time datetime not null,return_time datetime not null,primary key(s_id,b_id);alter table borrowadd constraint fk_stuforeign key(s_id) references student(s_id)on update cascadeon delete cascade;alter table borrowadd constraint fk_bookfo

12、reign key(b_id) references book(b_id)on update cascadeon delete cascade;1. 创建borrow(借阅信息表)2. 并添加名为fk_stu和fk_book的外键约束,其中s_id和b_id作为此表的外键,参照student表中的s_id和book表中的b_id字段student_managercreate table student_manager(m_id int(12) not null,s_id int(12) not null,s_name varchar(20) not null,s_pwd_old varchar

13、(20) not null,s_pwd_new varchar(20) not null,primary key(m_id,s_id);alter table student_manageradd constraint fk_stu_manforeign key(s_id) references student(s_id)on update cascadeon delete cascade;alter table student_manageradd constraint fk_manforeign key(m_id) references manager(m_id)on update cas

14、cadeon delete cascade;1. 创建Student_manager(学生管理表),当管理员修改学生密码时,将学生的新密码以及旧密码存入此表中2. 并添加名为fk_stu_man和fk_man的外键,其中s_id和m_id为此表的外键,参照student表中的s_id和manager表中的m_id字段3、操作表中的数据操作类型数据操作SQL语句说明插入数据insert into book values(1001,数据库原理,清华大学出版社,01,50);insert into book values(1005,大学语文,北京大学出版社,05,45);insert into bo

15、ok values(1002,巴黎圣母院 ,译林出版社,02,20);insert into book values(1003,大话物联网,清华大学出版社,01,20); insert into student values(10001,张三,男,网络工程1班,1234);insert into student values(10002,章艳,女,网络工程(软件开发)1班,2345);insert into student values(10003,李四, 男,园林1班,2222);insert into manager values(101,张小丽,女,6666);insert into m

16、anager values(102,王五,男,7777);insert into manager values(103,杨静,女,2222);insert into sort values(01,计算机类,1001);insert into sort values(02,外国文学类,1002);insert into sort values(05,中文教材类,1005); insert into borrow values(10001,1001,张三,数据库原理,2019-09-16 12:03:03,2019-11-11 12:11:11);insert into borrow values

17、(10001,1005,张三,大学语文,2019-11-11 11:11:11,2019-12-12 12:12:12);insert into borrow values(10002,1002,章艳,巴黎圣母院,2019-11-12 11:11:11,2019-12-13 13:13:13);分别向各个表中插入数据修改数据update book set b_number=20 where b_id=1003;update student set s_pwd=11111 where s_id=10003;update manager set m_pwd=1111 where m_id=103;

18、1. 将book表中书号为1003的书籍的数量修改为202. 将student表中学号为10003的学生的密码修改为111113. 将manager中编号为103的管理员的密码修改为1111删除数据delete from book where b_id=1003;delete from manager where m_id=103;1. 删除book表中书号为1003的书籍信息2. 删除manager中编号为103 的管理员信息查询数据select * from book;select * from student where s_name=章艳;select * from manager w

19、here m_id=101;1. 查询book表中的所有信息2. 查询student表中名为章艳的学生信息3. 查询manager中编号为101的管理员信息4、视图视图名对象定义SQL语句说明book_view1create view book_view1 as select * from book;select * from book_view1;1. 在book表上建立一个查询书籍信息的视图book_view12. 验证:查询视图Book_view2create view book_view2as select book.b_id,b_name,sort_name,book.sort_id

20、from book,sortwhere book.sort_id=sort.sort_id;select * from book_view2;1. 在book表和book_sort表上建立一个名为book_view2的视图,视图保留书籍的书号,书名,类别以及类别编号2. 验证:查看视图stu_view1create view stu_view1as select s_id,s_sex,s_class from studentwhere s_sex=女;select * from stu_view1;1. 在student表上创建一个名为stu_view1的视图,视图 中保留性别为女的学生的学号

21、,性别,班级2. 验证:查看视图5、索引索引名对象定义SQL语句说明in_b_namecreate unique index in_b_name on book(b_name);为book表上b_name列建立一个唯一性索引in_b_namein_s_classcreate index in_s_class on student(s_class asc);为student表上s_class列建立一个普通升序索引6、存储过程存储过程名对象定义SQL语句说明proc_book1delimiter /create procedure proc_book1()beginselect * from bo

22、okwhere b_name like 数据库% order by b_id;end/delimiter ;call proc_book1();1. 创建存储过程proc_book1从book表中查询出名字中含有“数据库”的图书信息2. 验证:调用存储过程proc_book1()proc_book2delimiter /create procedure proc_book2(in bookid int(10)beginselect * from book where b_id=bookid;end/delimiter ;call proc_book2(1001);1. 创建存储过程proc_b

23、ook2,输入书号后,查询出此书籍的基本信息2. 验证:调用存储过程proc_book2(1001)7、存储函数存储函数名对象定义SQL语句说明func_stu1delimiter /create function func_stu1(st_id int(12)returns varchar(20)begin return (select s_name from student where s_id=st_id);end/delimiter ;select func_stu1(10001);1. 创建一个存储函数func_stu1,返回表student中指定学号的学生信息2. 验证:调用函数f

24、unc_stu1(10001)8、触发器触发器名对象定义SQL语句说明sor_updatedelimiter /create trigger sor_update after updateon sort for each rowbegin update book set sort_id=new.sort_idwhere sort_id=old.sort_id;end/delimiter ;update sort set sort_id=06 where sort_name=中文教材类;select * from book where sort_id=06;1. 创建一个触发器,当更改sort表

25、中的某本书的类型编号时,同时对book表的类型编号也进行相应的更改2. 验证:将sort表中的中文教材类的编号修改为06,并观察book表是否也做出相应的改变tri_stu1insert into student values(10004,王晓华,女,园林2 班,88888);create table de_stu select s_id,s_name,s_sex from student where 1=0;create trigger tri_stu1 after delete on student for each row insert into de_stu (s_id,s_name,

26、s_sex) values(old.s_id,old.s_name,old.s_sex);delete from student where s_id=10004;select * from de_stu;1. 在student表中插入一条记录2. 创建一个空表de_stu3. 创建一个触发器tri_stu1, 当一个学生的信息被删除时,将该学生的编号,姓名以及性别添加到表de_stu中4. 验证:删除刚插入的学生信息,并查询de_stu表中是否有该条记录9、事件事件名对象定义SQL语句说明event1set global.event_scheduler = true;create event

27、 event1 on schedule every 1 daydo create table borrow1 as select * from borrow;show tables;select * from borrow1;1. 开启事件调度器2. 创建每天执行的事件event1,创建一个borrow1表,要求每隔一天将borrow表中的信息存入到borrow1表中3. 验证:查看所有表,并查看borrow2表中的内容event2delimiter /create event event2 on schedule every 1 weekstarts curdate()+interval 1

28、 weekends 2019-12-31 23:59:59 do begin truncate table borrow1;end/delimiter ;创建事件event2,要求从下周开始,每周都清空borrow1表,并且在2019年12月31日23:59:59结束10、事务(在存储过程中使用事务)存储过程名对象定义SQL语句说明de_man1()insert into manager values(103,杨静,女,2222);delimiter /set autocommit=0;create procedure de_man1()beginstart transaction;delet

29、e from manager where m_id=103;select * from manager where m_id=103;rollback;select * from manager where m_id=103;end/delimiter ;call de_man1();1. 插入工作号为103的管理员信息2. 删除工作号为103的管理员信息,然后回滚,其中创建de_man1存储过程3. 验证:调用存储过程de_man1(),查看结果up_man1()delimiter /create procedure up_man1()beginstart transaction;updat

30、e manager set m_id=104 where m_name=杨静;commit;select * from manager where m_name=杨静;end/delimiter ;call up_man1();1. 将manager表中名为杨静的管理员的工作号改为104,并提交事务,创建名为up_man1的存储过程2. 验证:调用存储过程up_man1(),并查看结果11、数据库用户及权限分配用户名定义用户SQL语句权限分配SQL语句说明manager1create user manager1localhost identified by 123;grant all on b

31、orrow.* to manager1loaclhost ;创建一个名为manager1的管理员用户,密码为123,用户manager1对borrow表的所有数据持有所有权限Manager2create user manager2localhost identified by 456;grant all on student_manager.* to manager1localhost;创建一个名为manager2的用户,密码为456,将student_manager表上的所有权限授予manager212、备份与恢复操作类型对应操作的SQL语句说明备份mysqldump -u root -p

32、library d:/library_backup.sql备份数据库library中的所有表,将其备份到D:,备份文件名为library_backup.sql恢复Delete from borrow1;source d:/library_backup.sql;1. 删除borrow1表(在执行事件event1时所创建的表)的数据2. 用source命令恢复。mysql -u root -default-character-set=utf8 -p libraryd:/library_backup.sql使用mysql命令将备份文件library_backup.sql恢复到数据库中五、体会:从各种

33、文档的阅读到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计,亲身体验了一会系统的设计开发过程。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰,但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法,其中删除数据库无数次。我们学习并应用了MYSQL语言,掌握了数据库的创建、修改、删除等一系列操作,为了建立一个数据库管理系统,必须得经过需求分析、概念设计、逻辑设计、物理设计等一系列的过程,也是为毕业设计提前打下了基础。这次课程设计使我对所学的数据库知识有了更进一步的理解,更加系统化,理论化。今后,无论对待什么问题,我一定会充满自信的面对,学习更多的知识来充实自己,争取做得更好。设计者:姚春萌 上交时间:2020年1月3日专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁