数据库设计说明书.docx
- 文档编号:3969397
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:18
- 大小:681.70KB
数据库设计说明书.docx
《数据库设计说明书.docx》由会员分享,可在线阅读,更多相关《数据库设计说明书.docx(18页珍藏版)》请在冰豆网上搜索。
数据库设计说明书
第一章引言
1.1开发意义
因为现在各个高校内教学设备众多但自动管理水平相比过低,很多高校管理设备都采用在设备购进以后将设备的基本情况和相关信息登记存档。
存档以后,档案基本就没人记录与维护,至于以后设备的变迁或损坏都不会记录在设备档案中。
由于设备需要即时信息体现在设备档案上,需要将管理任务分成小块,对设备的可靠性分析有直接作用。
利用计算机管理系统管理我校的实验设备势在必行,也方便广大用户可以随时随地的借用实验设备进行学习和研究。
1.2系统任务及目标
每学年要对实验室设备使用情况进行统计、更新。
其中:
(1)对于已彻底损坏的做报废处理,同时详细记录有关信息。
(2)对于由严重问题(故障)的要及时修理,并记录修理日期、设备名、编号、修理厂修理费用、责任人等。
(3)对于急需修改但又缺少的设备,需以“申请表”的形式送交上级领导请求批准购买。
新设备购入后要立即进行设备登记(包括类别、设备名、编号、型号、规格、单价、数量、购置日期、生产厂家、保质期和经办人等信息),同时更新申请表的内容。
(4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段等查询。
1.3软硬件环境
(1)硬件环境:
建议硬件配置PII以上256M内存60G硬盘空间。
(2)软件环境:
需要安装MicrosoftAccess4.0以上的版本。
(3)数据库:
MicrosoftAccess4.0以上
第二章系统分析与设计
2.1系统需求分析
系统实现前,人力与费用相对减少;处理速度提高(短时间内显示查询结果);查询的绝对精度,并在限定时间内尽可能完成目标。
系统实现后,能够及时反映实验室的设备情况,能够让实验室管理员及时做好对实验室的布置,从而提高了工作运行效率和效果和资金的节省。
(1)顶层数据流图
(2)数据字典
字段名称
类型
长度
是否为NULL
备注
ID
int
2
否
主键,自动添加
类别
varchar
20
是
设备名
varchar
20
是
型号
varchar
20
是
规格
varchar
20
是
单价
double
4
是
购置日期
date
4
是
生产厂家
varchar
30
是
经办人
varchar
10
是
状态
varchar
6
否
2.2数据库概念结构设计
2.3数据库逻辑结构设计
CREATETABLE设备信息
(IDautoincrement(1,1)primarykey,
类别varchar(20),
设备名varchar(20),
型号varchar(20),
规格varchar(20),
单价double,
购置日期date,
生产厂家varchar(30),
经办人varchar(10),
状态varchar(6))";
CREATETABLE申请表
(IDautoincrement(1,1)primarykey,
类别varchar(20),
设备名varchar(20),
型号varchar(20),
规格varchar(20),
单价double,
数量int,
申请日期date,
经办人varchar(10),
状态varchar(6))";
CREATETABLE修理清单
(修理号autoincrement(1,1)primarykey,
IDint,
类别varchar(20),
设备名varchar(20),
型号varchar(20),
规格varchar(20),
修理费用double,
修理厂家varchar(30),
修理日期date,
经办人varchar(10),
状态varchar(6))";
2.4数据库物理结构设计
设备信息表结构:
ID
类别
设备名
型号
规格
单价
购置日期
生产厂家
经办人
状态
设备信息表各字段具体描述:
字段名称
类型
长度
是否为NULL
备注
ID
int
2
否
主键,自动添加
类别
varchar
20
是
设备名
varchar
20
是
型号
varchar
20
是
规格
varchar
20
是
单价
double
4
是
购置日期
date
4
是
生产厂家
varchar
30
是
经办人
varchar
10
是
状态
varchar
6
否
2.5数据库创建
全局变量表
publicstaticintshenfen=0;//0为游客,1为专业人员,2为超级管理员
stringConnString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=data.mdb;JetOLEDB:
DatabasePassword=nicaibudao";
stringsqlcmd;
OleDbCommandcmd;
OleDbConnectionconn;
DataSetds;
DataTable[]dt=newDataTable[3];//0设备信息
BindingSourcebind;//数据源
OleDbDataAdapteradapter;
Form2form2;
Form3form3;
Form4form4;
Form5form5;Form6form6;
intpage=0;
publicintrow_xz;//选中行
2.6系统总体结构设计
第三章系统开发及实现
(1)软件初运行状态,数据库未链接,用户权限为游客。
(2)手动链接数据库后,自动跳转到设备信息页面,打印全部的设备信息,实现了设备信息模块功能,在管理员用户登录后,可以右键对设备进行操作。
(3)查看设备申请表信息表,实现了设备申请模块功能,申请过的设备才能进行购买。
(4).查看设备修理清单信息表,实现了设备修理模块功能,可以记录设备的修理信息,报废信息。
(5).自定义查询,输入相关的信息,可以查找到设备。
(6).通过自定义查询搜索出的设备。
(7).新建申请表,填好信息将自动插入到设备信息表中。
第四章总结
4.1需求分析方面
4.1.1困难
如何去撰写需求报告呢,需求报告要有什么内容呢,如何写才能清楚的交代客户想要的软件呢,才能让下一步的人员的工作正确运作。
4.1.2成果:
知道了常用的需求
(1)现在业务如何运作。
(2)希望计算机做何事。
(3)每天思考完软件的设计,归纳总结,列出已有和未有的事件,反复调研,直到完善。
4.1.3如何撰写调研报告
(1)明确客户需要作何事情,事情多少,时间限制。
(2)客户可提供的软件,硬件,网络和通讯环境等。
(3)客户可参加共同开发的人力和素质。
(4)分析工作量,确定底价。
(5)引导、启发被调查对象。
4.2软件设计方面
(1)在ACCESS数据库中,用的命名空间是usingSystem.Data.OleDb;区别于SQL的是usingSystem.Data.SqlClient;
(2)在窗体间传递数据的问题,例如:
在FORM1中定义FORM2,form2=newForm2(this);,需要传递窗体实例,以窗体FORM1为参数,传给其他窗体,这样其他窗体就可以调用FORM1的变量,函数,当然函数要public
(3)在窗体关闭时要检查数据是否保存完成,不然之前的修改都白干了。
还有关闭时要断开与数据库的链接,不断数据库将一直被占用。
if(conn.State==ConnectionState.Open)
try
{
save_data(page);
}
finally
{
conn.Close();
}
(4)第一次运行软件时,需要创建数据库文件,创建字符串Provider=Microsoft.ACE.OLEDB.12.0;DataSource='E:
\\visualstudio2012\\Projects\\shebeisys\\shebeidb.accdb';JetOLEDB:
DatabasePassword=admin,由于创建的版本过高,可能导致低版本的数据库不兼容,所以改进了创建字符串,并设置了密码,提高安全度。
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=data.mdb;JetOLEDB:
DatabasePassword=nicaibudao;JetOLEDB:
EngineType=5"
(5)在写SQL语句时,如果不加@会出错,如
sqlcmd="CREATETABLE设备信息
(IDautoincrement(1,1)primarykey,
类别varchar(20),
设备名varchar(20),
型号varchar(20),
规格varchar(20),
单价double,
购置日期date,
生产厂家varchar(30),
经办人varchar(10),
状态varchar(6))";
这样写将导致把换行回车符也添加进语句中:
修正后
sqlcmd=@"CREATETABLE设备信息
(IDautoincrement(1,1)primarykey,
类别varchar(20),
设备名varchar(20),
型号varchar(20),
规格varchar(20),
单价double,
购置日期date,
生产厂家varchar(30),
经办人varchar(10),
状态varchar(6))";
(6)写完SQL语句要使用OleDbCommand类来处理语句
cmd=newOleDbCommand(sqlcmd,conn);
cmd.ExecuteNonQuery();
(7)接收从数据库里返回的表单信息,填充到内存中的DataSet中,可以更好维护数据库,防止它崩溃。
(8)填充用到OleDbDataAdapter类
sqlcmd="SELECT*FROM设备信息";
adapter=newOleDbDataAdapter(sqlcmd,conn);
adapter.Fill(ds,"设备信息");
(9)我们要输出显示表,就要用到dataGridView1控件,该控件可以直接引用DataSet中的数据,数据源,数据源,BindingSource类,可以将DataSet绑定到dataGridView1中,一旦DataSet发生变化,dataGridView1也会变化,这是个封装好的控件。
bind=newBindingSource();
bind.DataSource=ds.Tables["设备信息"];//dt[0];
this.Text="实验室设备管理系统[设备信息]";
this.dataGridView1.DataSource=bind;
this.bindingNavigator1.BindingSource=bind;
(10)身份的权限设置:
定义一个全局变量shenfen,0为游客,1为管理员
if(shenfen==0)dataGridView1.ReadOnly=true;
dataGridView1设置只读,不可增删改写。
可以注销,shenfen=0
(11)切换查看其它的表,更改数据源就好,顺便换一下窗体的标题。
sqlcmd="SELECT*FROM修理清单";
adapter=newOleDbDataAdapter(sqlcmd,conn);
adapter.Fill(ds,"修理清单");
bind.DataSource=ds.Tables["修理清单"];
this.Text="实验室设备管理系统[修理清单]";
(12)不写try{}catch(Exceptionex),不让编译,不知道该说是VS2012的优点还是缺点,优点是更安全运行程序,缺点是编写时很麻烦。
(13)执行数据库增删改写的命令也是用到OleDbCommand类
cmd=newOleDbCommand(s,conn);
cmd.ExecuteNonQuery();
(14)在更改数据库时要先定义OleDbCommandBuilder类,否则SQL语句不可执行
OleDbCommandBuilderscb=newOleDbCommandBuilder(adapter);
(15)设备状态的改变,例如,购买按钮的单机事件,若设备未被批准,不允许购买操作,否则,弹出购买窗口,填写相关信息,更新设备信息表
if(dataGridView1.Rows[row_xz].Cells["状态"].Value.ToString()!
="批准")
MessageBox.Show("申请未被批准,不允许购买!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Question);
else
{
form6.ShowDialog();
}
(16)自定义查询,逐个判断TEXT里的信息,非空则添加进字符串里,如
switch(comboBox1.SelectedIndex)
{
case0:
sql="select*from设备信息";lx=0;break;
case1:
sql="select*from申请表";lx=1;break;
case2:
sql="select*from修理清单";lx=2;break;
}
sql+="where";
if(textBox1.Text!
="")sql+="设备名like'%"+textBox1.Text+"%'and";
参考文献
[1]《C#数据库精通》作者:
王华杰清华大学出版社出版
[2]《C#程序设计教程》作者:
李春葆清华大学出版社出版
[3]《数据库原理及应用》钱雪忠主编北京邮电大学出版社2007,8第二版
[4]《SQLserver2000数据仓库与AnalysisServices》BainT著中国电力出版社2003
[5]《数据库技术与联机分析处理》王珊主编北京科学出版社1998
附录
程序代码
PrivateSubCommand1_Click()
IfCommand1.Tag="True"Then
IfCommand1.Caption="输入新记录"Then
r=1
IfA1.Recordset.BOF=TrueAndA1.Recordset.EOF=TrueThenElse
A1.Recordset.MoveFirst
EndIf
ForX=1To1
IfA1.Recordset.EOF=TrueThen
A1.Tag=Y
ExitFor
Else
A1.Recordset.MoveNext
EndIf
X=X-1
r=r+1
NextX
A1.Recordset.AddNew
Label3.Caption=r
Command1.Caption="输入完毕"
Command2.Enabled=False
Command3.Enabled=False
Command4.Enabled=False
Command5.Enabled=False
Form3.Height=8220
Form3.Top=300
F1.Visible=True
Else
Ift3(0).Text=""Then
MsgBox"设备不能为空!
",16,"出错:
"t3(0).Text="123"
A1.Recordset.Delete
Command1.Caption="输入新记录"Command2.Enabled=True
Command3.Enabled=True
Command4.Enabled=True
Command5.Enabled=True
Form3.Height=5728
Form3.Left=600
Form3.Top=1500
F1.Visible=False
Else
ForX=11To13
IfLen(Trim(t3(X).Text))>200Then
MsgBox"字符不能超过200个!
",16,"出错:
"ExitSub
EndIf
NextX
A1.Recordset.MovePrevious
A1.Recordset.MoveNext
Command1.Caption="输入新记录"Command2.Enabled=True
Command3.Enabled=True
Command4.Enabled=True
Command5.Enabled=True
Form3.Height=5728
F1.Visible=False
Form3.Left=600
Form3.Top=1500
EndIf
EndIf
Else
MsgBox"您没有这个权限!
",16,"出错:
"EndIf
EndSub
PrivateSubCommand10_Click()
ForX=0To6
IfA1.Recordset.EOF=TrueThen
MsgBox"您已经位于最后一条记录",32,"提示:
"A1.Recordset.MovePrevious
ExitSub
Else
A1.Recordset.MoveNext
EndIf
NextX
EndSub
PrivateSubCommand11_Click()
Form10.Show
UnloadMe
EndSub
PrivateSubCommand2_Click()
IfCommand2.Tag="True"Then
IfA1.Recordset.EOF=TrueAndA1.Recordset.BOF=TrueThenMsgBox"您的数据库中没有记录!
",16,"出错:
"Else
IfCommand2.Caption="查询"Then
Command8.Caption="显示信息"
Form3.Top=700
Form3.Height=5670
Command2.Caption="结束查询"
F3.Visible=True
Command1.Enabled=False
Command4.Enabled=False
Command3.Enabled=False
Else
A1.Recordset.MoveFirst
Command2.Caption="查询"
Command8.Caption="打印"
Form3.Top=1500
Form3.Height=5728
Form3.Left=600
Command1.Enabled=True
Command4.Enabled=True
Command3.Enabled=True
F3.Visible=False
EndIf
EndIf
Else
MsgBox"您没有这个权限!
",16,"出错:
"
EndIf
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 说明书