Java项目:ssh实验室预约管理系统

该系统支持管理员、教师和学生三类用户进行实验室预约管理。管理员可管理用户和实验室信息,发布通知;教师能预约实验室,发布任务;学生则可预约实验室并上传实验报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

实验室预约管理系统

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;
6.是否Maven项目: 否;

技术栈:

1. 后端:Spring,springMvc,Structs,Hibernate
2. 前端:JSP+css+javascript+AJax

运行说明:

1. 使用Navicat或者其它工具,在MySQL数据库中创建数据库,数据库名称建议为laboratory(可自定义),导入lrms.sql;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中ApplicationContext.xml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ 登录

详细介绍

本系统的用户可以分为三种:管理员、教师、学生。以下针对三种用户分别描述其功能需求。
## 1.管理员功能需求描述
以下是管理员的功能需求:

(1) 登录:管理员在登录界面输入自己的账号密码(默认是:gly123)后,即可登录系统进行相关的操作。 

(2) 管理用户:管理员可以管理用户信息。查看用户、删除用户。 

(3) 重置密码 

(4) 发布公告:发布重要通知,用户登录系统之后即可看到公告列表。 

(5) 管理实验室:管理员可以管理实验室信息。新增、修改、删除(包括名称、地点、设备台数(即总人数)等)。 

备注:由于显示默认的排期表需要,id为1的实验室永久不可删除。 

(6) 查看实验室预约情况:管理员可以查看所有预约信息 如实验室是否被预约,被谁预约,预约时间,预约人数等。 

(7) 高级搜索:管理员输入搜索关键字(如实验室地点,预约区间,预约用户),即可查看详细的预约情况。 

(8) 查看排期表:选择某个实验室,可以查看其未来15天每天仍可被预约的人数。 

(9) 退出登录 
## 2.教师功能需求描述
以下是教师的功能需求:
备注:该系统用户不可以注册,只能由运维人员在数据库中添加用户,这样可以避免校外人士注册该系统造成不必要的资源浪费。
教师无需注册,系统默认与其他教学系统的数据库连接,默认用户名为教职工号,密码为“js123456”,教师第一次登陆之后重置密码可以保证用户权限。

(1) 登录:教师在初始界面输入职工号,密码,即可登录预约系统进行后续操作

(2) 重置密码

(3) 查看公告:登陆成功后在系统主界面可以查看管理员发布的所有公告,公告列按照创建时间倒序排列。

(4) 查看个人信息:教师可以查看个人信息(用户名、学院、专业等)

(5) 查看实验室列表:教师可以查看实验室的详细信息

(6) 预约:分为个人预约和课堂预约

个人预约:教师选择实验室,选择日期,选择时间区间,选择人数即可。此时最多可以预约10个位置,且该实验室剩余的位置还可以被其他学生预约,但是不能被课堂预约。

课堂预约:教师选择预约日期段,选择每周几,选择预约时间段、指定课堂、输入相应的描述信息即可完成预约。此时无论实验室是否被预约满,该时间段都不可以被再预约。

(7) 查看排期表:选择某个实验室,可以查看其未来15天每天仍可被预约的人数。

(8) 高级搜索:教师输入搜索关键字(如实验室地点,预约区间,选择预约类别,选择课堂),即可查看详细的预约情况。

(9) 管理预约信息:教师可以查看自己预约的信息、可取消预约 前提是预约日期是当天之后。
注:已经超出预约时间的预约信息不能删除

(10) 管理课堂信息:教师可以新增、修改、删除课堂信息。
注:该课堂若已经存在,不可再次添加。

(11) 导入导出学生名册:教师可以针对某一课堂导入导出学生名册,但是要按照固定的excel模板。

(12) 发布课堂任务:教师可以针对某一课堂发布任务,该课堂的学生可以看到该课堂作业通知信息

(13) 上传文件:教师可以上传实验资料等

(14) 查看学生作业:教师可以下载或者在线预览学生实验报告

(15) 评分和评价 

(16) 退出登录
## 3.学生功能需求描述
学生的功能需求主要包括以下几种:
备注:学生无需注册,系统默认与其他教学系统的数据库连接,默认用户名为学号,密码为“xs123456”,学生第一次登陆之后重置密码即可以保证用户权限。 

(1) 登录

(2) 重置密码:当学生忘记密码或者想要重置密码,可以重置自己的密码。

(3) 查看公告:登陆成功后在系统主界面可以查看管理员发布的所有公告,公告列按照创建时间倒序排列。

(4) 查看个人信息:学生可以查看个人信息(用户名、学院、专业等)

(5) 查看实验室列表:学生可以查看实验室的详细信息

(6) 预约:默认是个人预约,学生不能进行课堂预约
个人预约:学生选择实验室,选择日期,时间区间,选择人数即可。此时最多可以预约10个位置,且该实验室剩余的位置还可以被其他学生预约,但是不能被课堂预约。

(7) 查看排期表:选择某个实验室,可以查看其未来15天每天仍可被预约的人数。

(8) 管理预约信息:学生可以查看自己预约的信息、可取消预约 前提是预约日期是当天之后。
注:已经超出预约时间的预约信息不能删除
学生还可以查看所在课堂的预约信息,只能看到课堂名称、预约日期、预约区间,此时不能取消预约,只能由该课堂的教师取消预约。

(9) 高级搜索:学生输入搜索关键字(如实验室地点,预约区间,选择课堂),即可查看详细的预约情况。

(10) 查看课堂任务:若学生的课程A预约了实验室,则教师A发布课堂任务后,学生可以看到任务,若没有预约则看不到公告

(11) 上传实验报告:前提是课程A已预约实验室,可以上传文件并且可以写说明

(12) 下载实验报告:可以下载以及上传的实验报告

(13) 查看分数:每次上传作业之后,可以看到教师的评语和分数以及期末总的实验分数
 

(14) 退出登录

运行截图

 

 

 

 

 

 

 

 

相关代码 

CourseController

package controller;

import java.text.ParseException;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import other.ExecResult;
import entity.Course;
import service.CourseService;

@Controller
public class CourseController {
	@Autowired
	private CourseService courseService;

	@RequestMapping("courseList")
	public ModelAndView getAllCourse(int user_id){
		ModelAndView view=new ModelAndView("courseList");
		List<Course> courseList=courseService.getAllCourse(user_id);
		view.addObject("courseList",courseList);
		return view;
	}
	
	@RequestMapping("addCourse")
	@ResponseBody
	public ExecResult addCourse(Course course,HttpSession session) throws ParseException{
		ExecResult er=new ExecResult();
		int result=courseService.addCourse(course);
		if(result==3){
			er.setMsg("您已经有该课程,请勿重复添加!");
			er.setSuccess(false);
		}
		else{
			if(result>0){
				er.setMsg("添加成功");
				er.setSuccess(true);
			}
			else{
				er.setMsg("添加失败");
				er.setSuccess(false);
			}
		}
		return er;
		}
	
	
	@RequestMapping("getCourseById")
	public ModelAndView getCourseById(int course_id,HttpSession session){
		ModelAndView view=new ModelAndView("updateCourse");
		Course course=courseService.getCourseById(course_id);
		view.addObject("course",course);
		return view;
	}
	
	@RequestMapping("updateCourse")
	@ResponseBody
	public ExecResult updateCourse(Course course,HttpSession session){
		ExecResult er=new ExecResult();
		boolean isUpdate=courseService.updateCourse(course);
		if(isUpdate){
			er.setMsg("更新成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("更新失败");
			er.setSuccess(false);
		}
		return er;
	}
	
	@RequestMapping("deleteCourse")
	@ResponseBody
	public ExecResult deleteCourse(int course_id,HttpSession session){
		ExecResult er=new ExecResult();
		boolean isDel=courseService.deleteCourse(course_id);
		if(isDel){
			er.setMsg("删除成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("删除失败");
			er.setSuccess(false);
		}
		return er;
	}
}

LaboratoryController

package controller;


import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import other.ExecResult;
import entity.Laboratory;
import entity.User;
import service.LaboratoryService;

@Controller
public class LaboratoryController {
	
	@Autowired
	private LaboratoryService laboratoryService;

	@RequestMapping("addLab")
	@ResponseBody
	public ExecResult addLab(Laboratory laboratory,HttpSession session,HttpServletRequest request){
		ExecResult er=new ExecResult();
//		System.out.println("LaboratoryController - addLab");
//		System.out.println(request.getParameter("description"));
		int result=(int)laboratoryService.addLab(laboratory);
		if(result>0){
			er.setMsg("新增成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("新增失败");
			er.setSuccess(false);
		}
		return er;
	}	
	
	@RequestMapping("labList")
	public ModelAndView getAllLab(){
		ModelAndView view=new ModelAndView("labList");
		List<Laboratory> labList=laboratoryService.getAllLab();
		view.addObject("labList",labList);
		return view;
	}
	@RequestMapping("reserveLabList")
	public ModelAndView getreserveLabList(){
		ModelAndView view=new ModelAndView("reserveLabList");
		List<Laboratory> labList=laboratoryService.getAllLab();
		view.addObject("labList",labList);
		return view;
	}
	
	@RequestMapping("deleteLab")
	@ResponseBody
	public ExecResult deleteLab(Laboratory laboratory,HttpSession session){
		ExecResult er=new ExecResult();
		if(laboratory.getLab_id()==1){
			er.setMsg("该实验室被限制为永久不能删除!");
			er.setSuccess(false);
		}
		else{
			boolean isDel=laboratoryService.delLab(laboratory);
			if(isDel){
				er.setMsg("删除成功");
				er.setSuccess(true);
			}
			else{
				er.setMsg("删除失败");
				er.setSuccess(false);
			}
		}
		return er;
	}
	
	@RequestMapping("getLabById")
	public ModelAndView getLabById(Laboratory laboratory,HttpSession session){
		ModelAndView view=new ModelAndView("updateLab");
		Laboratory lab=laboratoryService.getLabById(laboratory);
		view.addObject("lab",lab);
		return view;
	}
	
	@RequestMapping("updateLab")
	@ResponseBody
	public ExecResult updateLab(Laboratory laboratory,HttpSession session){
		ExecResult er=new ExecResult();
		boolean isUpdate=laboratoryService.updateLab(laboratory);
		if(isUpdate){
			er.setMsg("更新成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("更新失败");
			er.setSuccess(false);
		}
		return er;
	}
	
	
	/*@RequestMapping("updateLab")
	@ResponseBody
	public ExecResult updateLab(User user,HttpSession session){
		ExecResult er=new ExecResult();
		boolean isupdate=userService.update(user);
		if(isupdate){
			er.setMsg("恭喜亲,你是第一个密码修改成功的人哟!");
			er.setSuccess(true);
		}
		else{
			er.setMsg("修改失败,亲,不要伤心,下次还可以修改");
			er.setSuccess(false);
		}
		return er;
	}*/
	
}

ReserveController

package controller;




import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import other.ExecResult;
import entity.Announcement;
import entity.Course;
import entity.Laboratory;
import entity.Reservation;
import entity.Term;
import entity.lab_reservation;
import entity.lab_schedule;
import entity.user_lab_reservation;
import service.LaboratoryService;
import service.ReserveLaboratoryService;
import service.UserService;

import org.apache.commons.lang.StringUtils;

@Controller
public class ReserveController {
	
	@Autowired
	private ReserveLaboratoryService reserveLaboratoryService;
	@Autowired
	private LaboratoryService laboratoryService;
	@Autowired
	private UserService userService;

	@RequestMapping("getLabReserveById")
	public ModelAndView getLabReserveById(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("reservation");
		int lab_id=Integer.parseInt(request.getParameter("lab_id"));
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		List<lab_reservation> lab_reservation_list=reserveLaboratoryService.getLab_reservations(lab_id);
		view.addObject("lab_reservation_list",lab_reservation_list);
		view.addObject("lab_id", lab_id);
		
		List<Term> termList=userService.getTermList();
		view.addObject("termList",termList);
		
		List<Course> courseList=userService.getCourseList(user_id);
		view.addObject("courseList",courseList);
		
		return view;
	}
	
	@RequestMapping("reserveLab")
	@ResponseBody
	public ExecResult reserveLab(HttpSession session,HttpServletRequest request) throws ParseException{
		ExecResult er=new ExecResult();
		System.out.println("LaboratoryController - addLab");
		Reservation reservation=new Reservation();
		
		if(StringUtils.isNotBlank(request.getParameter("course_id"))){
			reservation.setCourse_id(Integer.parseInt(request.getParameter("course_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("lab_id"))){
			reservation.setLab_id(Integer.parseInt(request.getParameter("lab_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_id"))){
			reservation.setUser_id(Integer.parseInt(request.getParameter("user_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reservation.setReserve_type(Integer.parseInt(request.getParameter("reserve_type")));
		}
		if(StringUtils.isNotBlank(request.getParameter("time_interval"))){
			reservation.setTime_interval(Integer.parseInt(request.getParameter("time_interval")));
		}
		if(StringUtils.isNotBlank(request.getParameter("weekday"))){
			reservation.setWeekday(Integer.parseInt(request.getParameter("weekday")));
		}
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
	    Date create_time = sdf.parse(request.getParameter("create_time"));
	    reservation.setCreate_time(create_time);
	    
	    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");  
	    if(Integer.parseInt(request.getParameter("reserve_type"))==1){
		    if(StringUtils.isNotBlank(request.getParameter("person_number"))){
				reservation.setPerson_number(Integer.parseInt(request.getParameter("person_number")));
			}
		    Date reserve_date =(Date)sdf1.parse(request.getParameter("reserve_date"));
		    reservation.setReserve_date(reserve_date);
	    }
	    else{
	    	if(StringUtils.isNotBlank(request.getParameter("person_number2"))){
				reservation.setPerson_number(Integer.parseInt(request.getParameter("person_number2")));
			}
		    Date reserve_date = sdf1.parse(request.getParameter("reserve_date2"));
		    reservation.setReserve_date(reserve_date);
	    }
		
		if(StringUtils.isNotBlank(request.getParameter("modify_time"))){
			Date modify_time = sdf.parse(request.getParameter("modify_time"));
			reservation.setModify_time(modify_time);
		}
		if(StringUtils.isNotBlank(request.getParameter("courseName"))){
			reservation.setCourseName(request.getParameter("courseName"));
		}
		if(StringUtils.isNotBlank(request.getParameter("description"))){
			reservation.setDescription(request.getParameter("description"));
		}
		
		int result=(int)reserveLaboratoryService.reserveLab(reservation);
		if(result>0){
			er.setMsg("恭喜您,预约成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("实验室可供预约人数不够");
			er.setSuccess(false);
		}
		return er;
	}	
	
	@RequestMapping("schedule_table")
	public ModelAndView schedule_table(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("schedule_table");
		int lab_id=Integer.parseInt(request.getParameter("lab_id"));
		List<lab_schedule> list=reserveLaboratoryService.getSchedule_table(lab_id);
		List<Laboratory> labList=laboratoryService.getAllLab();
		view.addObject("labList",labList);
		view.addObject("list",list);
		return view;
	}
	
	//显示某个用户所有预约信息列表
	@RequestMapping("reservationByUser")
	public ModelAndView reservationByUser(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("manage_reservation_info");
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		int user_type=Integer.parseInt(request.getParameter("user_type"));
		List<lab_reservation> list=reserveLaboratoryService.reservationByUser(user_id);
		view.addObject("list",list);
		
		if(user_type==2){//获得属于该学生所在课堂的预约信息
			List<lab_reservation> list2=reserveLaboratoryService.ReservationTeacherForStudent(user_id);
			view.addObject("list2",list2);
		}
		return view;
	}
	
	/*//显示某个用户某条预约信息,并显示在update_reservation页面中
	@RequestMapping("single_reservation_info")
	public ModelAndView single_reservation_info(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("update_reservation");
		int reserve_id=Integer.parseInt(request.getParameter("reserve_id"));
		lab_reservation lab_reservation=reserveLaboratoryService.single_reservation_info(reserve_id);
		view.addObject("lab_reservation",lab_reservation);
		return view;
	}*/
	
	
	@RequestMapping("deleteReservation")
	@ResponseBody
	public ExecResult deleteReservation(HttpSession session,HttpServletRequest request) {
		ExecResult er=new ExecResult();
		int reserve_id=Integer.parseInt(request.getParameter("reserve_id"));
		int result=(int)reserveLaboratoryService.deleteReservation(reserve_id);
		if(result>0){
			er.setMsg("恭喜您,成功取消预约");
			er.setSuccess(true);
		}
		else{
			er.setMsg("取消预约失败");
			er.setSuccess(false);
		}
		return er;
	}
	
	//课堂预约
	@RequestMapping("reserveLab2")
	@ResponseBody
	public ExecResult reserveLab2(HttpSession session,HttpServletRequest request) throws ParseException{
		ExecResult er=new ExecResult();
		int result=0;
		Reservation reservation=new Reservation();
		if(StringUtils.isNotBlank(request.getParameter("lab_id"))){
			reservation.setLab_id(Integer.parseInt(request.getParameter("lab_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_id"))){
			reservation.setUser_id(Integer.parseInt(request.getParameter("user_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reservation.setReserve_type(Integer.parseInt(request.getParameter("reserve_type")));
		}
		if(StringUtils.isNotBlank(request.getParameter("course_id"))){
			reservation.setCourse_id(Integer.parseInt(request.getParameter("course_id")));
		}
		if(StringUtils.isNotBlank(request.getParameter("time_interval"))){
			reservation.setTime_interval(Integer.parseInt(request.getParameter("time_interval")));
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
	    Date create_time = sdf.parse(request.getParameter("create_time"));
	    reservation.setCreate_time(create_time);
	    if(StringUtils.isNotBlank(request.getParameter("modify_time"))){
			Date modify_time = sdf.parse(request.getParameter("modify_time"));
			reservation.setModify_time(modify_time);
		}
	    if(StringUtils.isNotBlank(request.getParameter("description"))){
			reservation.setDescription(request.getParameter("description"));
	    }
	    
	    if(StringUtils.isNotBlank(request.getParameter("from"))&&StringUtils.isNotBlank(request.getParameter("end"))){
			String from=request.getParameter("from");
			String end=request.getParameter("end");
			int year1=Integer.parseInt(from.substring(0, 4));
			int month1=Integer.parseInt(from.substring(5, 7));
			int day1=Integer.parseInt(from.substring(8, 10));
			int year2=Integer.parseInt(end.substring(0, 4));
			int month2=Integer.parseInt(end.substring(5, 7));
			int day2=Integer.parseInt(end.substring(8, 10));
			if(StringUtils.isNotBlank(request.getParameter("weekday"))){
				int weekday=Integer.parseInt(request.getParameter("weekday"));
				Calendar calendar = new GregorianCalendar();//定义一个日历,变量作为年初
			   	Calendar calendarEnd = new GregorianCalendar();//定义一个日历,变量作为年末
			    calendar.set(Calendar.YEAR, year1);
			   	calendar.set(Calendar.MONTH, month1-1);
			   	calendar.set(Calendar.DAY_OF_MONTH, day1-1);//设置年初的日期为1月1日
			   	calendarEnd.set(Calendar.YEAR, year2);
			   	calendarEnd.set(Calendar.MONTH, month2-1);
			   	calendarEnd.set(Calendar.DAY_OF_MONTH, day2-1);//设置年末的日期为12月31日
			   	   
			   	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
			   	while(calendar.getTime().getTime()<=calendarEnd.getTime().getTime()){//用日期区间循环
				   	if(calendar.get(Calendar.DAY_OF_WEEK)==weekday+1){//判断如果为weekday时
				   		String date1=sf.format(calendar.getTime());
				   		Date date2=sf.parse(date1);
				   		reservation.setReserve_date(date2);
				   		reservation.setWeekday(weekday);
				   		result=reserveLaboratoryService.reserveLab(reservation);
				   	}
				   	calendar.add(Calendar.DAY_OF_MONTH, 1);//日期+1
			   	}
			}
		}
		if(result>0){
			er.setMsg("恭喜您,预约成功");
			er.setSuccess(true);
		}
		else{
			er.setMsg("实验室可供预约人数不够,请调整预约区间或课堂");
			er.setSuccess(false);
		}
		return er;
	}
	
	//高级搜索,根据用户、预约类别、预约期间等模糊搜索
	@RequestMapping("selectReservation")
	public ModelAndView selectReservation(HttpServletRequest request,HttpSession session){
		ModelAndView view=new ModelAndView("selectReservation");
		int user_type=0; 
		String user_name=null;
		int reserve_type=0;
		String from=null;
		String end=null;
		int user_id=Integer.parseInt(request.getParameter("user_id"));
		if(StringUtils.isNotBlank(request.getParameter("user_type"))){
			user_type=Integer.parseInt(request.getParameter("user_type"));
		}
		if(StringUtils.isNotBlank(request.getParameter("user_name"))){
			user_name=request.getParameter("user_name");
		}
		if(StringUtils.isNotBlank(request.getParameter("reserve_type"))){
			reserve_type=Integer.parseInt(request.getParameter("reserve_type"));
		}
		if(StringUtils.isNotBlank(request.getParameter("from"))){
			from=request.getParameter("from");
		}
		if(StringUtils.isNotBlank(request.getParameter("end"))){
			end=request.getParameter("end");
		}
		System.out.println("bjhed");
		List<user_lab_reservation> list=reserveLaboratoryService.selectReservation(user_id,user_type,user_name,reserve_type,from,end);
		view.addObject("list1",list);
		return view;
	}
	
}

如果也想学习本系统,下面领取。关注并回复:006ssh

软件名称:实验室仪器预约管理系统 软件版本号:2.9.8 软件类型:(国产) 软件语言:(中文) 软件属性:(安装版) 软件授权:(免费) 软件大小:(9500kb) 应用平台:(windwos,ios...) 联系方式:(QQ21398125) 官方网站:(www.25175.com) 官方下载连接:http://www.25175.com/UploadFile/1/Files/20150816/25175Release20150816225311-0922.rar 软件系列 :25175实验室仪器预约管理系统(v2.9.8) 开发公司: 慈溪市顺通网络技术有限公司 公司网址:http://www.shuntun.com 在线演示:http://saas.25175.com 更新时间:2015/8/7 在线下载:http://www.25175.com/UploadFile/1/Files/20150816/25175Release20150816225311-0922.rar 1.本套软件适合于人员在5000人以内的学校预约管理。没有复杂的操作,普通人员都很容易上手实践。并且在软件上不需要投入很多的人力培训进行操作。 2.推荐使用操作系统:win2008及以上 调试平台:IIS7.0及以上 推荐环境:asp.net4.5+sql2008 3.第一次使用务必请先注册,http://您的地址/MAA/login/Register.aspx ,请输入正确的信息并提交,就可以使用了,如果信息不正确或非法有可能无法使用。 兼容浏览器:IE8+ FireFox, Safari, Chrome, Opera and more. 官方网站:http://www.shuntun.com/ 程序演示:http://www.25175.com/ 软件视频:http://edu.25175.com 软件开发部:王工 开发 页面设计:25175 设计 简介: 该实验室在线预约系统,采用了BS架构开发,利用.NET技术和sqlserver数据库进行了系统的开发,系统是一款专业的实验室预约管理软件。灵活调度手段可以即时进行预订,并且自动通知和与会者确认。所有用户无需安装和繁琐的配置,因为我们的预约管理运行在服务器上.使用时所有要做的就是登录系统。 管理调度软件可以提高您预约的生产力和效率。对于学校来说,时间就是金钱 - 生产率的提高,可以促使节约更多的成本。 使用说明: 一,登陆。 普通学生/老师 注册审核通过后就可以预约。 填入用户名跟密码后进入下面 点击网上预约后进入下面 接下来选择你要预约的仪器,点击(我要预约),进入下面的页面 所有预约的列表 预约公告 二、管理员登录 管理员内部预约 仪器设置
基于java实验室网上预约系统设计与实现 技术:后端:java,前端:html+js+css 框架:springBoot SSM 运行工具:idea 数据库:mysql 源码:详见文章最后 1、    登录页面: 2、首页 3、用户管理  4、添加用户  5、角色管理  6、添加角色  7、编辑角色 8、预约管理  9、新增预约  10、数据统计 数据库脚本如下: CREATE TABLE `sys_user_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `role_id` VARCHAR(500) NULL DEFAULT NULL COMMENT '角色ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `user_name` VARCHAR(100) NOT NULL COMMENT '用户名', `status` VARCHAR(50) NOT NULL COMMENT '是否有效0:false\\\\\\\\1:true', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL, `password` VARCHAR(128) NOT NULL, `tenantcode` VARCHAR(50) NOT NULL, `diskId` VARCHAR(500) NULL DEFAULT NULL, `remarks` VARCHAR(500) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='系统用户表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=52 ; CREATE TABLE `sys_role_t` ( `role_id` INT(11) NOT NULL COMMENT '角色ID', `role_name` VARCHAR(200) NOT NULL COMMENT '权限名称', `status` INT(11) NOT NULL COMMENT '是否有效0:true\\\\1:false', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(100) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(100) NULL DEFAULT NULL ) COMMENT='系统角色表' COLLATE='utf8_general_ci' ENGINE=InnoDB ; CREATE TABLE `sys_menu_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `parent_id` VARCHAR(50) NOT NULL COMMENT '父节点ID', `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID', `menu_name` VARCHAR(200) NOT NULL COMMENT '菜单名称', `menu_url` VARCHAR(200) NULL DEFAULT NULL COMMENT '菜单URL', `status` INT(11) NOT NULL COMMENT '有效(0有效,1失效)', `create_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `create_by` VARCHAR(200) NULL DEFAULT NULL, `last_update_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `last_update_by` VARCHAR(200) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT='菜单表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=33 ; CREATE TABLE `client_manager_t` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '序列', `clientId` VARCHAR(50) NULL DEFAULT NULL COMMENT '客户编号', `clientName` VARCHAR(50) NULL DEFAULT NULL COMMENT '客户姓名', `address` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户住址', `source` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户所属公司', `sourceDate` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户发展时间', `status` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户级别', `clientNum` VARCHAR(200) NULL DEFAULT NULL COMMENT '拜访客户次数', `isTrue` VARCHAR(200) NULL DEFAULT NULL COMMENT '客户是否有效', PRIMARY KEY (`id`) ) COMMENT='客户人员信息表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=47 ;
传统的实验室管理方式,积累量大,易出错,在实验室开放方面,学生很难查看实验室的空闲时段,管理员也很难为学生预备实验条件。在选择实验课方面,总是以班级或者专业为单位进行排课,使得教学缺乏自主化,人性化,而且往往会师生之间相互不了解而产生的盲目教学等情况,影响学生、老师的积极性,从而影响实验教学的效果。所以,需要开发一套开放实验室实验预约系统来代替传统的管理方法。 开放实验室预约系统包含管理员放课子系统,老师排课子系统,学生选课子系统三块。在放课子系统中,管理员根据该学期的实际需要发放本学期的实验项目批次,同时管理员可以统计所有实验项目批次的选课情况。在排课子系统中,老师根据管理员发放的实验项目批次,确定实验的时间、地点、容纳人数等基本信息,同时老师可以查看自己排课情况。在选课子系统中,学生根据自己的实际情况和老师排课的基本情况来选择自己的实验项目批次,同时学生可以查询老师的信息,课程的信息和自己的课表。 系统采用B/S架构,符合操作简单,界面友好,灵活,实用,安全的要求,能够完成开放实验室预约管理的全过程。系统的最大特点就是打破了传统意义上的实验室管理方式,使得学生、老师在整个教学过程中更加自主,不断提高了两者的积极性,同时也提高了教与学的质量,提高了实验教学管理的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值