软件工程课程设计实验室设备管理系统Word文档格式.docx
《软件工程课程设计实验室设备管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计实验室设备管理系统Word文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
由于所建议系统是基于WINDOWS操作系统和互联网的,所以需要配备足够符合以上列出的各种软硬件条件的计算机和通信线路。
系统失效后,服务器端需要利用备份的数据库恢复数据信息,要求要有足够的数据备份空间。
(2)对软件的影响
需要落实是否有符合本报告所列出的正版的软件环境,如果没有则需要购买。
(3)对用户单位机构的影响
投入使用前还需改进现有的管理模式。
(4)对开发的影响
管理员只要输入简单的数据就可以完成设备管理。
(5)对经费开支的影响
除了需要支付开发单位的有关费用外,每年还需要一定的运行维护费用(见经济可行性分析)。
1.3技术可行性评价
本系统是一个基于局域网、互联网和WINDOWS操作的系统,现有技术已较为成熟,利用现有技术完全可以实现系统开发目标。
同时,开发期限较为宽裕,
预计可以在规定期限内完成开发任务。
2经济可行性
2.1支出
(1)一次性支出
1)系统开发、建立费用3.4万元。
其中:
本系统开发期为3个月,需要开发人员3人(不一定都是参加满3个月)。
根据软件系统的规模估算,开发工作量月为3人2个月即6人月,每人月的人工费按5000员计算,开发费用为3万元。
实验室设备等基本信息建立需要2人1个月即2人月,每人月的人工费用按2000员计算,需0.4万元。
2)硬件设备费共4.6万元,其中:
微机1台约0.6万元;
服务器1台及网络等设备费4万元。
3)外购开发工具、软件环境费用共4万元。
4)其他费用共2万元。
一次性支出总费用:
14万元。
(2)经常性费用
主要是系统的运行费用,假设本系统运行期10年,每年的运行费用(包括系统维修、设备维护等)5万元,按年利率5%计算运行费用见表A-1
系统投资成本总额为:
14+38.6082=52.6082万元
2.2效益
假设投入本系统,效率可以提高50%,以现有的工作人员10人计算,可减少5人,每人每月平均工资按2500元计算,每年节约人员工资5×
12×
0.25=15万元/年。
按年利率5%计算,效益计算如下表。
系统收益总额为:
115.8279万元。
2.3收益/投资比
在10年期内,系统总成本52.6082万元,系统总收益115.8279万元。
投资回报率:
×
%
(即为52.6082=15/(1+j)+15/(1+j)2+…+15/(1+j)10的方程解i×
100)
纯收益:
115.8279-52.6082=63.21975万元
从经济上考虑,开发本系统完全可行的。
2.4投资回收周期
投资回收期:
3+(52.6082-40.8489)/12.3406=3.95年
2.5敏感性分析
生命周期为10年,需要30人左右。
3法律可行性
3.1法律因素
侵犯专利权:
有
侵犯版权:
为了能够解决在使用实验设备出现的一些问题,需要建立一个安全完善的管理平台,能够使设备信息能够快速完整地自动记录在案,并自动更新
3.2用户使用可行性
适用于实验室设备管理,系统操作简单,便于管理人员使用。
4初步开发计划
任务
计划时间
人员
开发背景与目标
2天
可行性分析
3天
需求分析
10天
系统设计
20天
编码
15天
调试
5天
三、需求分析
1、系统功能列表(FunctionList)
需求标号
需求名称
需求来源
需求描述
需求等级
1
统计查询
用户
查询设备的信息如购买日期,型号类别
低
2
维修
维修的情况,维修员,维修日期,维修状况
中
3
购买
购买的情况和信息,购买日期,价格
高
4
报废
报废设备的信息,报废日期和型号数量
2、数据流图
0层数据流图:
1层数据流图:
2层数据流图:
3、数据字典
1.数据流条目
登陆信息
输入:
设备管理员
输出:
身份验证
描述:
登陆信息=用户名+密码+登陆权限
查询信息
合法人员对设备的查询操作
设备信息表
查询信息=[设备名|型号|类别|购置日期]
维修信息
所需维修设备的信息
确定维修设备的记录
维修信息=修理日期+设备名+编号+修理厂家+修理费用+责任人
购买设备
购买设备的信息
确定购买的新设备的记录
新设备=类别+设备名+编号+型号+规格+单价+数量+购置日期+生产厂家+保质期+经办人等
报废设备
所需报废的设备的信息
报废的设备记录
报废设备=类别+设备+型号等
审核信息
审核
上级领导
审核信息=报废设备信息/新设备购买信息
2.加工条目
身份验证,统计查询,维修,购买,报废,生产报表,审核。
3.文件条目
登陆表
数据结构:
用户名+密码+登陆权限
设备基本信息表
类别+设备名+型号+规格等
维修记录表
统计查询,维修
修理日期+设备名+编号+修理厂家+修理费用+责任人
购买设备表
统计查询,购买
类别+设备名+编号+型号+规格+单价+数量+购置日期+生产厂家+保质期+经办人等
报废记录表
报废,统计查询,生产报表
统计查询,生产报表
类别+设备名+型号等
申请表
统计查询,生产报表,购买
类别+设备名+型号+规格+数量
4.数据加工处理的描述
登陆用例
简要说明:
本用例说明用户如何登录到系统。
角色:
管理员、实验员、学生
前置条件:
启动程序,进入登录界面
基本事件流:
1.用户输入基本信息(登录名和密码),点击确定按钮
2.系统查找数据库,看该用户是否在数据库中。
若存在则进入主页面。
备选事件流:
1.输入无效的用户名或密码,提示用户名或密码不能为空或者提示用户名或密码不正确。
后置条件:
登录成功
特殊需求:
没有和本用例有关的特殊需求。
扩展点:
没有和本用例有关的扩展点。
购买设备用例
本用例说明管理员如何购买设备并记录进入系统。
管理员
已经成功登陆到系统。
1.管理员填写设备各种信息,确定添加。
2.系统把对应信息写入数据库,更新数据库。
输入了已存在的设备编号,系统提示编号中已存在。
购买成功。
报废设备用例
本用例说明管理员如何从入系统中删除报废的设备记录。
1.管理员根据设备编号,找到需要删除的设备记录,确定删除。
2.系统把从数据库中删除对应信息,更新数据库。
输入了不存在的设备编号,系统提示未找到记录。
删除成功。
设备查询用例
本用例说明管理员如何查询系统中已记录的实验设备。
1.管理员选择设备查询功能,根据名称、编号、添加时间等方式,填写信息并查询。
2.系统查找数据库,找到符合条件的信息。
3.返回找到的信息。
输入不存在的设备信息,系统提示未找到该设备信息。
查询成功。
5.性能需求
5.1数据精确度
该软件计算设备时以“台”、“件”等为实物计件单位,报表输出中的金额保证到0.01的精度。
5.2时间特性
查询在3秒内完成,表项输出在8秒内完成
5.3适应性
考虑到工作人员有时候办公地点的移动性,在设计时应该注意软件的适应性,对于查询功能应尽可能独立方便地将其移植到笔记本、掌上电脑等硬件平台
6.运行需求
6.1用户界面
采用Windows的通用图形界,对用户友好,且必须对鼠标和键盘提供支持。
6.2硬件接口
支持一般x86系列微机和Windows
CE,即一般的PC机。
四、系统设计
1.状态图
2.输出设计
a.输入数据数字信息符合输入精度要求
b.输入可选信息完全使用下拉框完成
a.输出数据符合输出精度要求
输出数据格式字体大小统一
3.数据库结构设计
(1)实体表
【1】用户表(UserInfo)
字段
类型
备注
uId
Varchar(15)
用户名,主键
uName
姓名
uPasswd
密码
uPosition
身份,主键
【2实验室管理员表(StoreManagerInfo)
lId
仓库编号,外键约束于实验室表
【3实验室表(LabInfo)
实验室编号,主键
lName
实验室名称
lPlace
所在校区
【4设备表(EquipInfo)
eId
设备编号,主键
eName
设备名称
eStandard
规格型号
eProCompany
生产厂商
eType
设备类型
(2)关系表
【1】入库登记表(InInfo)
设备编号,主键,外键约束于设备表
sId
仓库编号,主键,外键约束于仓库表
iDate
DateTime
入库时间,主键
iNum
int
入库数量
(3)记录表
【1】购买申请表(BuyApplyInfo)
baId
序列号,主键
设备编号,外键约束于设备表
smName
申请人,外键约束于仓库管理员表
baDate
申请时间
baNum
Int
申请数量
【2】维修申请表(MaintainInfo)
maId
pId
固定资产编号,外键约束于固定资产表
lmName
申请人,外键约束于实验室管理员表
maDate
【3】购买登记表(BuyInfo)
bId
bPrice
Money
购买单价
bDate
购买时间
bNum
购买数量
【4】维修记录表(MaintainInfo)
mId
mDate
维修时间
【5】报废记录表(DiscardInfo)
dId
dDate
报废时间
【6】购买审核表(BuyCheckInfo)
bcId
申请序列号,外键约束于购买申请表
olName
审核人,外键约束于上级领导表
bcDate
审核时间
【7】维修审核表(MaintainCheckInfo)
mcId
申请序列号,外键约束于维修申请表
mcDate
4.模块详细设计
设备管理员操作模块
五、课程设计总结
六、代码
1、用户登录界面:
packagecom.niit.gui_event;
importcom.niit.logical.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassLoginextendsJFrame{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
//控件声明
privateJLabellPosition,lName,lPasswd,lTitle;
privateJComboBoxcbPosition,cbName;
privateJPasswordFieldpfPasswd;
privateJButtonbConfirm,bCancel;
privateContainercon;
privateJPanel[]pCon;
privateUserinfo;
publicLogin(){
super("
用户登录"
);
//控件初始化
con=getContentPane();
lPosition=newJLabel("
身份:
"
lName=newJLabel("
用户名:
lPasswd=newJLabel("
密码:
lTitle=newJLabel("
实验室设备管理系统"
lTitle.setForeground(Color.RED);
pfPasswd=newJPasswordField();
bConfirm=newJButton("
确定"
bCancel=newJButton("
取消"
String[]aPosition=newString[]{"
系统管理员"
"
仓库管理员"
实验室管理员"
"
购买登记员"
上级领导"
};
cbPosition=newJComboBox(aPosition);
intindex=cbPosition.getSelectedIndex();
if(index==0){
info=newAdministration();
}elseif(index==1){
info=newStoreManager();
}elseif(index==2){
info=newLabManager();
}elseif(index==3){
info=newBuyManager();
}else{
info=newOverLeader();
}
//数组初始化
pCon=newJPanel[5];
String[]cName=info.getIdByPosition(info);
cbName=newJComboBox(cName);
for(inti=0;
i<
pCon.length;
i++)
pCon[i]=newJPanel();
}
publicvoidlaunch(){
//控件添加
con.setLayout(newGridLayout(5,1));
pCon[0].add(lPosition);
pCon[0].add(cbPosition);
pCon[1].add(lName);
pCon[1].add(cbName);
pCon[2].add(lPasswd);
pCon[2].add(pfPasswd);
pCon[3].add(bConfirm);
pCon[3].add(bCancel);
pCon[4].add(lTitle);
add(pCon[4]);
pCon.length-1;
con.add(pCon[i]);
//控件设置
pfPasswd.setEchoChar('
*'
pfPasswd.setColumns(10);
setBounds(400,100,400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加监听器
cbPosition.addActionListener(newListenAction());
bConfirm.addActionListener(newListenAction());
bCancel.addActionListener(newListenAction());
pfPasswd.addKeyListener(newListenKey());
//定义按钮,下拉框处理器
classListenActionimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==bConfirm){//点击确定按钮
info.setuId(cbName.getSelectedItem().toString());
info.setuPasswd(newString(pfPasswd.getPassword()));
info.setuPosition(cbPosition.getSelectedItem().toString());
if(info.login(info)){
newMain(info).launch();
setVisible(false);
pfPasswd.setText(null);
}else{
JOptionPane.showMessageDialog(newLogin(),"
用户名,密码或身份错误"
}
}elseif(e.getSource()==cbPosition){//身份下拉框改变时
intindex=cbPosition.getSelectedIndex();
if(index==0){
info=newAdministration();
}elseif(index==1){
info=newStoreManager();
}elseif(index==2){
info=newLabManager();
}elseif(index==3){