资源描述
Delphi课程设计报告
37
2020年4月19日
文档仅供参考
课 程 设 计 报 告
学生姓名:
王雷
学 号:
6
学 院:
经济管理学院
班 级:
管理112
题 目:
图书管理系统
杨胜春
指导教师: 职称: 教授
12月 31日
目录
第一章 绪论·························································3
1.1绪论························································3
1.2软件设计开发与开发平台······································3
第二章 系统需求分析·················································5
2.1可行性分析··················································5
2.2需求分析····················································5
2.3功能分析····················································5
2.4 安全性需求··················································6
2.5 系统数据流程分析············································6
2.6功能模块图··················································7
第三章 概念结构设计·················································9
第四章 逻辑结构设计················································11
第五章 物理结构设计················································12
5.1 数据类型···················································12
5.2 表的设计···················································13
第六章 数据实施和维护··············································14
6.1信息管理···················································14
6.2信息查询···················································16
6.3数据代码···················································18
第七章 设计小结····················································27
第八章 参考文献····················································27
第一章 绪论
1.1绪论
随着学校规模的不断扩大,图书数量的急剧增加,有关图书的信息量也在不断成倍增长。面对庞大的信息量,就需要有图书管理系统来提高图书管理工作的效率。经过这样的系统,我们能够做到信息的规范管理和快速查询,从而减少了管理方面的工作量。传统手工的图书管理,管理过程繁琐而复杂,执行效率低,而且易于出错。经过这样的系统,我们能够做到信息的规范管理和快速查询,实现了图书管理的系统化、规范化和自动化,这样不但减少了管理工作量,还提高了管理效率,降低了管理成本。随着科技的飞跃进步,对信息的管理也是越来越规范,越来越精确。不但让信息合理规范的管理,同时也方便管理者方便的快速查询,提高了管理的效率。对图书信息进行图书入库、借阅登记、借阅查询、过期提示等这些日常业务的需要。高效性的经过系统的实用,能够改变旧的图书管理模式,使对图书的管理、借阅、查询更加方便有效。
1.2 软件设计开发与开发平台
1.2.1 数据库应用系统开发
数据库应用系统是针对某个特定目标,建立再数据库管理系统之上的计算机应用系统. 组成数据库应用系统的要素:数据库,数据库管理系统(DBMS),应用程序和用户. 数据库:强调数据;数据库管理系统:强调系统软件;数据库应用系统:强调数据库的整个运行系统,是以,某个特定数据库为基础的计算机应用系统,其作用就是使用户不能直接干预数据库而又方便访问数据库中的资料. 数据库应用系统是系统开发员经过调用DBMS提供的编程接口开发出来的.应用程序要使用数据库也必须经过此接口 。
在数据库应用系统开发之前,对开发数据库的基本概念应当先做下了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。这样,有利于开发出一个长期适应于用户的软件产品。数据库应用系统开发的一般过程:需求分析;系统设计;系统实现;系统测试与维护。总的来说就是理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,而且这些数据库带有功能完备、高效能的应用。
1.2.2 数据库
数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户经过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。本系统采用的数据库是SQL Server .下面即是SQL Server 介绍:SQL Server 是Microsoft公司最新开发的大型关系数据库管理系统,具有强大的关系数据库创立、开发、设计及管理功能。
1.2.3 数据库管理系统
数据库管理系统(DBMS):强调系统软件,指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是经过DBMS进行的。DBMS总是基于某种数据模型,能够把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS能够分成层次型、网状型、关系型、面向对象型等。其中SQL Server 就是一种关系型数据库管理系统。
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户经过DBMS访问数据库中的数据,数据库管理员也经过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。DBMS从其它两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS还涉及事务管理、锁、备份和恢复。
第二章 系统需求分析
2.1 可行性分析
随着学校与广大企事业单位内部网络的广泛建立,在通用信息平台上构筑高效实用的协同工作和自动化办公应用系统,有效实现内部知识管理,已成为众多用户的共同需求。
图书管理系统,为学校与广大企事业单位自动化办公提供了一个较好的解决方案。在开发过程中,采用了SQL SERVER 网络数据库,使得本系统能够方便的和其它子系统进行数据交换。同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有较强的可操作性。
2.2 需求分析
随着学校规模的不断扩大,图书数量的急剧增加,有关图书的信息量也在不断成倍增长。面对庞大的信息量,就需要有图书管理系统来提高图书管理工作的效率。经过这样的系统,我们能够做到信息的规范管理和快速查询,从而减少了管理方面的工作量。
传统手工的图书管理,管理过程繁琐而复杂,执行效率低,而且易于出错。经过这样的系统,我们能够做到信息的规范管理和快速查询,实现了图书管理的系统化、规范化和自动化,这样不但减少了管理工作量,还提高了管理效率,降低了管理成本。
2.3 功能需求
2.3.1功能划分
图书管理系统主要实现以下5方面的功能:
a.图书入库
b.查询
c.修改信息
d.图书借还
e.系统管理
2.3.2功能描述
1.书籍管理功能:包括书籍类别管理和书籍信息管理两部分。
2.读者管理部分:这一部分包括对读者信息进行管理的功能。
3.借阅管理部分:这一部分包括借书信息管理和还书信息管理两部分。
4.系统管理:包括修改系统用户密码、增加新用户以及退出系统等。
2.4 安全性需求
每位用户根据自己的身份不同,进入不同的用户界面。管理员有权力行使所有的管理功能,普通用户只能进行一般的查询。
2.5 系统数据流程分析
图书管理系统数据流程图如图2-1所示。
读者基本信息录入录入
图书基本信息录入录入
读者信息管理
图书信息管理
借阅信息录入
图书借阅管理
读者信息库
图书信息库
图2-1 系统数据流程图
2.6 功能模块图
本系统包括的模块主要有如下几个部分:图书管理模块、借阅管理模块、读者管理模块、系统管理模块、信息查询模块、用户管理模块
具体的功能描述如下:
图书管理:其功能是管理书库中图书的记录信息,对入库图书信息进行管理,并进行查询。
借阅管理:其功能是对读者借阅信息进行查询。
读者管理:其功能是对读者一般信息进行查询以及维护。
系统管理:其功能是为系统的使用者进行帐户和密码管理以及基础数据维护。
其子系统描述:
1.图书管理包括图书入库功能,主要整理图书的数量、类别和各种相关的信息等。
2.图书借阅,进行借书操作(此操作由管理员完成);当用户要查询自己的借阅情况时,可进行借阅查询。
3.读者管理包括读者登记,读者信息管理,添加读者借书和还书信息。能够记录新加入的读者的信息,而且能够对已经存在于数据库中的读者的信息进行修改,同时能够进行读者借、还书的管理。
4.用户管理包括修改密码、新增用户、删除用户可执行的系统操作等。
5.信息查询包括图书查询、读者查询和用户查询等功能。经过这些功能,能够经过不同的关键字来对书库中的图书进行查询,同时也能够查询读者的借阅信息。
6.系统管理是用来完成本系统的基本操作,如修改密码、登录系统、退出登录,还有系统简介等功能。
其功能模块图如下所示:
图书管理系统
读者管理功能
系统管理功能
图书管理功能
借阅管理功能
新书入库功能
图书类别功能
读者信息功能
读者查询功能
增加用户
密码修改
借书管理功能
还书管理功能
图2-2 功能模块图
第三章 概念结构设计
1. 图书管理E-R图:
图书管理
图书管理
读者管理
借阅管理
图3-1 图书管理E-R图
2. 信息查询E-R图:
信息查询
图书查询
读者查询
借阅查询
图3-2 信息查询E-R图
3. 借书实体E-R图:
图3-3 借书实体E-R图
4.图书实体E-R图:
图3-4 图书实体E-R图
5.读者实体E-R图:
图3-5 读者实体E-R图
第四章 逻辑结构设计
由数据模型利用SQLsever 进行数据库的详细设计,本系统设计的数据库名为shop,其基本表的设计如下:
(1) 学生信息表
字段名称
数据类型
大小
学号
varchar
50
姓名
varchar
20
性别
varchar
4
系别
varchar
5
联系电话
varchar
50
借书证号
varchar
50
密码
varchar
15
(2)图书明细表
字段名称
数据类型
大小
图书编号
int
50
图书名称
varchar
20
作者
varchar
4
出版社
varchar
5
出版日期
varchar
50
定价
varchar
50
类别编号
varchar
15
状态
char
6
(3)图书类别
字段名称
数据类型
大小
类别编号
smallint
2
图书类别
nvarchar
20
(4)用户
字段名称
数据类型
大小
姓名
varchar
20
性别
varchar
4
类型
varchar
50
联系电话
varchar
15
密码
varchar
50
(5)借出信息
字段名称
数据类型
大小
借出编号
int
4
图书编号
int
4
借书证号
varchar
50
借出日期
smalldatetime
4
借出状态
bit
4
第五章 物理结构设计
5.1数据类型
图5-1
图5-2
图5-3
5.2表的设计
图5-4
图5-5
图5-6
图5-7
第六章 数据实施和维护
6.1信息管理:
图6-1 信息管理
6.1.1图书管理
图6-2 图书管理
6.1.2读者管理
图6-3 读者管理
6.1.3借阅管理
图6-4 借阅管理
6.2信息查询:
图6-5 信息查询
6.2.1图书查询
图6-6 图书查询
6.2.2读者查询
图6-7 读者查询
6.2.3借阅查询
图6-8 借阅查询
6.3数据代码
6.3.1新书入库
procedure TBookForm.Button1Click(Sender: TObject);
begin
if Length(CodeEdit.Text)<> 10 then
begin
MessageDlg('书号不正确',mtError,[mbok],0);
CodeEdit.SetFocus;
Exit;
end;
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select Code from Book where Code =:Code');
Parameters.ParamByName('Code').Value :=CodeEdit.Text;
Open;
if RecordCount <> 0 then
begin
MessageDlg('书号<'+CodeEdit.Text+'>已经存在',mtError,[mbok],0);
CodeEdit.SetFocus;
Exit;
end;
Close;
end;
try
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into book(Code,Name,Author,Press,OutDate,Cost)'+
' values (:Code,:Name,:Author,:Press,:OutDate,:Cost)');
Parameters.ParamByName('Code').value := CodeEdit.Text;
Parameters.ParamByName('Name').value := NameEdit.Text;
Parameters.ParamByName('Author').value := AuthorEdit.Text;
Parameters.ParamByName('Press').value := PressEdit.Text;
try
Parameters.ParamByName('OutDate').value := StrToDate(OutTimeEdit.Text);
except
MessageDlg('参数<出版时间>设置错误',mtError,[mbok],0);
Exit;
end;
try
Parameters.ParamByName('Cost').value := StrToFloat(CostEdit.Text);
except
MessageDlg('参数<价格>设置错误',mtError,[mbok],0);
Exit;
end;
ExecSQL;
end;
TabSheet1Show(Sender);
except
MessageDlg('入库出错',mtError,[mbok],0);
end;
end;
procedure TBookForm.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TBookForm.TabSheet1Show(Sender: TObject);
begin
CodeEdit.SetFocus;
CodeEdit.SelectAll;
NameEdit.Text := '';
AuthorEdit.Text := '';
OutTimeEdit.Text := '';
CostEdit.Text := '';
PressEdit.Text := '';
Memo1.Lines.Clear;
end;
procedure TBookForm.Button4Click(Sender: TObject);
begin
Close;
end;
procedure TBookForm.Button3Click(Sender: TObject);
begin
try
DataModuleADO.ADOTable1.Post;
DataModuleADO.ADOTable1.Active:=False;
except
MessageDlg('保存出错',mtError,[mbok],0);
end;
ComboBox1.SetFocus;
end;
procedure TBookForm.TabSheet2Show(Sender: TObject);
var
i : integer;
begin
ComboBox1.Items.Clear;
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select Code from book ');
Open;
First;
for i:=0 to RecordCount-1 do
begin
ComboBox1.Items.Add(FieldbyName('Code').AsString);
Next;
end;
Close;
end;
end;
procedure TBookForm.ComboBox1Change(Sender: TObject);
begin
if Length(ComboBox1.Text) = 10 then
begin
try
with DataModuleADO.ADOTable1 do
begin
TableName:='book';
DBOutDate.DataField:= 'OutDate';
DBName.DataField:= 'Name';
DBAuthor.DataField:= 'Author';
DBPress.DataField:= 'Press';
DBCost.DataField:= 'Cost';
DBMemo.DataField:= 'Memo';
Active:=True;
Locate('code',ComboBox1.Text,[]);
Edit;
end;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
procedure TBookForm.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
ComboBox1Change(Sender);
end;
procedure TBookForm.PageControl1Change(Sender: TObject);
begin
end;
end.
(2) 图书管理
procedure TBookForm.Button1Click(Sender: TObject);
begin
if Length(CodeEdit.Text)<> 10 then
begin
MessageDlg('书号不正确',mtError,[mbok],0);
CodeEdit.SetFocus;
Exit;
end;
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select Code from Book where Code =:Code');
Parameters.ParamByName('Code').Value :=CodeEdit.Text;
Open;
if RecordCount <> 0 then
begin
MessageDlg('书号<'+CodeEdit.Text+'>已经存在',mtError,[mbok],0);
CodeEdit.SetFocus;
Exit;
end;
Close;
end;
try
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into book(Code,Name,Author,Press,OutDate,Cost)'+
' values (:Code,:Name,:Author,:Press,:OutDate,:Cost)');
Parameters.ParamByName('Code').value := CodeEdit.Text;
Parameters.ParamByName('Name').value := NameEdit.Text;
Parameters.ParamByName('Author').value := AuthorEdit.Text;
Parameters.ParamByName('Press').value := PressEdit.Text;
try
Parameters.ParamByName('OutDate').value := StrToDate(OutTimeEdit.Text);
except
MessageDlg('参数<出版时间>设置错误',mtError,[mbok],0);
Exit;
end;
try
Parameters.ParamByName('Cost').value := StrToFloat(CostEdit.Text);
except
MessageDlg('参数<价格>设置错误',mtError,[mbok],0);
Exit;
end;
ExecSQL;
end;
TabSheet1Show(Sender);
except
MessageDlg('入库出错',mtError,[mbok],0);
end;
end;
procedure TBookForm.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TBookForm.TabSheet1Show(Sender: TObject);
begin
CodeEdit.SetFocus;
CodeEdit.SelectAll;
NameEdit.Text := '';
AuthorEdit.Text := '';
OutTimeEdit.Text := '';
CostEdit.Text := '';
PressEdit.Text := '';
Memo1.Lines.Clear;
end;
procedure TBookForm.Button4Click(Sender: TObject);
begin
Close;
end;
procedure TBookForm.Button3Click(Sender: TObject);
begin
try
DataModuleADO.ADOTable1.Post;
DataModuleADO.ADOTable1.Active:=False;
except
MessageDlg('保存出错',mtError,[mbok],0);
end;
ComboBox1.SetFocus;
end;
procedure TBookForm.TabSheet2Show(Sender: TObject);
var
i : integer;
begin
ComboBox1.Items.Clear;
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select Code from book ');
Open;
First;
for i:=0 to RecordCount-1 do
begin
ComboBox1.Items.Add(FieldbyName('Code').AsString);
Next;
end;
Close;
end;
end;
procedure TBookForm.ComboBox1Change(Sender: TObject);
begin
if Length(ComboBox1.Text) = 10 then
begin
try
with DataModuleADO.ADOTable1 do
begin
TableName:='book';
DBOutDate.DataField:= 'OutDate';
DBName.DataField:= 'Name';
DBAuthor.DataField:= 'Author';
DBPress.DataField:= 'Press';
DBCost.DataField:= 'Cost';
DBMemo.DataField:= 'Memo';
Active:=True;
Locate('code',ComboBox1.Text,[]);
Edit;
end;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
procedure TBookForm.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
ComboBox1Change(Sender);
end;
procedure TBookForm.PageControl1Change(Sender: TObject);
begin
end;
end.
第七章 设计小结
一学期的Delphi专业选修结束了,用了整整一周的时间完成了课程设计,经过使用可视化开发工具Delphi开发图书管理系统,学生实际动手能力以及自学其它系统开发工具的能力有所提高,同时发现平时学习中的许多不足之处。例如,学生发现,在开发系统过程中,对数据库重要组件包括ADO控件、数据集组件和数据显示组件等的相关属性及方法不够熟悉,还不能在需要时纯熟、灵活地运用,在技术上无法实现梦寐以求的效果,留下许多缺憾。本次课程设计的顺利完成,尤为感谢燕孝飞老师的辛勤教导。本学期的课程中,她带领学生进入华丽的Delphi世界,使学生领略到Delphi7组件化的编程方式,面向对象的程序设计,使我进一步的为自己的计算机梦登上了更上的一层。
第八章 参考文献
[1] E Winemiller, J.Roff, 着. Visual Basic6.0数据库开发.清华大学出版 社,1999.
[2] 郭盈发, 张红娟. 《数据库原理》. 西安电子科技大学出版社, .
[3] 赵松涛. 《中文版SQL SERVER 应用及实例集锦》. 人民邮电出社, .
[4] 丁宝康, 李大学编著《数据库原理》.经济科学出版社, .
[5] 杨永,国刚编著《毕业设计指南与项目实践》.北京科海电子出版社, .
[6]杨长春主编《delphi程序设计教程》.清华大学出版社, .
展开阅读全文