数据库图书管理系统课程设计.docx
《数据库图书管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库图书管理系统课程设计.docx(48页珍藏版)》请在冰点文库上搜索。
数据库图书管理系统课程设计
参考文献………..............................................................................................................................26第一章绪论
1.1开发背景
随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累与能力的培养。
作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。
因此往往是投入了大量的人力和财力却得不到高效的管理效率。
为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、需求分析、概要设计、逻辑设计、物理设计,以及系统的实现等全过程。
在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。
采用结构化的功能模块设计系统功能,可读性好,易于扩充。
基本功能全面,系统可读性好,易于维护、更新,安全性好。
1.2开发工具
硬件:
装有windows操作系统的计算机
软件:
SQLServer2005及visualstudio2010
第二章需求分析
2.1引言
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
2.2数据需求
图书馆管理信息系统需要完成功能主要有:
1.读者基本信息的输入,包括借书证编号、读者姓名、读者性别。
2.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。
3.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。
4.书籍类别信息的查询、修改,包括类别编号、类别名称。
5.书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、收录日期。
6.书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、收录日期等。
7.借书信息的输入,包括读者借书证编号、书籍编号、借书日期。
8.借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
9.还书信息的输入,包括借书证编号、书籍编号、还书日期。
10.还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号书籍名称、借书日期、还书日期等。
11.超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。
12.超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等
2.3功能需求
(1)在读者信息管理部分要求:
a.可以查询读者信息;b.可以对读者信息进行添加及删除的操作。
(2)在书籍信息管理部分要求:
a.可以浏览书籍信息要求;b.可以对书籍信息进行维护,包括添加及删除的操作。
(3)在借阅信息管理部分要求:
a.可以浏览借阅信息;b.可以对借阅信息进行维护操作;c.可以浏览归还信息;d.对归还信息可修改维护操作;e.可以浏览罚款信息;f.对罚款信息可以更新
(4)在管理者信息管理部分要求:
a.显示当前数据库中管理者情况;b.对管理者信息维护操作。
2.4系统数据流图
系统业务流程图
顶层数据流图:
第2层数据流图:
(读者借阅,读者还书,读者查询,管理员查询,管理员修改)
第3层数据流图:
(读者借阅)
第3层数据流图:
(读者还书)
第3层数据流图:
(查询图书信息,查询读者信息,查询借阅历史查询罚款信息)
第3层数据流图:
(管理员添加、删除、修改图书信息)
第3层数据流图:
(管理员添加、删除、修改读者信息)
第3层数据流图:
(管理员添加、删除、修改系统用户信息)
第三章总体设计
数据库主要着重于数据对象的属性和数据对象之间的关系的分析。
一般采用E-R图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。
3.1E-R模型设计
3.1.1实体列表
实体
描述
读者
所有借阅者,查阅者,由证件号标识
出版社
图书馆所有图书所属出版社,由出版社编号标识
书籍
图书馆所有图书,由刊号标识
借阅
书号、证号、借阅日期、应归还日期等属性,由方式标识
系统管理员
系统维护人员
3.1.2系统的E-R模型
该图书管理系统的E-R模型,如下图所示
图3.1图书管理系统的E-R图
3.2界面设计
运行程序后首先显示主窗体,如图3.2所示。
图3.2主界面
单击“输入/查看读者信息”,就会弹出如图3.3所示登录框。
图3.3登录界面
在登录对话框中输入用户姓名和密码,单击“确认”按钮,那么就会弹出如图3.4所示的
图3.4读者信息管理窗体
在“读者信息”窗体中可以对读者信息进行维护操作,例如浏览读者信息,添加记录和删除记录等。
单击“输入/查看书籍信息”,就会显示“书籍信息”窗体,在该窗体中可以对书籍信息进行维护操作。
书籍信息维护窗体如图3.5所示。
图3.5书籍信息窗体
单击“输入/查看借阅信息”,就会显示“借阅信息”窗体,在该窗体中可以对出版社信息进行维护操作。
出版社信息维护窗体如图所示。
图3.6借阅信息窗体
单击“输入/查看出版社信息”,就会显示“出版社信息”窗体,在该窗
体中可以对借阅信息进行维护操作。
借阅信息维护窗体如图3.7所示。
图3.7出版社信息窗体
单击“输入/查看管理者信息”,结果如图3.8所示。
图3.8管理者信息窗体
在主窗体上单击“显示报表”,那么就可以查看借阅信息的报表如图示
图3.9报表窗体
在“字段”选项卡中单击“全部添加”按钮,把“读者信息”表中的所有字段添加到报表中,单击“完成”按钮就完成报表的设计。
设计完成的“读者信息报表”如图所示。
如果用户在运行的主窗体上单击“综合查询”,那么就可以查看针对不同的数据表进行查询操作。
选择查询依据为“出版社信息”表查看其中的所有信息,结果如图3.10所示。
图3.10综合查询窗体
第四章数据库设计
4.1数据表的实体E-R图
4.1.1书籍信息E-R
图4.1书籍信息的E-R图
4.1.2书籍借阅信息E-R图
图4.2借阅信息的E-R图
4.1.3读者信息实体E-R图
图4.3读者信息的E-R图
4.1.4出版社信息实体E-R图
图4.4出版社信息的E-R图
4.2概念结构设计
根据不同的对象,从第3层数据流程图入手,分别画出各部分E-R图:
4.2.1从数据流程图从数据流程图图2.3和图2.4抽象出的分E-R图:
4.2.2从数据流程图图2.6抽象出的分E-R图:
4.2.3从数据流程图图2.7抽象出的分E-R图:
/
4.2.4从数据流程图图2.8抽象出的分E-R图:
4.3逻辑结构设计
E-R图向关系模式转化
(1)读者(借书证号,姓名,已借书数目,联系方式,读者类型,能否借书)
(2)书籍(书号,书名,丛书系列,作者,出版社,出版时间,责任编辑,库存量,馆内借阅分类,定价,主题分类,二级分类,总册数)
(3)书籍借阅(借书证号,书号,借书日期,实际还书时间,能否续借,应归还时间)
(4)出版社(名称,地址,网址,e-mail)
4.4物理结构设计
主要数据表的结构
表名
列名
数据类型
长度
主键
出版社信息
出版社名称
varchar
50
Yes
出版社地址
varchar
50
网址
char
50
E-mail
char
50
读者信息
证号
int
4
Yes
姓名
varchar
20
联系方式
varchar
50
已借书数目
int
4
读者类别
int
4
能否借书
bit
1
密码
varchar
6
借阅信息
书号
char
10
Yes
证号
int
4
Yes
借阅日期
datetime
8
应归还日期
datetime
8
实际归还日期
datetime
8
续借
bit
1
书籍信息
书号
char
10
Yes
丛书系列
nchar
50
作者
nchar
50
责任编辑
nchar
50
字数
int
4
定价
money
8
出版时间
datetime
8
主题分类
nchar
50
二级分类
char
50
馆内借阅分类
int
4
总册数
int
4
库存量
int
4
出版社
varchar
50
书名
varchar
50
管理者信息
用户名称
char
20
Yes
密码
char
20
权限
int
4
图书管理系统各表数据结构表
第五章详细设计
5.1主窗体设计
创建一个新的“Windows应用程序”类型的项目,名为“图书馆管理”。
将默认创建的窗体命名为“主窗体”,把“主窗体”作为本系统中的主界面。
在窗体中添加两个Pannel控件,7个Button控件和7个Linklabel控件。
5.1.1设计登录界面
设计登录界面,创建一个新的”Windows窗体”,名为登录,作为本系统的登录界面.在登录窗体上添加两个Label控件,两个Button控件和两个TextBox控件,添加控件后的窗体如图所示。
5.1.2添加数据组件
在工具箱中单击“数据”选项卡,添加OleDbDataAdapter组件。
(1)在工具箱中单击OleDbDataAdapter组件,在窗体任意位置拖动出一个虚框矩形后释放左键弹出“数据适配器配置向导”对话框。
(2)单击“下一步”,在打开的对话框中选择前面建好的数据连接,然后单击“下一步”。
(3)选中“使用SQL语句”,然后单击“下一步”进入“生成SQL语句”对话框。
(4)在其中的多行文本框直接输入SQL语句“SELECT管理者信息.*FROM管理者信息”。
(5)单击“下一步”按钮,进入“查看向导结果”,单击“完成”按钮完成数据适配器配置。
配置数据适配器后,在主窗体上就会自动添加一个OleDbConnection控件。
5.1.3生成数据集
生成数据集的步骤如下:
(1)单击OleDbDataAdapter控件“属性”对话框中的“生成数据集”链接,打开“生成数据集”对话框。
(2)在其中选中“新建”单选按钮,并在其后面的文本框中输入“Lib管理者信息”。
(3)在“选择要添加到数据集中的表”列表框中列出了前面添加的OleDbDataAdapter组件所连接的表,选中该表名前面的复选框。
(4)选中“将此数据集添加到设计器”复选框,单击“确定”按钮这样,将生成一个名称为“Lib管理者信息”的数据集,该数据集以文件形式存储,文件名为“Lib管理者信息.xsd”。
而在项目中,添加了一个DataSet组件,名为“objLib管理者信息”。
5.2读者信息
在当前项目中添加一个“Windows窗体”,将窗体命名为“读者信息”。
5.2.1设计显示界面
在窗体上添加1个GroupBox控件,9个Button控件,5个TextBox控件,1个CheckBox控件和7个Label控件。
各按钮控件是为了执行相应的操作。
各TextBox控件和CheckBox控件用来显示数据集中的数据,这个功能通过设置DataBindings属性来实现。
5.2.2添加数据组件
向窗体添加OleDbConnection组件,命名为OleDbConnection1后将其选中,在“属性”对话框的ConnectionString栏单击,选择所建数据库Library。
添加OleDbDataAdapter组件和生成数据集的方法步骤如2.3.2及2.3.3。
设置各TextBox控件的DataBinding属性来实现对数据集中数据的显示(以Edit证号为例)。
(1)选中“Edit证号”控件单击“属性”对话框。
(2)单击DataBinding属性前面的+号打开该属性的详细列表。
(3)设置Text属性:
在该属性后面栏中单击并选择所对应字段。
(4)设置其他TextBox控件的DataBinding属性。
5.2.3功能实现
显示数据,添加读者,保存更改,记录定位的实现。
“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”和该模块的设计思路及方法步骤完全一致,在此从略。
5.3显示报表
在当前项目中添加一个“Windows窗体”,命名为“报表窗体”,该模块显示当前数据库中读者信息和借阅信息的报表。
5.3.1添加读者信息报表
(1)在开发环境中选择菜单“项目”中的“添加新项”对话框中选择CrystalReport选项。
(2)在“名称”文本框中输入报表名“读者信息报表.rpt”,单击“打开”按钮,就会弹出入图所示的“CrystalReport库”对话框。
(3)在其对话框中选择“使用报表专家”单选按钮,在“选择专家”列表框中选择“标准”选项,单击“确定”按钮,进入下一步。
(4)在弹出的“标准报表专家”对话框中,选择“可用的数据源”列表,中的OLBDB(ADO)选项,就会弹“OLEDB(ADO)”对话框。
选择OLBDB提供程序为MicrosoftOLEDBProviderforSQLServer,单击“下一步”按钮,显示“连接信息”对话框。
(5)在其中设置连接信息,单击“完成”按钮,返回“标准报表专家”对话框。
(6)选择数据源为OLEDB(ADO)中的Library数据库,并且选中其中的“读者信息”表。
单击“插入表”按钮,把“读者信息”表插入到报表中,单击“下一步”按钮。
(7)在“字段”选项卡中单击“全部添加”按钮,把“读者信息”表中,
有字段添加到报表中,单击“完成”按钮就完成报表的设计。
5.3.2添加借阅情况报表
添加借阅情况报表的过程与添加读者信息报表过程大致相同,不同之处在于插入到报表中的数据表为“读者信息”。
5.4综合查询的实现
程序运行过程中,单击主窗体的“综合查询”按钮,就会弹出一个对话框。
在其中设置查询条件,根据查询条件从记录集中筛选出所需记录。
为此需要在项目中添加一个窗体“综合查询”。
还需要设置“CmbBox运算符”控件的Items属性。
单击窗体上“CmbBox运算符”控件,然后在“属性”对话框中单击Items栏,就会出现一个按钮,单击按钮即可。
1.添加数据组件
在窗体上添加一个OleDbDataAdapter组件,使用数据适配器配置向导对其进行配置。
选择数据连接后输入SQL语句“SELECT 出版社信息.*FROM出版社信息”。
同样再为窗体添加四个OleDbDataAdapter组件,在"生成SQL语句"对话框的多行文本框中分别输入SQL语句“SELECT 读者信息.*FROM读者信息”,“SELECT 管理者信息.*FROM管理者信息”,“SELECT 借阅信息.*FROM借阅信息”,“SELECT 书籍信息.*FROM书籍信息”,然后单击“完成”按钮,Name属性分别设置为OleDbDataAdapter2,OleDbDataAdapter3,OleDbDataAdapter4,OleDbDataAdapter5完成数据适配器的配置。
生成数据集的步骤如下。
(1)在OleDbDataAdapter1组件的“属性”对话框中单击“生成数据集”超链接,打开“生成数据集”对话框,选中“新建”按钮并在后面文本框中输入“Lib综合查询”。
(2)在“选择要添加到数据集中的表”列表框中,选中5个表前面的复选框。
(3)选中“将此数据集添加到设计器”复选框,单击“确定”按钮。
这样,将生成一个名称为“Lib综合查询”的数据集,该数据集以文件的形式存储,文件名为“Lib综合查询.xsd”。
而在项目中,添加一个DataSet组件,名称为“objLib综合查询”。
2.为数据库Library和本系统之间建立一个数据连接。
(1)在服务器资源管理器中右击“数据连接”节点。
在弹出的快捷菜单中执行“添加连接”命令,打开DataLinkProperties对话框。
切换到Provider选项卡,选中列表框中的MicrosoftOLEDBProviderforSQLServer项。
单击“下一步”切换到Connection选项卡。
(2)在其中的第一个下拉列表框中选择数据库所在服务器名称。
输入登录服务器信息后选择数据库Library,然后单击TestConnection按钮。
如果测试成功,单击“确定”按钮。
第六章编码与测试
6.1编码
1.主页编码设计
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclass_Default:
System.Web.UI.Page
{BookManagebookmanage=newBookManage();
ReaderManagereadermanage=newReaderManage();
protectedvoidPage_Load(objectsender,EventArgse)
{this.Title="图书馆管理系统主页";
DataSetbookds=bookmanage.GetBookSort("tb_bookinfo");
gvBookSort.DataSource=bookds;
gvBookSort.DataBind();
DataSetreaderds=readermanage.GetReaderSort("tb_reader");
gvReaderSort.DataSource=readerds;
gvReaderSort.DataBind();
}protectedvoidgvBookSort_RowDataBound(objectsender,GridViewRowEventArgse)
{if(e.Row.RowIndex!
=-1)
{intid=e.Row.RowIndex+1;
e.Row.Cells[0].Text=id.ToString();
}
}protectedvoidgvReaderSort_RowDataBound(objectsender,GridViewRowEventArgse)
{gvBookSort_RowDataBound(sender,e);
}}
2.登录端口编码设计
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclassLogin:
System.Web.UI.Page
{OperatorClassoperatorclass=newOperatorClass();
AdminManageadminmanage=newAdminManage();
ReaderManagereadermanage=newReaderManage();
protectedvoidPage_Load(objectsender,EventArgse)
protectedvoidbtnLogin_Click(objectsender,EventArgse)
{if(txtAdmin.Text==string.Empty)
{Response.Write("");
return;
}
else
{DataSetadminds=null;
DataSetreaderds=null;
adminmanage.Name=txtAdmin.Text;
adminmanage.Pwd=txtPwd.Text;
adminds=adminmanage.Login(adminmanage);
readermanage.ID=txtPwd.Text;
readermanage.Name=txtAdmin.Text;
readerds=readermanage.ReaderLogin(reader