201421123016郑怀勇     201421123017康建灿

程序代码 / 康建灿

一、需求分析

  1. 记录用户的对错总数。
  2. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
  3. 有计时功能,能显示用户开始答题后的消耗时间。
  4. 具有GUI界面

二、功能设计

三、代码展示:

读取记录:

boolean has = false;
int t=0,f=0;
File file = new File("D:/text.txt");
String line =null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
try {
while((line = br.readLine()) != null){
String[] num = line.split("#");
f=Integer.parseInt(num[1]);
t=Integer.parseInt(num[3]);
}} catch (IOException ex) {
}
}catch (Exception e) {
e.printStackTrace();
}
if(!has)
tagLabel1.setText("无记录");

 

文件数据保存:

public class pro {
int t = 0, f = 0; void file(int d, int count) {
File file = new File("D:/text.txt");
String line = null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
try {
while ((line = br.readLine()) != null) {
String[] num = line.split("#");
t = Integer.parseInt(num[1]);
f = Integer.parseInt(num[3]);
}
} catch (IOException ex) {
}
} catch (FileNotFoundException ex) {
get(d, count);
}
get(d, count);
} public void get(int d, int count) {
FileOutputStream fop = null;
File file;
String content = "错误#" + (d + t) + "#正确#" + (count + f) + "#";
try {
file = new File("D:/text.txt");
fop = new FileOutputStream(file);
if (!file.exists()) {
file.createNewFile();
}
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }

随机生成四则运算及正确答案:

int a[][]=null;
a=new int [1000][3];
String[] b=null;
b=new String [1000];
String stil[]=null;
stil=new String[1000];
int i = 0; for(;i<m;i++){
int h=(int)(0+Math.random()*(1-0+1));
if(h==1){
Zhengshu(i,b,c);
}
else
{
Fenshu(i,b,a,c);
}
answerEdit[i] = new JTextField();
panel.add(new JLabel(b[i]));
panel.add(answerEdit[i]);
} ``` public static String Fenshu(int i, String b[], int a[][], String c[]) {
int x = (int) (0 + Math.random() * (9 - 0 + 1));
int y = (int) (0 + Math.random() * (9 - 0 + 1));
while (x >= y || y == 0 || x == 0) {
x = (int) (0 + Math.random() * (9 - 0 + 1));
y = (int) (0 + Math.random() * (9 - 0 + 1));
}
int k = (int) (0 + Math.random() * (9 - 0 + 1));
int t = (int) (0 + Math.random() * (9 - 0 + 1));
while (k >= t || t == 0 || k == 0) {
k = (int) (0 + Math.random() * (9 - 0 + 1));
t = (int) (0 + Math.random() * (9 - 0 + 1));
}
int o = (int) (0 + Math.random() * (3 - 0 + 1));
if (o == 0) {
b[i] = "(" + x + "/" + y + ")+(" + k + "/" + t + ")=";
a[i][0] = x * t + k * y;
a[i][1] = y * t;
int n = divisor(a[i][0], a[i][1]);
c[i] = a[i][0] / n + "/" + a[i][1] / n;
}
if (o == 1) {
b[i] = "(" + x + "/" + y + ")-(" + k + "/" + t + ")=";
a[i][0] = x * t - k * y;
a[i][1] = y * t;
int n = divisor(a[i][0], a[i][1]);
c[i] = a[i][0] / n + "/" + a[i][1] / n;
}
if (o == 2) {
b[i] = "(" + x + "/" + y + ")*(" + k + "/" + t + ")=";
a[i][0] = x * k;
a[i][1] = y * t;
int n = divisor(a[i][0], a[i][1]);
c[i] = a[i][0] / n + "/" + a[i][1] / n;
}
if (o == 3) {
b[i] = "(" + x + "/" + y + ")÷(" + k + "/" + t + ")=";
a[i][0] = x * t;
a[i][1] = k * y;
int n = divisor(a[i][0], a[i][1]);
c[i] = a[i][0] / n + "/" + a[i][1] / n;
}
return b[i] + c[i];
}; public static String Zhengshu(int i, String b[], String c[]) {
int x = (int) (0 + Math.random() * (100 - 0 + 1));
int y = (int) (0 + Math.random() * (100 - 0 + 1));
int z = (int) (0 + Math.random() * (3 - 0 + 1));
if (z == 0) {
b[i] = x + "+" + y + "=";
c[i] = x + y + "";
}
if (z == 1) {
b[i] = x + "-" + y + "=";
c[i] = x - y + "";
}
if (z == 2) {
b[i] = x + "*" + y + "=";
c[i] = x * y + "";
}
if (z == 3) {
b[i] = x + "÷" + y + "=";
int n = divisor(x, y);
c[i] = x / n + "/" + y / n;
}
return b[i] + c[i];
} public static int divisor(int i, int j)// 最大公约数
{
int k = 1, s;
for (s = 1; s <= i && s <= j; s++) {
if (i % s == 0 && j % s == 0)
k = s;
}
return k; }

计时器:

JLabel timeText = new JLabel();

        now.setHours(0);
now.setMinutes(0);
now.setSeconds(0);
final Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Date now2 = new Date(now.getTime() + 1000);
now = now2;
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
timeText.setText(formatter.format(now));
}
});
timer.start();
timeText.setText("用时 :" + timeText.getText());
// timeText.setText("time");
commitBtn = new JButton("确定");
commitBtn.addActionListener(this); commitBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
```
}

显示结果:

public result(int m2, int count2,double g2,String time2) {
// TODO Auto-generated constructor stub
this.setBounds(500, 250, 450, 200);
this.setResizable(true);
this.m=m2;
this.count=count2;
this.g=g2;
this.time=time2;
this.setTitle("四则运算");
jg();
} private void jg(){
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout(5,5)); JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(new JLabel("本次共出"+m+"题,答对"+count+"题,正确率为:"+g+",用时 :"+time));
JPanel panel2 = new JPanel();
mainPanel.add("Center",panel);
mainPanel.add("South",panel2); add(mainPanel);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub }
}

四、测试运行截图:

主界面:

生成四则运算:

结果:

存储于文本:

五、PSP

PSP2.1 Personal Software Process Stages Estimated time(h) actual time(h)
Planning 计划 1 1.5
· Estimate 估计这个任务需要多少时间 24 40
Development 开发 24 34
· Analysis 需求分析 (包括学习新技术) 1 1.2
· Design Spec 生成设计文档 7 10
· Design Review 设计复审 0.5 0.5
· Coding Standard 代码规范 0.5 0.8
· Design 具体设计 1.5 1.5
· Coding 具体编码 20 30
· Code Review 代码复审 10 15
· Test 测试(自我测试,修改代码,提交修改) 1 3
Reporting 报告 20 25
· 测试报告 1 1.5
· 计算工作量 0.5 1
· 并提出过程改进计划 2 4

六、总结

此次与康建灿一起完成结队作业,先对功能进行分析,最后选取了存储功能以及计时器功能,并以康建灿的代码作为基础代码进行扩展延伸。由于2个人的编程能力都不是很强,过程中一直磕磕碰碰,有很多不懂,尤其是在图形界面方面,可以说2个人都很薄弱,一直在巩固以前学习的Java知识。

而结队无疑提高了我们的效率,俗话说三个臭皮匠顶个诸葛亮,在编程过程中,能够达到互相监督,互相学习的效果。正所谓旁观者清,当其中一个人在编程,另一个人就能在旁边更直观地发现错误。

汉堡包点评:

先来一片面包:我们有着共同的目标,都想写好一个代码,能给对方予以依靠;

再把肉放上:就算2个人的编程能力都不是很好,但也不能自暴自弃,更不能嫌弃对方,而是应该互相鼓励,强调我们可以做到更好;

然后再来一片面包:最后,思路与方向都清晰了,这时,更应该互相激励,努力做到更好。

七,综上,附上合照一张

结对编程1-基于GUI的四则运算生成器的更多相关文章

  1. 结对编程1 —— 基于GUI和Swing的四则运算题目生成器

    合作伙伴 201421123102 王艳秋 201421123106 陈 雄 代码地址 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI( ...

  2. 结对作业--基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...

  3. 结队编程-基于gui的四则运算生成器

    成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...

  4. 结对作业1----基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...

  5. 结对编程1----基于java的四则运算生成器

    小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...

  6. 结对作业:基于GUI实现四则运算

    1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...

  7. 结对编程——paperOne基于java的四则运算 功能改进

    项目成员:张金生     张政 由于新的需求,原本使用JSP的实现方式目前改为Java实现,即去除了B/S端. 需求分析: 1.四则运算要满足整数运算.分数运算两种: 2.运算题目随机,并且可以打印题 ...

  8. 结对编程1--基于GUI的四则运算题目生成器

    最终项目详细代码(coding地址)/李志强的博客/我的详细代码/方言的博客 一.需求分析 1.实现之前项目的功能,如:除了整数之外,还要支持真分数的四则运算,真分数的运算,并且要求能处理用户的输入, ...

  9. 基于GUI的四则运算

    基于GUI的四则运算 李志强 201421123028 连永刚 201421123014 林方言 201421123023 coding 地址 https://git.coding.net/lizhi ...

随机推荐

  1. MapReduce最大值

    package com.bw.hadoop;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import ...

  2. Elastic Stack

    Elastic Stack 开发人员不能登陆线上服务器查看详细日志 各个系统都有日志,日志数据分散难以查找 日志数据量大,查询速度慢,或者数据不够实时 官网地址:https://www.elastic ...

  3. Android NDK Application.mk(中文翻译)

    作者:阿宝 更新:2016-08-31 来源:彩色世界(https://blog.hz601.org/2016/07/26/android-NDK-application-mk/index.html) ...

  4. 在 Android 中如何优雅地配置私密信息

    在实际的项目开发中,经常会用到一些第三方的 SDK ,而使用这些 SDK 基本上都是需要配置 APPKEY 或 APPSECRET 等信息.此外 APP 打包时需要 KEYSTORE , STOREP ...

  5. How to customize the console applicaton

    下面是如何最大化console和改变其显示的字体颜色的代码,顺便包含了计时代码(帮助做性能分析): class Program { [DllImport("kernel32.dll" ...

  6. linux 网络编程

    linux网络编程中主要分为服务器和客户端两部分,而网络编程中又分为TCP和UDP两种.TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. ...

  7. JVM内存概览与GC初步

    一.JVM内存空间概览 Java虚拟机使用的内存块包含 栈空间Stack (虚拟机栈.本地方法栈).堆空间 Heap Memory .永久区 Perm Gen(related to method ar ...

  8. 介绍maven构建的生命周期

    介绍maven构建的生命周期 这篇是 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 的 ...

  9. python+selenium自动化软件测试(第9章) :Logging模块

    9.1 Logging模块 什么是日志记录?记录是跟踪运行时发生的事件的一种手段.该软件的开发人员将记录调用添加到其代码中,以指示某些事件已发生.事件由描述性消息描述,该消息可以可选地包含可变数据(即 ...

  10. 基于 HtmlHelper 的自定义扩展Container

    基于 HtmlHelper 的自定义扩展Container Intro 基于 asp.net mvc 的权限控制系统的一部分,适用于对UI层数据呈现的控制,基于 HtmlHelper 的扩展组件 Co ...