实践项目1:课程评价系统
系统参与者分为用户和管理员两类。
基本需求:
- 管理员可以在系统中添加/删除课程,维护课程的基本信息。
- 用户可以按需查询课程的所有信息并对课程或课程评价本身进行评价。
- 系统进行必要的用户管理,如注册、登陆、个人信息维护、接收系统通知等。
题目1:请给出待开发软件的需求陈述。
功能需求:
- 用户的登录,注册,添加个人信息,修改个人信息
- 用户可以查询课程的所有信息,对相应的课程进行评价
- 管理员可以添加、删除课程,修改相应的课程基本信息
- 用户可选择参加相应的课程,查看已选择的课程列表以及它们的课程内容
性能需求:
-
数据精确度:
该软件的输入、输出数据精度的要求是要准确的评教结果,不可出现含糊不清的评价,可能包括传输过程中的精度不能发生变化
-
时间特性:
响应时间不能太慢,影响用户的使用,大约在4ms-8ms之间
更新处理时间:必须可以对所录入的数据快速的处理,及时地更新数据,保证数据的可靠性
-
适应性:
当需求发生某些变化时,该软件对这些变化的适应能,如操作方式上的变化,运行环境的变化,同其他软件的接口的变化等等。
用户界面需求: 可只管形象的体现其功能,要求操作简单,适合基本用户使用
外部接口需求:与学校财务系统、选课系统等接口要吻合,数据流量有一定的限制,但不可过小
设计约束:前端采用HTML语言+JavaScript+Js脚本,后端采用Java,数据库采用MySQL
质量属性: 不考虑网络错误的情况下,正确响应的概率达到99.99%
题目2:采用数据流图、数据字典和加工小说明进行需求分析,其中数据流图应至少分解到1层。
数据流图
顶层:
零层:
一层:
数据字典
注册请求=用户名+密码
注册结果=[注册成功|用户名已被使用|密码长度不足]
登录结果=[登录成功|用户不存在|密码错误]
登录信息=用户名+密码
报名课程 = 用户id号+课程id号
修改个人信息 = 用户id号+个人信息的各个字段
查询课程信息 = 课程名称
查询课程信息结果 = 课程的相关信息
课程增删信息 = 课程名称 + [增加课程信息|删除课程信息|修改课程信息]
增删课程 = 课程名称 + 管理员id号
课程评价 = 课程名称 + 用户名称 + 用户评价信息
加工小说明
- 加工编号:1
加工名:处理登录请求
输入流:登录信息
输出流:登录结果
加工逻辑:根据输入的登录信息,访问用户信息文件,与存储的用户信息进行比对,然后返回登录是否成功。
- 加工编号:2
加工名:处理注册请求
输入流:注册请求
输出流:注册结果
加工逻辑:根据输入的注册信息,访问用户信息文件,与存储的用户信息进行比对,然后返回注册是否成功。
- 加工编号:3
加工名:报名课程
输入流:报名课程请求
输出流:报名课程结果
加工逻辑:根据用户id号和课程id号进行修改用户的个人信息文件,添加时要事先查询用户是否已经报名参加过了该课程
- 加工编号:4
加工名:修改个人信息
输入流:修改个人信息
输出流:修改个人信息结果
加工逻辑:根据用户的id号,查询用户的个人信息,并且根据输入流进行相应数据的更改
- 加工编号:5
加工名:查询课程信息
输入流:课程的名称
输出流:课程的相关信息
加工逻辑:根据输入的课程id号,访问课程信息文件,查询相应的课程信息并且返回结果。
- 加工编号:6
加工名:增删课程信息
输入流:课程的名称
输出流:增删信息的结果
加工逻辑:根据输入的课程id号,访问课程信息文件,查询相应的课程信息并且根据输入流中的修改信息进行修改,返回结果。
- 加工编号:7
加工名:增删课程
输入流:删除课程的名称|增加的课程信息
输出流:增删的结果
加工逻辑:删除是根据输入的课程id号,访问课程信息文件,查询相应的课程进行删除;增加是在课程信息文件中添加一条课程信息记录。
- 加工编号:8
加工名:课程评价
输入流:课程的名称+课程的评价
输出流:课程的评价结果
加工逻辑:根据输入的课程id号,访问课程信息文件,查询相应的课程并根据输入流中的课程评价信息进行修改,返回评价结果。
题目3:对软件进行结构化总体设计,将前一步得到的数据流图转换为模块结构图。任选模块结构图中两个处理逻辑较为复杂的模块,对其进行详细设计,给出功能描述、输入项、输出项、接口的设计,以及用伪码、PAD图或NS图给出其内部流程逻辑。
注册处理模块
1. 功能描述
本模块主要用于处理用户注册请求,接收用户的注册请求信息,返回注册成功与否的结果并修改用户的信息文件。
2. 输入项
名称 | 标识 | 数据类型 | 格式 | 有效范围 | 输入方式 | 其他要求 |
---|---|---|---|---|---|---|
用户名 | Username | String | 无 | 长度1-255 | 键盘 | 无 |
密码 | Password | String | 无 | 长度6-31 | 键盘 | 需要加密 |
3. 输出项
名称 | 标识 | 数据类型 | 格式 | 有效范围 | 输入方式 | 其他要求 |
---|---|---|---|---|---|---|
注册结果 | RegisterInfo | Enum | 无 | {注册成功,账户已存在,密注册失败} | 前端显示告知用户 | 无 |
4. 接口设计
本模块无与其他模块接口。当用户请求注册时进行调用。
5. 流程逻辑
Begin
获取用户名、密码
根据用户名查询数据库
If 查到用户名 Then
返回用户已存在
Else 用户名不存在
向数据库中插入一条用户信息,更新数据库的内容
返回注册成功
End
登录处理模块
1. 功能描述
本模块主要用于处理用户登录请求,接收用户的登录请求信息,并返回登录成功与否的结果。
2. 输入项
名称 | 标识 | 数据类型 | 格式 | 有效范围 | 输入方式 | 其他要求 |
---|---|---|---|---|---|---|
用户名 | Username | String | 无 | 长度1-255 | 键盘 | 无 |
密码 | Password | String | 无 | 长度6-31 | 键盘 | 需要加密 |
3. 输出项
名称 | 标识 | 数据类型 | 格式 | 有效范围 | 输入方式 | 其他要求 |
---|---|---|---|---|---|---|
登录结果 | LoginInfo | Enum | 无 | {登录成功,用户不存在,密码错误} | 前端显示告知用户 | 无 |
4. 接口设计
本模块无与其他模块接口。当用户请求登录时进行调用。
5. 流程逻辑
Begin
获取用户名、密码
根据用户名查询数据库
If 无法查到用户名 Then
返回用户不存在
Else
比较查到的密码与输入是否相符
If 密码相符 Then
返回登录成功
Else
返回密码错误
End
fo | Enum | 无 | {登录成功,用户不存在,密码错误} | 前端显示告知用户 | 无 |
4. 接口设计
本模块无与其他模块接口。当用户请求登录时进行调用。
5. 流程逻辑
Begin
获取用户名、密码
根据用户名查询数据库
If 无法查到用户名 Then
返回用户不存在
Else
比较查到的密码与输入是否相符
If 密码相符 Then
返回登录成功
Else
返回密码错误
End