• 结对作业-小学生四则运算改进版


    ---恢复内容开始---

    代码地址:https://coding.net/u/ybsnn/p/GUI_four_formula/git

    项目最终代码及可运行的jar包都在在long_final文件夹下。

    成员:何跃斌(082)、陈鑫龙(078)

    分工:1.四则运算、用户及记录相关函数编写:何跃斌

    2.GUI图形界面设计及应用函数:陈鑫龙

    合作:增加用户答题耗时计算功能、语言切换

    照片:

    一、题目描述

    我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

    1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
    2. 有计时功能,能显示用户开始答题后的消耗时间。
    3. 界面支持中文简体/中文繁体/英语,用户可以选择一种。

    二、需求分析

    1.这是一个应用,有着不同的用户使用,因而要有用户注册、登陆功能。

    2.为了储存用户的对错总数,要有文件库或数据库支持。

    3.计时功能的实现,要求设置静态变量,实时显示这个变量,不断累加,直至用户完成答题。

    4.中英切换可以采取查字典的方式实现。

    5.简体和繁体切换倒是可以使用外部jar包,调用函数完成。

    三、程序设计

    1.在项目下创建users.txt文件,储存用户信息。将用户信息抽象为用户类,包括账号、密码、昵称三个属性;创建管理用户类来支持用户注册、登陆功能;

    2.在项目下创建record.txt文件,记录每次测试的结果。这就涉及到记录类,包括账号、这次答对的题数、总题数、耗时四个属性;然后记录管理类就根据账号创建或读取个人记录文件,以及备份到record.txt总记录文件。

    3.这次将计时功能简化了,用时间差计算用户答题耗时。

    4.苦于不会使用配置文件实现语言简单切换,本次只对一个介绍页面各个标签逐一设置了。

    四、代码展示

    1.增量计算

    (1)创建新记录,写入用户记录文件及总记录文件

    public static void writefile(Record record){
            add_record("record.txt", record);
            add_record(record.getUsername(), record);
        }
        public static void add_record(String filename,Record record){
            File file =new File(filename);
            FileOutputStream outp;
            try {
                outp = new FileOutputStream(file,true);
                PrintStream out=new PrintStream(outp, true);
                out.println(record);
                out.close();
                System.out.println("write object success!");
            } catch (IOException e) {
                System.out.println("write object failed");
                e.printStackTrace();
            }
    View Code

    (2)用户登陆后,读取自己的记录文件

    public static ArrayList<Record> readfile(String username) throws FileNotFoundException{
                    ArrayList<Record> r =new ArrayList<>();
            Scanner input=new Scanner(new File(username));
            while(input.hasNext()){
                Record record=new Record(input.next(),input.nextInt(),input.nextInt(),input.nextDouble());
                r.add(record);
            }
            input.close();
                    return r;
        }
    View Code

    (3)累加文件全部记录的答对题数、总题数。即可获得该用户的答题总情况

      r=Record_manage.readfile(username);
            for(Record record:r){
                correct_num=correct_num+record.getCur_correct();
                total_num=total_num+record.getCur_total();
            }
            if(total_num==0)
                history.setText("");
            else
                history.setText("累计答对题数为"+correct_num+",总题数为"+total_num);
    View Code

    2.计时功能(实际上实现计算用户答题耗时)

      long end_time=System.currentTimeMillis();
          double cost_time=(end_time-begin_time)*1.0/1000;

    3.语言切换

    界面如右所示:

    (1)中文转英语

    private void EnglishActionPerformed(java.awt.event.ActionEvent evt) {                                        
            welcome.setText("welocme,"+username);
            title.setText("Pupils' arithmetic online test");
            commit.setText("start");
            history.setText("history record:right,"+correct_num+"times;total,"+total_num+"times");
            intro.setText("4 titles each page");
        }                            
    View Code

    (2)简体转繁体

    private void fantiActionPerformed(java.awt.event.ActionEvent evt) {                                      
            welcome.setText(ChineseUtils.simpToTrad(welcome.getText()));
            title.setText(ChineseUtils.simpToTrad(title.getText()));
            commit.setText(ChineseUtils.simpToTrad(commit.getText()));
            history.setText(ChineseUtils.simpToTrad(history.getText()));
            intro.setText(ChineseUtils.simpToTrad(intro.getText()));
        }                          
    View Code

    所需的jar包:

    (3)恢复默认

    private void ChineseActionPerformed(java.awt.event.ActionEvent evt) {                                        
            begin B = new begin(username);
            B.setVisible(true);
            this.setVisible(false);
        }                                       
    View Code

     五、程序运行

    1.登陆界面及注册界面

    2. 说明及语言转换

    3.答题界面及答题情况

    4.答题情况

    六、小结感受

    刚开始我们就各自的分工写代码,粗略地设想对方会怎样调用自己的代码。可是当把我们的代码合在一起时,才发现有很多的错误,函数调用相当艰辛。

    之后我们共用同一电脑完善这个项目,深感沟通很重要。

  • 相关阅读:
    前端之多行省略号显示...
    关于跨域的那点事情
    前端之碰到数组等基础类型改变而试图无更新
    前端小记之vue下载二进制文件
    防抖和节流
    前端小记之style三元运算符
    Django之坑TemplateDoesNotExist
    MYSQL之net start mysql 1067报错
    vscode之创建django项目
    phpstorm使用mysql出现timezone问题
  • 原文地址:https://www.cnblogs.com/ybsnn/p/6548085.html
Copyright © 2020-2023  润新知