本人工程实践项目为自选题基于科大软院学生选课系统的开发,最近也在准备开题报告,所以跟这次高软作业也有部分重叠之处,本博客主要基于老师《从需求分析到软件设计》章节指导思想进行完成,从需求分析、用例建模、业务领域建模、数据模型、概念模型及工作过程角度进行了详细的分析与建模。也相信这次高软作业能对工程实践课题的理解大有裨益。
一、需求分析
显然对于本项目,用户主要有三类,一为科大软院的学生,二为参与授课的老师,三位负责整个系统维护的管理员,下面我们分别从不同用户的角度对其需求进行分析。
1.1学生角度
1.选课需求:在管理员设置的开放选课的时间段进行选课与退课,同时选课时要遵循以下四个要求:不得超过课程容量上限,不得选择有时间冲突的课程,不得超过学分限制,不得选择与本专业方向冲突的课程。
2.信息查询需求:这里的信息查询主要是指对于课程信息的查询、个人成绩的查询以及对于已选课程的查询。
4.基本信息的登记与修改需求:基本信息主要包括姓名、学号、性别、年级、出生年月、专业方向、电话号码、邮箱等,学生可以对其进行修改。
3.登录需求:通过输入学号与密码才能登录到本系统,同时当忘记密码时,可以联系管理员进行密码的修改。
1.2教师角度
1.登录需求:通过输入职工号与密码才能登录到本系统,同时当忘记密码时,可以联系管理员进行密码的修改。
2.课程设置需求:主要包括对于自身开设的课程的信息填写,主要包括授课老师姓名、课程描述、课程容量、授课时间、授课周数,同时结课时需要登录相应的成绩。
3.基本信息的登记与修改需求:基本信息主要包括姓名、职工号、性别、出生年月、任职学院、电话号码、邮箱、办公地点,老师可以对其进行填写与修改。
1.3管理员角度
1.对学生信息增删改查:主要包括对学生选课信息进行增删,对学生基本信息进行增删改查,修改课程成绩这三个部分
2.对教师信息增删改查:主要包括修改教师的基本信息,修改教师的课程信息。
3.对选课时间的管理:设定一轮选课的时间,设定二轮选课的时间。
二、用例建模
根据上述对各个层次用户群体的需求分析,我们不难做出如下的用例图:
2.1管理员的用例图
1.2学生的用例图
1.3教师用例图
三、业务领域建模
业务领域建模的基本步骤如下:
1.收集业务领域的信息
2.执行团队进行头脑风暴
3.将这些业务领域概相关的知识概念进行分类
4.最后使用UML图将业务领域知识变得图形化
3.1本项目中的业务领域建模
上述基本步骤具体化到本项目中则变成了学生基础信息、教师基础信息、课程信息、账号密码储存、选课信息储存、管理员类六个类。
我们将其进行细化可以得到如下的属性:
学生基础信息类:学号、姓名、性别、年级、出生年月、专业方向、联系方式、邮箱
教师基础信息类:教职工号、姓名、性别、出生年月日、任职学院、联系方式、邮箱、办公地点
课程信息类:课程编号、课程名、起始结束周、课程容量、授课老师职工号、课程介绍、上课起始结束节数
账号密码储存类:用户类型、用户id、密码
选课信息储存类:选课学生学号、该记录id、学生成绩、所选课程id号
管理员类:账号id
同时我们对各个类之间进行分析,可以绘制出如下类图:
四、数据模型
根据前面的需求分析与业务类图,我们可以设立出六个不同的表项用于存储所需的数据,前三张为学生、教师、课程的基础信息表,主要记录了一些关于教师、学生和课程的基础信息,后两张分别存储了学生的选课信息情况及学生教师管理员的账号密码,最后一张存储了管理员的基本信息。通过这六张表即完成了数据模型的部分。
4.1学生基础信息表
属性名 | 类型 | 是否可取空(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 | 学生邮箱 |
4.2教师基础信息表:
属性名 | 类型 | 是否可取空(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 | 教师办公地点 |
4.3课程信息表
属性名 | 类型 | 是否可取空(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 | 星期几上课 |
4.4账号密码存储表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
protect_id | int | N | 学生/教师/管理员id号(主键) |
protect_type | Set<Type> | N | 用户类型选项 |
protect_password | varchr | N | id对应的密码 |
4.5选课信息存储表
属性名 | 类型 | 是否可取空(Y/N) | 注释 |
choose_studentId | set<StudentId> | N | 选择该课学生的学号 |
choose_id | int | N | 该选课记录条目序号(主键) |
choose_grades | set<Grades> | Y | 该学生本课程的成绩(初始值为空) |
choose_courseId | set<courseId> | N | 该学生所选课程id号 |
4.5管理员基础信息表:
属性名 | 类型 | 是否可取空(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. 概念原型及对应工作过程
5.1 概念原型的定义
在理解概念原型之前,我们首先要理解概念的定义——即人对能代表某种事物或发展过程的特点及意义所形成的思维结论。因此我们可以得出概念原型的定义,其是一种虚拟的、理想化的软件产品形式,更加直观的来说,概念原型等于数据模型加上用例。
5.2 基于本选课系统项目的概念原型
总上所述,我们已经将用例和数据模型一一列出,至此我们可以得出基于本项目的概念原型——在本项目中一共有三个用例:软院学生、教师、管理员。及六个数据模型:学生基础信息表、教师基础信息表、课程信息表、账号密码储存表、选课信息储存表、管理员基础信息表。
5.3基于本选课系统项目的工作过程
通过上述的概念模型我们可以给出整个项目的工作过程:首先,不论是学生、管理员还是教师都需要用户输入学号(教职工号)和密码,才能登录系统,若需要修改密码则可通知管理员,统一进行操作。修改后对应账号密码存储表表项将被修改,教师及学生登录后可以修改个人基础信息,对于教师而言可以教师增添授课信息、修改个人信息及登记学生成绩,这些操作将对教师基础信息表、课程信息表进行更新,学生可以查看已开设的课程信息,已选课程,课程考试成绩在合理的选课时间可以进行选课,同时也可以对已经选择的课程进行退课,这些操作也将会对课程信息储存表、学生基础信息表进行更新。最后,作为管理员,整个系统的最高权限者,其囊括了教师及学生的全部功能,同时,作为选课时间的管理者,还可以设置选课即抢课时间,同时由于管理员需要处理学生、教师账号密码遗失的问题,也须有修改账号密码存储表的权限。
|