实验室设备管理系统.docx
实验室设备管理系统 实验室设备管理系统一、 需求分析3二、 概要设计5三、详细设计 13四 、调试分析37五、用户手册37六、 附录38一、需求分析1.1需求背景实验室设备管理系统是为了方便学校对实验室以及实验室里的设备进行管理而设计一款系统,它能在科学技术飞速发展的同时,使得我们的实验室紧跟时代得潮流,与科学技术紧接,更加的方便于大家的应用,更好得方便了老师合和学生们。 故提高学校实验室设备管理水平,更好的也更大的发挥了实验室仪器设备的功能,更加好的完善了学科的教学体系,提高了教学质量;与此同时也探索了新的实验方法和手段,完善完备了学科实验教材,使得实验室设备成为相对独立得教学实体。1.2课设要求a、能够对设备类型(2级)进行管理b、.能够对设备名称、数量、属性进行管理c、部分设备可能会由多个部件构成,能够对设备部件进行管理(*)d、能够对实验室进行管理e、能够对设备进行借还管理1.3功能需求(1) 实验室设备管理系统的用户分为:管理员,老师,学生。不同身份之间的用户具有不同的使用特权;(2) 管理员:管理员能够对设备类型(2级)、设备名称、数量、属性、设备部件、实验室、设备的行借还进行管理,是三个用户中权利最大的用户,对其管理的实验室及设备具有增、删、改的大权;(3) 老师:老师能够查看实验室以及其的设备,具有实验室设备的借还权利;(4) 学生:学生能够查看实验室以及其的设备,具有实验室设备的借还权利; 1.3.1 管理员功能的详述 管理员通过登录后进入管理员的主页面,主页面显示管理员具备的三大管理权利:设备管理、实验室管理、借还管理。a .设备管理分为物理设备管理、化学设备管理和软件设备管理,每个不同类型设备中又具有不同类型的设备,例如化学设备,化学设备又分为物理化学设备、分析化学设备,二级设备里具有不同的仪器,不同的仪器中有不同的设备部件,管理员可以进行增、删、改操作b.实验室管理中管理员可以查看实验室列表,可以对实验室进行增、删、改操作c.借还管理中管理员可以查看设备列表,可以进行借出归还操作,在借出时可以查询已借列表1.3.2 老师功能的详述老师通过自己的账号登陆老师的主页面 ,老师具备两大管理权利:实验室管理、借还管理a. 实验室管理中,老师只能查看实验室列表不具有更改等操作b. 借还管理中,老师可以进行借出归还操作,还可查询已借列表1.3.3 学生功能的详述学生通过自己的账号登陆学生的主页面 ,学生具备两大管理权利:实验室管理、借还管理a.实验室管理中,学生只能查看实验室列表不具有更改等操作b.借还管理中,学生可以进行借出归还操作,还可查询已借列表二、概要设计2.1 功能包图 实验室设备管理系统管理员模块教师模块学生模块设备管理实验室管理借还管理查看实验室借还设备查看实验室借还设备用户登录2.2系统主要模块的关系图 系统功能模块图如图所示: 实验室设计管理系统学生模块教师模块管理员模块a、学生模块 该模块为学生提供操作:学生可通过该模块所提供的功能进行查看实验室,借还实验设备如下图所示: 学生归还管理借出管理设备的借还查看实验室b、老师模块该模块为老师提供操作:老师可通过该模块所提供的功能进行查看实验室,借还实验设备如下图所示:老师归还管理借出管理设备的借还查看实验室c、管理员模块管理员该模块为管理员提供操作:管理员可通过该模块所提供的功能进行查看设备管理、实验室管理、借还实验设备。如下图所示:借还管理实验室管理设备管理归还管理借用管理实验室删除实验室修改实验室的增加设备删除设备修改设备增加2.3、数据库表 1. 学生信息表 2. 教师信息表 3.管理员信息表 4.分析化学表 5. 分析化学中分光光度仪表 6.实验室列表7.借出设备列表 (其余表见数据库)2.4 数据流图 (1)根据第一阶段的结果进行分析,抽象出应用领域中流动信息(信源和信宿)、存储信息、各种应用的定义以及他们间的联系。(2)用数据流图描述现行系统的逻辑模型,即信息流动和加工处理等详细情况。独立于系统的实现。(3)E-R图姓名编号 学生实体:密码学生电话年龄职位性别联系方式老师实体姓名编号密码年龄老师住址电话职位性别职位电话密码年龄管理员姓名编号住址性别管理员入库号分析化学:编号分析化学属性名称数量分光光度仪:入库号编号属性分光光度仪数量名称实验室:规模名称编号实验室地址用户类型借出的设备:名称数量借出的设备编号(其余ER图略)四、 详细设计1.系统功能概述及核心代码 a.三种选择,分别进入三个不同的主页面,以上为管理员的主页面。 核实管理员登录信息,跳转到管理员界面的核心代码: <% page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %><% page import=".URLEncoder" %><%String masname=request.getParameter("username");/获取管理员登陆网页的账号String maspassword=request.getParameter("password");/获取管理员登陆网页的密码if(masname="")|(maspassword="")%><script type="text/javascript">alert("用户名或密码不能为空!"); / /判断管理员登录页面的账号,密码不得为空 window.document.location.href="admin-login.jsp" /返回管理员登录界面</script><%elseString url="jdbc:sqlserver:/localhost:1433;DataBaseName=test" Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(url,"ylq", "11205201"); /连接数据库String sql = "select masname,maspassword from master where masname=? and maspassword=?"/数据库的查询语句PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,masname);pstmt.setString(2,maspassword);ResultSet rs = pstmt.executeQuery();if (rs.next() session.setAttribute("masname",masname);/建立管理员名称会话session.setAttribute("loginname",masname);response.sendRedirect("master-index.jsp");/信息核实就近入管理员主页面else%><script type="text/javascript">alert("用户名或密码错误!"); window.document.location.href="master-login.jsp" /登陆的用户名或密码错误,返回管理员登录界面</script><%rs.close();conn.close();pstmt.close();%>核实老师登录信息,跳转到老师用户界面: <% page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %><% page import=".URLEncoder" %><% String teaname=request.getParameter("username");/获取老师登陆网页的名称String teapassword=request.gerParameter("password");/获取老师登陆网页的密码if(teaname="")|(teapassword="")%><script type="text/javascript">alert("用户名或密码不能为空!"); /判断老师登录页面的名称,密码window.document.location.href="teacher-login.jsp" /返回老师登录界面 </script><%elseString url="jdbc:sqlserver:/localhost:1433;DataBaseName=test" Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(url,"ylq", "11205201");String sql = "select teaname,teapassword from teacher where teaname=? and teapassword=?"PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,teaname);pstmt.setString(2,teapassword);ResultSet rs = pstmt.executeQuery();if (rs.next() session.setAttribute("teaname",teaname);/建立老师编号会话session.setAttribute("loginname",teaname);response.sendRedirect("teacher-index.jsp");/信息核实就近入老师主页面else%><script type="text/javascript">alert("用户名或密码错误!"); window.document.location.href="teacher-login.jsp" /登陆的用户名或密码错误,返回老师登录界面 </script><%rs.close();conn.close();pstmt.close();%>核实学生登录信息,跳转到学生界面: <% page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %><% page import=".URLEncoder" %><% String stuname=request.getParameter("username");/获取学生登陆网页的名称String stupassword=request.gerParameter("password");/获取学生登陆网页的密码if(stuname="")|(stupassword="")%> <script type="text/javascript">alert("用户名或密码不能为空!"); /判断学生登录页面的账号,密码不得为空window.document.location.href="student-login.jsp" /返回学生登录界面 </script><%elseString url="jdbc:sqlserver:/localhost:1433;DataBaseName=test" Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(url,"ylq", "11205201");/连接数据库String sql = "select stuname,stupassword from student where stuname=? and stupassword=?"/建立查看数据库语句PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,stuname);pstmt.setString(2,stupassword);ResultSet rs = pstmt.executeQuery();if (rs.next() session.setAttribute("stuname",stuname);/建立学生编号会话session.setAttribute("loginname",stuname);response.sendRedirect("student-index.jsp");/信息核实就近入学生主界面else%><script type="text/javascript">alert("用户名或密码错误!"); window.document.location.href="student-login.jsp" /登陆的用户名或密码错误,返回学生登录界面</script><%rs.close();pstmt.close(); conn.close();%> <% request.setCharacterEncoding("GB2312");Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver:/localhost:1433;DatabaseName=test"Connection conn = DriverManager.getConnection(url, "ylq", "11205201");/建立数据库连接Statement stmt = conn.createStatement();String sql = "select * from fenxihuaxue "/建立查看数据库语句%><h3>分析化学设备</h3><table border="1" width="800" style="font-size:12px"><tr><th height="235" >编号</th> <th >仪器名称</th> <th >数量</th> <th >属性</th> <th >入库号</th> <th>操作</th> </tr>/建表显示分析化学设备的信息<%ResultSet rs = stmt.executeQuery(sql);while (rs.next() String fenname = rs.getString("fenname");/获取分析化学的编号%><tr> <td ><%=rs.getString("fenname")%></td>/获取并在表显示分析化学仪器的编号<td><%=rs.getString("fenmingcheng")%></td> /获取并在表显示分析化学仪器的名称 <td><%=rs.getString("fenno")%></td> /获取并在表显示分析化学仪器的数量 <td><%=rs.getString("feninformation")%></td>/获取并在表显示分析化学仪器的详细信息<td><%=rs.getString("fenrukuhao")%></td><td> /获取并在表显示分析化学仪器的入库号 <a href='fenxihuaxue-change.jsp?fenname=<%=fenname%>'>修改</a><br><br><a href='fenxihuaxue-delete.jsp?fenname=<%=fenname%>'>删除</a><br><br></td> </tr><%rs.close();stmt.close();conn.close(); /数据库连接关闭%></table><a href="fenxixiangqing.jsp">详情</a><br><br> <a href="fenxihuaxue-add.jsp">增加</a><br><br> <a href="master-index.jsp">返回</a></center> 分析化学仪器的增加的核心代码:<% request.setCharacterEncoding("GB2312");/转换字符成中文 String fengname=request.getParameter("fengname");/获取要增加的分析化学仪器编号String fengmingcheng=request.getParameter("fengmingcheng");/获取要增加的分析化学仪器名称String fengno=request.getParameter("fengno");/获取要增加的分析化学仪器数量String fenginformation=request.getParameter("fenginformation");/获取要增加的分析化学仪器详细信息String fengrukuhao=request.getParameter("fengrukuhao");/获取要增加的分析化学仪器入库号 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver:/localhost:1433;DatabaseName=test"Connection conn = DriverManager.getConnection(url, "ylq", "11205201"); /建立数据库的连接String sql="insert Fenguangguangduqi set fengmingcheng=?fengno=?,fenginformation=?,fengrukuhao=? where fengname=?" /新建数据库插入语句PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1,fengmingcheng); pstmt.setString(2,fengno); pstmt.setString(3,fenginformation); pstmt.setString(4,fengrukuhao); pstmt.setString(5,fengname); pstmt.executeUpdate(); /执行该语句 response.setHeader("refresh","2;URL=fenxixiangqing.jsp");/增加成功,自动跳转会查看界面pstmt.close();conn.close(); /数据库连接关闭%><h1>(*_*) 嘻嘻!恭喜成功咯!</h1>修改:<%page contentType="text/html;charset=GB2312"%><% page import="java.sql.*"%><% request.setCharacterEncoding("GB2312"); String hengname=request.getParameter("hengname"); /获取已更新的仪器编号String hengmingcheng=request.getParameter("hengmingcheng");/获取已更新的仪器名称 String hengno=request.getParameter("hengno");/获取已更新的仪器数量String henginformation=request.getParameter("henginformation");/获取已更新的仪器详细信息String hengrukuhao=request.getParameter("hengrukuhao");/获取已更新的仪器入库号Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver:/localhost:1433;DatabaseName=test"Connection conn = DriverManager.getConnection(url, "ylq", "11205201");/j建立数据库连接String sql = "update hengwenxiang set hengmingcheng=?,hengno=?,henginformation=?,hengrukuhao=? where hengname = ?"/建立数据库更新语句PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1,hengmingcheng); pstmt.setString(2,hengno); pstmt.setString(3,henginformation); pstmt.setString(4,hengrukuhao); pstmt.setString(5,hengname); pstmt.executeUpdate();/建立数据库更新语句response.setHeader("refresh","2;URL=wuhuaxiangqing.jsp");pstmt.close();conn.close();/关闭数据库连接%><h1>(*_*) 嘻嘻!恭喜成功咯!</h1>删除:<% String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"String DBURL="jdbc:sqlserver:/localhost:1433;DataBaseName=test" String DBUSER="ylq"String DBPASSWORD="11205201"Connection conn=null;PreparedStatement pstmt=null;String sql=null;%><%request.setCharacterEncoding("GB2312"); String fengname=request.getParameter("fengname");/获取要删除的仪器编号sql="delete from fenguangguangduqi where fengname=? " / 建立删除语句Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);/建立数据库连接 pstmt=conn.prepareStatement(sql);pstmt.setString(1,fengname); pstmt.execute();/执行删除语句 response.setHeader("refresh","2;URL=fenxixiangqing.jsp");pstmt.close();conn.close();/数据库连接关闭%><h1>(*_*) 嘻嘻!恭喜成功咯!</h1>3.实验室列表 <%page contentType="text/html;charset=GB2312"%><% page import="java.sql.*, java.text.SimpleDateFormat"%><% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver:/localhost:1433;DatabaseName=test"Connection conn = DriverManager.getConnection(url, "ylq", "11205201");/建立数据连接Statement stmt = conn.createStatement();String sql = "select * from lab "/建立题目的数据库查询语句%><h3>实验室列表</h3><table border="1" width="800" style="font-size:12px"><tr> <th height="235" >实验室名称</th> <th >编号</th<th >规模</th> <th >联系方式</th> <th >实验室地址</th> <th >用户</th> <th >实验室类型</th> <th >操作</th></tr>/建表显示实验室的具体信息<%ResultSet rs = stmt.executeQuery(sql);while (rs.next() String labname = rs.getString("labname");%><tr> <td ><%=rs.getString("labname")%></td>/获取并显示实验室编号<td><%=rs.getString("labno")%></td> /获取并显示实验室数量 <td ><%=rs.getString("labguimo")%></td> /获取并显示实验室规模 <td ><%=rs.getString("labcellphone")%></td> /获取并显示实验室管理员联系方式 <td ><%=rs.getString("labaddress")%></td> /获取并显示实验室地址 <td ><%=rs.getString("labuser")%></td> /获取并显示实验室使用者 <td ><%=rs.getString("labtype")%></td> /获取并显示实验室类型 <td width="80"><a href='lab-change.jsp?labname=<%=labname%>'>修改信息</a><br><br> <a href='lab-delete.jsp?labname=<%=labname%>'>删除</a><td><br><br> </t><%rs.close();stmt.close();conn.close();%></table> <a href="lab-add.jsp">增加</a></td><br><br> <a href="master-index.jsp">返回</a></center> <%page contentType="text/html;charset=GB2312"%><% page import="java.sql.*, java.text.SimpleDateFormat"%><%request.setCharacterEncoding("GB2312");String loginname=(String)session.getAttribute("loginname");/获取登录名String softname=request.getParameter("softname");/获取软件仪器编号session.setAttribute("jie_softname",softname);%><form action="software-jiechu-do.jsp"><h2><%=loginname%> ,hello</h2>software编号:<%=softname%><br>数量:<input type = "text" name="softno" /><br><input type = "submit" value="提交" /></form><%page contentType="text/html;charset=GB2312"%><% page import="java.sql.*"%><% request.setCharacterEncoding("GB2312"); String softname=(String)session.getAttribute("jie_softname");/获取软件仪器名称 String softno=request.getParameter("softno");/获取借出的数量String loginname=(String)session.getAttribute("loginname");/获取登录名Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver:/localhost:1433;DatabaseName=test"Connection conn = DriverManager.getConnection(url, "ylq", "11205201");/建立数据连接String sql = "insert into softjie(softno,softname,name) values (?,?,?) ;"/建立数据库增加语句PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,softno); pstmt.setString(2,softname); pstmt.setString(3,loginname); int rs= pstmt.executeUpdate();if(rs>0)%>借出成功!<a href="software-chakan.jsp">返回</a><% pstmt.close();conn.close();response.setHeader("refresh","2;URL=software-jiechuxianshi.jsp");%><h1>(*_*) 嘻嘻!恭喜成功咯!</h1><%page contentType="text/html;charset=GBK"%><% page