课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(44页珍藏版)》请在冰豆网上搜索。
课程设计报告
绪论
随着人们知识层次的提高,图书馆成为日常生活中不可或缺的一部分,而图书管理系统是一个教育单位不可缺少的部分,它的内容对于学校图书馆的管理十分重要,所以本次系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
解决以前手工管理的检索速度慢效率低,图书的借阅和归还工作量大,并接统计工作男,藏书不能及时更新的问题!
图书管理系统的主要功能为管理有关读者,书籍,借阅和管理者的信息等。
本系统结构分为读者信息管理模块,书籍信息管理模块,借阅信息管理模块,管理者信息管理模块。
读者信息管理部分有两方面的功能,可以浏览读者的信息,可以对读者信息进行维护。
书籍信息管理可以浏览书籍的信息,可以对书籍信息进行维护。
借阅信息管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。
管理者信息管理可以显示数据库中管理者的情况,可以对管理者信息进行维护。
可见,本系统并不复杂,主要解决的问题是利用关键字对数据库进行查询。
研究方法是采用结构化设计方法,分工合作,集体的力量是伟大的!
并且团队精神也是现在工作时必须应该具有的素质之一!
以达到数据库中应用的数据量!
并发数量等的技术要求!
也对自己所学进行总结性的梳理!
系统开发系统出现了一些技术难点大致有以下几点:
首先是建立合理的表结构,避免数据冗余各表通过特定字段实现不同表的数据连接,避免数据冗余,需要设计简洁高效的表结构。
其次是建立相当的系统安全性,登录用户身份的验证机制的设计、操作页面的权限保护。
再就是建立严密的数据表操作机制。
同一表有可能在多个模块中被修改,所以严密的数据表操作机制的建立十分比较困难的,但也是必须的。
除了设计时必须有相当程度的考虑,在编制时更应加强程序逻辑的可靠性和程序调试的全面性。
系统的根本目的是方便用户,帮助其节约时间精力。
所以就要保证界面的友好、简洁、易操作性。
使用户能很快的接受并运用本系统。
第一章系统分析
Ø1.1图书馆系统的意义
图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。
随着校园网的发展,各高等院校的图书馆都开始使用“图书管理信息系统软件”开展工作。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
Ø1.2系统开发工具介绍
MicrosoftVisualC++6.0是一种可视化的编程语言,利用可视化技术进行编程,可使应用程序的开发简单、快捷;编程者不需要了解太多的关于面向对象的程序设计的细节,即可编写出界面友好、功能强大的应用程序。
因此,MicrosoftVisualC++在国内外各个领域中应用非常广泛。
由于其容易学习、功能强、编程效率高,无论是专业人员还是非专业人员,都可以非常容易地掌握好MicrosoftVisualC++的使用。
SQL2000数据库的基本概念是进行数据库编程的基础,了解数据库,就是了解数据库的结构,文件组织方式以及数据库应用程序的基本框架。
数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流,是提供数据的基地。
它能保存数据并允许用户访问所需的数据。
数据库中保存的数据都是相关数据,为了便于保管和处理这些数据,将这些数据存入数据库时必须有一定的的数据结构和文件组织方式。
数据库中数据的组织形式有多种,最近几年来,关系模型已经成为数据库设计的事实上的标准。
在关系数据库,实际保存数据的是一个或多个表,没个表定义了某中特定的结构。
本系统前台的操作窗体使用MicrosoftVisualC++6.0开发,后台使用SQL2000数据库开发,同时利用了ADO和OLEDB数据访问技术,快速开发工具和大容量高性能数据库构成了本系统的特色,前者使得面向数据库应用的开发速度有了大幅度提高,后者使得对数据的存放、处理有了可靠的保证。
Ø1.3本设计的目的及要求
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,图书管理系统应运而生。
他运用了管理科学,系统科学,运筹学,统计学,计算机科学等学科的知识。
计算机是20世纪的产物,被广泛应用于信息管理系统的环境。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,数据信息处理工作量大,容易出错。
尽管有的图书馆已经使用计算机,但是尚未用于信息管理,总的来说,缺乏系统、规范的信息管理手段,没有发挥它的效力,资源闲置比较突出。
基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
第二章总体设计
本系统是为了方便对图书馆工作人员对读者资料、书籍、借还书等信息进行高效的管理而编写的,面对图书信息管理中出现的各种情况,该图书管理信息系统在实施后应基本达到以下目标:
(1)系统界面友好美观,操作简单易行,管理查询灵活方便。
(2)系统运行可靠,维护方便,灵活通用。
Ø2.1功能模块的划分
通过对图书管系统的功能分析,可以定义出系统的功能模块图如下,其中定义的功能模块包括以下几个方面:
系统登录:
提供系统的访问功能如图2-1。
图2-1系统登录
书库管理:
包括新书登记、借书、还书、书籍挂失、图书信息查询、借书信息查询等功能如图。
借阅证管理:
提供办理借阅证、借阅证信息查询、借阅证挂失功能。
系统管理:
包括添加账号、修改密码和突出系统等功能。
图2-2图书馆信息系统管理界面
Ø2.2系统软件模块
结构示意图如图2-3:
图2-3系统结构示意图
第三章数据库设计
Ø3.1数据库设计步骤
一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。
信息管理系统所涉及的数据库设计分五个步骤:
数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。
(1)数据库需求分析的任务是将业务管理单证流化为数据流,划分主题之间的边界,绘制出DFD图,并完成相应的数据字典。
(2)概念设计的任务是从DFD出发,绘制出本主题的实体-关系图,并列出各个实体与关系的纲要表。
(3)逻辑设计的任务是从E-R图与对应的纲要表出发,确定各个实体及关系的表名属性。
(4) 物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出基本表的主键,将所有的表名与字段名英文化,实现物理建库,完成数据库物理设计字典。
(5) 加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。
要设计出一个好的信息管理系统数据库,除满足系统所要求的功能外,还必须遵守下列原则:
(1)基本表的个数越少越好。
(2)主键的个数越少越好。
键是表间连接的工具,主键越少,表间的连接就越简单。
(3)字段的个数越少越好。
(4)所有基本表的设计均应尽量符合第三范式
Ø3.2数据库需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出输入。
收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
在图书馆管理员方面,系统需满足以下功能实现的要求:
1、在进入系统之前,管理员需要经过身份验证:
用户名、密码输入正确后才能进入。
2、管理员可以根据需要进行书库管理。
3、管理员可以进行借书证的办理、查询、挂失等操作
4、管理员可以添加账户以及修改密码。
对于读者而言,该系统须具有以下功能和特点:
1、能方便地查询图书馆的藏书情况。
2、能够方便地借阅图书、续借图书、归还图书。
3、能够查询自己的基本资料、借阅图书情况。
4、能够熟悉图书管理系统的使用。
Ø3.3概念结构设计
系统的需求具体体现在对各种信息的保存、修改和查询的方面。
因此,一个满足系统要求的数据库必须充分照顾到对各种信息的输入输出,以免遗漏导致开发时的返工。
通过对系统功能的分析,图书管理系统需要包含以下数据库信息。
读者信息:
读者姓名、编号、性别、班级、身份证号码、电话号码。
图书信息:
包括图书ID、图书名称、作者、出版者、单价、入库时间、图书总量、现存量。
管理员的基本信息:
包括登录ID、登录密码等。
借书信息:
包括借阅书号、借阅证号、所借图书的名字、借书日期。
罚金信息:
包括罚金号、借阅证号、图书号、借书时间、还书时间、罚金。
建立系统的数据模型(E-R图)来理解和表示问题的信息域。
通过以上对图书管理系统的分析,可以得出该系统涉及三个实体及各个实体间的联系:
读者、图书、管理员。
通过各实体数据关系的整理,我们可以画出各实体的E—R图:
读者E—R图如图3-1:
v
图3-1读者信息
实体读者的属性有:
姓名、编号、性别、班级、身份证号码、电话号码。
图书E—R图如图3-2所示:
v
图3-2图书信息
由E—R图我们可以看出图书包括在馆ID、图书名称、作者、出版社、单价、入库时间、图书总量、现存总量等属性。
管理员的E—R图3-3所示:
图3-3管理员信息
图书馆的管理员拥有的属性含有登录ID、登录密码、工作时间属性。
建立了这三个基础的实体后,我们可以想到通过其他的实体可以将这三个实体之间建立起联系。
我们通过引入借阅证来建立起读者与图书的联系,借阅证的属性包括借阅证号、读者姓名。
借阅证的E—R图3-4所示:
v
图3-4借阅证信息
根据读者人群类型的不同,如大学生、研究生、老师等在图书馆管理系统中所拥有的借阅权限是不同的,所以在读者实体基础上我们还可以继续细分出来一个实体——读者类型。
它的E—R如图3-5所示:
图3-5读者类型信息
同样的我们可以给图书分类,得到图书类型的实体,它包含的属性有:
图书类型编号、图书类型、罚款比等,这样方便图书管理员对图书的借出及读者类型的划分。
E—R图如图3-6所示:
图3-6图书类型信息
在借/还书的过程中,由于没有按时还书会有罚款情况的发生,这时候会出现一个实体——罚金,它的E—R图如下图3-7:
图3-7罚款信息
图书类型与图书的联系是“分类”,是一个1:
n联系。
同样的,读者类型与读者的联系也是“分类”,是1:
n的联系。
读者和借阅证的联系是1:
1的“拥有”,借阅证与图书的联系是m:
n的“借/还”。
管理员管理所有的读者和图书,管理员与图书和读者的联系是1:
n的“管理”。
整个系统的总体E—R图如下图3-8:
图3-8全局E-R图
Ø3.4逻辑结构
结合设计的E-R图,根据实体的属性及其实体之间的联系生成系统的逻辑结构:
对应的主要的关系模型如下
管理员基本信息表(管理员ID,管理员姓名,管理员密码,,工作时间)
读者表(学号,姓名,性别,班级,身份证号,电话号码);
读者类型表(学号,借阅者身份,可借阅图书数目);
图书表(图书ID号,图书名称,作者,出版社,单价,图书类型编号,);
图书类型表(图书类型编号,图书类型名称,可借阅图书的天数);
借阅证表(借阅证号,读者姓名,与读者对应的读者编号,借书证状);
借书证与图书关系表(借阅图书ID号,借书证号,处罚标准,应还书时间,实还时间,已借数目);
借书证与图书关系备份表(借阅图书ID号,借书证号,图书索引号,借书时的时间,实际还书时间);
处罚记录表(借阅图书号,受处罚的借书证的ID号,罚款金额,备注,处罚原因);
Ø3.5物理结构设计
✧3.5.1数据库设计
现在需要将上面的数据库概念转化为SQL2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构、利用相应的SQL语句可以实现其功能数据的装换如下列各表:
●管理员基本信息表
管理员基本信息表(Admin_Info)包含了图书管理员的基本信息,其结构如表3-1所示
表3-1管理员基本信息表
字段名称
数据类型
可否为空
约束条件
说明
WorkID
int
NOTNULL
主键
成员ID
User_Name
VARCHAR(24)
NOTNULL
无
姓名
Password
VARCHAR(24)
NOTNULL
无
密码
worktime
VARCHAR(24)
NOTNULL
无
工作时间
●图书信息表
图书信息基本表(Book_Info)包含了图书馆里所有的图书的基本信息,用来方便读者查询和借阅,其结构如表3-2所示
表3-2图书信息表
字段名称
数据类型
可否为空
约束条件
说明
Book_ID
VARCHAR(50)
NOTNULL
主键
书籍ID
Book_Name
VARCHAR(50)
NOTNULL
无
书名
Writer
VARCHAR(50)
NOTNULL
无
作者
Press
VARCHAR(50)
NOTNULL
无
出版社
Price
float
NOTNULL
无
单价
InLibrary_Date
datetime
NOTNULL
无
入库时间
Total_Amount
int
NOTNULL
无
总量
Now_Amount
int
NOTNULL
无
现存量
●借阅卡信息表
借阅卡信息表(Proof_Info)包含了所有读者的借阅卡信息,用来方便读者借阅和管理员管理,其结构表如表3-3所示
表3-3借阅卡信息表
字段名称
数据类型
可否为空
约束条件
说明
Proof_ID
VARCHAR(50)
NOTNULL
主键
借阅证ID
Name
VARCHAR(50)
NOTNULL
无
姓名
Sex
VARCHAR(50)
NOTNULL
无
性别
Birth_Time
datetime
NOTNULL
无
出生日期
Address
VARCHAR(50)
NOTNULL
无
地址
ID_Number
VARCHAR(50)
NOTNULL
无
身份证号
Tel_Number
VARCHAR(50)
NOTNULL
无
电话号码
Now_Borrow_Amount
int
NOTNULL
无
现借书量
●借书信息表
结束信息表(Borrow_Info)包含了所有图书借阅的信息,用来方便图书管理员的管理图书馆的图书出借情况,其结构表如表3-4所示
表3-4结束信息表
字段名称
数据类型
可否为空
约束条件
说明
BorrowID
int
NOTNULL
主键
借书ID
Proof_ID
VARCHAR(50)
NOTNULL
外键(Proof_Info)
借阅证ID
Book_ID
VARCHAR(50)
NOTNULL
外键(Book_Info)
书籍ID
Borrow_Date
datetime
NOTNULL
无
借出时间
●罚单信息表
罚单信息表(Punish_Info)包含了所有读者的罚金信息,用来方便管理员管理图书过期情况,其结构如表3-5所示
表3-5罚单信息表
字段名称
数据类型
可否为空
约束条件
说明
Puni_ID
int
NOTNULL
主键
罚单ID
Proof_ID
VARCHAR(50)
NOTNULL
无
借阅证ID
Book_ID
VARCHAR(50)
NOTNULL
无
书籍ID
Borrow_Date
datetime
NOTNULL
无
借出时间
Return_Date
datetime
NOTNULL
无
还书时间
Puni_Money
float
NOTNULL
无
罚金
通过以上对各实体结构表的介绍,可以通过SQLServer企业查询器来创建各表。
在对各表初始化设置完毕以后,通过用户登录系统可以实现用户的登录,使用过程注意数据源的配置和相应功能的实现。
✧3.5.2编码设计
●WorkID,BorrowID,Puni_ID都设置了标识规范,增加记录时自动加1,保持其唯一性。
●Borrow_Date,Return_Date,InLibrary_Date都设置成datetime类型,插入记录时自动获取当前日期,不需要管理员输入日期。
●Proof_ID,Book_ID,ID_Number,Tel_Number,Proof_ID由于它们只是代表一个标识,不是一个表示大小的数字,所以用VARCHAR类型,用int或可能会有溢出现象。
第四章详细设计和实现
本系统需要编码实现的主要功能有登录、图书管理、借阅证管理系统及其他模块的管理4个模块的功能,为了完成系统功能模块的设计和数据库表的创建,下面介绍一个可以创建图书管理系。
通过MicrosoftVisualC++6.0和后台使用SQL2000进行数据源连接,实现数据的互通,从而实现各个模块的功能。
Ø4.1登录模块的设计
●功能说明:
验证管理员的用户名和密码是否正确,正确则进入主界面。
在进入主对话框之前,首先调用登录对话框可以创建一个对话框,包含了数据源的名称、用户名称和密码3个部分,界面如图2-1所示。
对话框的名称为“图书管理系统”。
“图书管理系统”对话框中的控件类型、ID及说明如表4-1所示
表4-1图书管理系统控件表
控件类型
ID
属性
Label
IDC_STATIC
登录图书管理系统
Label
IDC_STATIC
管理员用户名称
EditBox
IDC_EDIT_USER
无
Label
IDC_STATIC
管理员密码
EditBox
IDC_EDIT_PASSWD
无
BUTTON
IDOK
登录
BUTTON
IDCANCEL
退出
Ø4.2图书管理模块设计
书库管理包括新书登记、借书/还书、书籍挂失、图书信息查询和借书信息查询5个部分,下面分别介绍着5个部分的功能以及实现过程。
✧4.2.1新书登记
●功能说明:
入库的实现过程是首先要输入书籍的各种信息,包括书的书号、书名、作者、出版社、价钱、总量、现存量等,这里书的数量由两个变量来记录,总量代表图书馆中这种这种书的总量,现存量是目前正在管中的量,两者之差就是被读者借出去的数量。
其中每个信息不能有遗漏或者格式不正确,因为这是每一本书的基本信息,在函数的实现过程中有检验的功能。
然后判断图书馆中是否存在这种图书,如果存在,那么时间简单的把库存的数量加上新加入的数量,如果不存在,那么就要新建记录。
新书登记管理包括新书入库、查询图书和显示所有图书的功能。
为了方便添加图书和查询所有图书的基本信息,可以创建一个对话框,入库成功后的界面如图4-1所示。
图4-1入库成功
“新书登记入库”对话框中的控制类型、ID以及说明如表4-2所示。
表4-2新书登记入库控件表
控件类型
ID
属性
Label
IDC_STATIC
书号
EditBox
IDC_EDIT_BOOK_NO
无
Label
IDC_STATIC
书名
EditBox
IDC_EDIT_BOOK_NAME
无
Label
IDC_STATIC
作者
EditBox
IDC_EDIT_WRITE
无
Label
IDC_STATIC
单价
EditBox
IDC_EDIT_PRICE
无
Label
IDC_STATIC
出版社
EditBox
IDC_EDIT_PRESS
无
Label
IDC_STATIC
总量
EditBox
IDC_EDIT_TOTAL
无
Label
IDC_STATIC
现存量
EditBox
IDC_EDIT_NOW
无
BUTTON
IDC_BUTTON_IN
入库
BUTTON
IDC_BUTTON_CHECK_BOOK
查询
BUTTON
IDC_BUTTON_CHECK_ALL
显示全部书籍
BUTTON
IDC_BUTTON_CHECK_BACK
返回
ListControl
IDC_LIST_RESULT
无
◆1.入库
入库是图书馆系统中的重要功能之一,时图书管理系统不可缺少的一部分。
入库的现存量的实现过程时首先输入书籍的各种信息,其中每个信息不能有遗漏或者格式不正确,因为这是每一本书的基本信息,在函数的实现过程中有检验的功能。
然后判断图书馆中是否存在这种图书,如果存在,那么只是简单地吧库存的数量加上新加入得数量,如果不存在,那么解药建立新的纪录。
其对应的部分函数为CNewBooksDlg:
:
OnButtonIn()代码如下。
voidCNewBooksDlg:
:
OnButtonIn()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//从控件到对话框成员变量的数据交换
UpdateData();//判断是否输入了书号
if(m_strBookID.Compare("")==0)
{
MessageBox("请正确填写要求的数据","新书入库登记");
return;
}
//判断数据库是否打开,如果没有打开,那么重新打开数据库
if(!
m_database.IsOpen())
{
if(!
m_database.Open(_T("Library")))
{
MessageBox("Cannotaccessdatabase!
","新书登记");
return;
}
}
CBookSet*m_pset=newCBookSet(&m_database);//新生成CBookSet实例
//判断书库中是否有该书,进行相应操作
//有,把数量加到库中
CStringstrSQL;
strSQL.Format("select*fromBook_InfowhereBook_ID='%s'",m_strBookID);
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
if(m_pset->GetRecordCount()!
=0)
{
m_pset->Edit();
m_pset->m_Total_Amount=m_pset->m_Total_Amount+m_lTotal;
m_pset->m_Now