结对编程项目总结

结对编程项目:带UI的小初高数学学习软件

用户:

小学、初中和高中学生。

功能:

1、所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限);

2、用户注册功能。用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册;

3、用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功。密码6-10位,必须含大小写字母和数字。用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功;

4、密码设置成功后,跳转到选择界面,界面显示小学、初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量;

5、用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目,题目全部为选择题),界面显示第一题的题干和四个选项,用户选择四个选项中的一个后提交,界面显示第二题,...,直至最后一题;

6、最后一题提交后,界面显示分数,分数根据答对的百分比计算;

7、用户在分数界面可选择退出或继续做题;

8、小初高数学题目要求见个人项目。

总结:

本次结对编程项目是实现带UI界面的小学,初中,高中数学学习软件,通过注册或者登入后可以选择题目类型和题目数量进行练习,并得到最终分数。

这次项目中,主要是分为一个登入和注册的界面,做题的界面和题目,和得分的界面。其他的内容都是基于这几个界面进行跳转,并传值的。

在整个程序中只有一个mian方法,调用了Login(登入界面),但在最开始同时进行了一个文件查找和Map的key和value索引配对的操作(相当于检索已有用户名和密码)。

然后就是对当前登入界面的按键(登入,注册)进行监听器监听,分别是LoginListener和RegisterListener;当按下登入时会检索Map中的密码和账号,如果存在则登入;当按下注册就会跳转到注册界面showRegisterListener,同时界面有验证码和注册的按键,按下注册码会发送一个4位的字符串验证码,按下注册按键需要密码6-10位中英混合才能注册成功,并且会保留当前用户信息。

当注册或者登入成功后会进入到用户界面(UserUI),可以选择修改密码和进入做题,如果输入密码和新密码后,按下修改或者进入做题都会进入到题目选择界面,但是按下修改需要返回进行确认修改。

进入到选择界面(UserSelect)后,会有一个文本框输入题目数量,一个box选择题目类型,然后点击确认就可以进行做题。如果返回会对当前用户信息进行更新,由于再进行测试时添加了一个黑户,所以不能返回;但测试过大多数没有问题,后续时间来不及继续测试,所以还是存在修改密码不规范被归为黑户所以不能返回。

在box进行选择做题类型,点击确认后,会进入做题界面(分别为小学,初中,高中做题界面);做题界面只会显示题目和一个box框(含四个值),选择box框中正确的值点击确认进到下一题;直到所以题目做完,进入计分界面。

在计分界面(Score),只会显示得分,可以按下继续来继续做题;退出按键没有设置,所以只需要按下右上角的×就可以退出。

复用个人项目实现结对编程项目:

在结对编程中,对小学初中高中的题目生成依然是采用个人项目的思路进行生成的。用的随机生成的方式。

public boolean is_run()
    {
        Random r=new Random();
        int i=r.nextInt(100)+1;
        if(i%2==0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

采用是是操作数 操作符 操作数的模式,先得到第一个操作数,然后通过随机得到是否继续添加操作符和操作数,不断添加,知道达到最大位数。

同时括号也是采用这种策略,判断是否需要括号,然后通过字符串操作得到:

str = "(" + str +")";

一共还是三种方式分别得到小学,初中,高中题目

所以生成题目模块还是很容易的,只需要将C++代码修改为Java代码就行。

 

结对编程的经验:

在整个程序中最麻烦的是监听器的使用,开始对登入按键使用还行,但是后来发现在注册后窗体显示多个,前一个窗体没有关闭;而且在做题的地方,循环生成随机题目会出现多个窗体,所以一点要将上一个窗体作为值传到下一个方法中,然后关闭上一个窗体新生成一个窗体,但是需要注意需要将上一个窗体的必要信息也传给下一个新的窗体(可能当前方法下不会用到),这就相当于不断的新生成一个自己(把过去的属性都携带了,并且可能还携带了新的属性)。

 

在程序中,还有在用户信息注册保存时,我是保留到文件中,对于每一个用户保留下他的用户名和密码(一个文件中,文件为“用户名.txt”),然后在登入时对该目录下所有文件进行一个key和value值的匹配,然后对登入时输入的信息进行确认是否为已有用户。由于是对目录下文件暴力索引,所以会有警告信息,提示对于某些文件没有权限进行访问(直接忽略即可,因为生成的是.txt文件)。所以也就导致在注册时存在一个问题就是会对已有的用户名进行重写覆盖,比如,已经存在张三的用户了,当如果继续注册张三的用户会将上一个张三用户进行覆盖,依旧是不同用户不能使用相同用户名(但是没有添加提示该用户名已经被使用的信息,所以算一个缺点)。

 

还有对字符串运算表达式生成答案时,需要对字符串进行解析,我依然采用的是操作数 操作符 操作数的模式;但是^2,√(平方,根号)还有sin,cos,tan就比较麻烦;

所以我改了一下,变成2^2,2v2,1s30,1c30,1t30(2的平方,根号2,sin30,cos30,tan30),但是在显示时依然是正常的sin,cos,tan(根号直接采用v2)。

所以在解析时,所有的都变成操作数 操作符 操作数的模式。得到操作数后,可以得到操作符,操作数;然后将它当成一个新的操作数……知道只有一个操作数。

 

 

 

 

最终结果:

 

 

 

结对编程的教训:

一定要提早做好,不要以为差不多可以了就慢下来,尤其是一个人做完整个项目的同学,不然肯定要熬几天夜才行。

而且里面还有一些小问题:

修改密码,在用户界面点击修改后跳转到选择界面,需要点击返回进行密码确认修改;如果直接做题密码不会发生修改。

在得分界面,需要退出系统请直接点击右上角的“×”,退出按键只是为了美观设置。

在此文件夹下会生成“姓名.txt”,带表注册了新用户(用户名不同,否则会覆盖)。
在文件夹下有一种“麓山.jpg”图片,这是里面的背景图,请不要随意移动位置,保留在此文件夹下。
由于时间关系,从Login开始大约7-8个.java文件有注释;后面只有部分注释,大部分注释还未修改所有不要误解。

posted @ 2020-10-09 23:30  万川秋水  阅读(93)  评论(0)    收藏  举报