Java教程

结对编程总结

本文主要是介绍结对编程总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

结对编程总结

结对组员:崔舒媛、胡香铭

个人项目互评博客:

结对项目之个人项目互评 - 阿小楠 - 博客园 (cnblogs.com)

中小学试卷生成个人项目结对互评 - 郑北 - 博客园 (cnblogs.com)

 

前述

通过个人项目,我们各自完成了小初高数学题目生成的程序编写。在对双方的代码进行理解、评价后,进入到结对项目——实现带UI的小初高数学学习软件。由于队友使用的C++语言完成的个人项目编写,对于实现项目中有短信验证功能较难实现,因此此次的项目是延续使用了我的个人项目为主要参考进行的,采用了JAVA语言,主要使用JAVA swing来实现界面。

 

团队分工

胡香铭:功能实现、改进及后端程序

崔舒媛:界面功能实现与交互

 

项目需求的实现

1、所有功能的图形化界面我们采用了JAVA GUI来实现,采用桌面应用的方式进行展示。由于之前从未接触过项目的图形界面化实现,因此我的第一步工作就是初步学习JAVA GUI,再逐渐实现部分界面。

 

2、用户注册功能。我们此次的注册功能实现采用了榛子云,通过注册用户,开通短信验证功能进行实现。具体代码如下:

 

    public String VerificationCodeApply(String a)
    {
        if(a.equals(""))return "0";
        int flag = 0;                                 //输入的字符串是否已注册的标记,为0为未注册其余均已注册
        try {
            FileReader fr = new FileReader("user.txt");
            BufferedReader bf = new BufferedReader(fr);
            String temp;

            while ((temp = bf.readLine()) != null) {
                if (temp.equals(a)) {
                    flag++;
                }
                if (flag == 1) {
                    bf.close();
                    fr.close();
                    return "0";
                }
                flag = 0;
            }
            bf.close();
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Random rand=new Random();
        StringBuilder verificationCode= new StringBuilder();
        for(int i=0;i<4;i++){
            verificationCode.append(rand.nextInt(10));
        }
        String apiUrl="https://sms_developer.zhenzikj.com";    //以下为榛子云的短信发送
        String appId="110134";
        String appSecret="62c856d9-5270-4b2f-8fe9-4b0a3760390c";
        ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
        Map<String, Object> params = new HashMap<>();
        params.put("number", a);
        params.put("templateId", "7028");
        String[] templateParams = new String[2];
        templateParams[0] = verificationCode.toString();
        templateParams[1] = "5分钟";
        params.put("templateParams", templateParams);
        String result = null;
        try {
            result = client.send(params);
        } catch (Exception e) {
            e.printStackTrace();
        }
        assert result != null;
        if(result.charAt(8)!='0')return "0"; //检测是否成功发送验证码
        else return verificationCode.toString();
    }

 

3、在此项目中,我们采用手机号码来作为用户名进行登录,简化了再重新存储用户名的繁琐工作,使用user.txt文件对用户信息进行存储和读取。信息存储为一行用户名,一行密码,在对比两次密码输入一致后才能注册成功。最终将项目打包为exe文件。

 

4、每个界面之间的交互、跳转大部分采用按钮监控功能来实现。为了将项目运行结果显示在屏幕正中间,使用了屏幕长宽获取的函数:

 

public class ScreenUtils {

    /*
        获取当前电脑屏幕的宽度
     */
    public static int getScreenWidth(){
        return Toolkit.getDefaultToolkit().getScreenSize().width;
    }

    /*
        获取当前电脑屏幕的高度
     */

    public static int getScreenHeight(){
        return Toolkit.getDefaultToolkit().getScreenSize().height;
    }
}

 

5、生成题目的功能在继用个人项目的基础上,添加了答案及多个选项的功能。由于通过个人项目代码互评,可发现胡香铭同学的逻辑性是优于我的,因此,极具逻辑性的该功能也由胡香铭同学实现。在完成题目正确答案的计算后,通过对正确答案的更改来产生相似的另外三个答案,并利用随机的方式将正确答案分散。

6、最后实现的是打分界面,分数根据答对的百分比计算,用户在分数界面可选择退出或继续做题;

 

 

 

 

项目不足

1、界面美化不足

由于第一次接触UI界面化的编程,在经过短暂的学习后,虽能实现项目所需功能,但在美化方面确实略显不足。尤其在对比了其他组别的项目成功后,深知自己的欠缺与不足。

2、程序有一定的响应时间

在答题结束,进行判分的过程中,程序总有一段响应时间,使得项目看起来似乎有些卡顿。

3、答案的呈现不足

由于该项目采用自己写的随机数来生成题目,因此在题目计算中总是会出现不可避免的无限小数,但由于用分数呈现过于复杂,还需排除与题目的重合情况,因此答案会出现多位小数。

 

 

 

 

此次结对编程的经验、教训

由于这算是接触的第一个与他人一起合作完成的项目,因此在各方面的经验和能力都略显不足,在感受到其他个别组的设计成果后,才发现自己的界面实现有很多不足。也要感谢我的结对同伴,在国庆假期中与我一同在自习室完成了此次项目,且大部分棘手的问题都是由他来解决的。并且通过此次编程学习,深刻认识到了团队沟通的重要性,在对所写项目进行警告去除时,由于规范化排查是胡同学做的,于是我将他改好的程序再次进行修改,造成了时间和成果的浪费。我一定会汲取经验,努力在下一次项目中完成得更好。

这篇关于结对编程总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!