1、用学校现有的物力和人力资源开发该系统。可行性研究:为了全面分析该系统开发的可能性,建议进行大约2周的可行性研究。可行性研究成本不超过5000元。第二章 可行性研究2.1 系统建设目标在对系统初步调查的基础上就可以提出项目的开发目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。随着高校规模的扩大,实验室及仓库的增多,人工管理实验设备已变得过于低效,为了解决这一问题,高校实验室设备管理系统将实现设备管理的自动化。实验室设备管理系统将贯穿于设备从购进到报废的整个流程的管理过程,帮助管理员高效地管理整个高校的所有设备,并给上级领导提供一个审核监督管理的平台,提供整个实验室管理的效率,
2、使总体管理水平上升到一个新的高度。本系统能减少很多不必要的资源,消除了以前用冗余的纸张式管理,大节省了学校能源。2.2 可行性分析可行性分析是任何一个大型工程正式投入力量之前必须进行的一项工作。这对于保证资源的合理利用、避免浪费是一个十分重要的,也是项目一旦开始以后能顺利进行的必要保证。当系统的开发目标确定后,就可以从以下三方面对能否实现新系统目标进行可行性分析:1. 技术可行性技术可行性是指:根据现有的技术条件,能否达到所提出的要求;所需要的物理资源是否具备,能否得到。针对于本系统,本系统属于一个普通的MIS系统。在其组织关系上也未存在的很大的复杂性、繁琐性及不确定性,而且整个系统的技术构成
3、上来看,它还是属于一个简单的数据库应用类的系统。其基本操作还是对存在数据库进行添加、删除、查找、编辑等。所以就单纯的数据库应用来看,暂不存在太大的技术问题。并且本系统的开发我利用access作为本系统的数据库,把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。使用eclipse作为系统开发的开发环境,它作为一种现代的编程语言,提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。因此,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,
4、它在技术上是可行的。2. 经济可行性经济可行性分析要估计项目的成本和效益,分析项目经济上是否合理,并将费用与效益进行比较,看是否有利。首先,实验室设备管理系统地实现的硬件支持只是一台简单的计算机,如今的性能较好的计算机的价格已经十分低廉。而本系统的成功开发,将为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大的提高学校的工作效率。3. 运行可行性运行可行性是指所建立的信息系统能否在该企业实现,在当前的操作环境下能否很好的进行,即组织内外是否具备接受和使用新系统的条件。本
5、系统为一个普通的信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件;而且将来的操作界面简洁易操作,实验室设备管理人员无需培训即可很快学会如何进行操作。因此,本系统在运行上是可行的。4. 法律可行性整个系统由于是自行开发,自行使用,在开发过程中没有涉及合同、责任等与法律抵触的方面。因此,本系统在法律上是可行的。按上述四方面进行可行性分析、研究后,我们认为该项目是可行的。第三章 系统的需求分析3.1 实验室设备管理系统的需求陈述设备管理人员在实验室管理系统中完成对实验室设备的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动。新的学年,管理员首先根据学校的需求在
6、实验室设备管理系统中进行设备的查找。实验室设备管理系统需要具有以下的功能:3.2 使用结构化方法进行系统分析3.2.1系统功能建模流程详细说明:(1) 仓库管理员统计仓库中设备的库存量,找出库存量不足的设备,填写购买申请表,领导对此申请表进行审核,审核通过后,产生购买报表交给购买员。(2) 购买员将购买的设备及购买信息交给购买登记员,由他进行购买登记。购买登记员查询申请审核表,将设备分配到各仓库。(3) 仓库管理员对购买的设备进行入库登记,出库登记。(4) 实验室管理员负责对报废的设备进行报废登记并处理,找出要维修的设备填写维修申请表,领导对维修申请表进行审核,通过后产生维修报表交给维修员,维
7、修员将设备送交某一修理厂家进行维修。(5) 设备维修完后,交还原实验室,由实验室管理员进行维修登记。3.2.2 实验室设备管理系统的E-R图3.3 对系统进行面向对象分析3.3.1 系统用例模型1. 参与者列表 实验室设备管理员:检查整理设备并统计设备及申请购买设备。 2. 用例列表登录:用于验证用户权限。设备管理员:用于管理设备。(增加设备、删除设备、申请购买设备)上级领导:审核是否购买设备3. 用例图4. 用例规格说明设备入库优先级:高主要参与者:设备管理员其他关联人员:上级领导描述:该用例描述设备管理员在登录系统后,点击设备入库,完成设备的添加前置条件:上级领导同意购买设备触发条件:后置
8、条件:设备管理员输入设备信息时,形成设备添加表,并在操作记录中记录假设:设备管理员通过正常操作形成设备添加表3.3.2 系统对象模型1. 确定类与对象设备、设备管理员、上级领导、供应商2. 确定关联供应商供应设备、设备管理员管理设备、上级领导审核申请表、设备管理员向上级领导提出申请。3. 确定属性设备的属性有大小、颜色4. 确定服务设备管理员负责设备的一系列管理5. 系统类图第四章 系统的概要设计4.1 系统体系结构图本系统的软件体系结构图4.2 数据库设计实验室设备管理系统数据设计物理实现(1) 实体表【1】 用户表(UserInfo)字段类型备注uIdVarchar(15)用户名,主键uN
9、ame姓名uPasswd密码uPosition身份,主键【2】 仓库管理员表(StoreManagerInfo)sId仓库编号,外键约束于仓库表【3】实验室管理员表(LabManagerInfo)lId仓库编号,外键约束于实验室表【4】仓库表(StoreInfo)仓库编号,主键sName仓库名称sPlace所在校区【5】实验室表(LabInfo)实验室编号,主键lName实验室名称lPlace【5】设备表(EquipInfo)eId设备编号,主键eName设备名称eStandard规格型号eProCompany生产厂商eType设备类型【6】固定资产表(PropertyInfo)pId固定资产
10、编号,主键所属设备编号,外键约束于设备表所在实验室编号,外键约束于实验室表(2) 关系表【1】 入库登记表(InInfo)设备编号,主键,外键约束于设备表仓库编号,主键,外键约束于仓库表iDateDateTime入库时间,主键iNumint入库数量【2】出库登记表(OutInfo)实验室编号,主键,外键约束于实验室表出库时间,主键出库数量(3) 记录表【1】购买申请表(BuyApplyInfo)baId序列号,主键设备编号,外键约束于设备表smName申请人,外键约束于仓库管理员表baDate申请时间baNumInt申请数量【2】维修申请表(MaintainInfo)maId固定资产编号,外键
11、约束于固定资产表lmName申请人,外键约束于实验室管理员表maDate【3】购买登记表(BuyInfo)bIdbPriceMoney购买单价bDate购买时间bNum购买数量【4】维修记录表(MaintainInfo)mIdmDate维修时间【5】报废记录表(DiscardInfo)dIddDate报废时间【6】 购买审核表(BuyCheckInfo)bcId申请序列号,外键约束于购买申请表olName审核人,外键约束于上级领导表bcDate审核时间【7】维修审核表(MaintainCheckInfo)mcId申请序列号,外键约束于维修申请表mcDate第五章 系统的详细设计及其实现5.1登
12、录界面代码实现(部分)13package src;import java.awt.AlphaComposite;import java.awt.GradientPaint;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.Toolkit;import javax.swing.*;import java.awt.event.*;import java.awt.GridBagConstraints;impor
13、t java.awt.GridBagLayout;import java.text.SimpleDateFormat;import java.util.Date;public class Logo implements ActionListenerpublic static final String logoon = 登录;public static final String helpt = 帮助public static final String logooff =退出public static final String user = 用 户:public static final Stri
14、ng password = 密 码:private javax.swing.JTextField userText;private javax.swing.JPasswordField userpwd;private javax.swing.JPanel jp = new javax.swing.JPanel()public void paintComponent(Graphics g)super.paintComponent(g);if(!isOpaque()return;Graphics2D g2d = (Graphics2D) g;int width = getWidth();int h
15、eight = getHeight();GradientPaint gradientPaint = new GradientPaint(0,0,java.awt.Color.green,width/2,height/2,java.awt.Color.yellow,false);g2d.setComposite(opaque);g2d.setPaint(gradientPaint);g2d.fillRect(0, 0, width,height);g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_A
16、NTIALIAS_OFF);private javax.swing.JButton logoin = null;private JFrame logo_Frame = new JFrame(logoon);public Logo()tryUIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName();catch(Exception exe)System.err.print(exe.getMessage();JFrame.setDefaultLookAndFeelDecorated(true);Toolkit t
17、ools = logo_Frame.getToolkit();Image logo = tools.getImage(res/logo.jpg);logo_Frame = new JFrame(logoon);logo_Frame.setIconImage(logo);jp.setLayout(new GridBagLayout();jp.setBackground(java.awt.Color.pink);javax.swing.ImageIcon pic = new javax.swing.ImageIcon(res/logo1.jpgjavax.swing.JLabel picture
18、= new javax.swing.JLabel(pic);setupComponent(picture,0,0,GridBagConstraints.ABOVE_BASELINE_LEADING,1,true);javax.swing.JLabel users = new javax.swing.JLabel(user);setupComponent(users,0,1,1,1,false);javax.swing.JLabel pas = new javax.swing.JLabel(password);setupComponent(pas,0,2,1,1,false);userText
19、= new javax.swing.JTextField(12);userText.requestFocus();userText.addKeyListener(new KeyListener()public void keyTyped(KeyEvent e)public void keyReleased(KeyEvent e)public void keyPressed(KeyEvent e)if(e.getKeyChar() = KeyEvent.VK_ENTER )&(userText.getText().trim() != )userpwd.requestFocus(););setup
20、Component(userText,1,1,1,1,false);userpwd = new javax.swing.JPasswordField(12);userpwd.addKeyListener(new KeyListener()if(e.getKeyChar() = KeyEvent.VK_ENTER) & (userpwd.getText().trim() !logoin.requestFocus();elsepublic void keyReleased(KeyEvent e)userText.setFocusable(true);int height = (int)(d.get
21、Height()-240)/2;logo_Frame.add(jp);logo_Frame.setAlwaysOnTop(true);logo_Frame.setLocation(width, height);logo_Frame.setSize(350, 240);logo_Frame.pack();logo_Frame.validate();logo_Frame.setVisible(true);public void actionPerformed(ActionEvent e)public static void main(String args) / TODO 自动生成方法存根new
22、Logo();public void setupComponent(JComponent component,int gridx,int gridy,int gridwidth,int ipadx,boolean fill)final GridBagConstraints gridBagConstrains = new GridBagConstraints();gridBagConstrains.gridx = gridx;gridBagConstrains.gridy = gridy;gridBagConstrains.insets = new java.awt.Insets(5,3,3,3);if(gridwidth1)gridBagConstrains.gridwidth = gridwidth;if(ipadx 0)gridBagConstrains.ipadx = ipadx;if(fill)gridBagConstrains.fill = GridBagConstraints.HORIZONTAL;jp.add(component,gridBagConstrains);5.2主菜单界面 import java.awt.*;public class My_MainFrame private final stati