基于SSH选课系统

1.使用的工具:

JDK版本:JDK1.8

数据库:mysql

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

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

后端:spring+strust+hibernate

2.实现的功能:

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

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

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

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

3.实现思路:

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

4.页面展示:

登录界面

基于SSH选课系统_第1张图片

选课界面

基于SSH选课系统_第2张图片

课程表界面

基于SSH选课系统_第3张图片

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 teachers;

    private Set classrooms;

    private Set 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 getTeachers() {
        return teachers;
    }

    public void setTeachers(Set 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 getClassrooms() {
        return classrooms;
    }

    public void setClassrooms(Set 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 getStudents() {
        return students;
    }

    public void setStudents(Set 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 implements IBaseDao {

    @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 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 ts = query.list();
        return ts;
    }
}




    
    
        
        
        
        
            /WEB-INF/jsp/{1}/{2}.jsp
            /{1}_list.action
            /WEB-INF/jsp/student/selectresult.jsp
            /WEB-INF/jsp/course/doresult.jsp
            WEB-INF/jsp/{1}/show.jsp
        
        
        
            /WEB-INF/jsp/main.jsp
        
        
        
            /WEB-INF/jsp/top.jsp
        
        
        
            /WEB-INF/jsp/left1.jsp
            /WEB-INF/jsp/left2.jsp
            /WEB-INF/jsp/left3.jsp
        
        
        
            /WEB-INF/jsp/welcome.jsp
        
        
        
            /login.jsp
        
    


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


你可能感兴趣的:(IntelliJ,idea,java,框架,前端,ssm/ssh项目实战)