《福建工程学院数据库专周——图书馆管理系统(共30页).docx》由会员分享,可在线阅读,更多相关《福建工程学院数据库专周——图书馆管理系统(共30页).docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上福建工程学院信息科学与工程学院数据库应用课程设计题 目: 图书馆管理系统 专 业: 计算机与信息科学 班 级: 1105 座 号: 姓 名: 潘聪 分 工: 独立分组 2013年 9 月 9 日目 录1.系统定义1.1背景资料:在高校中,学生的数量较多,图书的数量也比较多,每天图书的借阅量比较大,采用手工的处理方式已经不能满足这种需要了,因此需要开发一个能够处理平时借阅处理的信息系统,这个信息系统负责主要处理图书馆日常的借书、还书和查询业务。图书管理工作都是采用传统的手工管理,经过对其图书管理工作中的图书信息、读者管理及借阅管理工作做全面调查研究,其现行手工流程具体分
2、析如下:图书登记:对上级分配、学校购入和社会捐赠的图书进行图书信息登记;读者登记:图书管理员根据学校档案室提供的教师花名册和学生花名册进行读者登记,然后填发借书证,学生毕业和教师调出时将其借书证注销。借阅管理:读者特别是学生读者持借书证到图书室借阅图书,图书管理员将借阅日期填写在书籍卡片上,将卡片夹在借书证中间,存放在图书室,学生看完后,送还所借书籍,收回借书证或另借其它书籍。这种传统人工的管理方式效率低、保密性差, 一方面导致教师、学生对学校图书室藏书情况不了解,图书室究竟有哪些图书也不知道;另一方面图书管理员对图书管理工作力不从心,因为时间一长,将产生大量的文件和数据,这对于查找、更新和维
3、护都带来了不少的困难,耗费劳动力大,难于避免错误的产生,更容易造成图书的外流。然而现在,计算机的价格已经十分低廉,性能却有了长足的进步。在初级中学都装备有一定数量的电脑,中学教师都掌握了一定的计算机知识,它已经被学校应用于学校工作的许多领域。计算机之所以在中小学发挥如此重要的作用的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以为农村初级中学节省许多资源;第三,计算机可以大大的提高教职工的工作效率;第四,计算机可以使敏感文档更加安全,等等。然而为了更好的应用计算机,本次数据库专周我准备实现一个图书馆管理系统1 可以存储学校图书室的图书信息、读者信息和借阅信息
4、,安全、高效;2 只需一名图书管理员即可操作系统,节省大量人力;3 可以迅速查到所需信息,图书管理系统可以为学校教师和学生提供充足的信息和快捷的查询手段,让教师和学生能够及时查询图书信息,更好地为读者服务。4 可以预借想借的书本。5 并能做到管籍互借,这样能更好地实现图书的流通,无形中增加了图书的资源。以适应现行图书管理工作的要求,提高工作效率。1.2系统功能的基本要求: 基础信息处理:对图书、借阅者等信息的录入、添加、修改和删除。 查询处理:实现图书信息、读者信息和借阅信息的查询。注意采用多种查询方式,如单表查询、多表查询、分类查询、模糊查询、复合条件查询。 借阅管理,包括:借书:借书按借阅
5、者的类别(如:本科生,研究生,教职员工)限制借书数,有超期图书的罚款处理;还书:进行还书处理。*能输出快到期图书的还书提醒。 统计处理:进行相应的统计查询与输出。如分类统计、*根据图书利用率或周转率进行每周Hot Books统计等。1.3目标:1. 支持日常的借书还书运作。2. 集中管理图书和学生信息,方便日常维护。3. 有良好的可移植性、可扩展性、可复用性(系统配置灵活,支持用户未来信息化进程的发展)。4. C/S系统,人机对话友好,操作方便,简单易学。5. 系统运行效率高,响应速度合理,安全性较高,复杂业务也能轻松处理网络运行稳定。6. 系统建设费较低。1.4功能特点:1. 操作简单、界面
6、友好。完全控件式的页面布局,使得管理员工作的工作更简便,用户操作更加方便;借出图书和用户还书都只需一键操作;另外,跟踪出现的提示信息业让用户随时清楚自己的操作情况。2. 及时可见。管理员对图书本身信息和借阅信息都是一目了然,对系统内工作信息的管理,改系统可以达到“及时修改、及时见效”的效果。3. 功能完善。管理员登录:1) 添加(删除)管理员(超级管理员)2) 借出图书3) 读者还书4) 查看图书借阅信息5) 图书信息录入6) 用户管理(添加,修改,删除)7) 每周hot books统计8) 退出系统普通用户登录:1) 新用户注册2) 个人基本信息的查看和修改3) 查看个人图书借阅信息4) 注
7、销账户5) 查询图书6) 退出系统4. 特色功能。用户可以收藏自己喜欢的图书。用户注册信息或者是管理员录入用户信息的时候同时可以添加用户的照片。根据读者的借阅信息,每周都会有hot books统计。当图书快要到期时提醒用户。2、需求分析2.1确定对系统的综合需求,系统功能要求,性能要求,开发环境,运行要求等。1.功能要求系统主要实现对图书馆藏书和读者的管理功能。对于管理员来说,其功能有:添加(删除)管理员(超级管理员),借出图书,读者还书,查看图书借阅信息,图书信息录入,用户管理(添加,修改,删除)每周hot books统计。对于读者用户来说,主要功能有:新用户注册,个人基本信息的查看和修改,
8、查看个人图书借阅信息,注销账户,查询图书。2.性能要求图书馆管理系统在运行效率方面要求并不是太高,完成基本功能即可,性能方面并不会影响到整个系统的正常使用。3.开发环境本套系统所有的开发工具为Microsoft Visual Studio 2012,使用的数据库为Microsoft SQL Server2005,基于.net framework 4.0使用C#语言开发。4.运行要求本套系统适用于安装了windows系统的PC机,所以对于使用mac系统的用户只能说声遗憾了。2.2给出系统的逻辑模型:数据流程图、数据字典2.2.1数据流程图经过详细的调查,弄清了系统现行的业务流程。通过分析和抽象后
9、,用数据流图表示。图1是图书馆管理系统的顶层数据流图。图1 图书馆管理系统顶层数据流图在图书馆管理系统顶层数据流图中,“P1 内部管理”和“P2 借书管理”两个处理框所表示的功能都太复杂,对它们进一步细化后得出第二层数据流图。见图2和图3。实际上“P1.1 图书管理”还可以细化,分为新书处理和图书记录维护两个下级处理框,而“P1.2 读者管理”也可以细化为新读者入户和读者记录维护两个下级处理框。图2 “内部管理”的细化数据流图图3 “借书管理”的细化数据流图经过整理后得出细化后得系统数据流图,如图4所示。图4 细化后的图书馆管理系统数据流图2.2.2数据字典有了数据流程图仅仅只能体现系统运行的
10、大致运行流程,要想了解系统内部实现,还必须要有数据字典,下面列出本套系统中使用的数据字典。2.2.2.1主要的数据流定义1.数据流名称:图书情况位置:图书-P1.1,图书-P2.3定义:图书情况=类别+出版社+作者+书名+定价+完好否说明:图书入库时,根据图书情况建立图书记录;读者还书时要核实图书基本信息是否与图书记录相符,要检查图书是否完好。2数据流名称:用户身份位置:P3-P1.1,P1.2,P2.1,P2.3定义:用户身份=硕士|本科|教职员工 说明:不同的用户身份进入的处理过程不同。2.2.2.2主要的存储过程定义1存储过程编号:D1 数据结构:借书记录=书号+读者编号+借阅日期说明:
11、读者借阅了一本书,就生成一条借阅记录。借阅日期为添加记录的当天日期。2.2.2.2.3主要的触发器定义1触发器编号:T1说明:管理员删除用户的时候要检查该用户是否有未还的图书,如果有则不可删除2触发器编号:T2说明:用户借书时,同时要先把图书表中的借出总量加1,添加一条借书记录。2.2.2.4数据字典管理员(id,姓名,管理员密码,性别,单位,身份证,管理员类别)属 性字 段数据类型码可 空约 束管理员ididIntPK N自动生成,从1开始,自增1 管理员用户名Admin_nameCHAR(8)N口令Admin_passwordCHAR(10)N默认值:123性别Admin_sexChar(
12、2)CKN(男,女)管理员类别Admin_categoryChar(10)CKN(超级管理员,普通管理员)读者(id,姓名,登录密码,学号,性别,读者类别id,身份证)属 性字 段数据类型码可 空约 束读者idReader_idIntPK N自动生成,从1开始,自增1 读者用户名reader_nameCHAR(10)N口令reader_passwordCHAR(10)N默认值:123性别reader_sexChar(2)CKN(男,女)读者类别reader_categoryChar(10)FKN参照读者类别表的类别id读者类别(id, 类别名称,可借本数)图书(id,书名,ISBN,作者,出版
13、社,价格,图书类别id,借阅次数,图书总数,借出数目)属 性字 段数据类型码可 空约 束图书idbook_idIntPK N自动生成,从1开始,自增1 书名book_nameCHAR(20)NISBNbook_isbnCHAR(20)N默认值:123借出次数Book_countint图书类别book_categoryChar(10)FKN参照图书类别表的类别id图书总数Book_allint图书借出数目Book_outint出版社Book_pressChar(20)图书类别(id, 类别名称)借阅(id, 读者id,图书id,借阅日期,还书日期,状态)属 性字 段数据类型码可 空约 束借阅id
14、borrow_idIntPK N自动生成,从1开始,自增1 读者idborrow_reader_idCHAR(10)FKN参照用户表用户id图书idBorrow_book_idCHAR(10)FKN参照图书表图书id借书日期Borrow_timedatetimeN还书日期Back_timedatetimeN3.系统设计3.1概念结构设计画出系统E-R图。管理员管理员id性别部门单位身份证管理员类别读者读者id读者类别id学号性别身份证读者类别类别id类别名称可借书本数图书图书id书名ISBN作者价格出版社图书类别id借阅次数图书总数借出数目图书类别类别id类别名称读者还书E-R图:验证还书催还
15、检查读者图书库存借阅管理员是否归还11MMN1M1P读者借书E-R图管理员读者图书信息借阅验证查询借书检查库存111N1NN读者权限读者类型1借阅信息图书类型图书管理员属于属于借阅管理管理理mnm1mmmm总量m3.2逻辑结构设计将E-R图(或其他概念设计图)转换为具体的DBMS对应的关系模式。管理员(id,姓名,管理员密码,性别,单位,身份证,管理员类别)读者(id,姓名,登录密码,学号,性别,读者类别id,身份证)读者类别(id, 类别名称,可借本数)图书(id,书名,ISBN,作者,出版社,价格,图书类别id,借阅次数,图书总数,借出数目,位置)图书类别(id, 类别名称)借阅(id,
16、读者id,图书id,借阅日期,还书日期,状态,催还标志位)3.3系统功能模块图画出系统功能模块图,并对子模块功能进行详细说明。图书馆管理系统管理员模块用户模块添加/删除管理员图书借阅模块图书信息维护模块用户增删改查借出图书归还图书违规处罚图书信息录入图书信息修改图书信息查看图书删除新用户注册个人信息维护图书信息查询个人图书馆图书收藏图书借阅信息3.4系统总流程图开始图书借阅管理员登录读者登录登录成功登录成功借书图书是否存在个人信息查看借阅查看图书检索是否挂失修改密码修改成功结束NYNYNYN续借还书是否挂失是否挂失NN是否欠款NY借书成功是否欠款N是否超期N是否超期N还书成功结账YY结账续借成
17、功3.5其它设计图形工具4.详细设计 主要的SQL语句,主要模块的程序流程图。1. 创建数据库CREATE DATABASE lib ON PRIMARY(NAME=lib,FILENAME=d:dblib.mdf,SIZE=20MB,FILEGROWTH=2MB)LOG ON(NAME=libLog,FILENAME=d:dblibLog.ldf,SIZE=1MB,MAXSIZE=10MB,FILEGROWTH=10%);2. 创建管理员表create table t_admin(admin_id int identity(1,1) primary key,admin_name char(2
18、0) not null,admin_realname char(20) not null,admin_regtime datetime not null,admin_password char(35) not null,admin_sex char(2) check (admin_sex in(男,女) not null,admin_email char(20) not null,admin_tel char(20) not null,admin_dept char(20) not null,admin_idcard char(20),admin_category char(20) not n
19、ull,admin_photo image,)insert into t_admin values(admin,潘聪,getDate(),123,男,图书管理部,超级管理员,)3. 创建读者表create table t_reader(reader_id int identity(1,1) primary key,reader_name char(20) not null,reader_password char(35) not null,reader_sex char(2) check (reader_sex in(男,女) not null,reader_idcard char(20),r
20、eader_photo image,reader_category int,foreign key reader_category references t_rcategory(rcate_id)4. 创建读者类别表create table t_rcategory(rcate_id int identity(1,1) primary key,rcate_name varchar(20) not null,rcate_days int not null,)insert into t_rcategory values(研究生,10);insert into t_rcategory values(本
21、科生,8);insert into t_rcategory values(教职工,6);5. 创建图书表create table t_book(book_id int identity(1,1) primary key,book_name char(30) not null,book_isbn char(20) not null,book_writer char(20) not null,book_price float not null,book_press char(20) not null,book_press_time datetime,book_category int,book_c
22、ount int default 0,book_all int,book_out int default 0,book_photo image,foreign key book_category references t_bcategory(bcate_id)6. 创建图书类别表create table t_bcategory (bcate_id int identity(1,1) primary key,bcate_name char(20) not null)insert into t_bcategory values(科技);insert into t_bcategory values(
23、人文);7. 创建借阅表create table t_borrow(borrow_id int identity(1,1) primary key,borrow_reader_id int not null,borrow_book_id int,borrow_time datetime,back_time datetime,borrow_status char(10) check (borrow_status in(未还,已还) not null,foreign key borrow_reader_id references t_reader(reader_id),foreign key bo
24、rrow_book_id references t_book(book_id)8.主要存储过程-存储过程-用户借书, Reader_BorrowBook-1.查询用户目前已借图书本数,与最大本数比较-2.图书借出数量加1,图书借出次数加1create procedure Reader_BorrowBook book_id int,reader_id int,borrow_time DateTime,back_time DateTime, outstr char(50) outputasbegindeclare rcate_days int-用户可借本数declare has_borrow in
25、t-用户已借数量declare book_out int -图书借出数量declare book_all int -图书总数select rcate_days=rcate_days from rc_view where reader_id = reader_idselect has_borrow=count(*) from t_borrow where borrow_reader_id = reader_id and borrow_status=未还select book_out = book_out from t_book where book_id = book_idselect book
26、_all = book_all from t_book where book_id = book_idif has_borrow =rcate_daysset outstr = 对不起,您目前借书数目已达上限,请归还后再借书!else if book_out =book_allset outstr = 对不起,该书剩余数量为0!elsebeginupdate t_book set book_out=book_out+1, book_count=book_count+1 where book_id = book_idinsert into t_borrow (borrow_reader_id,b
27、orrow_book_id,borrow_time,back_time,borrow_status) values(reader_id,book_id,borrow_time,back_time,未还) set outstr=借书成功!endend-还书存储过程create procedure Reader_BackBook book_id int,reader_id int,borrow_id intasbeginupdate t_borrow set borrow_status = 已还 where borrow_id = borrow_idupdate t_book set book_o
28、ut = book_out-1 where book_id = book_idend-返回图书借阅时间存储过程,确定用户需要缴纳多少罚款create procedure borrow_days borrow_id int,outstr char(50) outputasbegindeclare days intdeclare nowTime DateTimedeclare backTime DateTimeset nowTime = getDate()select backTime=back_time from t_borrow where borrow_id=borrow_idSELECT
29、days = DATEDIFF(day,backTime,nowTime)set outstr =convert(char(50),days)end-删除类别,-1.删除类别-2.删除所有改类别的用户以及借阅的图书create procedure delete_rcate rcate_id intasbegindeclare reader_id intdelete from t_rcategory where rcate_id = rcate_iddelete from t_reader where reader_category = rcate_idselect reader_id= rea
30、der_id from t_book where reader_category=rcate_iddelete from t_borrow where borrow_reader_id = reader_idend-删除图书存储过程 -删除图书的同时要删除借书记录-删除图书 t_book-删除借阅记录 t_borrowcreate procedure delete_books book_idasbegindelete from t_book where book_id = book_iddelete from t_borrow where book_id = book_idend-删除用户的同
31、时要把所有和用户相关的信息全部删除create procedure delete_reader reader_id intasbegindelete from t_reader where reader_id = reader_iddelete from t_borrow where reader_id = reader_idend5.系统实现与测试5.1开发平台和工具选择本套系统所有的开发工具为Microsoft Visual Studio 2012,使用的数据库为Microsoft SQL Server2005,基于.net framework 4.0使用C#语言开发。WPF(Window
32、s Presentation Foundation)是推出的基于Windows Vista的用户界面框架,属于NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。5.2系统测试简要说明测试情况。给出系统代表性运行界面,如主界面,模块界面、设计的查询页和报表等。5.2.1测试中常见错误本次开发使用C#语言过程中,最容易报错的地方就是ADO.NET部分,即数据访问层,但是大部分问题,还是可以比较容易找出原因的。在处理用户照片,和图书封面图片时问题比较难以调试错误一:因为用户照片不是非空字段,图
33、片在数据库中是image字段,在C#中可以用byte数组存,用户可以选择上传或者不上传,所以在上传时要进行如下处理:new SqlParameter(reader_photo, rm.reader_photo = null ? new byte0 : rm.reader_photo)错误二:从数据库中读取图片,先判断image字段的长度是否为0,或者小于某个很小的整数,切忌不能判断image字段是否为空,在与DateGrid结合使用时,也要注意selectItem 是否为空!如:ReaderModel rm = (ReaderModel)gridReader.SelectedItem; if
34、(rm != null) if (rm.reader_photo.Length 20) this.ShowImg(rm.reader_photo); 错误三:和图片类似的是普通字段,普通字段上传为空时也要进行处理,分别定义如下两个方法,一个是从数据库中取出空字段,一个是向数据库里面存空字段。public static object FromDbValue(object value) if (value = DBNull.Value) return null; else return value; public static object ToDbValue(object value) if (
35、value = null) return DBNull.Value; else return value; 如:存入数据库 new SqlParameter(reader_bz, SqlHelper.ToDbValue(rm.reader_bz)从数据库中读取rm.reader_bz = (string) SqlHelper.FromDbValue( reader.GetValue(10);5.5.2程序运行截图登录:右下角弹窗显示近三天需要归还的图书:管理员界面 用户界面:右下角弹窗,提示用户三天之内需要归还的图书6.课程设计总结本次课程设计中,受益匪浅,由于Delphi学的不是很好,所以在
36、做课程设计的时候果断放弃了Delphi,而选择了C#中的WPF技术,C#的语法和C+,java都非常类似,所以自学起来也非常容易。做完整个课题之后,觉得成功是给有准备的人的,非常感谢老师让我们在第一周周三就开始检查文档。如果没有这项检查,我认为本次课程设计大部分同学会做的不理想。一个项目的分析阶段的重要性远远要大于后期的编码阶段。在开发过程中碰到了很多问题,但是还好现在的网络资源相当丰富,很多问题都能找到解答。这次的课程设计部仅仅锻炼的是我们的编码能力,同时也提高了我们的设计能力,包括UI设计,数据库设计以及整个项目的规划。这是大学以来历时时间最长的一次,同时也是最有意义的一次。7.参考文献1.数据库系统概论,王珊,萨师煊,高等教育出版社专心-专注-专业