https://coding.net/u/zachary0320/p/java_test1_git/git

题目要求:

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

流程图:

 

 

 

 

关键代码:


记录用户做错题目,在JFrame的History中可以看见:

 1 JTextArea textArea = new JTextArea();
 2     textArea.addAncestorListener(new AncestorListener() {
 3         public void ancestorAdded(AncestorEvent event) {
 4             File file = new File("./test.txt");
 5                 
 6             FileReader fw = null;
 7             fw = new FileReader(file);
 8             BufferedReader br = new BufferedReader(fw);
 9             String line = "";
10             try {
11                 while((line = br.readLine()) != null){
12                     textArea.append(br.readLine()+"\r\n");
13                 }
14             } catch (IOException e) {
15                 e.printStackTrace();
16             }
17             try {
18                 br.close();
19             } catch (IOException e) {
20                 e.printStackTrace();
21             }
22         }

设置计时功能,在ShowTimeApp的类中可以实现:

 1 //显示时间的Jpanel
 2 lp = new LabelPanel();
 3 getContentPane().add(new TimePanel());
 4 
 5 // 显示
 6 setVisible(true);
 7 
 8 // 设置时间变化的任务
 9 Timer timer = new Timer();
10 timer.schedule(new ShowTime(), new Date(), 1000);
11 
12 //其他调用的类
13     class ShowTime extends TimerTask {
14         public void run() {
15             // 刷新
16             lp.label.setText(sdf.format(new Date()));
17             repaint();
18         }
19     }
20 
21     class TimePanel extends JPanel {
22         public void paint(Graphics g) {
23             super.paint(g);
24             // 显示时间
25             long t = System.currentTimeMillis()-start-8*1000*3600;
26             g.drawString(sdf.format(t), 270, 20);
27         }
28     }
29 
30     class LabelPanel extends JPanel {
31         JLabel label = new JLabel();
32 
33         public LabelPanel() {
34             add(label);
35         }
36     }

输入文本框回答后创建的事件:

 1 JTextField answer_text = new JTextField();
 2             answer_text.addFocusListener(new FocusListener(){
 3                 public void actionPerformed(FocusListener e) {
 4                 
 5                 }
 6 
 7                 @Override
 8                 public void focusGained(FocusEvent e) {
 9                     // TODO Auto-generated method stub
10                     result_label.setText("请输入答案");
11                 }
12 
13                 @Override
14                 public  void focusLost(FocusEvent e) {
15                     // TODO Auto-generated method stub
16                     answer = answer_text.getText();
17                     int i= (answer_text.getY()-20)/30;
18                     if (answer_text.getText().equals(ans)) {
19                         result_label.setText("正确");
20                         
21                         gener.getYourAnswers()[i] = "right";                    
22                     }
23                     else{
24                         result_label.setText("错误");
25                     
26                         gener.getYourAnswers()[i] = "你做错了";
27                     }
28                     if (i == N) {
29                         //停止时间
30                     }
31                 
32                 }
33             }
34             );

点击提交后的创建的事件:

 1 btnNewButton = new JButton("提交");
 2         btnNewButton.addActionListener(new ActionListener() {
 3             public void actionPerformed(ActionEvent e) {
 4                 try {
 5                     writeInFile();
 6                 } catch (FileNotFoundException e1) {
 7                     // TODO Auto-generated catch block
 8                     e1.printStackTrace();
 9                 } catch (IOException e1) {
10                     // TODO Auto-generated catch block
11                     e1.printStackTrace();
12                 }
13                 //退出窗口
14             }

写入文件的函数:

 1 private void writeInFile() throws IOException {
 2                 // 写入文件
 3                 long date = System.currentTimeMillis();
 4                 File file = new File("./test.txt");
 5                 
 6                 FileWriter fw = new FileWriter(file,true);
 7                 BufferedWriter bw = new BufferedWriter(fw);
 8                 bw.write(sdf2.format(date)+"");
 9                 bw.newLine();
10                 for (int j = 0; j < N; j++) {
11                     String str = gener.getTitles()[j] +" "+gener.getAnswers()[j]+"    "+gener.getYourAnswers()[j]+"";
12                     bw.write(str);
13                     System.out.println("here");
14                     bw.newLine();
15                 }
16                 bw.close();
17             }

 

GUI部分截图:

GUI主页面:

 

生成题目主页面:

查看历史主页面:

test.txt文件内容:

 PSP

PSP2.1

Personal Software Process Stages

Time (%) Senior Student

Time (%)

Planning

计划

10

5

· Estimate

估计这个任务需要多少时间

10

5

Development

开发

85

90

· Analysis

需求分析 (包括学习新技术)

7

10

· Design Spec

生成设计文档

5

6

· Design Review

设计复审

4

6

· Coding Standard

代码规范

3

3

· Design

具体设计

10

12

· Coding

具体编码

36

21

· Code Review

代码复审

7

9

· Test

测试(自我测试,修改代码,提交修改)

13

23

Reporting

报告

5

5

·

测试报告

2

2

·

计算工作量

2

1

·

并提出过程改进计划

1

2

 

心得总结:

1、对GUI界面编程不熟悉,还需要加强;

2、GUI界面的控件操作要加强练习

posted on 2017-03-15 11:56  ソウ  阅读(215)  评论(1编辑  收藏  举报