一、 前言:
本次项目要求在个人项目的基础上,两人结对合作,对原有代码进行合作。
在上次的个人项目中,我的队友选择了Python进行开发,而我选择了Java;经过沟通后,这次的结对项目我们选择以Java版本的代码为基础,优化代码,添加模块。
二、 项目介绍:
- 项目名称:
带UI的小初高数学学习软件
2. 用户:
小学、初中和高中学生
3.功能:
a.用户登陆注册功能和密码管理功能:
1)用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;
2)用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。
3)用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功
b.题目生成和提交批改功能。
1)密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
2)用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;
(小初高数学题目参照个人项目)
3)最后一题提交后,界面显示分数,分数根据答对的百分比计算;用户在分数界面可选择退出或继续做题;
三、 项目模块及改进
- 总体:
由我负责用户界面的编写和发送短信模块的开发;
队友负责对我个人项目的代码进行补充优化;
2.登陆模块
前端:一个窗口
包含提示的文本,可供用户输入用户名和密码的文本框,用于登录或注册交互的按钮;可以转向注册模块或题目生成模块;
后端:修改代码,从前端获得用户输入的用户名和密码,与文件中储存的已经注册的用户进行比对,判断能否登陆并返回。
这一部分代码与个人项目中区别不大,基本没有修改。
3.注册模块
前端:两个窗口(发送注册码验证手机号&设置密码)
-
- 包含提示的文本,可供用户输入手机号和注册码的文本框,用于发送注册码或注册交互的按钮(也包含判断注册码是否正确的逻辑)
- 包含提示的文本,可供用户输入密码和确认密码的文本框,用于登录交互的按钮(也包含修改密码是否成功的逻辑)
可以转向题目生成模块
后端:主要包含两部分难点:发送短信和存储用户名和密码到文件。发送短信部分由我完成,使用了阿里云的短信发送业务和阿里云提供的 java端的sdk,完成的代码也是根据阿里云提供的demo进行了修改。这一部分在网上有许多相关博客和样例,这里不
再赘述,感兴趣的读者可以移步。
由于结对项目本身需求比较简单,以实现为主要目的,涉及的用户量仅以测试为主,所以直接以txt文本格式,不加密直接存储用户名和密码。也是比较基础的采用Java的文本流写入。
4.题目生成模块
前端:三个窗口(题目选择,作答,显示结果)
-
- 包含提示的文本,3个选择难度的单选项,可供用户输入题数的文本框,用于修改密码或生成题目交互的按钮(可以转向注册模块修改密码)
- 包含提示的文本,4个进行单选按钮,用于更换题目的“上一题”“跳转”“下一题(结束答题)”交互的按钮。(切换题号依靠可输入的消息提示框实现)
- 包含提示的文本,用于退出或重新答题交互的按钮。(计算得分的逻辑在前端实现)
后端:主要部分是生成问题和候选项,而难点在于生成问题后的正确答案的计算。这一部分由我的室友完成。
生成候选项比较简单,可用的方法也很多,这里采用的方法是,根据正确答案,给其他选项一个浮动值,保证结果与正确答案不会相差太多,增加迷惑性。
运算结果是根据输入的字符串计算的,通过栈结构,将整个算式分为几部分,从优先级高的部分开始一层层计算;说的简单,解释起来也算比较复杂,还是给出示意图吧;
四、 感想与收获
开发前的工作比开发中的更重要。需要商量的事情有很多:分工、前后端之间接口的约定、代码风格的确认、工作日程的安排…这些应该提前准备的事项越迟做,对项目的完成进度来说也越危险。
原文地址:https://www.cnblogs.com/One-Random/p/11602505.html