ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:402.16KB ,
资源ID:26849683      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26849683.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库课程设计图书馆管理系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库课程设计图书馆管理系统.docx

1、数据库课程设计图书馆管理系统第一章绪论1.1设计背景随着社会的开展,人类的生产、生活越来越离不开信息。谁拥有了更多更有效的信息,谁就将在竞争中处于有利地位。信息产业正在成为一个国家的支柱。图书作为信息存储及传播的主要媒体之一,数量、规模、种类比以往任何时候都大得多,不管个人还是图书管理部门都需要使用方便而有效的方式来管理书籍。目前的图书馆是单一的手工检索,出现了很多问题:检索速度慢、效率低,图书统计工作难、藏书更新不能及时完成,而且最重要的是借书还书的工作量之大。在计算机日益普及的今天,假设采用一套行之有效的图书管理系统,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的需求,

2、为了便于图书资料的管理,需要有效的图书管理系统。开发图书管理系统就是要采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到标准管理、科学统计和快速查询,让图书馆更好的为学校、社会效劳。1.2系统描述本次程序设计所设计的图书馆管理系统脱离了繁琐的人工管理,使读者借阅图书更方便,管理员管理图书和读者更快捷。该图书管理系统不仅具有借书还书的根本功能,还增加了借阅管理、书籍管理、读者管理、查询等功能,并且附加了帮助的功能。书籍管理模块:该模块具有增加图书和流失删除图书的功能。查询模块:该模块具有查询图书、查询读者和查询用户借阅历史的功能。其中,图书查询可以按图书编号、图书名称、出版时间

3、和作者名称等方式查询;读者查询可以按读者XX和编号方式查询;用户借阅历史查询只需输入读者编号就可查询到图书编号、借书日期、还书日期和归还类型是否归还。1.3开发环境Windows XPMicrosoft SQL Server 2000Microsoft Visual C+ 6.0第二章需求分析2.1 可行性分析进展数据库设计之前首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的根底,是最困难、最消耗时间的一步。作为“地基的需求分析是否做得充分与准确,决定了在其上构建数据库大厦的速度与质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。一个系统被实施或者被设计之前必

4、然要做可行性分析,满足可行性系统才能朝着设计和实施阶段开展。可行性分析包括技术上的可行性和经济上的可行性。该图书管理管理系统完全满足这两种可行性。首先,技术上的可行性主要是分析技术条件能否顺利完成开发工作,软硬件能否满足需要。该系统的开发是基于Visual C+ 6.0和SQL Server 2000,这两种软件在前面的课程中已经被熟练掌握。Visual C+不仅可以运行程序,也可以设计出完美的界面,读者、图书和管理员类就是在Visual C+中定义的,显示的界面也是在Visual C+中生成的。数据库管理系统那么采用SQL Server,它能够处理大量数据,同时保证数据的完整性和平安性。因此

5、该系统的开发平台已成熟可行。另一方面:硬件,在科技飞速开展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格也越来越廉价,学生实验机房所用的硬件都是经过更新的,完全能满足该系统设计所需。因此硬件平台也能够满足该系统所需。其次,就是经济的可行性。鉴于计算机开展异常迅速,在软硬件配置以及开发技术均已可行的情况下开发这样一个图书馆管理系统本钱不会很高,而其可以大大提高图书馆的工作效率,也是图书馆管理开展的必然趋势,其必将有比拟宽阔的市场,因此该系统满足经济可行性。综上所述,该图书馆管理系统可行。2.2 数据功能图图书馆管理系统在被证明可行之后,根据图书馆管理需求设计出如下系统所需功能图

6、。该系统可以实现五大功能:增加图书、删除流失图书、查询读者、查询图书、查询借阅历史。根据这些功能设计出系统的功能模块,如图2.1所示。其中增加图书和删除图书是管理员的权限,读者不享有。查询读者、图书和借阅历史读者和管理员均享有。图2.1功能图2.3 数据流程图由系统描述和系统功能图可以得出系统的功能流图,如下列图2.2所示。图2.2 数据流程图第三章数据库设计3.1 概念构造设计将需求分析得到的用户需求抽象为信息构造即概念模型的过程就是概念构造设计。它是整个数据库设计的关键。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的构造,才能更好地、更准确地用在某一DBMS实现这些需求。描述概念模

7、型的有力工具是E-R图。在这里使用了E-R图描述了图书馆管理系统的数据模型,将第二章的数据流图转换为了更好、更直观的模式。这些E-R图描述了各实体及其属性、实体间的联系等。图3.1 图书及其属性图图3.2 读者及其属性图图3.3 管理员及其属性图图书、读者、管理员各作为一个实体,图3.1、图3.2、图3.3分别表示各实体及其属性图。图书和读者作为两个独立的实体,之间存在着借阅的联系,同样图书和管理员也存在着管理的联系。此外,借阅也可以单独作为一个实体存在,有其自己的属性。图3.4是借阅的实体及其联系图。图3.4借阅联系及其属性读者和图书之间存在着借阅的联系,读者和管理员之间存在着管理的联系,由

8、这三个实体及其属性图和三者之间的联系,可以得到实体及其联系图,如图3.5和3.6所示。读者和图书之间存在多对多的关系,管理员和图书之间也是多对多的关系。图3.5 读者、图书及其联系图图3.6 管理员、图书及其联系图3.2 逻辑构造设计概念构造是独立于任何一种数据模型的信息构造。逻辑构造设计的任务就是把概念构造设计阶段设计好的根本E-R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑构造。数据库逻辑构造设计是总体设计阶段非常重要的环节,好的逻辑构造可以简化开发过程,使系统功能更加清晰明确。因为数据库逻辑构造的变化会造成编码的改动,所以必须认真地设计数据库逻辑构造后在进展编码,从而防止了无

9、谓的重复工作。目前DBMS产品一般支持关系、网状、层次三种模型中的一种,本次课程设计选用的是关系模型。E-R图向关系模型转换要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。实体图书、读者、管理员之间的关系如图3.5和3.6所示,两两实体之间存在的是多对多的关系,所以在概念构造设计的根底上,将两图转换为如下关系模式,整个系统所包含的信息有图书信息、读者信息、管理员信息和借阅信息,这些关系模式如下所示:图书书号,书名,作者,价格,出版日期,分类,条形码,备注,ISBN,数量BookinfoID,Name,Auther,Pubname,Price,PubDat

10、e,Sort,Barcode,Info,ISBN,Counts读者借阅证号,XX,性别,密码,Email,可借数量UserID,Name,Sex,Password,Email,Countable管理员编号,XX,密码,性别ManagerID,Name,Password,Sex借阅图书号,借阅证号,借书日期,还书日期,还书状态,罚金LendinfoBookID,UserID,LendDate,ReturnDate,IsBack,Fee注:这些关系模式均为优化后的数据模型,带下划线表示主键。3.3 物理构造设计数据库在物理设备上的存储构造与存取方法成为数据库的物理构造,它依赖于选定的数据库管理系统

11、。为一个给定的逻辑数据模型选取一个最适合应用要求的物理构造的过程,就是数据库的物理设计。以下就是在关系模式的根底上,由优化后的关系模型转化为合理的物理存储构造,根本信息表如下表所示。数据库的物理设计通常分为两步:1确定数据库的物理构造,在关系数据库中主要指存取方法和存储构造;2对物理构造进展评价,评价的重点是时间和空间的效率。评价结果满足原设计要求,可进入到物理实施阶段。图书根本信息存放在BookInfo表中,位置是LIB;用户根本信息存放在Users表中,位置是LIB;管理员根本信息存放在Manager表中,位置LIB;借阅根本信息存放在LendInfo表中,位置是LIB。在对时间效率、空间

12、效率、维护代价和各种用户要求进展权衡之后,选择了一个较优的方案作为作为数据库的物理构造,该构造符合用户需求。表3.1 图书根本信息表列名数据类型长度是否允许空IDvarchar10否Namevarchar100是Sortvarchar100是Countsint4是Pubnamevarchar100是Authorvarchar50是ISBNvarchar50是Pubdatesmalldatetime4是Pricereal4是Barcodevarchar50是Infovarchar200是表3.2 用户根本信息表列名数据类型长度是否允许空IDvarchar10否Namevarchar20是Sexc

13、har2是Passwordvarchar10是Emailvarchar50是Countableint4是Forfeitint4是表3.3 管理员根本信息表列名数据类型长度是否允许空IDvarchar10否Namevarchar20是Sexvarchar4是Passwordvarchar10是表3.4 借阅根本信息表列名数据类型长度是否允许空BookIDvarchar10否UserIDvarchar10否LendDatesmalldatetime4是ReturnDatesmalldatetime4是IsBackchar1是第四章数据库实施完成数据库的物理设计之后,就要用RDBMS提供的数据定义语

14、言和其它应用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以承受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。4.1相关SQL语句数据库实施有两项重要的工作,一项为哪一项数据的载入,另一项为哪一项应用程序的编码和调试。本次课程设计采用SQL语句与C+编码连接的方式实现数据的载入以及程序的运行。以下是局部相关SQL语句,相关的C+编码在4.2中有局部补充。创立数据库名为LIB的数据库CREATE DATABASE LIB -创立数据库名为LIB创立根本信息表1 创立BookInfo表:CREATE TABLE BookInfo( ID varc

15、har(10) , Name varchar(100) , Sort varchar(100), Counts int check(counts=0),-存书数量 PubName varchar(100) , Author varchar(50) , ISBN varchar(50) , PubDate smalldatetime , Price float(8) , Barcode varchar(50), -条形码的值 Info varchar(200), -书的信息或简要说明 primary key(ID)2 创立Users表:CREATE TABLE Users( ID varchar

16、(10) , Name varchar(20) not null, Sex char(2) check(sex in(男,女,F,M), Password varchar(10) , Email varchar(50) , Countable int check(countable=0) default 5,-可借书的数量 Forfeit int check(Forfeit in(0,1) default 0, Primary key(ID)3 创立Manager表:CREATE Table Manager( ID varchar(10) , Name varchar(20) not null

17、 unique, Sex varchar(4), Password varchar(10) not null, primary key(ID)创立触发器本系统创立了三个触发器,它们分别实现增加图书、删除图书、统计图书可借数量的功能。其代码如下。1 创立增加图书的触发器CREATE TRIGGER BookidChangeON BOOKINFOAFTER UPDATEASIF UPDATE(ID)BEGINDECLARE book_id as varcharDECLARE old_book_id as varcharSELECT book_id=(select Id from inserted)

18、SELECT old_book_id =(select id from deleted)Update LENDINFOSET LENDINFO.bookid=book_idWHERE LENDINFO.bookid =old_book_idEND2 创立删除图书的触发器create trigger deletebookon bookinfo instead of deleteasdelete from lendinfo where userid in (select ID from deleted)delete from bookinfo where id in (select ID from

19、 deleted)3 创立统计图书可借数量的触发器create trigger usercountable on lendinfo after insertasupdate users set countable=countable-1 where ID in (select userid from inserted)-借书后用户的可错数量减一4.2 查询模块 查询图书1 按图书编号查询例如,查询编号100004的图书,界面如图4.1所示:图4.1 查询图书编号界面源代码:#include SearchBID.hCSearchBID:CSearchBID(CWnd* pParent /*=NU

20、LL*/) : CDialog(CSearchBID:IDD, pParent) /*建立图书编号查询类*/void CSearchBID:Refresh_Data() CString cSource; cSource=select * from bookinfo where ID=+ m_ID +;void CSearchBID:OnOK() Refresh_Data(); if(m_ID=) MessageBox(输入要查询的条件,提示,MB_OK); return; 2 按图书名称例如,查询图书名称为数据构造的图书,界面如图4.2所示:图4.2 查询图书名称界面3 按作者名称例如,查询作

21、者为无名的图书,界面如图4.3所示:图4.3 查询图书作者界面源代码:#include SearchBA.hCSearchBA:CSearchBA(CWnd* pParent /*=NULL*/) : CDialog(CSearchBA:IDD, pParent)void CSearchBA:Refresh_Data() CString cSource; cSource=select * from bookinfo where Author=+ m_Author +;void CSearchBA:OnOK() Refresh_Data(); if(m_Author=) MessageBox(输

22、入要查询的条件,提示,MB_OK); return; 4 按出版日期例如,查询20011-10-01出版的图书,界面如图4.4所示:图4.4 查询图书出版时间界面#include SearchBD.hCSearchBD:CSearchBD(CWnd* pParent /*=NULL*/) : CDialog(CSearchBD:IDD, pParent)void CSearchBD:Refresh_Data() CString cSource; cSource=select * from bookinfo where PubDate=+ m_PubDate +;void CSearchBD:O

23、nOK() if(m_PubDate=) MessageBox(输入要查询的条件,提示,MB_OK); return; 5 按名称例如,查询清华大学出版的图书,界面如图4.5所示:图4.5 查询图书界面 查询读者1 按读者编号例如,查询编号为10003的读者,假面如图4.6所示:图4.6 查询读者编号界面#include SearchByID.hCSearchByID:CSearchByID(CWnd* pParent /*=NULL*/) : CDialog(CSearchByID:IDD, pParent)void CSearchByID:Refresh_Data() CString cS

24、ource; cSource=select * from Users where ID=+ m_ID +;void CSearchByID:OnOK() Refresh_Data(); if(m_ID=) MessageBox(输入要查询的条件:用户ID,提示,MB_OK); return; 2 按读者XX例如,查询XX为刁姗姗的读者,界面如图4.7所示:图4.7 查询读者XX界面 查询用户借阅历史例如,查询编号为10005的读者,界面如图4.8所示:图4.8 查询读者编号界面4.3书籍管理模块 增加图书例如,图书馆里原本没有编号为100008的图书,界面如图4.9显示:图4.9 插入图书前界

25、面插入界面如图4.10所示:图4.10 插入图书界面插入后再查询,图书馆存在编号为100008的图书,界面如图4.11所示:图4.11 插入图书后界面源代码:void CBookInfoDlg:OnOK() UpdateData(TRUE); if (m_ID = ) MessageBox(请输入图书编号); return; if (m_Name = ) MessageBox(请输入图书名称); return; CBook book; book.setID(m_ID); book.setName(m_Name); book.setSort(m_Sort); book.setAuthor(m_A

26、uthor); book.setBarcode(m_Barcode); book.setInfo(m_Info); book.setISBN(m_ISBN); book.setPubDate(m_PubDate); book.setPubName(m_PubName); book.setCounts(m_Counts); book.setPrice(m_Price); if(m_ID!=&m_Name!=&m_Counts0&m_Counts20) book.sql_insert(); MessageBox(插入成功,MB_OK); CDialog:OnOK(); 删除图书建立在4.11的根底

27、上,现在图书馆里存在100008号图书,下面将100008号图书删除,界面如图4.12所示:图4.12 删除挂失100008号图书下面从书库里查询100008号图书,查询结果如图2所示,100008号图书已被删除:图4.13 查询无100008号图书源代码:void CDeleteBookDlg:OnOK() CBook book; UpdateData(true); if(m_BookID=) MessageBox(输入要删除的读者的编号); return; book.sql_delete(m_BookID); MessageBox(挂失成功,提示); CDialog:OnOK();第五章软

28、件测试在原有系统的数据有一小局部已输入数据库后,就可以开场对数据库系统进展联合调试,这又称为数据库的试运行。这一阶段要实际运行数据库应用程序,执行对数据库的各种操作,测试应用程序的功能是否满足设计要求,如果不满足,对应用程序各局部那么要修改、调整,直到到达设计要求为止。为了设计出有效地测试方案按照下面准那么进展测试:所有测试都应追溯到用户需求;在完成了需求模型就要着手制定测试方案,在编码之前对所有测试工作进展方案和设计;从小模块开场逐步进展大模块测试,通常先重点测试单个程序模块再转向集合的模块;精心设计测试方案,尽可能充分覆盖程序逻辑使之到达要求的可靠性。5.1模块测试书籍管理模块测试表5.1 书籍管理模块测试表模块用例测试数据结果是否与预期相符增加图书存书数量价格输入varchar型存书数量:刁姗姗入库失败是存书数量价格输入int型存书数量:10插入成功是出版日期输入char型出版日期:20210909入库失败是出版日期输入smalldatetime型出版日期:2009-09-09入库成功是删除图书输入空图书编号图书编号:删除失败是输入正确的图书编号图书编号:100001删除成功是查询模块测试表5.2 查询模块测试表模块用例测试数据结果是否与预期相符查询图书输入不存在的图书编号图书编号:10000000查出空白

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1