• 合作和共赢的结对编程——中小学试卷生成器


    写在前面:

    这次结对编程是人生中第一次去尝试这样的编程方式。两个人水平不一样,但是都在发挥着自己的特长——队友是个技术流,而我是个颜值控。

    当然啦这次队友的任务比我要重得多!在此再次给我的队友深深鞠上一躬!

    下面就来说说在这国庆七天假里我们取得了哪些成就以及学到了什么经验吧!

     

     一. 程序运行效果:

    1. 使用说明界面:

    在初始界面有说明按钮,点击显示该界面。就算是新手也能很快学会使用!

     

    2. 初始界面:

     

    如果没有注册过,那么就可以点击注册页面进行注册!

     

    3. 注册界面:

    这里要求密码必须包含英文、大小写、数字,并且密码须为6-10位,否则会有错误提示!

     

    4. 选题界面:

    5. 做题界面: 

    如果已经是最后一题了,会提示交卷!

     

    6.结束界面:

     结束做题,可以选择重新作题、注销以切换账户和退出!

     

    二. 优点:

    外观:

       1.图形界面的美化

          这次对于GUI界面的美化,完全是跟着个人感觉走的,一些配色实在是尽力了,个人感觉还算是可以,毕竟是第一次做GUI(⓿_⓿),但是我相信有了经验,下次会做的好很多很多。

         下面附上一张颜色表吧~

       

    内容:

    2. 每个界面一个java程序,各个界面之间互不干扰(除了成绩界面需要传入做题时的成绩)。

         

    3.对于模块的分层比较详细,每个函数都有自己做的事情。

       这里以主界面程序的结构为例,详细内容篇幅过长就不展示啦~

    /*主界面,登录界面*/
    public class MainUI extends JFrame implements ActionListener

    { FileOutputStream fileOutputStream=null; //文件输出流 File file1=new File("E:\注册信息\用户名.txt"); File file2=new File("E:\注册信息\密码.txt"); //定义组件 JButton jb1,jb2,jb3=null; JPanel jp1,jp2,jp3,jp5=null; JTextField jtf=null; JLabel jlb1,jlb2,jlb3=null; JPasswordField jpf=null; ButtonGroup bg=null; public static void main(String[] args) //主函数 public MainUI(){} //构造函数,设置布局 private class aLabel extends JLabel //内部类,读取背景图
    public void actionPerformed(ActionEvent e) //事件判断
    public void login() //登陆判断方法
    public void register() //注册判断方法
    public void instructions() //使用说明界面
    public void clear() //清理文本信息
    int Check_Repeat(String S1,String S2); //检查用户名密码
    void Create_Folder(); //创建文件夹
    }

    4. 附加了说明部分,更加人性化一些。

    5. 基于上一次互相看对方代码吸取到的经验教训,这次整个代码的结构、变量和函数的命名、注释的精简适用等方面,都有了很大的进步。

     

    三.  遇到的问题:

            1. 最让人头大的问题。第一次做UI,因此一开始完全不了解该做什么,应该怎样去做。刚开始做出来的界面问题很大,在之后的队友之间的讨论中,改成了现在的一个界面一个class的做法,不仅使代码可读性增加,而且还便于调试运行。

            2. 代码复用问题。一个是用的java一个用的c++做的个人项目,因此主要用java的个人项目补充,然后在计算题目的时候,因为队友c++的个人项目里有计算题目的内容,想着可以直接复用,不过用了之后问题出了很多,因为java不支持对引用,对值的分开访问,所以最后还是只能重写。

            3. 界面美化方面的问题。应证了之前老师说的,在不同电脑上,同一个程序运行出来的结果可能变得很不一样,导致我们修改多次,最后取得一个相对满意的结果。

            4. 一个小小的问题。一个是对结果的取两位小数,结果在测试时发现还是有些会有很多位小数,所以最后混用了多种取两位小数的方法;还有一个是产生错误结果时遇到的问题,最开始的想法是正确结果加上或减去3个不一样的随机数,就产生了三个错误答案,后来测试时发现如果值太大会导致4个答案一模一样,所以最后改成当结果大于10万时,乘以或除以随机数。

            5. 队友之间的配合问题。一开始的时候两人想法不一样,有些时候都无法理解对方的意思,导致两者写出来的代码完全无法拼接,所以最后折中成按照一个人的思路的大方向写项目,两个人用相同风格的思路写代码,最后相互找问题,测试也变得很方便。

    四. 后续的学习:

    关于GUI,不仅可以使用java实现。但就java这一个语言来说,有许多的相关内容值得我们去深入探索。虽然这次并没有用到,但是还是应该试一试。

    1. Graphics 类:

         

    2. 鼠标事件适配器:

        

    3. window事件:

        

         注:以上后续内容参考https://www.cnblogs.com/xdp-gacl/p/3633744.html 仍有部分知识没有列在这里,感兴趣的童鞋可以去看一看~非常详细。

     

    写在最后:

    一个人叫个人,多个人称之为团体。

    一个人模式很单一,自我约束,团体里面的人就不一样了,每个团体都有自己内部的约束和管理模式,对于团体里面的个人,其行为不能超出团体的管束范围。

    从个人项目到结对编程,都是为了更好地迎接之后的团队合作编程。

    多学,多写,多思考!

  • 相关阅读:
    winform把所有dll打包成一个exe
    Windows10+Python3下安装NumPy+SciPy+Matplotlib
    Windows10+Python3+BeautifulSoup4 安装
    解决:无法在发送 HTTP 标头之后进行重定向。 跟踪信息: 在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>……
    "请求被中止: 未能创建 SSL/TLS 安全通道"解决办法
    被“1”和“l”给坑了
    谁把我的代码覆盖了
    jQueryUI datepicker 报错: TypeError: inst is undefined
    VS 附加不上w3wp.exe
    MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
  • 原文地址:https://www.cnblogs.com/sobermech/p/9756817.html
Copyright © 2020-2023  润新知