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

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

代码地址: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.答题情况

六、小结感受

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

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

 

posted on 2017-03-14 13:45  ybsnn  阅读(223)  评论(1编辑  收藏  举报

导航