一.项目概述
本项目的基于现有的软件学院信息化平台的学生选课系统进行开发,采取两轮选课模式,即一轮不设人数上限并随机抽签进行筛选,第二轮对剩余未选满的课程进行抢课的方式从而达到学生选课的目的。对于本项目主要用户有三类,一为科大软院的学生,其主要有选课需求、信息查询需求、基本信息的登记与修改需求等,二为参与授课的老师,其主要需求有课程设置需求、基本信息的登记与修改需求、成绩设置需求等,三为负责整个系统维护的管理员,其需要在有学生与老师功能权限的功能基础上,额外能实现对学生信息的增删改查,对教师信息的增删改查,及对选课时间的管理等需求。
二、系统架构
本项目的基于MVC框架模式进行开发,即Model(模型)-View(视图)-Controller(控制器):V即View视图是指用户看到并与之交互的界面。比如我们平时上网所见的由HTML/CSS编写而成的网页界面,或者软件app的用户交互界面。要注意的是,在视图层中其实没有真正的处理发生,这交由其他两层进行处理,它只是作为一种输出数据并允许用户操纵的方式。M即model模型是是应用程序中用于处理应用程序数据逻辑的部分。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,具有复用性,这样使得一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。正是由于它的存在,使得视图层与模型层能够解耦合。
因此我们用一张直观的图来描述其三者之间的关系:
三、运行环境和技术选型说明
细化到具体开发工具,本项目采取主流的SSM开发框架,实现MVC框架模式的开发。SSM也即Spring+Springmvc+Mybatis,是由Spring、MyBatis两个开源框架整合而成。Spring、Springmvc、Mybatis分别承担上述框架的业务层(Service层)、控制层/表现层及视图层、持久层(DAO层)的角色。Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。而SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。Mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。Mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。
同时对于视图层的前端,主要由bootstrap完成,背景用插件。数据库交互查询用到pagehelper分页。在添加修改相关功能时通过ajax来验证其主键是否存在可用,实现添加操作。
四、软件系统概念原型视图
系统功能模块视图
项目部署视图
软件用户用例图
.1管理员的用例图
.2学生的用例图
.3教师用例图
项目工作进度规划图
工作分配视图表
项目组成员名单 | 姓名 | 学号 | 项目中的分工 |
AAA | SA2022xxxx | 项目进度管理,后端编写,整理文档 | |
BBB | SA2022xxxx | 页面设计,后端编写,整理文档 | |
CCC | SA2022xxxx | 页面设计,系统测试,整理文档 | |
DDD | SA2022xxxx | 页面设计,前端编写,整理文档 |
关键功能的流程图
.1学生修改个人信息
.2学生选课与退课
.3教师添加课程
教师添加课程功能流程如图所示。教师用户登录后,可以进入课程添加窗口,进行新课程的添加。
4.6.4教师删除课程
教师删除课程功能流程如图所示。教师用户登录后,可以进入课程删除窗口,进行新课程的删除。
项目逻辑视图
五、数据库设计
学生基础信息表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
student_id | int | N | 学生学号(主键) |
student_name | varchar | N | 学生姓名 |
student_sex | set<Male> | N | 性别选项 |
student_grade | set<Grage> | N | 年级选项 |
student_date | set<Date> | N | 出生年月日选项 |
student_major | set<Major> | N | 专业方向选项(网安、嵌入式、大数据、软设) |
student_phone | int | N | 学生联系方式 |
student_mail | varchar | N | 学生邮箱 |
教师基础信息表:
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
teacher_id | int | N | 教职工号(主键) |
teacher_name | varchar | N | 教师姓名 |
teacher_sex | set<Male> | N | 性别选项 |
teacher_date | set<Date> | N | 出生年月日选项 |
teacher_college | set<Major> | N | 教师任职学院 |
teacher_phone | int | N | 教师联系方式 |
teacher_mail | varchar | N | 教师邮箱 |
teacher_location | varchar | N | 教师办公地点 |
课程信息表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
course_id | int | N | 课程编号(主键) |
course_name | varchar | N | 课程名 |
course_startWeek | set<Week> | N | 课程起始周 |
course_endWeek | set<Week> | N | 课程结束周 |
course_member | int | N | 课程容量 |
course_teacherId | int | N | 授课老师教职工号 |
course_introduce | varchar | N | 课程介绍 |
course_startTime | set<Time> | N | 课程第几节起始 |
course_endTime | set<Time> | N | 课程第几节结束 |
course_day | set<Day> | N | 星期几上课 |
账号密码存储表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
protect_id | int | N | 学生/教师/管理员id号(主键) |
protect_type | Set<Type> | N | 用户类型选项 |
protect_password | varchr | N | id对应的密码 |
选课信息存储表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
choose_studentId | set<StudentId> | N | 选择该课学生的学号 |
choose_id | int | N | 该选课记录条目序号(主键) |
choose_grades | set<Grades> | Y | 该学生本课程的成绩(初始值为空) |
choose_courseId | set<courseId> | N | 该学生所选课程id号 |
管理员基础信息表:
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
Administrator_id | int | N | 管理员id |
First_Start_Time | DATETIME | Y | 一轮选课开始时间 |
First_End_Time | DATETIME | Y | 一轮选课结束时间 |
Second_Start_Time | DATETIME | Y | 二轮选课开始时间 |
Second_End_Time | DATETIME | Y | 二轮选课结束时间 |
六、项目的实现视图:
语句:表结构与初始数据
类:控制层
类:登录拦截
类:数据访问接口
5. 各类数据的结构实体类
类接口及其的implement类(具体实现)
7.配置文件和mapper层(DAO)
层:前端页面
七、概念原型核心工作机制
概念原型的定义
在理解概念原型之前,我们首先要理解概念的定义——即人对能代表某种事物或发展过程的特点及意义所形成的思维结论。因此我们可以得出概念原型的定义,其是一种虚拟的、理想化的软件产品形式,更加直观的来说,概念原型等于数据模型加上用例。
基于本选课系统项目的概念原型
总上所述,我们已经将用例和数据模型一一列出,至此我们可以得出基于本项目的概念原型——在本项目中一共有三个用例:软院学生、教师、管理员。及六个数据模型:学生基础信息表、教师基础信息表、课程信息表、账号密码储存表、选课信息储存表、管理员基础信息表。
基于本选课系统项目的工作过程
通过上述的概念模型我们可以给出整个项目的工作过程:首先,不论是学生、管理员还是教师都需要用户输入学号(教职工号)和密码,才能登录系统,若需要修改密码则可输入旧密码进行修改。修改后对应账号密码存储表表项将被修改,教师及学生登录后可以修改个人基础信息,对于教师而言可以教师增添授课信息、修改个人信息及登记学生成绩,这些操作将对教师基础信息表、课程信息表进行更新,学生可以查看已开设的课程信息,已选课程,课程考试成绩在合理的选课时间可以进行选课,同时也可以对已经选择的课程进行退课,这些操作也将会对课程信息储存表、学生基础信息表进行更新。最后,作为管理员,整个系统的最高权限者,其囊括了教师及学生的全部功能,同时,作为选课时间的管理者,还可以设置选课即抢课时间.