




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验项目:实验室设备管理系统一、 项目管理:阶段时间及实验任务参与人员产生文档项目管理2009.10.27 实验一确定课题,组织组员,合理分工。分工明细及项目进程表需求分析2009.10.27 实验一确定软件的功能和需求、性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则需求规格说明书确认测试准则概要设计2009.10.27 验一建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,涉及全局数据库,规定涉及约束,制定组装测试计划。概要设计说明书组装测试计划数据库设计2009.10.28实验二根据概要设计对本软件所必须的数据库进行分析及设计数据库设计说明书详细设计2009.10.28实验二对概要设计产生的功能模块逐步细化,形成若干个可编程的程序模块模块测试方案编码2009.10.282009.10.29实验三根据详细设计文档将详细设计转化为所要求的编程语言或数据库语言的程序,并对这些程序进行调试和程序单元测试,验证程序模块与详细设计文档的一致性源程序清单测试单元测试2009.10.282009.10.29实验三采用白盒测试技术进行如下测试:1. 模块接口测试;2. 模块局部数据结构测试;3. 模块边界条件测试;4. 模块中所有独立执行通路测试;5. 模块的各条错误处理通路测试。单元测试报告综合测试2009.10.29实验三发现与接口有关的各种错误综合测试报告确认测试2009.10.29实验三检查软件是否满足软件需求说明书中的确认标准确认测试报告项目实施2009.10.292009.10.30实验四完善程序流图书写软件使用说明书和用户手册项目开发总结报告最终用户手册二、软件需求分析1 软件系统需求描述:实验室设备管理系统是利用Eclipse作为开发工具、SQL Server2000作为数据库的系统。要求实现如下功能:所有工作由专门人员负责完成,其他人不得任意使用;对于已彻底损坏的作报废处理,同时详细记录有关信息;对于有严重问题(故障)的要即使修理,并记录修理日期、设备名、修理厂家、修理费、责任人等;对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容;随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询。本管理系统通过计算机对实验设备进行自动管理,设备管理员可以直接在计算机实现实验设备的信息管理,并在一定程度上实现自动化,改善了工作运行效率和效果。2 软件系统数据流图1) 顶层数据流图2) 0层数据流图3) 一层数据流图4)总数据流图3软件系统数据字典:1、 数据流条目 登陆信息输入:设备管理员输出:身份验证1描述:登陆信息=用户名+密码+登陆权限 查询信息输入:合法人员对设备的查询操作输出:设备信息表描述:查询信息=设备名/型号/类别/购置日期 维修信息输入:所需维修设备的信息输出:确定维修设备的记录描述:维修信息=设备名+修理日期+修理厂家+修理费+负责人 新设备输入:购买设备的信息输出:确定购买的新设备的记录描述:新设备=类别+设备名+型号+规格+单价+数量等 报废设备输入:所需报废的设备的信息输出:报废的设备记录描述:报废设备=类别+设备名+型号等 审核信息输入:审核3输出:上级领导描述:审核信息=报废设备信息/新设备购买记录2、 加工条目身份验证1,统计查询2.1,维修2.2,购买2.3,报废2.4,生产报表3.1,审核3.23、 文件条目 登陆表输入:身份验证1输出:身份验证1数据结构:用户名+密码+登陆权限 设备基本信息表输入:统计查询2.1数据结构:类别+设备名+型号+规格等 维修记录表输入:统计查询2.1,维修2.2输出:统计查询2.1数据结构:设备名+修理日期+修理厂家+修理费+责任人等 新设备表输入:统计查询2.1,购买2.2输出:统计查询2.1数据结构:类别+设备名+型号+规格+单价+数量+生产厂家+购买人等 报废记录表输入:报废2.4,统计查询2.1,生产报表3.1输出:统计查询2.1,生产报表3.1数据结构:类别+设备名+型号等 申请表输入:统计查询2.1,生产报表3.1输出:统计查询2.1,生产报表3.1,购买2.3数据结构:设备名+型号+规格+数量+负责人三:软件设计1实验室设备管理系统模块结构图实验室设备管理系统上级领导操作设备管理员操作系统功能操作审核管理设备报废管理设备购买管理设备维修管理设备查询管理系统维护管理用户登陆管理2界面设计3实验室设备管理系统数据设计4管理系统其中的3个模块的详细设计 上级领导操作模块设备管理员操作模块 统功能操作模块5数据库设计 登陆表列名数据类型长度允许空用户名varchar50not null密码varchar50not null登陆权限char10not null 设备基本信息表列名数据类型长度允许空设备型号varchar10not null设备名varchar20not null规格varchar10not null单价float8null购买日期datetime8null生产厂家varchar20null购买人varchar10null数量Int4null 维修记录表列名数据类型长度允许空列名设备型号varchar10not null设备名varchar20not null维修日期datetime8null维修厂家varchar30null维修费用float8null责任人varchar10null 报废记录表列名数据类型长度允许空设备型号varchar10not null设备名varchar20not null报废日期datetime8null责任人varchar10null 申请表列名数据类型长度允许空设备名varchar10not null日期Datatime8not null规格varchar10not null数量int4null申请人Varchar10Null四、编码与单元测试1、各模块示意图2、用户登录界面:package shebeiguanli;import java.applet.*;import java.sql.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;/* * Title:实验室设备管理系统登录界面 * author gengdexin * version 1.0 */public class Log extends JFrame /* * 构建显示对象 */ JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JPasswordField password = new JPasswordField(); JLabel jLabel1 = new JLabel(); JLabel jLabel2 = new JLabel(); JLabel jLabel4 = new JLabel(); JTextField jTextField1 = new JTextField(); JLabel jLabel3 = new JLabel(); JLabel jLabel5 = new JLabel(); JLabel jLabel6 = new JLabel(); public Log() enableEvents(AWTEvent.WINDOW_EVENT_MASK); try jbInit(); catch(Exception e) e.printStackTrace(); private void jbInit() throws Exception contentPane = (JPanel) this.getContentPane(); password.addActionListener(new Log_password_actionAdapter(this); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(500, 400); this.setTitle(实验室设备管理系统); jLabel1.setFont(new java.awt.Font(SansSerif, 0, 25); jLabel1.setForeground(Color.red); jLabel1.setText(欢迎进入实验室设备管理系统); jLabel2.setFont(new java.awt.Font(SansSerif, 0, 20); jLabel2.setText(姓名); jTextField1.setText(); jLabel3.setFont(new java.awt.Font(SansSerif, 0, 20); jLabel3.setText(密码); jLabel4.setFont(new java.awt.Font(SansSerif, 0, 20); jLabel4.setText(开发人员:耿德新 蔺明亮 毛冬冬); jLabel5.setFont(new java.awt.Font(SansSerif, 0, 20); jLabel5.setText(李章华 吕文强 顾海驹); jLabel6.setFont(new java.awt.Font(SansSerif, 0, 15); jLabel6.setForeground(Color.red); jLabel6.setText(交流:); contentPane.add(jLabel1, new XYConstraints(80, 10, 350, 34); contentPane.add(jLabel2, new XYConstraints(92, 142, -1, -1); contentPane.add(jTextField1, new XYConstraints(130, 145, 91, 26); contentPane.add(jLabel3, new XYConstraints(222, 144, -1, -1); contentPane.add(password, new XYConstraints(263, 144, 105, 28); contentPane.add(jLabel4, new XYConstraints(50, 250, -1, -1); contentPane.add(jLabel5, new XYConstraints(150, 280, -1, -1); contentPane.add(jLabel6, new XYConstraints(100, 340, -1, -1); protected void processWindowEvent(WindowEvent e) cessWindowEvent(e); if (e.getID() = WindowEvent.WINDOW_CLOSING) System.exit(0); void password_actionPerformed(ActionEvent e) try Frame1 Frame= new Frame1(); Frame.show(); validID(); catch (Exception ew) System.out.println(ew.getMessage(); this.setVisible(false); /连接sql void validID() try String str1, str2; str1 = jTextField1.getText(); str2 = password.getText(); Connection con = null; String url = jdbc:odbc:shebeiguanli; String user = ; String password = ;Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con = DriverManager.getConnection(url,user,password);Statement stmt =con.createStatement(); /执行动态的sql语句 PreparedStatement pstmt = con.prepareStatement( /依据读者的名字查询读者的信息的sql语句 use shebeiguanli select * from 登录 where username=?); /将读者的名字添加到具体的sql语句中 pstmt.setString(1, str1); /使用ResultSet中的方法executeQuery()来完成sql语句的执行 ResultSet res = 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 (ClassNotFoundException e) System.out.println(e.getMessage(); catch (SQLException edd) edd.printStackTrace() ; System.out.println(edd.getMessage(); void loader() try Frame9 Frame= new Frame9(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); class Log_password_actionAdapter implements java.awt.event.ActionListener Log adaptee; Log_password_actionAdapter(Log adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.password_actionPerformed(e); 3、主界面:package shebeiguanli;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.jbcl.layout.*;/系统主界面public class Frame9 extends JFrame JPanel contentPane; JMenuBar jMenuBar1 = new JMenuBar(); JMenu 设备查询 = new JMenu(); JMenuItem 设备信息 = new JMenuItem(); JMenu 设备申请 = new JMenu(); JMenuItem 申请登记 = new JMenuItem(); XYLayout xYLayout1 = new XYLayout(); JLabel jLabel1 = new JLabel(); JMenu jMenu2 = new JMenu(); JMenuItem jMenuItem7 = new JMenuItem(); JMenu jMenu3 = new JMenu(); JMenuItem jMenuItem8 = new JMenuItem(); JMenuItem jMenuItem1 = new JMenuItem(); JMenuItem jMenuItem3 = new JMenuItem(); JLabel jLabel2 = new JLabel(); JLabel jLabel3 = new JLabel(); JLabel jLabel4 = new JLabel(); JMenu jMenu5 = new JMenu(); JMenuItem jMenuItem2 = new JMenuItem(); public Frame9() enableEvents(AWTEvent.WINDOW_EVENT_MASK); try jbInit(); catch(Exception e) e.printStackTrace(); private void jbInit() throws Exception contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(xYLayout1); this.setSize(new Dimension(600, 500); this.setTitle(实验室管理系统); 设备查询.setFont(new java.awt.Font(SansSerif, 0, 20); 设备查询.setText(设备查询); 设备信息.setFont(new java.awt.Font(SansSerif, 0, 20); 设备信息.setText(设备信息查询); 设备信息.addActionListener(new Frame9_设备信息_ActionAdapter(this); 设备申请.setFont(new java.awt.Font(SansSerif, 0, 20); 设备申请.setText(设备申请); 设备申请.addActionListener(new Frame9_设备申请_actionAdapter(this); 申请登记.setFont(new java.awt.Font(SansSerif, 0, 20); 申请登记.setText(申请登记); 申请登记.addActionListener(new Frame9_申请登记_ActionAdapter(this); jLabel1.setFont(new java.awt.Font(SansSerif, 0, 40); jLabel1.setForeground(new Color(210, 0, 0); jLabel1.setHorizontalAlignment(SwingConstants.LEADING); jLabel1.setText(实验室管理系统); contentPane.setFont(new java.awt.Font(Dialog, 0, 11); contentPane.setForeground(Color.darkGray); jMenu2.setFont(new java.awt.Font(SansSerif, 0, 20); jMenu2.setFocusPainted(false); jMenu2.setText(维修记录); jMenuItem7.setFont(new java.awt.Font(SansSerif, 0, 20); jMenuItem7.setText(维修记录登记); jMenuItem7.addActionListener(new Frame9_jMenuItem7_actionAdapter(this); jMenu3.setFont(new java.awt.Font(SansSerif, 0, 20); jMenu3.setText(报废记录); jMenuItem8.setFont(new java.awt.Font(SansSerif, 0, 20); jMenuItem8.setText(设备报废登记); jMenuItem8.addActionListener(new Frame9_jMenuItem8_actionAdapter(this); 设备查询.addSeparator(); jMenuItem1.setFont(new java.awt.Font(SansSerif, 0, 20); jMenuItem1.setText(维修记录查询); jMenuItem1.addActionListener(new Frame9_jMenuItem1_actionAdapter(this); jMenuItem3.setFont(new java.awt.Font(SansSerif, 0, 20); jMenuItem3.setText(设备报废查询); jMenuItem3.addActionListener(new Frame9_jMenuItem3_actionAdapter(this); jLabel2.setFont(new java.awt.Font(SansSerif, 0, 40); jLabel2.setForeground(Color.red); jLabel2.setText(欢迎进入); jLabel3.setFont(new java.awt.Font(SansSerif, 0, 40); jLabel3.setForeground(Color.red); jLabel3.setText(实验室设备管理系统); jLabel4.setFont(new java.awt.Font(SansSerif, 0, 15); jLabel4.setForeground(Color.red); jLabel4.setText(交流:); jMenu5.setFont(new java.awt.Font(SansSerif, 0, 20); jMenu5.setText(退出系统); jMenuItem2.setFont(new java.awt.Font(SansSerif, 0, 20); jMenuItem2.setText(退出); jMenuItem2.addActionListener(new Frame9_jMenuItem2_actionAdapter(this); jMenuItem2.addItemListener(new Frame9_jMenuItem2_itemAdapter(this); 设备查询.add(设备信息); 设备查询.addSeparator(); 设备申请.addSeparator(); 设备申请.add(申请登记); 设备申请.addSeparator(); jMenuBar1.add(设备查询); jMenuBar1.add(设备申请); jMenuBar1.add(jMenu2); jMenuBar1.add(jMenu3); jMenuBar1.add(jMenu5); jMenu2.addSeparator(); jMenu2.add(jMenuItem7); jMenu2.addSeparator(); jMenu2.add(jMenuItem1); jMenu2.addSeparator(); jMenu3.addSeparator(); jMenu3.add(jMenuItem8); jMenu3.addSeparator(); jMenu3.add(jMenuItem3); jMenu3.addSeparator(); contentPane.add(jLabel1, new XYConstraints(175, 1, -1, -1); contentPane.add(jLabel3, new XYConstraints(150, 200, -1, -1); contentPane.add(jLabel2, new XYConstraints(50, 100, 163, 45); contentPane.add(jLabel4, new XYConstraints(180, 350, -1,-1); jMenu5.addSeparator(); jMenu5.add(jMenuItem2); jMenu5.addSeparator(); this.setJMenuBar(jMenuBar1); public void 设备信息_actionPerformed(ActionEvent e) try Frame2 Frame= new Frame2(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); public void 申请登记_actionPerformed(ActionEvent e) try Frame7 Frame= new Frame7(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); protected void processWindowEvent(WindowEvent e) cessWindowEvent(e); if (e.getID() = WindowEvent.WINDOW_CLOSING) 设备信息_actionPerformed(null); void shebei_actionPerformed(ActionEvent e) try catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem1_actionPerformed(ActionEvent e) try Frame4 Frame= new Frame4(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem3_actionPerformed(ActionEvent e) try Frame6 Frame= new Frame6(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem4_actionPerformed(ActionEvent e) try Frame3 Frame= new Frame3(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem5_actionPerformed(ActionEvent e) try Frame6 Frame= new Frame6(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem6_actionPerformed(ActionEvent e) try retur Frame= new retur(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem7_actionPerformed(ActionEvent e) try Frame3 Frame= new Frame3(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem8_actionPerformed(ActionEvent e) try Frame5 Frame= new Frame5(); Frame.show(); catch (Exception ew) System.out.println(ew.getMessage(); void jMenuItem2_itemStateChanged(ItemEvent e) System.exit(0); void jMenuItem2_actionPerformed(ActionEvent e) System.exit(0); void 设备申请_actionPerformed(ActionEvent e) class Frame9_设备信息_ActionAdapter implements ActionListener Frame9 adaptee; Frame9_设备信息_ActionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.设备信息_actionPerformed(e); class Frame9_申请登记_ActionAdapter implements ActionListener Frame9 adaptee; Frame9_申请登记_ActionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.申请登记_actionPerformed(e); class Frame9_jMenuItem5_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem5_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem5_actionPerformed(e); class Frame9_jMenuItem7_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem7_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem7_actionPerformed(e); class Frame9_jMenuItem8_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem8_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem8_actionPerformed(e); class Frame9_jMenuItem1_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem1_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem1_actionPerformed(e); class Frame9_jMenuItem3_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem3_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem3_actionPerformed(e); class Frame9_jMenuItem2_itemAdapter implements java.awt.event.ItemListener Frame9 adaptee; Frame9_jMenuItem2_itemAdapter(Frame9 adaptee) this.adaptee = adaptee; public void itemStateChanged(ItemEvent e) adaptee.jMenuItem2_itemStateChanged(e); class Frame9_jMenuItem2_actionAdapter implements java.awt.event.ActionListener Frame9 adaptee; Frame9_jMenuItem2_actionAdapter(Frame9 adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jMenuItem2_actio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 闭合性颅脑损伤个案护理
- 名著导读测试题及答案
- 审计学单元试题及答案
- 2024年广告设计规范与标准试题及答案
- 半城市化试题及答案
- 2022全国高考语文试题及答案
- 焦虑试题及答案填空题
- 2024年纺织品检验员复习资源整合试题及答案
- 助理广告师沟通技巧应用试题及答案
- 安全生产试题20题及答案
- 语法知识-2022-2023学年八年级语文上学期期中考前复习训练(解析版)
- 矿山生产管理培训课件
- 普及防癌知识宣传
- 高一数学组尖子生培养计划(修改)
- 医疗器械辐射安全管理的要求
- 自动按频率减负荷装置
- 【课件】时代与变革-为人生而艺术+课件高一上学期美术人美版(2019)必修美术鉴赏
- 6朗诵《唐诗里的中国》朗诵稿
- 博士生入学复试面试报告个人简历介绍(完美版)模板两篇
- 工业硅行业可行性研究报告
- 《小餐饮登记证》申请书
评论
0/150
提交评论