作者主页:源码空间站2022
简介: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;
}
}
如果也想学习本系统,下面领取。关注并回复:006ssh