资源描述
《数据库技术与应用》
题目:数据库应用系统的设计和实现
适用专业:
指导老师:
班级:
姓名:
学号:
2010年2月
图书是人类文明的见证,随着高科技的发展各式各样图书越来越多,图书馆和书店的管理也越来越复杂。如今图书管理系统是一个书店或一个图书馆的必备系统。一个安全可靠并且对于用户比较实用的图书管理系统来说变得尤其重要。
本次设计设计了一个在DELPHI平台基于SQL Server 2000开发出的图书管理系统。在系统的设计上面实现了该系统的交互式界面。从系统的需求分析、系统设计、系统实现入手,详细阐述了一个C/S结构的图书管理信息系统主要功能的实现过程。每一阶段均给出了相应的理论依据和实现内容,并介绍了系统实现部分的主要算法。整个系统的设计与开发严格按照软件工程思想进行,从需求分析到系统设计和实现、从原型系统设计到迭代完善,本图书管理系统涵盖了六个主要的子系统:图书资料管理、读者资料管理、借书操作、还书操作、删除、修改和查询处理,提高了工作的准确率和效率。
本图书管理信息系统是利用计算机管理信息处理的迅速、准确、可靠且具有强大存储能力的突出特点,全面提高图书馆的管理水平和工作效率,并以及时、完整的业务经营资料,为图书馆的及时转换提供一定的支持。
关键词:数据库,SQL server 2000,Delphi 7,图书管理系统
1.1 课题研究现状分析
在现金信息化发达的社会,图书的发行量与日俱增。因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。传统的图书馆需要制作有署名与对应编号的书卡,由读者按分类查找再交由图书管理员来处理借书工作,还书也要人工翻阅大量的记录,这样使得工作量大并及其繁琐,效率变得低下。建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,方便读者查阅所需的图书,还可以利用网络实现提醒读者还书的功能。管理员还可以对各种图书进行分析统计,对过时、损坏的图书进行删除。达到降低成本提高工作效率的目标。
1.1.1 本领域内已开展的研究工作
1. 理论研究基础
(1)数据库设计方法的完整化、多样化,又有多学科的综合性。
(2)数据库设计步骤的规范化和细致化。
(3)数据库技术不断的更新,并不断增加新的技术,兼容性范围也逐渐扩大。
2. 技术层面的支持
SQL Server的普遍应用,并得到的用户的支持,与Windows操作系统的完全兼容性也决定了它在今天仍然有着庞大的使用群体。SQL Server2000作为后台数据库与前台开发软件Visual Basic、C#、Visual C++、Delphi等都能够无缝连接。
1.1.2 已经取得的研究成果
(1)开发出了一套系统的数据库理论,安全性、完整性、并发性、恢复性都有完整的概述。
(2)随着Internet的迅猛发展,数据库在各个领域作为后台存储得到了广泛的支持。
(3)完善的数据库管理并与前台开发软件的结合使用开发了一系列优秀的图书管理系统,在商业、经济等方面得到了广泛的应用。
1.2 选题的目的及意义
目的:图书管理系统主要目的是对图书馆种类繁多的书籍进行管理,并且合理管理好用户的借还信息。提高图书馆的工作效率,降低管理成本。
意义:通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握本书中所讲解的内容。
2.1 用户调查
1.管理员对功能的需求
管理员对功能的需求细分如下:
读者基本信息的输入,查询,修改,删除;
书籍信息的输入,查询,修改,删除;
借书信息的输入。
还书信息的输入。
2.读者对功能的需求
图书信息检索,范围可按图书编号检索,最快时间查找目标书籍;
读者人个信息检索,获取当前读者的个人信息,修改个人信息;并根据学号查询当前读者当前的借书情况等。
2.2操作流程图
管理员登录
1.管理员操作流程图
删除功能
修改功能
查询功能
录入功能
2.普通用户操作流程图
普通用户
查询
借书信息
图书信息
学生信息
2.3对于这个图书管理系统管理系统,其主要通过四个表中的学号进行连接的,可以通过学号查出学生的基本信息,借阅情况及还书情况等
数据库需要表述的信息有以下几种:
(1)图书信息,
(2)学生信息,
(3)用户信息
(4)还书信息
学号
可以用E/R模型表述该模型的设计,图如图3-1所示
图书号
学号
班级
图书
借书
学生
管理
姓名
学号
图书
名称
还书日
图书号
还书情况
管理
管理
图书名
还书
用户
密码
用户名
2.4数据库逻辑结构设计
通过E/R模型到关系模型的转化,可以得到如下关系模式:
学生(学号,姓名,班级)
图书(图书号,图书名称,学号)
还书(图书号,学号,还书日期)
用户(用户名,密码)
每个关系模式的主码都用下划线标出。
(1)学号是学生的主键,每个学生有唯一的学号。一个学生可以借阅不同的图书。
(2)每一个图书对应唯一的图书编号,可以被不同的学生借阅。
2.5数据库物理结构设计
(1)数据类型
(2)表的设计
2.6视图的实现
3 数据库行为功能设计
3.1 安全控制
任何数据库应用系统都需要安全控制功能,教学管理系统用户分为如下几类:
(1)系统管理员:有系统的全部权限;
(2)普通用户:具有对数据的查询权。
若为系统管理员 则直接进入欢迎界面
若为普通用户,则直接进入查询系统
执行操作的主界面
3.2数据操作
数据操作功能包括对这些数据进行录入、删除、修改功能。
(1)数据录入
只有管理员才能录入相应表中的数据。
(2)数据删除
只有管理员才能删除相应表中的数据。删除数据时要注意表之间的关联关系,
在删除以前须提醒用户确认是否真的要删除此数据。
(3)数据修改
只有管理员才能修改相应表中的数据。
查询要修改的内容
修改具体的内容
(4)数据查询
学生信息查询
还书项目查询:
图书信息查询:
实验心得
本设计使用Microsoft SQL Server 2000创建后台数据库,并且运用Delphi7制作操作界面,实现对学生成绩管理系统的功能操作。通过对信息多种操作(录入、删除、查询、修改)等功能完成对学生成绩管理系统的操作管理。
(1) 通过本次的课程设计,感觉到了知识的重要性和强大的应用能力,对数据库的强大的数据处理能力有了基本的了解;
(2) 对Delphi技术有了深刻的认识,包括各种组件(Button,edit,label,Dbgit,Groupbox等)的作用,以及为了实现查询、修改、删除、录入等时源代码的语法语义有了最基本的了解 ;
(3) 掌握了用Delphi连接数据库的Ado连接方法,让数据库的作用更加具体形象,可以在Delphi窗体上显示数据库中具体内容;
(4) 培养了自己自学一门新技术的能力,通过在图书馆查阅资料、在网上搜素等方法,同时认识到合作的重要性,通过与同学的交流让自己少走了很多的弯路;
(5) 由于代码容易出现错误,需要有耐心,培养了科学严谨,精益求精的学习态度;
(6) 通过这次课程设计,自己的独立分析问题和解决问题都有很大的提高;
最后,感谢老师一个学期的教学授课,感谢对课题选择,制作方法等的耐心指导!
附录(源代码)
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type
TForm7 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
uses unit2, Unit1,unit4;
procedure TForm7.Button1Click(Sender: TObject);
var
results:variant;
begin
ADOTable1.Close;
ADOTable1.Open;
ADOTable1.Active;
results:=ADOTable1.Lookup('用户名',edit1.text,'密码');{检索数据库中对应用户名的密码项}
if edit1.Text='' then
application.MessageBox('用户名不能为空!','提示',mb_ok)
else if edit2.Text='' then
application.messagebox('密码不能为空!','警告',mb_ok)
else
if (results)=edit2.Text then
begin
if edit1.Text = '管理员'
then
begin
form1.Show;
end
else
begin
form4.show;
end
end
else
showmessage('密码错误或用户不存在!');
edit1.Visible:=true;
edit2.Visible:=true;
edit1.Text:='';
edit2.Text:='';
end;
procedure TForm7.Button2Click(Sender: TObject);
begin
form7.Close;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit3, Unit4, Unit5, Unit6;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
form3.show;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
form4.show;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
form5.show;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
form6.show;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;
type
TForm3 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
adotable1.Close;
adotable1.Open;
if (edit1.Text='')or(edit1.Text='')or(edit3.Text='') then
begin
application.MessageBox('信息不完整!','错误操作',mb_ok);
exit;
end ;
with adotable1 do
begin
open;
adotable1.insertrecord([edit1.text,edit2.text,edit3.text]) ;
edit;
post;
edit1.text:='';
edit2.text:='';
edit3.text:='';
application.MessageBox('信息已录入!','确认',mb_ok);
adotable1.Close;
ADOTABLE1.Open;
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
form3.Close;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Button1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Edit1: TEdit;
ComboBox1: TComboBox;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
var
sql:string;
begin
DBgrid1.Visible:=true;
DBgrid1.Font.Color:=clteal;
if (combobox1.text='图书信息') then
begin
if (edit1.text='') then
begin
MessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION);
exit;
end
else
begin
sql:='where ( 图书号='''+edit1.Text+''') ';
adoquery1.SQL.Clear;
adoquery1.Close;
ADOQuery1.SQL.Add('select * from 图书表');
ADOQuery1.SQL.Add(sql);
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
adoquery1.Open;
edit1.Text:='';
end ;
end
else if (combobox1.text='还书项目') then
begin
if (edit1.text='') then
begin
MessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION);
exit;
end
else
begin
sql:='where ( 学号='''+edit1.Text+''') ';
adoquery1.SQL.Clear;
adoquery1.Close;
ADOQuery1.SQL.Add('select * from 还书表');
ADOQuery1.SQL.Add(sql);
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
adoquery1.Open;
edit1.Text:='';
end ;
end
else if (combobox1.text='学生信息') then
begin
if (edit1.text='') then
begin
MessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION);
exit;
end
else
begin
sql:='where ( 学号='''+edit1.Text+''') ';
adoquery1.SQL.Clear;
adoquery1.Close;
ADOQuery1.SQL.Add('select * from 学生信息表');
ADOQuery1.SQL.Add(sql);
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
adoquery1.Open;
edit1.Text:='';
end ;
end;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
form4.Close;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
var
sql:string;
begin
DBgrid1.Visible:=true;
DBgrid1.Font.Color:=clteal;
if (edit1.text='') then
begin
MessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION);
exit;
end
else
begin
sql:='where ( 学号='''+edit1.Text+''') ';
adoquery1.SQL.Clear;
adoquery1.Close;
ADOQuery1.SQL.Add('select * from 还书表');
ADOQuery1.SQL.Add(sql);
MessageBox(handle,'查询完毕!','提示',MB_OK or MB_ICONINFORMATION);
adoquery1.Open;
end;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
DBgrid1.Visible:=true;
DBgrid1.Font.Color:=clteal;
if (edit2.Text='')or(edit3.Text='')or(edit4.Text='') then
begin
application.MessageBox('信息不完整!','错误操作',mb_ok);
exit;
end ;
with adoquery1 do
begin
Close;
sql.Clear;
SQL.Add('Update 还书表 SET 学号= :A,图书号= :B,还书日= :C where 学号='+Edit1.Text);
Parameters.ParamByName('A').Value:=Edit2.Text;
Parameters.ParamByName('B').Value:=Edit3.Text;
Parameters.ParamByName('C').value:=Edit4.Text;
execsql;
close;
sql.Clear;
edit1.text:='';
edit3.text:='';
edit4.text:='';
edit2.text:='';
application.MessageBox('信息已修改!','确认',mb_ok);
end;
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
form5.Close;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, ADODB, StdCtrls;
type
TForm6 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
adotable1.Close;
adotable1.Open;
if application.MessageBox('确认要删除吗?','提示',mb_yesno)=ID_yes then
begin
DBgrid1.Visible:=true;
DBgrid1.Font.Color:=clteal;
with adoquery1 do
begin
Close;
sql.Clear;
SQL.Add('delete from 还书表 where 学号='+Edit1.Text);
execsql;
edit1.text:='';
application.MessageBox('信息已删除!','确认',mb_ok);
adotable1.Close;
ADOTABLE1.Open;
end;
end;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
form6.Close;
end;
end.
展开阅读全文