基于SSH选课系统

xiaoxiao2021-02-28  37

1.使用的工具:

JDK版本:JDK1.8

数据库:mysql

工具:使用idea基于maven的java web工程

前端:部分的boostrap(很少一部分)

后端:spring+strust+hibernate

2.实现的功能:

用户分为:管理员,教室,学生三个角色。

管理员:管理员可以对教室,课程,老师等与课程有关的实体进行增删改查。

教师:教师登录系统查看自己所教授课程的课表。

学生:学生可以登录系统进行选课和退课,学生可以查看自己的课表。

3.实现思路:

这是自己第一次用ssh写一个项目,如果说比较ssm来说,我觉得ssh的hibernate用的不是那么的方便。可能因为自己使用的不熟练有关吧。尤其当学生与课程进行多对多关联的时候我觉得好恶心,我使用的方法是,让关联的两个实体比如课程用多对多的关系联系起来,在数据库中hibernate会创建学生和课程的一个中间表,里面存放的是学生表的主键和课程表的主键。其他的就是对数据库的增删改查。当然在查询的时候也会发现一些问题,就是如何将两个实体在同一个jsp页面显示出来,自己也折腾了一小会,后来自己创建一个新类专门保存两个实体需要在页面上显示的信息。可能叫dto,可以去了解一下。项目一个比较难的地方我认为是课程表生成,当学生选修了这门课的时候,入门将它放在课表的合适的位置呢?这个可能要花点时间。

4.页面展示:

登录界面

选课界面

课程表界面

5.部分代码展示:

/** * 用户登录方法: * 管理员登录以后,角色为1 * 老师登录以后,角色为2 * 学生登录以后,角色为3 */ public String login() { //以a开头,说明登录用户是管理员,角色为1 if (username.startsWith("a")) { User loginUser = userService.login(username, password); //把登录用户添加到session中 ServletActionContext.getRequest().getSession().setAttribute("loginUser", loginUser); //把登录用户角色添加到session中 ServletActionContext.getRequest().getSession().setAttribute("role", 1); } //以t开头,说明登录用户是管理员,角色为2 else if (username.startsWith("t")) { Teacher loginTeacher = teacherService.login(username, password); ServletActionContext.getRequest().getSession().setAttribute("loginTeacher", loginTeacher); ServletActionContext.getRequest().getSession().setAttribute("role", 2); }else if (username.startsWith("s")){ Student loginStudent = studentService.login(username, password); ServletActionContext.getRequest().getSession().setAttribute("loginStudent", loginStudent); ServletActionContext.getRequest().getSession().setAttribute("role", 3); } return "success"; } @Entity @Table(name = "t_course") public class Course { private int id; private String name; private int credit; private int classHour; private String time; private String week; private Set<Teacher> teachers; private Set<Classroom> classrooms; private Set<Student> students; public Course() {} public Course(int id, String name, int credit, int classHour) { this.id = id; this.name = name; this.credit = credit; this.classHour = classHour; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCredit() { return credit; } public void setCredit(int credit) { this.credit = credit; } public int getClassHour() { return classHour; } public void setClassHour(int classHour) { this.classHour = classHour; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getWeek() { return week; } public void setWeek(String week) { this.week = week; } @ManyToMany(cascade = {CascadeType.ALL}) @JoinTable(name = "t_teacher_course", joinColumns = @JoinColumn(name = "COURSE_ID"), inverseJoinColumns = @JoinColumn(name = "TEACHER_ID")) public Set<Teacher> getTeachers() { return teachers; } public void setTeachers(Set<Teacher> teachers) { this.teachers = teachers; } @ManyToMany(cascade = {CascadeType.ALL}) @JoinTable(name = "t_classroom_course", joinColumns = @JoinColumn(name = "COURSE_ID"), inverseJoinColumns = @JoinColumn(name = "CLASSROOM_ID")) public Set<Classroom> getClassrooms() { return classrooms; } public void setClassrooms(Set<Classroom> classrooms) { this.classrooms = classrooms; } @ManyToMany(cascade = {CascadeType.ALL}) @JoinTable(name = "t_student_course", joinColumns = @JoinColumn(name = "COURSE_ID"), inverseJoinColumns = @JoinColumn(name = "STUDENT_ID")) public Set<Student> getStudents() { return students; } public void setStudents(Set<Student> students) { this.students = students; } @Override public String toString() { return "Course{" + "id=" + id + ", name='" + name + '\'' + ", credit=" + credit + ", classHour=" + classHour + ", time='" + time + '\'' + ", week='" + week + '\'' + ", teachers=" + teachers + ", classrooms=" + classrooms + '}'; } } public class BaseDao<T> implements IBaseDao<T> { @Autowired private SessionFactory sessionFactory; public Session openSession(){ return this.sessionFactory.getCurrentSession(); } private Class<?> clz; private Class<?> getClz() { if(clz == null) { clz = (Class<?>) ((ParameterizedType)this.getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } return clz; } public void add(T t) { openSession().save(t); } public void delete(T t) { openSession().delete(t); } public void update(T t) { openSession().update(t); } public T load(int id) { T t = (T) openSession().load(getClz(), id); return t; } public T get(int id) { T t = (T) openSession().get(getClz(), id); return t; } public List<T> list(String hql, Object[] args) { // TODO Auto-generated method stub Query query = openSession().createQuery(hql); if(args != null) { for(int i = 0; i < args.length; i++) { query.setParameter(i, args[i]); } } List<T> ts = query.list(); return ts; } } <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.objectFactory" value="spring"/> <package name="default" namespace="/" extends="struts-default" strict-method-invocation="false"> <!-- 基于通配符解决方案 --> <!-- 约定大于配置 --> <!-- 整合了Spring以后,action对象就是从Spring IOC容器中获取 --> <action name="*_*" class="{1}Action" method="{2}"> <result>/WEB-INF/jsp/{1}/{2}.jsp</result> <result name="redirect" type="redirect">/{1}_list.action</result> <result name="selectresult">/WEB-INF/jsp/student/selectresult.jsp</result> <result name="doresult">/WEB-INF/jsp/course/doresult.jsp</result> <result name="show">WEB-INF/jsp/{1}/show.jsp</result> </action> <!-- 登录 --> <action name="login" class="loginAction" method="login"> <result>/WEB-INF/jsp/main.jsp</result> </action> <!-- 顶部页面跳转 --> <action name="top" class="loginAction" method="top"> <result>/WEB-INF/jsp/top.jsp</result> </action> <!-- 左部页面跳转 --> <action name="left" class="loginAction" method="left"> <result name="left1">/WEB-INF/jsp/left1.jsp</result> <result name="left2">/WEB-INF/jsp/left2.jsp</result> <result name="left3">/WEB-INF/jsp/left3.jsp</result> </action> <!-- 主页面跳转 --> <action name="welcome" class="loginAction" method="welcome"> <result>/WEB-INF/jsp/welcome.jsp</result> </action> <!-- 退出系统跳转 --> <action name="logout" class="loginAction" method="logout"> <result>/login.jsp</result> </action> </package> </struts>

本人小白,代码还很粗糙,我会继续优化,15天之内附上优化的代码。需要原码请留言,我看到定及时发送。如果觉得对自己的学习有帮助,请点个赞,谢谢。

转载请注明原文地址: https://www.6miu.com/read-1700200.html

最新回复(0)