实验室设备管理系统软件工程试验完整版.docx
《实验室设备管理系统软件工程试验完整版.docx》由会员分享,可在线阅读,更多相关《实验室设备管理系统软件工程试验完整版.docx(77页珍藏版)》请在冰点文库上搜索。
实验室设备管理系统软件工程试验完整版
实验项目:
实验室设备管理系统
一、项目管理:
阶段
时间及实验
任务
参与人员
产生文档
项目管理
2009.10.27
实验一
确定课题,组织组员,合理分工。
分工明细及项目进程表
需求分析
2009.10.27
实验一
确定软件的功能和需求、性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则
需求规格说明书
确认测试准则
概要设计
2009.10.27
验一
建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,涉及全局数据库,规定涉及约束,制定组装测试计划。
概要设计说明书
组装测试计划
数据库设计
2009.10.28实验二
根据概要设计对本软件所必须的数据库进行分析及设计
数据库设计说明书
详细设计
2009.10.28实验二
对概要设计产生的功能模块逐步细化,形成若干个可编程的程序模块
模块测试方案
编码
2009.10.28
2009.10.29
实验三
根据详细设计文档将详细设计转化为所要求的编程语言或数据库语言的程序,并对这些程序进行调试和程序单元测试,验证程序模块与详细设计文档的一致性
源程序清单
测试
单元测试
2009.10.28
2009.10.29
实验三
采用白盒测试技术进行如下测试:
1.模块接口测试;
2.模块局部数据结构测试;
3.模块边界条件测试;
4.模块中所有独立执行通路测试;
5.模块的各条错误处理通路测试。
单元测试报告
综合测试
2009.10.29
实验三
发现与接口有关的各种错误
综合测试报告
确认测试
2009.10.29实验三
检查软件是否满足软件需求说明书中的确认标准
确认测试报告
项目实施
2009.10.29
2009.10.30
实验四
完善程序流图
书写软件使用说明书和用户手册
项目开发总结报告
最终用户手册
二、软件需求分析
1软件系统需求描述:
实验室设备管理系统是利用Eclipse作为开发工具、SQLServer2000作为数据库的系统。
要求实现如下功能:
⑴所有工作由专门人员负责完成,其他人不得任意使用;
⑵对于已彻底损坏的作报废处理,同时详细记录有关信息;
⑶对于有严重问题(故障)的要即使修理,并记录修理日期、设备名、修理厂家、修理费、责任人等;
⑷对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。
新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容;
⑸随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询。
本管理系统通过计算机对实验设备进行自动管理,设备管理员可以直接在计算机实现实验设备的信息管理,并在一定程度上实现自动化,改善了工作运行效率和效果。
2软件系统数据流图
1)顶层数据流图
2)0层数据流图
3)一层数据流图
4)总数据流图
3软件系统数据字典:
1、数据流条目
1登陆信息
输入:
设备管理员
输出:
身份验证1
描述:
登陆信息=用户名+密码+登陆权限
2查询信息
输入:
合法人员对设备的查询操作
输出:
设备信息表
描述:
查询信息=设备名/型号/类别/购置日期
3维修信息
输入:
所需维修设备的信息
输出:
确定维修设备的记录
描述:
维修信息=设备名+修理日期+修理厂家+修理费+负责人
4新设备
输入:
购买设备的信息
输出:
确定购买的新设备的记录
描述:
新设备=类别+设备名+型号+规格+单价+数量等
5报废设备
输入:
所需报废的设备的信息
输出:
报废的设备记录
描述:
报废设备=类别+设备名+型号等
6审核信息
输入:
审核3
输出:
上级领导
描述:
审核信息=报废设备信息/新设备购买记录
2、加工条目
身份验证1,统计查询2.1,维修2.2,购买2.3,报废2.4,生产报表3.1,审核3.2
3、文件条目
1登陆表
输入:
身份验证1
输出:
身份验证1
数据结构:
用户名+密码+登陆权限
2设备基本信息表
输入:
统计查询2.1
数据结构:
类别+设备名+型号+规格等
3维修记录表
输入:
统计查询2.1,维修2.2
输出:
统计查询2.1
数据结构:
设备名+修理日期+修理厂家+修理费+责任人等
4新设备表
输入:
统计查询2.1,购买2.2
输出:
统计查询2.1
数据结构:
类别+设备名+型号+规格+单价+数量+生产厂家+购买人等
5报废记录表
输入:
报废2.4,统计查询2.1,生产报表3.1
输出:
统计查询2.1,生产报表3.1
数据结构:
类别+设备名+型号等
6申请表
输入:
统计查询2.1,生产报表3.1
输出:
统计查询2.1,生产报表3.1,购买2.3
数据结构:
设备名+型号+规格+数量+负责人
三:
软件设计
1实验室设备管理系统模块结构图
2界面设计
3实验室设备管理系统数据设计
4管理系统其中的3个模块的详细设计
1上级领导操作模块
②设备管理员操作模块
3统功能操作模块
5数据库设计
1登陆表
列名
数据类型
长度
允许空
用户名
varchar
50
notnull
密码
varchar
50
notnull
登陆权限
char
10
notnull
2设备基本信息表
列名
数据类型
长度
允许空
设备型号
varchar
10
notnull
设备名
varchar
20
notnull
规格
varchar
10
notnull
单价
float
8
null
购买日期
datetime
8
null
生产厂家
varchar
20
null
购买人
varchar
10
null
数量
Int
4
null
3维修记录表
列名
数据类型
长度
允许空列名
设备型号
varchar
10
notnull
设备名
varchar
20
notnull
维修日期
datetime
8
null
维修厂家
varchar
30
null
维修费用
float
8
null
责任人
varchar
10
null
4报废记录表
列名
数据类型
长度
允许空
设备型号
varchar
10
notnull
设备名
varchar
20
notnull
报废日期
datetime
8
null
责任人
varchar
10
null
5申请表
列名
数据类型
长度
允许空
设备名
varchar
10
notnull
日期
Datatime
8
notnull
规格
varchar
10
notnull
数量
int
4
null
申请人
Varchar
10
Null
四、编码与单元测试
1、各模块示意图
2、用户登录界面:
packageshebeiguanli;
importjava.applet.*;
importjava.sql.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importcom.borland.jbcl.layout.*;
/**
*
Title:
实验室设备管理系统登录界面
*@authorgengdexin
*@version1.0
*/
publicclassLogextendsJFrame{
/*
*构建显示对象
*/
JPanelcontentPane;
XYLayoutxYLayout1=newXYLayout();
JPasswordFieldpassword=newJPasswordField();
JLabeljLabel1=newJLabel();
JLabeljLabel2=newJLabel();
JLabeljLabel4=newJLabel();
JTextFieldjTextField1=newJTextField();
JLabeljLabel3=newJLabel();
JLabeljLabel5=newJLabel();
JLabeljLabel6=newJLabel();
publicLog(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}
}
privatevoidjbInit()throwsException{
contentPane=(JPanel)this.getContentPane();
password.addActionListener(newLog_password_actionAdapter(this));
contentPane.setLayout(xYLayout1);
this.setSize(newDimension(500,400));
this.setTitle("实验室设备管理系统");
jLabel1.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel1.setForeground(Color.red);
jLabel1.setText("欢迎进入实验室设备管理系统");
jLabel2.setFont(newjava.awt.Font("SansSerif",0,20));
jLabel2.setText("姓名");
jTextField1.setText("");
jLabel3.setFont(newjava.awt.Font("SansSerif",0,20));
jLabel3.setText("密码");
jLabel4.setFont(newjava.awt.Font("SansSerif",0,20));
jLabel4.setText("开发人员:
耿德新蔺明亮毛冬冬");
jLabel5.setFont(newjava.awt.Font("SansSerif",0,20));
jLabel5.setText("李章华吕文强顾海驹");
jLabel6.setFont(newjava.awt.Font("SansSerif",0,15));
jLabel6.setForeground(Color.red);
jLabel6.setText("交流:
****************");
contentPane.add(jLabel1,newXYConstraints(80,10,350,34));
contentPane.add(jLabel2,newXYConstraints(92,142,-1,-1));
contentPane.add(jTextField1,newXYConstraints(130,145,91,26));
contentPane.add(jLabel3,newXYConstraints(222,144,-1,-1));
contentPane.add(password,newXYConstraints(263,144,105,28));
contentPane.add(jLabel4,newXYConstraints(50,250,-1,-1));
contentPane.add(jLabel5,newXYConstraints(150,280,-1,-1));
contentPane.add(jLabel6,newXYConstraints(100,340,-1,-1));
}
protectedvoidprocessWindowEvent(WindowEvente){
super.processWindowEvent(e);
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
voidpassword_actionPerformed(ActionEvente){
try{
Frame1Frame=newFrame1();
Frame.show();
validID();
}
catch(Exceptionew){
System.out.println(ew.getMessage());
}
this.setVisible(false);
}
//连接sql
voidvalidID(){
try{
Stringstr1,str2;
str1=jTextField1.getText();
str2=password.getText();
Connectioncon=null;
Stringurl="jdbc:
odbc:
shebeiguanli";
Stringuser="";
Stringpassword="";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection(url,user,password);
Statementstmt=con.createStatement();
//执行动态的sql语句
PreparedStatementpstmt=con.prepareStatement(
//依据读者的名字查询读者的信息的sql语句
"useshebeiguanliselect*from登录whereusername=?
");
//将读者的名字添加到具体的sql语句中
pstmt.setString(1,str1);
//使用ResultSet中的方法executeQuery()来完成sql语句的执行
ResultSetres=pstmt.executeQuery();
//使用getString()来获取sql查询的结果
if((!
res.next())||res.getString("password")==null){
JOptionPane.showMessageDialog(this,"查无此人","错误",
JOptionPane.ERROR_MESSAGE);
}else{
//if(!
res.getString
(2).equals(str2)){
if(!
res.getString
(2).equals(str2)){
JOptionPane.showMessageDialog(this,"密码错误","错误",
JOptionPane.ERROR_MESSAGE);
}else{
System.out.println("正确");
do{
System.out.println(res.getString
(1)+":
"+res.getString
(2));
}while(res.next());
loader();
}
}
pstmt.close();
con.close();
}
catch(ClassNotFoundExceptione){
System.out.println(e.getMessage());
}catch(SQLExceptionedd){
edd.printStackTrace();
System.out.println(edd.getMessage());
}
}
voidloader(){
try{
Frame9Frame=newFrame9();
Frame.show();
}
catch(Exceptionew){
System.out.println(ew.getMessage());
}
}
}
classLog_password_actionAdapterimplementsjava.awt.event.ActionListener{
Logadaptee;
Log_password_actionAdapter(Logadaptee){
this.adaptee=adaptee;
}
publicvoidactionPerformed(ActionEvente){
adaptee.password_actionPerformed(e);
}
}
3、主界面:
packageshebeiguanli;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importcom.borland.jbcl.layout.*;
//系统主界面
publicclassFrame9extendsJFrame{
JPanelcontentPane;
JMenuBarjMenuBar1=newJMenuBar();
JMenu设备查询=newJMenu();
JMenuItem设备信息=newJMenuItem();
JMenu设备申请=newJMenu();
JMenuItem申请登记=newJMenuItem();
XYLayoutxYLayout1=newXYLayout();
JLabeljLabel1=newJLabel();
JMenujMenu2=newJMenu();
JMenuItemjMenuItem7=newJMenuItem();
JMenujMenu3=newJMenu();
JMenuItemjMenuItem8=newJMenuItem();
JMenuItemjMenuItem1=newJMenuItem();
JMenuItemjMenuItem3=newJMenuItem();
JLabeljLabel2=newJLabel();
JLabeljLabel3=newJLabel();
JLabeljLabel4=newJLabel();
JMenujMenu5=newJMenu();
JMenuItemjMenuItem2=newJMenuItem();
publicFrame9(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}
}
privatevoidjbInit()throwsException{
contentPane=(JPanel)this.getContentPane();
contentPane.setLayout(xYLayout1);
this.setSize(newDimension(600,500));
this.setTitle("实验室管理系统");
设备查询.setFont(newjava.awt.Font("SansSerif",0,20));
设备查询.setText("设备查询");
设备信息.setFont(newjava.awt.Font("SansSerif",0,20));
设备信息.setText("设备信息查询");
设备信息.addActionListener(newFrame9_设备信息_ActionAdapter(this));
设备申请.setFont(newjava.awt.Font("SansSerif",0,20));
设备申请.setText("设备申请");
设备申请.addActionListener(newFrame9_设备申请_actionAdapter(this));
申请登记.setFont(newjava.awt.Font("SansSerif",0,20));
申请登记.setText("申请登记");
申请登记.addActionListener(newFrame9_申请登记_ActionAdapter(this));
jLabel1.setFont(newjava.awt.Font("SansSerif",0,40));
jLabel1.setForeground(newColor(210,0,0));
jLabel1.setHorizontalAlignment(SwingConstants.LEADING);
jLabel1.setText("实验室管理系统");
contentPane.setFont(newjava.awt.Font("Dialog",0,11));
contentPane.setForeground(Color.darkGray);
jMenu2.setFont(newjava.awt.Font("SansSerif",0,20));
jMenu2.setFocusPainted(false);
jMenu2.setText("维修记录");
jMenuItem7.setFont(newjava.awt.Font("SansSerif",0,20));
jMenuItem7.setText("维修记录登记");
jMenuItem7.addActionListener(newFrame9_jMenuItem7_actionAdapter(this));
jMenu3.setFont(newjava.awt.Font("SansSerif",0,20));
jMenu3.setText("报废记录");
jMenuItem8.setFont(newjava.awt.Font("SansSerif",0,20));