一、需求分析:
1.提供手机短信验证码注册功能;
2.ui界面开发:
注册成功后填写手机号和设置的密码可以进行登陆;
登陆后首先有进行小学初中高中难度选择的界面,同时还需给定题目数量;
按个人项目的要求随即给出题目,每个页面一个题目,每个题目四个选项;
做完所有题目后会自动给出最后的得分;
得到分数后用户可以选择继续做题或者注销账号;
3.在个人项目代码复用的基础上计算出题目的正确答案并设置选项;
二、设计思路:
本次编程可以看作是一个前后端合作开发的小项目,后端代码有一部分的复用,而前端的开发由于此前并不熟悉,所以开发的重点在于ui界面的设计。
三、功能实现
1.前端:前端由搭档负责,大体任务就是运用swing进行布局,控件及相应事件监听;
2.后端:
设计思路:
最开始我是准备在输出表达式的同时将表达式化简为只有加减乘除的表达式并另用数组保存,在通过循环来进行数与数的合并,依次计算得出最终结果,但是实际编写过程中过于冗杂;
以下是最终的思路:
(对于我们常见的表达式,称为中缀表达式,每个中缀表达式都有相应的后缀表达式。如:
中缀表达式:-10*(10+5/3)+6
后缀表达式:-10 10 5 3 / + * 46+
而在解析后缀表达式时,只需要遵守以下原则即可:
l 从左往右遍历
l 遇到数字直接放入容器
l 遇到运算符,按单双目将最后数字取出,进行概运算,将结果放入容器
l 遍历结束后容器中的数字即为运算结果)
在输出表达式的同时将表达式化简为只有加减乘除的表达式这个思想不变,但结果通过后缀表达式的形式保存在栈中,总共需要操作符栈和操作数栈两个栈;
得到答案以后,以此答案为基准,利用随机数生成该答案附近的几个数字作为不同选项,而后统计所有题目正确选项的个数,并统计相应成绩(百分比计算,百分制)。
代码复用:
除了生成题目、选项和结果以外的代码均可以复用,在生成表达式的同时另用str变量保存简化后的表达式即可;
栈的创建和相关计算另用类实现;
Main函数来自复用,另外两个是字符串解析求值工具包含的两个类;
三、项目总结:
这次项目难度更大,不仅仅是在实现的需求上,更加重要的是结对编程中两人的配合。谁做哪一部分,前端后端的接口怎么对接,前端需要后端提供什么,并返回什么。在这样的沟通和结伴开发场景下我们可以撰写软件需求文档,共同统一并完善代码风格。还有一点很重要的事是,保持一定程度的步履一致,才能知道做的每一部分的预计和队友实现的预计是否相符。如果双方无法配合的默契,那么双方的设计有可能在合并时就会出现问题。
原文:https://www.cnblogs.com/12-34/p/11600484.html