数据库课程设计设备管理实例.docx
《数据库课程设计设备管理实例.docx》由会员分享,可在线阅读,更多相关《数据库课程设计设备管理实例.docx(22页珍藏版)》请在冰点文库上搜索。
数据库课程设计设备管理实例
可行性研究报告
1.引言
1.1编写目的
随着电气化教学和无纸化办公的一步步完善,利用计算机管理系统管理学校的实验室设备势在必行。
该报告的主要内容是分析实验室设备管理系统的开发可行性,包括开发背景和编写目的。
为该工程的决策人员分析该项目的实施价值和可行性作判断的依据。
1.2说明
系统名称:
实验室设备管理系统
开发说明:
本软件由本人利用SQLServer开发完成。
主要用于学校的实验室设备和课程的管理和完成DB的课程设计。
相关联系:
和学校的财务管理与课程管理软件系统中的相关信息挂钩。
2.对现有系统的分析
现在学校的各个院系的实验室都没有使用计算机统一管理。
仍然是手工管理,所以亟需这类软件。
由本人利用课余时间完成,工作负荷相对较小。
3.所建议技术可靠性分析
3.1对系统的简要描述
该系统完成实验室设备的新旧设备的入库、管理、查询和按课程安排实验设备的功能。
3.2采用建议系统可能带来的影响
使用该系统之后,实验室的课程所需设备安排与设备管理模式将发生一次改革。
大大减少管理上的工作量,也使实验室设备的情况更加明朗。
管理员可以轻松快捷的查找每一样在库设备的情况,更可以快速统计设备的使用和损坏情况。
3.3技术可行性评价
开发本系统只需学习过数据库的开发和应用,掌握了SQL2000和POWERBUILDER的编程技术。
所以有能力完成该系统的部分重要结构。
4.所建议系统经济可行性分析
不需任何费用
项目开发计划
1.编写目的
学校的实验室设备和课程的管理还处于较为原始的手工阶段。
缺少一套实用可靠的设备和课程管理系统软件。
所以我准备开发一套专门针对这方面的管理软件。
该计划书是对该项目的设计和实施的安排和计划。
指导和约束软件的分析和代码开发。
并对开发周期作以规划。
2.项目概述
2.1工作内容
该项目的开发主要分为4步:
需求分析和设计阶段。
代码编写调试阶段。
系统测试阶段。
系统维护和完善阶段。
在这四部分工作中主要的工作就是熟悉和了解学校实验室的管理机制,然后设计系统的结构和共能。
在经过分析后依照设计编写代码和测试,最后协同实验室完善软件的功能。
2.2运行环境
本系统针对MicrosoftWindows系统开发。
运行于Windows98、MEWindows2000sp3、WindowsXP。
不支持Windows2003的操作系统环境。
建议硬件配置PII以上64M内存300M硬盘空间。
需求规格说明书
1.任务概述
1.1目标
开发一套能够适用于学校各个学院实验室的实验室设备管理系统,能够使实验室设备的管理达到方便快捷无纸化的程度。
该软件是一个相对独立的个体,绝大部分功能聚集在实验室设备的出入管理和实验课所需设备的安排上。
是一个相对小型的独立系统,它最终要实现的目标就是要让大量实验室设备的管理变得轻松明了。
课程所需设备的安排上简洁准确。
在软件的数据管理上与学院的财务管理和课程安排挂钩,实现全院的电子管理的统一。
1.2用户特点
用户为管理实验室的老师,文化程度较高有一定的计算机操作基础。
所以设计上尽量规范化正规化。
符合一般软件的统一使用方法可以方便学习操作。
2.数据描述
数据库采用学校管理统一的数据源,该数据源主要包括下面内容:
1、学生信息:
学号(i9)、学生姓名(s8)、入学时间(s10)、是否毕业(s2)、毕业时间(i4)、出生日期(s12)、籍贯(s40)、政治面貌(s4)、学生档案编号(s12)、学籍情况(s20)、原学籍情况(s20)、年级(s2)、所受奖励(s100)、所受处罚(s100)、学位(s4)
2、教师信息:
教师编号(i9)、教师姓名(s8)、参加工作时间(s10)、出生日期(s12)、籍贯(s40)、政治面貌(s4)、教师档案编号(s12)、职称(s12)、曾获奖项(s100)、论文著作(s100)
3、课程信息:
课程号(s10)、课程名称(s20)、课程级别(s4)、学分(i3)、占用课时(i2)、单双周区别(s2)
4、考试信息:
考试编号(s12)、考试类型(期中或期末s4)、考试时间(s12)、考试形式(s4)
5、院系信息:
学院编号(s2)、学院名称(s20)
6、教研室信息:
教研室编号(s8)、教研室名称(s20)
7、专业信息:
专业编号(s2)、专业名称(s20)
8、班级信息:
班级编号(s5)
9、成绩信息:
成绩(l6)
10.学位信息:
学位编号(i3)、学位(s4)
11.教室信息:
教学楼编号(i2)、教室编号(s3)、课节编号(i4)
12.时间信息:
周次(i2)、单元(i1)
针对实验设备管理系统的特殊性,我们在此基础上增添设备管理的专用数据项
1、设备信息:
设备编号、设备名称、规格、单位、数量、在库位置、入库时间、状态
2、供应商信息:
供应商编号、供应商名称、单位名称、业务种类
3.功能需求
3.1功能划分
3.2功能描述
新设备进入管理:
在登记表单中以一张表单的形式向数据库提交设备的入库完整信息。
包括设备的编号、名称、数量、单位、规格、进货人、保管员、入库位置。
在入库单查询中可以查询各时期的每张入库单。
库内设备管理与查询:
在库内设备查询中实现现在仓库中的每样登记设备的各种信息。
按编号、名称、位置分别查询。
设备管理中完成设备的报修、报废处理。
实验课设备安排:
分为安排和管理两部分,课程安排部分能按照课程表安排上课所需设备。
管理部分可以对一个阶段的课程设备使用情况进行管理。
4.运行需求
4.1用户界面
用户界面要求简洁明了,而且表单操作要求尽量避免使用鼠标。
所以数据的填写,控件焦点的转换要自动进行。
提交和撤销使用回车和Esc。
不同种类数据填写的顺序—即Tab的顺序要符合实际操作的习惯。
而且要求在某些同样数据重复次数较多的控件上使用可选或记忆功能,简化操作。
4.2硬件接口
该系统既可以利用键盘输入设备编码信息,还可以通过RS232串口可以直接读取由条码读取器读取到的设备条形编码。
所以该系统需要设计读取RS232串口的数据采集模式。
每台装有该软件的微机连接1台串口条码读取器。
4.3软件接口
与外界数据库的连接接口。
使软件通过网络使用公共数据库达到信息数据同步的功能。
概要设计说明书
1.编写目的
该设计说明概括了实验室设备管理系统的整体结构和相关模块分类。
为详细设计阶段的工作指导方向。
主要帮助系统设计人员确立模块种类,分解系统的功能。
系统名称:
实验室设备管理系统
2.总体设计
2.1处理流程
2.2总体结构和模块外部设计
2.3功能分配
程序
功能
提交新设备信息到数据库
通过日期查询入库表单
通过设备名称、代码、等查询
提交设备修损记录
排课模块安排实验课设备
密码和权限配置程序
资料查询程序
读码器驱动程序
提交新设备入库单
√
查入库单
√
查询设备情况
√
√
设备报修报损
√
课程安排
√
管理员权限设置
√
供应商资料查询
√
实验设备查询
√
通过条码读码器读取数据
√
3.接口设计
3.1外部接口
硬件接口:
可以接驳串口条码读码器,微机与读卡器接口为RS232串口。
软件接口:
与校财务管理系统和排课系统的连接,与公共数据库的共享。
3.2内部接口
模块间接口:
设备录入----设备查询(由相同数据相联接)
课程安排----设备管理(上课所安排的设备符合设备管理的要求)
4.运行设计
4.1运行模块的组合
模块功能的组合:
4.2运行控制
1、读码器读取设备编码进行设备入库操作:
读取条码,然后键盘输入其它相关信息。
2、读码器读取设备编码进行设备查询:
读取条码,计算机自动显示相关信息。
3、键盘输入查询标志进行查询:
键盘输入查询的标志,点击查询按钮在相关位置显示查询结果。
4、安排课程操作:
选取当前课程的标志,填写相关信息,提交操作。
5.出错处理设计
5.1出错输出信息
1、表单填写时出现空缺项:
“请输入***项!
”
2、表单填写时出现错误格式:
“错误的***项!
”
3、查询时条件空缺:
“请输入查询条件!
”
4、查询时输入条件格式有误:
“查询条件格式不正确!
”
5、查询时没有与查询标志相吻合届结果:
“未发现结果,请重新查询或核对”
6、设备因缺损空缺:
“该设备已损,不能安排使用!
”
5.2出错处理对策
1-5类错误重新填写或补填即可解决。
6类错误核对设备情况重新作安排。
6.安全保密设计
设置系统管理员权限和操作员权限两个级别。
管理员有更改操作权限和备份与恢复数据库的权利。
操作员只有查询和新设备入库的权利。
管理员和操作员各设置自己的不同密码。
密码要求最少6位,数字与字母相结合。
详细设计说明书
1.引言
1.1编写目的
该书明书详细描述了该系统的详细功能和结构。
是开发实施阶段编写代码的依据。
程序编写人员要严格依照该说明书的要求编写代码以实现内部的功能。
1.2定义
PB:
PowerBuilder9.0
2.总体设计
2.1需求概述
开发一套能够适用于学校各个学院实验室的实验室设备管理系统,能够使实验室设备的管理达到方便快捷无纸化的程度。
该软件是一个相对独立的个体,绝大部分功能聚集在实验室设备的出入管理和实验课所需设备的安排上。
是一个相对小型的独立系统,它最终要实现的目标就是要让大量实验室设备的管理变得轻松明了。
课程所需设备的安排上简洁准确。
在软件的数据管理上与学院的财务管理和课程安排挂钩,实现全院的电子管理的统一。
2.2软件结构
3.程序描述
3.1算法
A:
入库操作:
1:
入库单初始化
设备名称的输入
declaremy_cursordynamiccursorforsqlsa;
preparesqlsafrom"select设备名称fromt_shebeizidianorderby设备编号";
opendynamicmy_cursor;
fetchmy_cursorinto:
ls_sbmc;
dowhilesqlca.sqlcode=0
ddlb_2.additem(ls_sbmc)
fetchmy_cursorinto:
ls_sbmc;
loop
closemy_cursor;
进货人的选择
declaremy_cursor1dynamiccursorforsqlsa;
preparesqlsafrom"select进货人fromt_rukuorderby设备编号";
opendynamicmy_cursor;
fetchmy_cursorinto:
ls_jinhuoren;
dowhilesqlca.sqlcode=0
ddlb_4.additem(ls_jinhuoren)
fetchmy_cursor1into:
ls_jinhuoren;
loop
closemy_cursor1;
在库位置的输入
declaremy_cursor2dynamiccursorforsqlsa;
preparesqlsafrom"select在库位置fromt_kucunorderby流水号";
opendynamicmy_cursor2;
fetchmy_cursor2into:
ls_weizhi;
dowhilesqlca.sqlcode=0
ddlb_5.additem(ls_weizhi)
fetchmy_cursor2into:
ls_weizhi;
loop
closemy_cursor2;
ifddlb_5.totalitems()>0then
提取上次操作信息
ls_lastkucun=profilestring("weizhi.ini","位置信息","上次入库位置","")
ifls_lastkucun=""then
ddlb_5.selectitem
(1)
else
ddlb_5.selectitem(ls_lastkucun,0)
endif
endif
提取流水号
SELECTt_liushui.liushui
INTO:
ls_liushui
FROMt_liushui;
sle_3.text=ls_liushui
em_1.text=string(today(),"yyyy/mm/dd/hh:
mm")
2:
提交入库单:
检查数据录入窗口是否填写完整
ifem_2.text=""orisnull(em_2.text)then
messagebox("缺少数据","请输入设备编号!
")
em_2.setfocus()
return
elseifsle_4.text=""orisnull(sle_4.text)then
messagebox("缺少数据","请输入设备规格!
")
sle_4.setfocus()
return
elseifddlb_2.text=""orisnull(ddlb_2.text)then
messagebox("缺少数据","请输入设备名称!
")
ddlb_2.setfocus()
return
elseifsle_1.text=""orisnull(sle_1.text)then
messagebox("缺少数据","请输入设备数量!
")
sle_1.setfocus()
return
elseifddlb_3.text=""orisnull(ddlb_3.text)then
messagebox("缺少数据","请输入计量单位!
")
ddlb_3.setfocus()
return
elseifddlb_4.text=""orisnull(ddlb_4.text)then
messagebox("缺少数据","请输入进货人姓名!
")
ddlb_4.setfocus()
return
elseifddlb_5.text=""orisnull(ddlb_5.text)then
messagebox("缺少数据","请输入库存的位置!
")
ddlb_5.setfocus()
return
elseifem_1.text=""orisnull(em_1.text)then
messagebox("缺少数据","请输入入库时间!
")
em_1.setfocus()
return
elseifsle_2.text=""orisnull(sle_2.text)then
messagebox("缺少数据","请输入保管员姓名!
")
sle_2.setfocus()
return
endif
把得到数据赋值给变量
ls_number=trim(em_2.text)
ls_name=trim(ddlb_2.text)
ls_shuliang=trim(sle_1.text)
ls_danwei=trim(ddlb_3.text)
ls_jinhuoren=trim(ddlb_4.text)
ls_weizhi=trim(ddlb_5.text)
ls_baoguanyuan=trim(sle_2.text)
ls_guige=trim(sle_4.text)
ls_liushui=sle_3.text
ls_zhuangtai=sle_5.text
ld_date=date(em_1.text)
向数据库存入数据
向入库单存入数据
INSERTINTOt_ruku
(设备编号,
设备数量,
入库时间,
进货人,
保管员,
流水号)
VALUES(:
ls_number,
:
ls_shuliang,
:
ld_date,
:
ls_jinhuoren,
:
ls_baoguanyuan,
:
ls_liushui);
向库存单存入数据
INSERTINTOt_kucun
(设备编号,
数量,
在库位置,
流水号,
状态)
VALUES(:
ls_number,
:
ls_shuliang,
:
ls_weizhi,
:
ls_liushui,
:
ls_zhuangtai);
结束一次录入操作
em_1.text=""
em_2.text=""
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
ddlb_2.text=""
ddlb_3.text=""
ddlb_4.text=""
ddlb_5.text=""
em_2.setfocus()
open(w_sucessruku)
B:
设备查询
查询所有设备
dw_1.dataobject="dw_kucun"
dw_1.settransobject(sqlca)
dw_1.retrieve()
查询损坏设备
dw_1.dataobject="dw_sunhuai"
dw_1.settransobject(sqlca)
dw_1.retrieve()
按名称查询
sql_syntax="SELECTt_kucun.设备编号,t_shebeizidian.设备名称,"+&
"t_shebeizidian.设备规格,t_kucun.数量,t_kucun.在库位置"+&
"FROMt_kucun,t_shebeizidian"+&
"WHEREt_kucun.设备编号=t_shebeizidian.设备编号and"+&
"t_kucun.设备编号='"+ls_cx+"'"
presentation_str="style(type=grid)"
dwsyntax_str=SQLCA.SyntaxFromSQL(sql_syntax,&
presentation_str,ERRORS)
IFLen(ERRORS)>0THEN
MessageBox("Caution",&
"SyntaxFromSQLcausedtheseerrors:
"+ERRORS)
RETURN
ENDIF
dw_1为空数据窗口
dw_1.Create(dwsyntax_str,ERRORS)
IFLen(ERRORS)>0THEN
MessageBox("Caution",&
"Createcausetheseerrors:
"+ERRORS)
RETURN
ELSE
dw_1.settransobject(sqlca)
dw_1.retrieve()
ENDIF
C:
登录密码判断
setpointer(hourglass!
)
declaremy_cursordynamiccursorforsqlsa;
preparesqlsafrom"selectidfromt_useridorderbyid";
opendynamicmy_cursor;
fetchmy_cursorinto:
ls_opid;
dowhilesqlca.sqlcode=0
ddlb_1.additem(ls_opid)
fetchmy_cursorinto:
ls_opid;
loop
closemy_cursor;
ifddlb_1.totalitems()>0then
ls_lastid=profilestring("user.ini","操作员信息","上次登录操作员姓名","")
ifls_lastid=""then
ddlb_1.selectitem
(1)
else
ddlb_1.selectitem(ls_lastid,0)
endif
endif
D:
课程管理
设备名称的输入
declaremy_cursordynamiccursorforsqlsa;
preparesqlsafrom"select设备名称fromt_shebeizidianorderby设备编号";
opendynamicmy_cursor;
fetchmy_cursorinto:
ls_sbmc;
dowhilesqlca.sqlcode=0
ddlb_1.additem(ls_sbmc)
fetchmy_cursorinto:
ls_sbmc;
loop
closemy_cursor;
3.2存储分配
3.3测试要点
表单提交过程的准确性和排课的准确性
多台计算机使用和提交同类数据时互斥操作和数据安全性。
实验室设备管理系统
———数据库系统课程设计
曾乐
20012437
华中师范大学计算机科学与技术系2001级