基于SSH的学生选课系统设计与实现

发布于:2022-12-07 ⋅ 阅读:(286) ⋅ 点赞:(0)

1 需求分析 1
1.1需求概述 1
1.2 用例分析与描述 2
1.2.1 用例分析 2
1.2.1 用例描述 2
1.4 参考文献 6
2 系统设计 6
2.1 多层结构设计 6
2.2 问题域设计 6
2.2.1 域模型设计 6
2.2.2 Service接口设计 7
2.3 持久化设计 7
2.3.1 数据库设计 7
2.3.2 数据访问设计 11
2.4 界面设计 11
2.4.1 页面链接关系 11
2.4.2 页面设计 12
3 系统实现 14
3.1 系统开发环境 14
3.2 表达层 14
3.3 业务层 15
3.4 持久化层 15
1 需求分析
1.1需求概述
学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的査询手段。

1.2 用例分析与描述
1.2.1 用例分析
本学生选课系统需要满足来自四方面的需求,这三个方面分别是学生、教师、教务和机房。
学生的需求是査询课程,查询课表,查询成绩;
教师对选课系统学生选课情况进行操作,提交开课信息,申请实验,成绩录入;
教务需要审核开课信息,审核选课信息,安排授课时间、地点。
机房需要管理机房信息、安排实验。
2 系统设计
2.1 方案比选
spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。
spring mvc
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令

spring data jpa
自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择。它一改之前 EJB 2.x 中实体 Bean 笨重且难以使用的形象,充分吸收了在开源社区已经相对成熟的 ORM 思想。另外,它并不依赖于 EJB 容器,可以作为一个独立的持久层技术而存在。本文转载自http://www.biyezuopin.vip/onews.asp?id=14924目前比较成熟的 JPA 框架主要包括 Jboss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache 的 OpenJPA 等。

方案1
ssh spring+spring mvc+ hibernate(spring data jpa)

SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。区别于 Secure Shell 。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。

方案2
ssm spring+spring mvc +mybatis
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

我们选择方案1,因为ssh的方法可以使用spring data jpa 封装的hibernate ,非常便与使用,只需要实现jpa提供的JpaRepertory 即可,非常的简单便捷,不需要自己写出sql语句,相比mybatis更快速,可以专心完成自己的业务逻辑。

package com.wxm.pt;

import com.wxm.pt.dao.*;
import com.wxm.pt.entity.*;
import com.wxm.pt.service.CourseService;
import com.wxm.pt.service.ProfessorService;
import com.wxm.pt.service.StudentService;
import com.wxm.pt.service.StudyProgramService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.sql.Time;
import java.util.ArrayList;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Exc4ApplicationTests {
    @Autowired
    private StudentDao studentDao;
    @Autowired
    private CollegeDao collegeDao;
    @Autowired
    private CourseDao courseDao;
    @Autowired
    private CourseOfferingDao courseOfferingDao;
    @Autowired
    private ProfessorDao professorDao;
    @Autowired
    private RegistrarDao registrarDao;
    @Autowired
    private StudyProgramDao studyProgramDao;
    @Autowired
    private DegreeDao degreeDao;
    @Autowired
    private StudentService studentService;
    @Autowired
    private ProfessorService professorService;
    @Autowired
    private StudyProgramService studyProgramService;
    @Autowired
    private CourseService courseService;
    @Test
    public void contextLoads() {
        College college=new College("软件");
        college=collegeDao.saveAndFlush(college);
        Degree degree=new Degree("大一",college);
        degree=degreeDao.save(degree);

        List<Student> students=new ArrayList<>();
        students.add(studentService.add(111,"王刚","123456",college));
        students.add(studentService.add(222,"李强","123456",college));
        students.add(studentService.add(333,"刘建华","123456",college));
        students.add(studentService.add(444,"赵四","123456",college));
        Professor professor=professorService.add(111,"滑稽","123456",college);
        Registrar registrar=registrarDao.save(new Registrar(111,"admin","admin"));
        //

        List<Course> courses=new ArrayList<>();
        courses.add(new Course(college,professor,"高等数学",6,null,10,10,1,16,"1 3",1,2,null));
        courses.add(new Course(college,professor,"线性代数",6,null,10,10,1,16,"1 3",1,2,null));
        courses.add(new Course(college,professor,"java基础",6,null,10,10,1,16,"1 3",5,6,null));
        courses.add(new Course(college,professor,"python基础",6,null,10,10,3,10,"2 4",3,4,null));
        courses.add(new Course(college,professor,"数据结构",6,null,10,10,5,5,"3 5",3,4,null));
        courses.add(new Course(college,professor,"c语言",6,null,10,10,1,16,"1 3",7,8,null));
        courses.add(new Course(college,professor,"数据库",6,null,10,10,1,16,"1 3",3,4,null));
        courseDao.saveAll(courses);
        List<Course> courses1=new ArrayList<>();
        courses1.add(courseService.getCourseById(1));
        courses.add(new Course(college,professor,"数据库1",6,courses,10,10,1,16,"1 3",3,4,null));
        courseDao.saveAll(courses);
        Time time=new Time(System.currentTimeMillis()+1000*60*10);//当前时间+10min
        CourseOffering courseOffering=new CourseOffering(degree,courses,time);
        courseOffering=courseOfferingDao.save(courseOffering);
        //        courses=courseDao.findAll();
        //
        //
        Student student1=students.get(0);
        System.out.println(student1);
    }

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到