分析与设计
一、项目分工
郭思卿201521122118 类图、原型设计
陈凇旖201521122110 顺序图、编码规范
林泓晖201521122107 需求分析、用例图、用例规约
二、需求分析
Q1:您的身份是? A.教师 B.学生 C.家长 Q2:您更倾向于什么难度的算术题? A.简单的 B.中等的 C.复杂的 Q3:您觉得,四则运算是否需要加入分数? A.需要 B.不需要 C.都可以 Q4:您觉得,可以评价及奖励的功能怎么样? A.很不错 B.不怎么样 C.没有用 Q5:您觉得,一个软件应该更注重实用性,还是更注重界面的华丽? A.实用性 B.界面的华丽 C.都可以
用户A AABCB 用户B ACCAA 用户C BACBA 用户D CCAAA 用户E CBACB 用户F AAAAB 用户G ACCBA 用户H ABBCC 用户I BBAAB 用户J CABCA |
2.
三、原型设计
四、用例图、用例规约
1.用例图
2.用例规约(主要)
用例ID: tea02 用例名称: 出题 简要说明: 本用例描述已登录教师用户使用“出题”功能的过程 参与者: 教师,后台服务系统 涉众及其关注点: ----教师:手动输入题目,或者选择参数随机出题,设置开始时间、截止时间和做题时间 ----后台服务系统:根据输入的参数随机出题,校对题目的合理性 前置条件: 教师用户已通过身份验证 后置条件:所出的全部题目合理,出题成功 扩展点:无 触发事件: 教师用户在功能列表页面选择“出题”功能 基本流: 1.如果要手动出题,就在题目输入框中输入题目,每一行为一题,用换行表示间隔;如果要自动出题,就在各个参数输入框中选择输入出题参数,点击“出题”按钮,题目便显示在题目输入框中,可随意修改 2.点击“下一步”按钮 3.选择题目开始时间、截止时间和做题时间,点击“发布”按钮 4.显示“出题成功”,点击“返回”按钮就返回功能列表页面,用例结束 备选流: *a. 在基本流的任何一步骤执行过程中用户选择“取消”操作: 系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束 *b. 在基本流的任何一步骤执行过程中用户超时(10秒): 系统取消当前操作,返回功能列表页面,用例结束 2a. 题目无效: 系统提示用户哪些题目是无效的,提示用户修改,页面不跳转,用例继续 3a. 时间不合理: 系统提示用户时间设置不合理,提示用户修改,页面不跳转,用例继续 4a. 系统错误:
成功场景:
失败场景:
特殊需求: 无 未解决问题: 无 |
用例ID:01 用例名称: 注册 简要说明: 本用例描述未登录用户使用“注册”功能的过程 参与者: 未注册用户,后台服务系统 涉众及其关注点: ----未注册用户:输入个人信息,如果不是要注册教师用户则需要输入邀请码 ----后台服务系统:验证用户输入的个人信息和邀请码,准确记录用户的个人信息 前置条件:未登录用户尚未注册账号 后置条件:用户成功注册账号,可以登陆系统 扩展点:无 触发事件: 未登录用户在登陆页面选择“注册”功能 基本流: 1.按照提示输入个人信息,选择用户类型(教师、学生、家长),姓名和联系方式为必填,如果用户类型选择了学生或者家长,则需要输入邀请码,如果选择教师则不需要 2.点击“注册”按钮 3.显示“注册成功”,点击“返回”就返回到登陆页面,用例结束 备选流: *a. 在基本流的任何一步骤执行过程中用户选择“取消”操作: 系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束 *b. 在基本流的任何一步骤执行过程中用户超时(10秒): 系统取消当前操作,返回功能列表页面,用例结束 2a. 个人信息无效: 系统提示个人信息中带有不支持的字符,或者是该个人信息已注册,提示用户修改页面不跳转,用例继续 2b. 邀请码错误: 系统提示用户输入的邀请码错误,提示用户修改,页面不跳转,用例继续 3a. 系统错误: 1.系统取消当前操作或撤销当前事务 2.系统提示用户相应的错误信息 3.用户选择返回,用例结束 成功场景:
失败场景:
特殊需求: 无 未解决问题: 无 |
用例ID:03 用例名称: 评价及奖励 简要说明: 本用例描述已登录教师或家长用户使用“评价及奖励”功能的过程 参与者: 教师用户或者家长用户,后台服务系统 涉众及其关注点: ----教师用户或者家长用户:输入评价,选择奖励 ----后台服务系统:验证用户是否评价了或者奖励了,准确记录用户的评价及奖励 前置条件:教师用户或者家长用户身份已验证 后置条件:用户操作成功,可以返回再次查看,或者返回到某学生的已答题列表页面 扩展点:无 触发事件: 已登录教师或家长用户进入到某学生的某次作业中 基本流: 1.在评价输入框中输入评价,选择奖励 2.点击“发布”按钮 3.显示“成功”,点击“返回”可再次查看刚才的内容以及自己的评价奖励,点击“返回列表”就返回到某学生的已答题列表页面,用例结束 备选流: *a. 在基本流的任何一步骤执行过程中用户选择“取消”操作: 系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束 *b. 在基本流的任何一步骤执行过程中用户超时(10秒): 系统取消当前操作,返回功能列表页面,用例结束 2a. 操作无效: 既没有评价,也没有奖励,系统提示用户修改,页面不跳转,用例继续 3a. 系统错误: 1.系统取消当前操作或撤销当前事务 2.系统提示用户相应的错误信息 3.用户选择返回,用例结束 成功场景:
失败场景:
特殊需求: 无 未解决问题: 无 |
五、顺序图
六、类图
七、编码规范
1 缩进
4个空格
2 行宽
100字符
3 括号
在复杂的条件表达式中,用括号清楚地表示逻辑优先级。
4 断行与空白的{ }行
单行:
if (condition)
DoSomething();
else
DoSomethingElse();
多行:
if ( condition)
{
DoSomething();
...
}
else
{
DoSomethingElse();
...
}
5 分行
不要把多行语句放在一行上。
a = 1; b = 2; // bogus
if (fFoo) Bar(); // bogus
不要把不同的变量定义在一行上。
Foo foo1, foo2; // bogus
6 命名
例:
function_Plus/functionPlus/funcPlus/fcPlus
7 下划线问题
尽量不以下划线开头,融合命名长于3段则用下划线隔开
8 大小写问题
类/类型/变量:名词或组合名词,如Member、ProductInfo等。
函数则用动词或动宾组合词来表示,如get/set; RenderPage()。
9 注释
注释是用来解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方的,如下:
//go thru the array, note the last element is at [len-1]
for (i = 0; i<len; i++)
{
DoSomeThing();
}
复杂的注释应该放在函数头,很多函数头的注释都是解释参数的类型等的,如果程序正文已经能够说明参数的类型in/out等,就不要重复!
注释也要随着程序的修改而不断更新,一个误导的(Misleading)注释往往比没有注释更糟糕。
另外,注释(包括所有源代码)应只用ASCII字符,不要用中文或其他特殊字符,它们会极大地影响程序的可移植性。