项目背景
当今时代,信息时代的发展非常迅速。学校教育教学快速发展离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境.计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。因此,通过实验室设备管理系统的开发,利用电脑快速的数据处理能和管理能力,来对学校的全部实验室设备进行统一信息化管理非常必须要。通过分析,本次系统的开发主要是针对实验室设备管理进行开发,主要使用用JAVA来进行代码的实现和Mysql进行数据库的设计。
功能设计
功能模块图
角色模块权限介绍
超级管理员
通知模块:
该模块是实验管理员发布通知公告的地方,具体包括新增通知公告、删除通知公告。
预约和借用模块:
这是两个模块,而其设计思想大致相同,借用记录管理模块主要是对借用的设备仪器进行记录,其包括借用人、借用时间、归还时间和审核。借用设备需要管理员的审核,管理员审核通过方可借出,否则不能借出。实验室预约记录管理模块面向教师。教师登录系统后,在该实验室预约模块对实验室的信息进行查询和预约,然后通过管理员的确认从而实现对实验室的使用,当实验室已经被预约后,处于该实验室的设备变为不可借用状态。
(1)查看当前的实验室预约和设备借用,并进行审核,审核通过后,设备和实验室的状态变为借出状态
(2)设备和实验室使用完毕后,进行归还,归还确认后。设备和实验变为可借用状态。
实验室模块:
该模块的主要内容包括两个部分即实验室的添加和实验室信息管理。实验室信息管理对实验室的情况进行说明,并在界面上显示出该实验室是否被预约或使用。方便教师用户对实验室预约
(1)显示当前所有实验室,以及实验所处状态
(2)增、删、改实验室信息 包括:实验室名称、负责人、具体地点、实验室说明
设备信息模块
该模块面向管理员,包括五个部分:技术参数管理、运行数据管理、设备位置管理、设备用途管理以及电子文档管理。
技术参数管理,对实验室新购置设备的技术参数进行查看、新增、修改和删除,设备技术参数包括设备型号、设备价格、设备制造商、、设备序列号
运行数据管理,对实验室新购置设备的运行数据进行增、删、查、该等操作,设备的运行数据具体包括服务开始时间、供应商合同(合同为doc文件,在数据导出excel时不显示)
设备位置管理,对实验室新购置设备的所处位置位置数据进行添加、修改和删除操作。位置(所在实验室名称)
设备用途管理,对实验设备的用途数据进行管理,在使用设备时,只要通过设备用途说明,即可知道该设备是否是自己所需的设备。(相当于一个添加一个备注)
电子文档管理,在该模块中,可以添加、修改、删除、查看的设备的电子文档,具体内容包括设备图纸、安装说明书、设备相关图片等。电子文档(格式为doc文件,和供应商合同一样)
用户模块:
用户注册审核功能、对学生和教师信息修改的功能、用户删除功、用户查找功能。
用户在登陆界面进行注册,填入系统要求的信息。该信息在这个模块显示,管理员对用户的信息进行查看,如果符合要求则审核通过,用户方可以登陆该系统进行操作。否则用户注册失败,无法登陆该系统进行操作。当学生毕业后或者老师离校后,可以通过该模块删除该用户。
设备维修模块:
在该模块中,可以根据已经添加到系统中的设备信息,将设备进行维修登记
(1)设备状态变为维修状态,无法进行借用操作
(2)已经维修好的设备,恢复可借用
设备数据统计模块:
在该模块中,支持设备数据的统计功能,能根据数据生成相应的报表,支持数据的输出和打印。具体为:
网页中的数据直接生成EXCL表格。
数据包括:
设备数据、维修数据、设备借用数据
功能截图
相关代码
数据库配置
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/laboratory?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = 123456
jdbc.database=cms
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=error, stdout
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=error
### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
控制层(Action)
package com.xznu.edu.leave.action;
/**
* 和登陆有关的都在这里
*/
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.xznu.edu.leave.model.Role;
import com.xznu.edu.leave.model.User;
import com.xznu.edu.leave.service.RoleService;
import com.xznu.edu.leave.service.UserService;
import com.xznu.edu.leave.utils.JsonUtils;
import com.xznu.edu.leave.utils.UserUtils;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Controller("loginAction")
@Scope("prototype")
public class LoginAction extends ActionSupport {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
private User user;
private Map<String, Object> map = new HashMap();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
/**
* 用户登陆
* @return
*/
public void index() throws IOException {
User user1 = userService.getUser(user);
if (user1 != null){
if (user1.getIsSh() == 1){
if (user1.getRole().getEnName().equals("admin")){
ActionContext.getContext().getSession().put("user", user1);
}
if (user1.getRole().getEnName().equals("js")){
ActionContext.getContext().getSession().put("user1", user1);
}
if (user1.getRole().getEnName().equals("xs")){
ActionContext.getContext().getSession().put("user2", user1);
}
map.put("flag", 1);
map.put("url", "login_indexs.do");
map.put("id", user1.getId());
JsonUtils.toJson(map);
} else {
map.put("flag", 2);
JsonUtils.toJson(map);
}
} else {
map.put("flag", 3);
JsonUtils.toJson(map);
}
}
public String indexs() throws IOException {
User u = UserUtils.getUser();
if (u != null){
ActionContext.getContext().put("user", u);
String ss = u.getRole().getEnName();
ActionContext.getContext().put("role", u.getRole().getEnName());
}
return SUCCESS;
}
//登陆页面
public String login() {
return SUCCESS;
}
//退出
public String tuichu() {
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.remove("userName");
session.remove("userId");
return "login";
}
}
业务层(Service)
package com.xznu.edu.leave.service;
import com.xznu.edu.leave.model.User;
import com.xznu.edu.leave.utils.Pager;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import java.util.List;
public interface UserService extends BaseService<User> {
User getUser(User user);
Pager<User> getList(User user);
List<User> getListAdmin();
User findById(Integer id);
}
控制层(Dao)
package com.xznu.edu.leave.dao;
import com.xznu.edu.leave.base.dao.BaseDao;
import com.xznu.edu.leave.model.User;
import com.xznu.edu.leave.utils.Pager;
import java.util.List;
public interface UserDao extends BaseDao<User> {
User getUser(User user);
Pager<User> getList(User user);
User findById(Integer id);
List<User> getListAdmin();
}