基于学⽣选课系统的软件设计⽅案
⼀、项⽬介绍
本⼯程实验项⽬是基于学⽣选课系统,给管理员、教师、学⽣提供登录权限,教师可以给学⽣评定成绩,学⽣可以选择课程,并查看成绩。
本⽂将通过⾓度分析了设计模式、软件架构和各类视图软件系统的特点,并包含项⽬所需的接⼝API、数据库设计,给出系统的详细设计⽅案。⼆、系统架构
本项⽬采⽤模型-视图-控制器模式,也称为MVC模式(Model View Controller)。⽤⼀种业务逻辑、数据、界⾯显⽰分离的⽅法组织代码,将业务逻辑聚集到⼀个部件⾥⾯,在改进和个性化定制界⾯及⽤户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来⽤于映射传统的输⼊、处理和输出功能在⼀个逻辑的图形化⽤户界⾯的结构中。它把软件系统分为三个基本部分:
    模型(Model):负责存储系统的中⼼数据。
    视图(View):将信息显⽰给⽤户(可以定义多个视图)。
    控制器(Controller):处理⽤户输⼊的信息。负责从视图读取数据,控制⽤户输⼊,并向模型发送数据,是应⽤程序中处理⽤户交互的部分。负责管理与⽤户交互交互控制。
  视图和控制器共同构成了⽤户接⼝。
整个项⽬的开发采⽤WEB开发中⼗⾮常重要的SSM框架,也即Spring+SpringMVC+mybatis。前端主要由bootstrap完成,背景⽤particles.js插件,mysql8.0配置主从复制实现读写分离。
3.接⼝API
在MVC架构下,项⽬使⽤23种设计模式中的中介者模式。中介者模式(Mediator Pattern)是⽤来降低多个对象和类之间的通信复杂性。这种模式提供了⼀个中介类,该类通常处理不同类之间的通信,并⽀持松耦合,使代码易于维护。中介者模式属于⾏为型模式。
抽象中介者:定义好同事类对象到中介者对象的接⼝,⽤于各个同事类之间的通信。⼀般包括⼀个或⼏个抽象的事件⽅法,并由⼦类去实现。
中介者实现类:从抽象中介者继承⽽来,实现抽象中介者中定义的事件⽅法。从⼀个同事类接收消息,然后通过消息影响其他同时类。
同事类:如果⼀个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。在类图中,同事类只有⼀个,这其实是现实的省略,在实际应⽤中,同事类⼀般由多个组成,他们之间相互影响,相互依赖。同事类越多,关系越复杂。并且,同事类也可以表现为继承了同⼀个抽象类的⼀组
实现组成。在中介者模式中,同事类之间必须通过中介者才能进⾏消息传递。
4.系统视图
4.1分解视图
分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,⼀般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图⽤软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。将选课系统划分为三个⼦系统,即登录⼦系统、选课⼦系统和信息⼦系统,对于这些⼦系统,可继续划分使⽤课程类、学⽣类、管理员类、教师类。
4.2执⾏视图
执⾏视图展⽰了系统运⾏时的时序结构特点,⽐如流程图、时序图等。执⾏视图中的每⼀个执⾏实体,⼀般称为组件(Component),都是不同于其他组件的执⾏实体。如果有相同或相似的执⾏实体那么就把它们合并成⼀个。可以最终分解到软件的基本元素和软件的基本结构,可以对系统整体的业务逻辑有较为直观的体现。
4.3泛化视图
泛化视图展现了软件模块之间的⼀般化或具体化的关系,下图展⽰了本项⽬个类的继承关系,学⽣、教师以及管理员都继承与⽤户这个接⼝。
4.3⼯作分配视图
⼯作分配视图将系统分解成可独⽴完成的⼯作任务,以便分配给各项⽬团队和成员。⼯作分配视图有利于跟踪不同项⽬团队和成员的⼯作任务的进度,也有利于在个项⽬团队和成员之间合理地分配和调整项⽬资源。下图是本项⽬的⼯作分配视图。
5.数据库设计
(1)学⽣
字段名称字段类型字段描述
Student_id int主键
account varchar账号
password varchar密码
name varchar姓名
email varchar电⼦邮件
class varchar班级
lessons set课程
(2)教师
字段名称字段类型字段描述
Teacher_id int主键
account varchar账号
password varchar密码
name varchar姓名
email varchar电⼦邮件
course varchar课程
(3)管理员
字段名称字段类型字段描述
Administrator_id int主键
Account varchar账号
password varchar密码
name varchar姓名
email varchar电⼦邮件
jurisdiction int权限
(4)课程
字段名称字段类型字段描述
Course_id int主键
bootstrap 软件
Course_name varchar课程名称
Course_location varchar上课地点
Course_time varchar上课时间
Course_weeks varchar课程的周数
Course_teacher varchar授课⽼师
Course_credit int课程学分
(5)成绩
字段名称字段类型字段描述
Course_id Int主键
Course_grade set成绩表
Course_student set学⽣表
6.项⽬实现视图
实现视图是描述软件架构与源⽂件之间的映射关系,由软件项⽬的源⽂件⽬录树来呈现典型的实现视图。下图给出了本项⽬的实现视图:
其中handler⽂件是属于架构中的控制器结构,如下所⽰。
public class LoginHandler {
@Autowired
AdminService adminServiceImpl;
@Autowired
StudentService studentService;
@Autowired
TeacherService teacherService;
//管理员登录
@RequestMapping("/adminlogin")
public String loginStudent(@RequestParam("aname") String aname, @RequestParam("apassword") String apassword,
Model model, HttpSession httpSession) {
...
}
// 管理员退出登录
@RequestMapping("/adminlogout")
public ModelAndView adminLogout(HttpSession httpSession) {
...
return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
}
// 学⽣登录
@RequestMapping("/studentlogin")
public ModelAndView loginStudent(@RequestParam("sid") String sid, @RequestParam("spassword") String spassword,
Model model, HttpSession httpSession, HttpServletRequest httpRequest) {
...
}
// 学⽣退出登录
@RequestMapping("/studentlogout")
public ModelAndView studentLogout(HttpSession httpSession) {
...
return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
}
// 教师登录
@RequestMapping("/teacherlogin")
public ModelAndView loginTeacher(@RequestParam("tid") String tid, @RequestParam("tpassword") String tpassword,
Model model, HttpSession httpSession) {
...
}
// 教师退出登录
@RequestMapping("/teacherlogout")
public ModelAndView teacherLogout(HttpSession httpSession) {
...
return new ModelAndView(new RedirectView("/StudentInfo/index.jsp"));
}
}
  其中包含了三个实现类,包括了学⽣、管理员、教室的了登录与退出等⼯作。
7.运⾏环境和技术选型说明
由SpringMVC+MyBatis为主要框架,mysql8.0配置主从复制实现读写分离,主机丛机分别为腾讯云的服务器,⽽项⽬部署在阿⾥云上。前端主要由bootstrap完成,背景⽤particles.js插件。数据库交互查询⽤到pagehelper分页。
⼯具eclipse、navicat
环境JDK1.8、tomcat9.0、mysql8.0
前端JavaScript、jQuery、bootstrap4、particles.js
后端maven、SpringMVC、MyBatis、ajax、mysql读写分离、mybatis分页
8.概念原型与核⼼⼯作机制
⼀、概念
概念是⼈对能代表某种事物或发展过程的特点及意义所形成的思维结论,概念原型是⼀种虚拟化的、理想化的软件产品形式。也就是说,概念原型= ⽤例 + 数据模型。
⼆、⼯作机制
学⽣进⾏登录,选择学⽣窗⼝登录,填⼊账号以及密码进⾏登录,系统进⾏校验,完成登录。学⽣可以在登录界⾯点击修改密码,通过邮件认证⽅式进⾏修改确认;学⽣可以根据课程名称,选择课程,或者推选课程,并可以查看课程成绩;教师登录后,可以查看⾃⼰课程信息,如课程地点时间,并对学⽣打分;管理员掌管对⽤户信息以及成绩课程数据的增删改查最⾼权限。
9.总结
本⽂接着上⼀篇博客,继续更加系统的学习了软件在设计过程中所要经历的步骤,从设计模式、软件架构和各类视图的设计,可以更加清晰的了解到软件设计的需求,可以帮助更加了解项⽬结构,以设计出功能更加完备的软件。
参考⽂献