标签:jpanel 直接 难点 包含 http gis 可读性 vc++ 难度
结对编程项目
结对编程项目是在个人项目的基础上实现UI界面,能够让题目以选择题的形式出现,做完题目之后算出最后的得分。这一次的实现过程中,我和队友放弃了我们个人项目使用的C++,而用了java的内容并优化了我们的出题程序。Java和c++的出题逻辑一直,但java更容易实现Ui界面,和短信验证码的接口,因为java有自己的成体系的GUI,而DEVC++不好实现这一点,在网上看一些大佬说Java更适合做前端,C++偏向后端,。还有我们花费了两天学习Qt,但没有找到qt短信验证码的接口,因此我们选择了java。
本次结对编程要实现的功能有:
1、 用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;
2、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;
3、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;
4、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;
5、最后一题提交后,界面显示分数,分数根据答对的百分比计算;
6、用户在分数界面可选择退出或继续做题;
本次的结对编程之中有以下几个难点:
1、各个模块之间的组合
虽然和个人项目的模块组织差不多,但是新加了一些功能,多了短信验证的功能,题目变成了选择题,要进行答案的选择,最后还要统计计分。除此新加的一些功能,;各个功能还要以UI界面的方式呈现,各个模块之间的合理规范组合对于编程实现是不能出错,我和队友商讨之后定下了如下的模块组织:
发送短信的内容放在一个register.java中的一个send类中;
实现了生成验证码并用sendCode函数实现验证码的发送
2、UI界面的设计
UI界面的设计可以说是比较的复杂的但所有的UI界面异曲同工,需要添加许多的面板,Labele,xit按钮和监听,并且将逻辑部分都连接在一起,我们想实现给整个UI加一个背景,UI部分使用的是JPanel,要用到两层,一层放置按键,监听,另一层为设置背景,这个背景为对于按键等透明。而我们使用的确实JFrame,所有的东西直接添加在这个框架上,后来惊奇的发现,可以直接在这个框架上加图片作为背景图片,只要设置其透明度就OK了。添加背景图片的时候图片要和JFrame的宽一致,高要小一些,因为JFrame设置的大小包含title。
3、题目与答案的生成
题目的生成是借用个人项目中的逻辑,以Java语言实现新的makepaper模块:小学、初中、高中三个难度的题目的生成,括号的增加、算式合法性的检测。这一部分在个人项目中已经实现;但在计算结果的时候花费了很大的力气,这里队友采用的方法是:生成正确答案的时候,进行字符串处理,将带平方,根号,三角函数的项,算出结果后,用结果将算式中的项替换,最后变成一个四则运算的表达式,然后利用js的eval函数直接算出结果,随机生成一个随机数(1-3)把真确结果赋给这个位置,其他答案再起基础上加上一个随机数。
4、验证码的发送
短信的发送使用了阿里云的API,有现成的接口,java的实现比较的全。除了在添加其jar文件的时候出现了一些问题之外,这一部分的实现还是比较的顺利的
总结:在做结对编程的时候,一定要在开始编写之前细读需求,建立合适的软件架构体系,管理各个模块的关系,使他们再成为一个整体,达成我们想要的项目成品,觉得通过短信发送验证码非常神奇,当很快能够真正发送的时候感到的是一种神奇的感觉。我的UI编写和代码组织能力比较的薄弱,这一次结对编程跟着队友一起学到了不少代码规范,配置jar包的知识与技巧。他编写代码比较的严谨,遵照逻辑规律,写出来简单易读,可读性很高。这一次的结对编程让我受益匪浅,在的团队项目中希望能注意架构方面的问题。
标签:jpanel 直接 难点 包含 http gis 可读性 vc++ 难度
原文地址:https://www.cnblogs.com/yuanlixiang/p/11603928.html