本科实验报告课程名称:软件工程实验项目:实验设备管理系统实验地点:致远楼专业班级:学号:学生姓名:指导教师:2014年5 月一、实验目的和要求随着高校规模的扩大,实验室及仓库的增多,人工管理实验设备已变得过于低效,为了解决这一问题,高校实验室设备管理系统将实现设备管理的自动化。
实验室设备管理系统将贯穿于设备从购进到报废的整个流程的管理过程,帮助管理员高效地管理整个高校的所有设备,并给上级领导提供一个审核监督管理的平台。
二、实验内容和原理实验内容1.系统简介某大学每学年都需要对实验室设备使用情况进行统计、更新。
其中:(1)对于已彻底损坏的实验设备做报废处理,同时详细记录有关信息。
(2)对于有严重问题(故障)的需要及时修理,并记录修理日期、设备名、编号、修理厂家、修理费用、责任人等。
(3)对于急需使用但实验室目前又缺乏的设备,需以“申请表”的形式送交上级领导请求批准购买。
新设备购入后要立即进行设备登记(包括类别、设备名、编号、型号、规格、单价、数量、购置日期、生产厂家、保质期和经办人等信息),同时更新申请表的内容。
(4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段等条件进行查询。
2.技术要求及限制条件(1)所有工作由专门人员负责完成,其他人不得任意使用。
(2)每件设备在做入库登记时均由系统按类别加自动顺序号编号,形成设备号;设备报废时要及时修改相应的设备记录,且有领导认可。
(3)本系统的数据存储至少包括:设备记录、修理记录、报废记录、申请购买记录。
(4)本系统的输入项至少包括:新设备信息、修理信息、申请购买信息、具体查询统计要求。
(5)本系统的输出项至少包括:设备购买申请表、修理/报废设备资金统计表。
实验需求分析1引言1.1 编写目的:本实验室设备管理系统在可行性研究的基础上,是为了进一步明确实验室设备管理系统的软件需求,目的是让读者能够了解本系统的开发目的,开发方法,以及目前的硬件和软件的情况和开发所需要资金和设备,概要设计说明书和完成后续设计与开发工作将在此基础上进一步提出。
预期的读者包括上级领导,相关开发人员以及管理人员。
1.2 背景开发软件名称:实验室设备管理系统。
项目任务提出者:太原理工大学工程实验室项目开发者:任丽媛、高彩凤、曹紫媛、崔妍雯、谢一轩用户:太原理工大学实验室1.3参考资料1 《软件工程》李爱萍人民邮电出版社2 实验室设备管理系统可行性研究报告2任务概述2.1目标2.1.1开发意图使教学办公室对实验室的管理更方便。
减轻管理人员的工作负担。
2.1.2应用目标通过本系统软件,能帮助管理人员利用计算机,快速方便的对实验室设备进行更新和管理。
2.1.3作用及范围本软件适用于各个中小型实验室,是比较完善的系统管理软件。
2.2运行环境Windows 2000以上2.3假定与约束建议软件寿命:5年硬件条件:pc机数据库:SQL Server 20003数据描述 3.1系统数据流图: 顶层数据流图:管理人员维修人员实验室管理系统领导数据库查询修理/报废设备修理情况输入申请购买设备新设备录入0层数据流图:1 修理处理2 查询处理3 报废处理4 申请报告实验设备数据库报表申请领导数据字典名字:维修报表别名:维修信息描述:每天一次送给管理员的需要维修的设备的信息表定义:购置报表=设备编号+设备名称+维修师+次要维修师位置:输出到打印机名字:设备信息别名:设备编号描述:唯一的标识实验室中一种设备的关键域定义:设备信息=设备编号+设备名称+型号+类别/设备编号位置:购置报表购置信息维修报表维修信息名字:购置数量别名:描述:每一种设备一次购买的数量定义:购置数量={数字}位置:购置报表购置信息名字:损坏数量别名:描述:每一种设备都会出现损坏无法修好定义:损坏数量={数字}位置:损坏报表损坏信息数据流条目:1.查询信息输入:合法人员对设备的查询操作输出:设备信息描述:查询信息=设备号+修理记录+报废记录+申请购买记录2.维修信息输入:所需维修设备的信息输出:确定维修设备的记录描述:维修信息=设备名+编号+修理日期+修理人员+修理费用+修理厂家3.新设备输入:购置设备的信息输出:确定购置的新设备的记录名字:维修数量别名:描述:每一种设备一次要维修的台数定义:维修数量={数字}位置:维修报表维修信息描述:新设备=类别+编号+设备名+型号+规格+单价+数量+购买日期+生产厂家+保质期+经办人4.损坏设备输入:已损坏的设备的信息输出:已损坏的设备记录描述:损坏设备=损坏日期+设备编号+设备名+型号文件条目1设备基本信息表输入:统计查询数据结构:类别+设备名称+设备编号+型号等2维修记录表输入:统计查询,维修输出:统计查询数据结构:设备名称+维修师傅+维修日期+维修费用等3新设备表输入:统计查询,购置输出:统计查询数据结构:设备名称+设备编号+型号+价格+数量等4申请表输入:统计查询,产成报表输出:统计查询,生成报表,购置/维修数据结构:设备名称+设备编号+型号+数量等5损坏记录表输入:统计查询,已损坏输出:统计查询数据结构:设备名称+设备编号+型号等三、主要仪器设备硬件:Thinkpad s420 处理器:core i5软件:windows 2000以上操作系统版本Sql serverEclipse开发工具四、操作方法与实验步骤概要设计系统整体功能层次图实验室设备管理系统系统管理员实验室管理员仓库管理员用户管理数据库管理购买登记员上级领导用户添加用户删除数据库备份数据库还原设备入库设备出库购买申请库存量统计设备报废维修申请维修登记设备数量统计购买登记申请表查询购买审核维修审核管理系统中模块的详细设计主函数流程图各功能模块 1 输入模块2 追加模块3 修改模块显示一系列功能选项NY根据n 的值调用各功能模块函数结束输入n,判断n 是否4 统计模块5 搜索模块详细设计设备入库模块java代码设计package com.niit.gui_event;import java.awt.BorderLayout;import java.awt.Cursor;import javax.swing.*;import java.awt.*;import com.niit.logical.*;import java.awt.event.*;import java.sql.Date;import com.niit.data.*;public class EquipIn extends JPanel {/****/private static final long serialVersionUID = 1L;private JLabel leId, lsId, liNum, lPara;private JTextField tfiNum;private JComboBox cbeId, cbsId;private JButton bIn, bAgain, bDelete;private JPanel pUp, pDown;private JScrollPane jsp;private JTable t;private StoreManager sma;private InData inInfo;public EquipIn() {super(new BorderLayout());// 设置布局管理器// 控件初始化leId = new JLabel("设备编号");lsId = new JLabel("仓库编号");liNum = new JLabel("入库数量");lPara = new JLabel("参数设置");lPara.setForeground(Color.RED);tfiNum = new JTextField();tfiNum.setColumns(10);bIn = new JButton("入库");bAgain = new JButton("重置");bDelete = new JButton("删除");pUp = new JPanel();pDown = new JPanel();sma = new StoreManager();inInfo = new InData();String[] eId = sma.geteId();String[] sId = sma.getsIdAll();cbeId = new JComboBox(eId);cbsId = new JComboBox(sId);String[] head = new String[] { "设备编号", "仓库编号", "入库时间", "入库数量" };Object[][] data = sma.getInAll();t = new JTable(data, head);t.setRowHeight(25);jsp = new JScrollPane(t);// 添加控件pUp.add(leId);pUp.add(cbeId);pUp.add(lsId);pUp.add(cbsId);pUp.add(liNum);pUp.add(tfiNum);pUp.add(bIn);pUp.add(bAgain);pUp.add(lPara);pDown.add(bDelete);add(pUp, BorderLayout.NORTH);add(jsp, BorderLayout.CENTER);add(pDown, BorderLayout.SOUTH);// 添加监听器bIn.addActionListener(new ListenButton());bAgain.addActionListener(new ListenButton());bDelete.addActionListener(new ListenButton());lPara.addMouseListener(new ListenMouse());}// 定义按钮处理器class ListenButton implements ActionListener {public void actionPerformed(ActionEvent e) {if (e.getSource() == bIn) {// 点击入库按钮inInfo.seteId(cbeId.getSelectedItem().toString());inInfo.setsId(cbsId.getSelectedItem().toString());inInfo.setDate(newDate(System.currentTimeMillis()));inInfo.setNum(new Integer(tfiNum.getText()));sma.add(inInfo);bAgain.doClick();} else if (e.getSource() == bAgain) {// 点击重置按钮tfiNum.setText(null);} else if (e.getSource() == bDelete) {// 点击删除按钮int selectedIndex = -1;for (int i = 0; i < t.getRowCount(); i++) {if (t.isRowSelected(i) == true)selectedIndex = i;}if (selectedIndex == -1) {JOptionPane.showMessageDialog(null, "请先选择某一项!");return;} else {int option = JOptionPane.showConfirmDialog(null, "是否确定删除?","提示",JOptionPane.YES_NO_CANCEL_OPTION);if (option == JOptionPane.YES_OPTION) {inInfo.seteId((String)t.getValueAt(selectedIndex, 0));inInfo.setsId((String)t.getValueAt(selectedIndex, 1));inInfo.setDate((Date)t.getValueAt(selectedIndex, 2));sma.delete(inInfo);}}}// 刷新数据表remove(jsp);String[] head = new String[] { "设备编号", "仓库编号", "入库时间", "入库数量" };Object[][] data = sma.getInAll();t = new JTable(data, head);t.setRowHeight(25);t.validate();jsp = new JScrollPane(t);add(jsp, BorderLayout.CENTER);validate();}}// 定义鼠标处理器class ListenMouse extends MouseAdapter {public void mouseEntered(MouseEvent e) {lPara.setCursor(new Cursor(Cursor.HAND_CURSOR));}public void mousePressed(MouseEvent e) {new ParameterSet();}}}六、实验结果与分析利用所编代码,编出实验设备管理系统的设备入库模块,查询有关数据库的知识,得出以下界面。