数据库课设报告.docx
《数据库课设报告.docx》由会员分享,可在线阅读,更多相关《数据库课设报告.docx(25页珍藏版)》请在冰豆网上搜索。
数据库课设报告
摘要
当今世界,是一个物欲横流的世界。
信息化和自动化是发展的方向,所以对于大部分学校的电子设备实验室来说迫切需要一个好的系统管理软件来管理实验室的器材和设备以及对学生实验时间的安排管理。
由于各大学校的规模不断扩大和对实验课的重视,实验室的规模也在扩大,对于电子设备实验室来说,设备的更换,借用是常有的事情,在管理系统不完善的情况下,管理员完成这些工作则需要大量的时间,还有大量的物力。
因此开发出好的管理系统就显得十分必要。
于是决定尝试用Delphi7去制作一款实验室设备管理软件,用于管理实验室的设备,但由于时间关系,加上知识量的不足,开发的管理软件并没有达到预期效果。
关键字:
Delphi7,设备管理,信息化
目录
引言1
1系统的目标及任务2
1.1目标2
1.2任务和要求2
2系统需求分析2
2.1用户需求分析2
2.2功能分析3
2.2.1领导登录模块3
2.2.2管理员登录模块3
2.3环境和可行性分析3
3系统开发过程3
3.1数据库的逻辑设计3
3.2数据库的物理设计4
3.3系统设计6
3.3.1系统功能设计:
6
3.3.2实体:
6
3.3.3E-R图:
7
3.4界面设计7
3.4.1相关界面:
7
3.4.2功能实现的代码:
13
4结论19
参考文献20
引言
随着社会的快速发展,我们的信息量在不断增加,作为信息存储的主要媒体之一的图书,其数量和规模也比以往任何时候都要大很多,因此不论是个人还是图书管理部门都需要使用方便而有效的方式来管理书籍。
一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书方面,大家都比较熟悉。
计算机尚未在图书馆广泛使用之前,借书和还书主要依赖于手工。
但是手工已经无法满足现在社会的高速运转的需求,随着计算机的日益普及,对个人或组织而言,如果采用一套行之有效的图书信息管理系统并借助计算机来管理书籍,会提高工作效率,减少劳动力,也使繁琐的工作简单不少。
采用数据库技术开发的图书馆信息管理系统可以用来实现对图书的信息管理,可以提高管理的效率。
现在,大多数学校的图书馆都是封闭式管理,要求藏书全部公开开放,师生共享,开架阅览。
这种阅览方式是适合当前我国国情、发挥图书馆应用作用的最佳方式,也是素质教育的最好体现。
它充分发挥了图书馆的功效,最大限度地为师生服务,这也是图书馆自动化管理的最终目标。
实现这一目标,必须有现代化的管理手段和管理体制。
各地教育主管部门也都逐步提出学校要采用图书馆管理系统,从而实现人工管理做不到的一些功能并发挥图书馆的最大效益。
越来越多的学校采用了现代化的管理软件进行管理,进一步提升了学校管理的现代化水平。
1系统的目标及任务
1.1目标
通过简洁的界面实现管理员和领导两种不同身份的登录,管理员可以对设备进行管理和维护,比如设备维修和报废的登记,设备的购买申请等,而领导主要处理管理员提出的购买申请,二者都能打印各数据的报表,界面具有一定的安全性和简约性,具有一定的可维护性。
1.2任务和要求
通过需求分析和可行性来确定系统功能,管理员和领导登录后可以进行不同的操作。
2系统需求分析
实验室设备管理系统是一个教育单位不可缺少的部分,它对于学校实验室设备的管理十分重要,所以,实验室设备管理系统不但要为实验室管理者提供充足的信息和快捷的查询和登记手段,还要能让领导了解设备的采购情况,资金的流动等,但一直以来人们仍使用传统人工的方式管理实验室的设备,这种管理方式存在着许多缺点,如:
效率低、工作量大等,而且,随着实验室设备的增长,对于设备的查找、更新和维护都带来了不少的困难。
此外,计算机技术的不断成熟与发展使得对信息管理的应用成为可能。
正是这样,实验室设备管理系统在图书馆管理中发挥了重要的作用。
2.1用户需求分析
(1)能够存储一定数量的设备信息,并能够有效的对设备进行管理和维护。
(2)能够分别完成申请购买和审核的操作。
(3)插入信息的时候,不允许重复插入,防止重复信息。
(4)正常使用时不应出错,对于用户的输入错误应给出适当的改正提示。
若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。
(5)管理员可以对设备进行方便有效的管理,领导可以通过系统进行检索采购情况和设备的损坏情况,还能进行审核工作
2.2功能分析
系统包括两大模块:
领导登录模块、管理员登录模块
2.2.1领导登录模块
领导登录后会跳到特定的界面,可以进行查看设备信息,审核申请,数据统计等操作。
2.2.2管理员登录模块
管理员登录后也会跳到特定的界面,在那里可以进行如下操作:
设备管理:
包括图书的采购和借用,维修和报废处理等情况;申请购买:
可以在此界面向上级提出申请购买实验室设备,设备查询:
可以进行设备的检索,能快速的找到关于设备的各种信息;数据统计:
主要是报表,生成各个表的报表方便打印。
2.3环境和可行性分析
系统运用到SQLServer2008建立登录,设备列表,申请表,维修记录,报废记录等相关数据库,再使用开发工具Delphi7来对系统进行界面的设计,使用一些数据组件,使用SQL语言将功能实现,达到系统的要求。
界面简单易懂,方便操作,易使用。
而影响系统开发的因素,就是数据之间的联系,如果数据量大到一定的程度,就需要更多地关注数据之间所存在的依赖关系,加以改进,便会让系统更加复杂,当然也会更加的完善,不会出现更多漏洞。
3系统开发过程
在需求分析阶段,已经完成了系统的功能模块的初步设想,根据初步设想的功能我们可以把数据库设计分为数据库逻辑设计和数据库物理设计两个步骤。
3.1数据库的逻辑设计
数据库的逻辑设计,即把得到的关系转化为特定的数据库管理系统下的数据表。
根据各个关系,现把它们转化为数据表。
(1)登录表
(2)设备列表
(3)申请表
(4)设备记录表
(5)维修记录表
(6)报废记录表
3.2数据库的物理设计
数据库的逻辑设计完成后,就可开始进行数据库的物理设计。
因为之前做实验都是用SQL建立的数据库,所以这里我是用MicrosoftSQLServer来建立的表,建立了五个表,结构分别如下:
登录表,共有6个字段,分别为:
登陆名,密码,登陆类型,姓名,电话,权限,见表1
表1登录表的结构
字段名称
数据类型
长度
是否为空
登陆名
Varchar
10
否
密码
Varchar
10
否
登陆类型
Varchar
10
否
姓名
Varchar
10
是
电话
Varchar
10
是
权限
Varchar
10
是
设备列表,共有8个字段,分别为:
设备ID,类型ID,设备名,型号,规格,单价,生产厂家,数量,见表2
表2设备列表的结构
字段名称
数据类型
长度
是否为空
设备ID
int
否
类型ID
int
否
设备名
nchar
10
否
型号
nchar
10
否
规格
nchar
10
否
单价
float
否
生产厂家
nchar
10
否
数量
Int
10
否
申请表,共有4个字段,分别为:
申请ID、设备ID、申请日期、申请人,数量,状态,见表3
表3申请表的结构
字段名称
数据类型
长度
是否为空
申请ID
Int
否
设备ID
Int
否
申请日期
Datetime
否
申请人
Nchar
10
否
数量
Int
否
状态
Nchar
10
否
设备记录表,共有5个字段,分别为:
设备SN,设备ID,购置日期,购买人,是否报废,见表4
表4设备记录表的结构
字段名称
数据类型
长度
是否为空
设备SN
Int
否
设备ID
Int
否
购置日期
Datetime
否
购买人
Nchar
10
否
是否报废
Bit
否
维修记录表,共有6个字段,分别为:
设备SN,维修日期,维修厂家,维修费用,责任人,详细信息,见表5
表5维修记录表的结构
字段名称
数据类型
长度
是否为空
设备SN
Int
否
维修日期
Datetime
否
维修厂家
Nchar
10
否
维修费用
Nchar
10
否
责任人
Nchar
10
否
详细信息
Nchar
20
否
报废记录表,共有5个字段,分别为:
设备SN,报废日期,记录人,详细信息,状态,见表6
表5报废记录表的结构
字段名称
数据类型
长度
是否为空
设备SN
Int
否
报废日期
Datetime
否
状态
Nchar
10
否
记录人
Nchar
10
否
详细信息
Nchar
20
否
3.3系统设计
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。
数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
3.3.1系统功能设计:
编号
功能名称
使用人员
功能描述
输入
输出
1
购买申请
管理员
向上级领导申请购买设备
设备的详细信息
购买申请单
2
维修处理
管理员
进行维修设备添加
设备详细信息
维修表清单
3
报废处理
管理员
进行报废设备添加
设备详细信息
报废表清单
4
查询
管理员和领导
对设备相关信息进行查询
各类信息条件
设备具体信息
5
审批
领导
对管理员的设备购买申请进行处理
设备的详细信息
审批结果
6
验证用户身份
领导和管理员
进行用户验证
账号和密码
登陆成功
3.3.2实体:
3.3.3E-R图:
3.4界面设计
界面设计用到的是delphi7,delphi强大的功能和简单的操作深的人们的喜爱,运用delphi我们可以便捷的设计出我们需要的界面,实现数据的交互和管理。
3.4.1相关界面:
登录界面:
管理员主菜单:
领导主菜单:
设备查询:
维修和报废记录查询:
维修设备管理:
报废设备管理:
申请购买:
审核购买申请:
数据统计:
3.4.2功能实现的代码:
(1)登录界面代码:
进入系统:
管理员登录判断
procedureTLogin.Button1Click(Sender:
TObject);
varusername,password:
string;
begin
//定义两个字符串变量,获取文本框内容
username:
=edit1.Text;
password:
=maskedit1.Text;
//为空,则弹出警告
ifedit1.Text=''then
messagebox(Login.Handle,'请输入用户名','警告',mb_ok+mb_iconwarning)
else
ifmaskedit1.Text=''then
messagebox(Login.Handle,'请输入密码','警告',mb_ok+mb_iconwarning)
else
//通过SQL语句查询表中用户和密码,是否符合条件
withADOQuery1do
begin
close;
sql.Clear;
sql.Add('select*fromequ_LoginwhereloginId=');
sql.Add(''''+username+''''+'andloginPassword='+''''+password+'''');
open;
first;
ifrecordcount=1then
begin
Login.Hide;
ifusername='admin'then
begin
leader.Show;
end
else
AdminShow.Show;
end
else
messagebox(Login.Handle,'请输入正确的密码','警告',mb_ok+mb_iconwarning);
end;
end;
//退出按钮
procedureTLogin.Button3Click(Sender:
TObject);
begin
application.Terminate;
end;
//重置按钮
procedureTLogin.Button2Click(Sender:
TObject);
begin
edit1.Text:
='';
maskedit1.Text:
='';
end;
(2)管理员和领导主界面模块跳转代码
各个版块引用后,通过show来显示,hide隐藏
(3)设备管理模块代码
设备查询:
procedureTdeviceSearch.Button1Click(Sender:
TObject);
begin
Adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select*from设备列表');
//通过选择RadioButton进行条件判断
ifRadioButton1.Checked=truethen
adoquery1.SQL.Add('where设备ID='''+edit1.Text+'''');
ifRadioButton2.Checked=truethen
adoquery1.SQL.Add('where设备名='''+edit1.Text+'''');
ifRadioButton3.Checked=truethen
adoquery1.SQL.Add('where生产厂家='''+(edit1.Text)+'''');
ifRadioButton4.Checked=truethen
adoquery1.SQL.Add('where类型ID='''+edit1.Text+'''');
ifRadioButton5.Checked=truethen
adoquery1.SQL.Add('where单价='''+edit1.Text+'''');
adoquery1.Open;
//显示查询后的结果
dbgrid1.DataSource:
=datasource2;
end;
//显示所有的按钮
procedureTdeviceSearch.Button2Click(Sender:
TObject);
begin
Adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select*from设备列表');
adoquery1.Open;
dbgrid1.DataSource:
=datasource2;
end;
(4)设备维修模块代码
维修模块查询
procedureTArepair.Button4Click(Sender:
TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*from维修记录');
ifEdit1.Text<>''then
begin
ifEdit2.Text<>''then
ADOQuery1.SQL.Add('where设备SN='''+Edit1.Text+'''and责任人='''+Edit2.Text+'''')
else
ADOQuery1.SQL.Add('where设备SN='''+Edit1.Text+'''')
end
elseifEdit2.Text<>''then
begin
ifEdit1.Text=''then
ADOQuery1.SQL.Add('where责任人='''+Edit2.Text+'''')
else
;
end;
ADOQuery1.Open;
DBGrid1.DataSource:
=DataSource2;
end;
添加维修设备信息
调用DataControls里的控件对表进行修改
begin
Adotable1.Append;
end;
begin
Adotable1.Post;
end;
报废模块类同维修模块
(5)申请购买模块代码
procedureTapp.Button1Click(Sender:
TObject);
varstr:
string;
begin
str:
='未通过审核';
ADOquery1.Close;
ADOquery1.SQL.Clear;
ADOquery1.SQL.Add('insertinto申请表(申请ID,设备ID,申请日期,申请人,数量,状态'
+')values('''+Edit1.Text+''','''+Edit3.Text+''','''+datetostr(DateTimePicker1.Date)+''','
+''''+Edit2.Text+''','''+(Edit4.Text)+''','''+str+''')');
ADOquery1.open;
end;
procedureTapp.Button3Click(Sender:
TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*from申请表');
ADOQuery1.Open;
DBGrid1.DataSource:
=DataSource2;
end;
end.
(6)审核购买申请模块代码
//先是查询部分
procedureTappAccept.Button3Click(Sender:
TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*fromequ_App');
ifcheckBox1.Checked=truethen
begin
ADOQuery1.SQL.Add('where申请IDbetween'''+edit1.Text+'''and'''+edit2.Text+'''and状态='''+ComboBox1.Text+'''and申请人='''+Edit3.Text+'''');
ADOQuery1.Open;
end
elseifEdit3.Text<>''then//当申请人不为空的时候
ADOQuery1.SQL.Add('where申请人='''+Edit3.Text+'''')
else
ADOQuery1.SQL.Add('where状态='''+ComboBox1.Text+'''');
ADOQuery1.Open;
DBGrid1.DataSource:
=DataSource2;
end;
//修改和更新表格内容,仅状态一项
procedureTappAccept.Button1Click(Sender:
TObject);
begin
ADOTable1.Post;
end;
procedureTappAccept.Button2Click(Sender:
TObject);
begin
ADOtable1.UpdateStatus;
end;
(7)报表
设备信息报表
ifRadioButton1.Checked=truethen
AdminequInfo.quickrep1.preview;
申请信息报表
ifRadioButton2.Checked=truethen
AdminAppInfo.quickrep1.preview;
维修记录报表
ifRadioButton3.Checked=truethen
AdminDumpInfo.quickrep1.preview;
报废记录报表
ifRadioButton4.Checked=truethen
AdminRepairInfo.quickrep1.preview;
4结论
经过几天的辛苦工作,终于完成了数据库的课程设计,其实说完成却也不能,因为有好些功能没有实现,而且表与表之间的依赖关系处理不明。
其实感觉做了好几次课设,这一次算是做得比较差的。
第一,时间分配不合理,第二,知识掌握得不够。
当然还有其他因素,然后这两点却是致命的。
由于这个学期后期的学业比较做,各种结课作业加课设,还有复习,所以时间没有处理好,只能做出了大概的框架,实现了少部分功能。
而知识掌握问题,则体现得更为明显,在制作的过程中,明明有好的想法,却没法实现。
比如在审核购买申请的时候,我想让用户点击申请信息后,如果是已入库,就没法再进行修改,如果未审核,则可以进行修改。
结果,却无法实现,最后出来的效果是就算入库也有被改成未审核的情况。
不过,在这一次的课程设计中,依旧学到了好多东西。
虽然时间很紧,但还是借了图书馆的书,并且看了一些比较基础的Delphi的编程。
因为之前做实验的时候,搞不太懂查询控件里Add括号里内容的填写,看过书后,了解到了’’’+edit1.text+’’’的用法,回车后加引号加加号等。
虽然也有好些看不懂,但却让我收益颇多。
在设计的过程中,经常会遇到一些问题,而且有时候翻书看也不好解决。
这时候,通过和同学的交流,基本上能找到答案,更为神奇的是,就算讨论找不到答案,往往也能另寻方法。
通过这次的课程设计,我了解了一个数据库软件设计过程的基本思路,因为之前学了好些语言,像C++,JAVA,但都还没有接触到数据库这一部分。
而这次的学习,不管是现在,还是未来,都会让我收获匪浅。
参考文献
(1)王珊萨师煊.《数据库系统概论(第四版)》.高等教育出版社.2010
(2)启明工作室.《Delphi+SQLServer数据库应用系统开发与实例》.人民邮电出版社.2005