(采用面向对象方法开发)
1 问题分析
教务管理是高校必不可少的管理内容,烦琐、复杂而准确度要求高。随着高校扩招和信息化的进程,教务管理日趋复杂,龙其是选课、排课和成绩管理。在此,围绕选课业务所涉及的业务内容开发一个简单的教务管理系统。教务系统业务包括如下内容。
(1) 学生管理:系统管理员对学生基本情况进行登记、删除和修改。学生可以查
看自己的信息。
(2) 教师管理:系统管理员对所有专职教师进行曲登记、删除和修改,包括教师
任课信息。教师可以查看自己的信息。
(3) 课程管理:系统管理员对本校所有开过课程和新开课程进行登记、删除和修
改。
(4) 选课程管理:每学期开学以前要进行学生选课工作。学生可以在所有开设课
程中选择自己尚未选择的课程。
(5) 成绩管理:期末考试结束后,教师登录学生成绩,各学院将学生成绩结果报
教务处。学生可以查看自己的成绩。
2 可行性研究
1.经济可行性 2.技术可行性 3.社会可行性
3 面向对象的分析
3.1 建立用例模型
根据问题分析的业务描述,得到系统用例图如图1所示。每个用例规约如表1至表9所示。
学生信息管理< 图1 系统用例图 表1 “身份验证”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 身份验证 P1 使用系统的任何角色 身份验证 无 1. 用户输入用户名、密码,选择用户类型 2. 检索用户信息库 (1) 若输入信息不正确,执行A1 (2) 若输入信息正确,执行3 3.登录到系统管理页面首面 无 A1:提示:“输入的信息不正确” 打开系统管理页面首页,记录用户类型 表2 “注册”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 注册 P2 使用系统的任何角色 注册用户信息 无 1. 用户输入注册用户名、密码和用户类型 2. 选择注册功能 (1) 若该用户已经存在,执行A1 (2) 若该用户不存在,执行3 备选事件流 异常事件流 后置条件 3.将用户数据写入数据库中 备选事件流 异常事件流 后置条件 表3 “修改密码”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表4 “学生信息管理”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表5 “课程信息管理”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表6 “教师信息管理”用例规约 用例名称 用例ID 参与者 用例说明 无 A1:提示:“该用户已存在” 用户信息被正确更新 前置条件 主事件流 备选事件流 异常事件流 后置条件 表7 “选课”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表8 “录入成绩”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表9 “查询成绩”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 表2“注册”用例规约 用例名称 用例ID 参与者 用例说明 前置条件 主事件流 备选事件流 异常事件流 后置条件 3.2 建立类模型 根据用例图寻找系统类(实体类)。本系统中的实体类共有5个:用户、学生、课程、教师、成绩。类图如图2所示。 学生-学生ID-学生姓名+add()+modify()+delete()+select()*1*成绩-ID-课程ID-学生ID-成绩+add()+delete()+select()选课-ID-课程ID-学生ID+add()+delete()+select()用户-用户ID-密码-用户名-用户角色+add()+select()授课-ID-教师ID-课程ID+modify()*课程-课程ID-课程名+add()+modify()+delete()+select()教师-教师ID-教师姓名+add()+modify()+delete()+select()**1* 图2 教务管理系统的类图 3.3 创建顺序图 有了用例图和用例规约,可以对系统有一个初步的了解,为了更全面地掌握系统的处理流程,下一步可以选用顺序图描述系统的处理顺序。对每个用例或者相关的几个用例可以创建一个顺序图。在本系统中,除了身份验证、修改密码、查询成绩用例外,其余用例涉及的主要内容就是对信息的管理(增加、删除、修改)操作。因为都是同类的处理,所以这里只对学生基本信息管理用例和选课管理创建顺序图,可以用它来理解其他的用例处理过程。 学生信息管理顺序图如图3所示,选课管理顺序图如图4所示。 系统管理员学生基本信息管理界面1.请求添加学生基本信息修改界面学生实体(1)校验添加信息(2)执行添加操作2.请求修改(1)打开修改页面(2)校验修改信息(3)执行修改操作请求返回3.请求删除(1)获得删除信息(2)执行删除操作4.请求查询(1)获得查询条件(2)执行查询 图3 学生信息管理顺序图 系统管理员学生1.请求选课选课界面已选课程查询界面选课实体1.1获得课程信息1.2校验选课数据1.3执行选课程操作2.请求删除2.1获得删除条件2.2执行删除操作3.请求查询3.1获得查询条件3.2执行查询 图4 选课管理顺序图 4 数据库设计 数据库设计是在DBMS的支持下,按照应用的要求设计出合理的数据结构。由于采用了面向对象的开发方法,这里给出类模型到关系模型的转化过程。本系统用MySql数据库,系统数据库名称: 教务信息库:jwglxt。 4.1 类模型到关系模型的转化 对3.3中得到的类型模型进行分析,有用户、学生、课程、教师、成绩5个实体类。考虑到实际应用中,教师和所授课程变化频率较高,因此,将关联类授课作为一个单独的关系模式,用来描述教师和所授课程的关系。选课变化的频率较高,将关联类选课也作为一个单独的关系模式。其余各个实体类分别映射成数据库中的关系模式。 4.2 数据库结构 (1)表名:用户信息表(如表10所示)。 标志:systemUser。 表10 用户信息表 字段名 id password userName userRole (3) 表名:学生信息表(如表11所示)。 标志:student。 表11 学生信息表 字段名 studentId studentName (4) (5) (6) (7) 是否为主键 是 否 类型 int varchar(20) 是否允许为空 否 否 备注 学生ID 学生姓名 是否为主键 是 否 否 否 int varchar(20) varchar(20) varchar(2) 类型 是否允许为空 否 是 是 是 密码 用户名 用户角色 备注 用户ID 表名:教师信息表 表名:成绩表 表名:教师授课表 表名:选课表 5 面向对象的设计 5.1 设计软件类 1.实体类 在OOA阶段得到的是类图中的类都是实体(关联)类,包括用户实体、学生实体、课程实体、教师实体(教师信息和教师任课信息)、成绩实体、选课关联、授课关联。每个实体类在实现的时候要对应一个数据对象。 2.边界类 由用例模型可知,每个用例实现要对应一个页面,也就是一个边界类。其中,“选课”用例要对应选课和查看选课结果两个页面。在系统实现中,每个边界类要对应一个页面,如果使用JSP制作页面,那么每一个边界类对应一个JSP文件。考虑到再添加一个系统的首页,本系统的边界类有: login.jsp——用户登录边界类 modifyPassword.jsp——修改密码 regist.jsp——注册 index.jsp——系统首页 …… 3.控制类 控制类的作用是控制每个程序的流程和程序的执行状态,而本身尽量不要完成业务功能,通过对各个组件的设计调度完成整个的应用程序。为每个用例实现建立一个控制类,控制用例实现过程的程序流程。原系统共有9个用例,那么需对应9个控制类,由于控制类的实现方式取决于编程使用的程序框架和程序结构,因此在设计阶段不给出控制类的文件名。系统的9个控制类如下。 (1) 登录控制类。接收登录请求,控制登录过程的执行状态,调用模型,得到处理 结果,转发请求给index.jsp。 (2) 修改密码控制类。接收修改密码请求,控制修改密码的执行状态,调用模型 modifyPassword.jsp。 (3) 注册控制类。 (4) 学生信息管理。 (5) 教师信息管理。 (6) 课程信息管理。 (7) 选课管理。 (8) 录入成绩。 (9) 成绩查询。 5.2 设计软件体系结构 本系统采用MVC设计模式搭建程序结构,模型用来完成对业务逻辑的封装;控制器控制各个程序流程,也就是上一步设计的控制类的实现;视图用来显示页面,也就是上一步设计的边界类的实现。 模型部分除了包含对上一步设计的实体类的属性封装外,还需要实现实体类对应的各个方法。对全部的业务功能进行分类,设计各个业务Bean如下。 1. chooseCourseService.java 用于处理选课业务,包含下面的方法: student_showCourse()——显示目前已开设的课程。 insertChooseCourse(String studentName, String[] courseName)——插入一条选课 记录。 finishCouser(String studentName)——查询已选课程。 2. operateService 实现用户的相关操作业务,包含下面的方法: …… 5.3 人机交互界面设计 6 面向对象实现 6.1 制定代码规范 6.2 编写代码 因篇幅问题不能全部显示,请点此查看更多更全内容