《数据库技术与应用》大作业题目:数据库应用系统的设计和实现适用专业:指导老师:班级:姓名:学号:中南大学信息科学与工程学院2010 年1月图书是人类文明的见证,随着高科技的发展各式各样图书越来越多,图书馆和书店的管理也越来越复杂。
如今图书管理系统是一个书店或一个图书馆的必备系统。
一个安全可靠并且对于用户比较实用的图书管理系统来说变得尤其重要。
本次设计设计了一个在DELPHI平台基于SQL Server 2000开发出的图书管理系统。
在系统的设计上面实现了该系统的交互式界面。
从系统的需求分析、系统设计、系统实现入手,详细阐述了一个C/S 结构的图书管理信息系统主要功能的实现过程。
每一阶段均给出了相应的理论依据和实现内容,并介绍了系统实现部分的主要算法。
整个系统的设计与开发严格按照软件工程思想进行,从需求分析到系统设计和实现、从原型系统设计到迭代完善,本图书管理系统涵盖了六个主要的子系统:图书资料管理、读者资料管理、借书操作、还书操作、删除、修改和查询处理,提高了工作的准确率和效率。
本图书管理信息系统是利用计算机管理信息处理的迅速、准确、可靠且具有强大存储能力的突出特点,全面提高图书馆的管理水平和工作效率,并以及时、完整的业务经营资料,为图书馆的及时转换提供一定的支持。
关键词:数据库,SQL server2000,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;interfaceusesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,StdCtrls, DB,ADODB;typeTForm7=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;varForm7: TForm7;implementation{$R*.dfm}uses unit2, Unit1,unit4;procedure TForm7.Button1Click(Sender:TObject);varresults:variant;beginADOTable1.Close;ADOTable1.Open;ADOTable1.Active;results:=ADOTable1.Lookup('用户名',edit1.text,'密码');{检索数据库中对应用户名的密码项} if edit1.Text='' thenapplication.MessageBox('用户名不能为空!','提示',mb_ok)else if edit2.Text=''thenapplication.messagebox('密码不能为空!','警告',mb_ok)elseif (results)=edit2.Text thenbeginif edit1.Text='管理员'thenbeginform1.Show;endelsebeginform4.show;endendelseshowmessage('密码错误或用户不存在!');edit1.Visible:=true;edit2.Visible:=true;edit1.Text:='';edit2.Text:='';end;procedure TForm7.Button2Click(Sender:TObject);beginform7.Close;end;end.unit Unit1;usesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,StdCtrls, jpeg, ExtCtrls;typeTForm1=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;varForm1: TForm1;implementationuses Unit2;{$R*.dfm}procedure TForm1.Button1Click(Sender:TObject);beginform2.show;end;procedure TForm1.Button2Click(Sender:TObject);beginform1.Close;end;end.unit Unit2;usesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,StdCtrls;typeTForm2=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;varForm2: TForm2;implementationuses Unit3,Unit4, Unit5, Unit6;{$R*.dfm}procedure TForm2.Button1Click(Sender:TObject);beginform3.show;end;procedure TForm2.Button2Click(Sender:TObject);beginform4.show;end;procedure TForm2.Button3Click(Sender:TObject);beginform5.show;end;procedure TForm2.Button4Click(Sender:TObject);beginform6.show;end;end.unit Unit3;interfaceusesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,Grids, DBGrids, DB,ADODB,StdCtrls;typeTForm3=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;varForm3: TForm3;implementation{$R*.dfm}procedure TForm3.Button1Click(Sender:TObject);beginadotable1.Close;adotable1.Open;if(edit1.Text='')or(edit1.Text='')or(edit3.Text='')then beginapplication.MessageBox('信息不完整!','错误操作',mb_ok); exit;end;with adotable1 dobeginopen;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);beginform3.Close;end;end.unit Unit4;interfaceusesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,StdCtrls, DB,Grids, DBGrids,ADODB;typeTForm4=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;varForm4: TForm4;implementation{$R*.dfm}procedure TForm4.Button1Click(Sender:TObject);varsql:string;beginDBgrid1.Visible:=true;DBgrid1.Font.Color:=clteal;if(combobox1.text='图书信息') thenbeginif(edit1.text='')thenbeginMessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION); exit;endelsebeginsql:='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;endelse if (combobox1.text='还书项目') thenbeginif(edit1.text='')thenbeginMessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION); exit;endelsebeginsql:='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;endelse if(combobox1.text='学生信息') thenbeginif(edit1.text='')thenbeginMessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION); exit;endelsebeginsql:='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);beginform4.Close;end;end.unit Unit5;interfaceusesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms,Dialogs,Grids, DBGrids, DB,ADODB,StdCtrls;typeTForm5=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;varForm5: TForm5;implementation{$R*.dfm}procedure TForm5.Button1Click(Sender:TObject);varsql:string;beginDBgrid1.Visible:=true;DBgrid1.Font.Color:=clteal;if(edit1.text='')thenbeginMessageBox(handle,'请输入,不能为空!','提示',MB_OK or MB_ICONINFORMATION); exit;endelsebeginsql:='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);beginDBgrid1.Visible:=true;DBgrid1.Font.Color:=clteal;if(edit2.Text='')or(edit3.Text='')or(edit4.Text='')thenbeginapplication.MessageBox('信息不完整!','错误操作',mb_ok);exit;end;with adoquery1 dobeginClose;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);beginform5.Close;end;end.unit Unit6;interfaceusesWindows,Messages,SysUtils,Variants,Classes, Graphics,Controls,Forms, Dialogs,DB,Grids,DBGrids,ADODB,StdCtrls;typeTForm6=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;varForm6: TForm6;implementation{$R*.dfm}procedure TForm6.Button1Click(Sender:TObject);beginadotable1.Close;adotable1.Open;if application.MessageBox('确认要删除吗?','提示',mb_yesno)=ID_yes then beginDBgrid1.Visible:=true;DBgrid1.Font.Color:=clteal;with adoquery1 dobeginClose;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);beginform6.Close;end;end.。