个人开发流程 计应192 郑运可

一、计划

    1.随机生成10道100以内的小学生加减乘除算式,要求不出现负数

    2.当提交页面后,判断结果是否正确,并且,计算出正确率和所用时间

二、需求分析

    作为一名一年级小学生的家长,我希望制作一个出题软件,完成100以内的正整数的加减法题随机产生。以便减轻我的家庭负担

三、具体设计

    系统开始,随机产生10道加法或者减法,计算完成后,统计做了多少道题,正确率

四、具体编码

 

package com.yu.project;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.yu.jishiqi.jishiqi;
import com.yu.tiku.Lianxiti;
public class Count extends JFrame {
public JPanel miaobiaopanel;//秒表面板
public JPanel xuanpanel;//选择面板
public JPanel Countpanel;//计算面板
public JPanel Buttonpanel;//创建按钮及结果面板
public JPanel Youpanel;//创建右侧面板
public JButton Clearbutton;//创建清空按钮
public JButton Resetbutton;//创建重置按钮
public JButton Printfbutton;//创建打印按钮
public JLabel CountLable;//创建正确率(标签),正确率在标签正呈现
public jishiqi miaobiao;
public myRadio myradio;
LableAndResult le=null;
SomeListener sl=null;
Container container = getContentPane();
public Count(Lianxiti lianxiti){
le=new LableAndResult(lianxiti);
//初始化按钮
Font font=new Font("微软雅黑",Font.BOLD,40);
Clearbutton = new JButton("清空");
Clearbutton.setFont(font);
Resetbutton = new JButton("重置");
Resetbutton.setFont(font);
Printfbutton = new JButton("打印");
Printfbutton.setFont(font);
//设置按钮大小
Clearbutton.setPreferredSize(new Dimension(200, 50));
Resetbutton.setPreferredSize(new Dimension(200, 50));
Printfbutton.setPreferredSize(new Dimension(200, 50));
//初始化计数面板
init();
//初始化按钮面板
Buttonpanel = new JPanel();
Buttonpanel.setLayout(new FlowLayout());
Buttonpanel.setBorder(BorderFactory.createLineBorder(Color.GREEN));
Buttonpanel.add(Clearbutton);
CountLable = new JLabel();
CountLable.setPreferredSize(new Dimension(200, 50));
CountLable.setFont(font);
CountLable.setBorder(BorderFactory.createLineBorder(Color.BLACK));
CountLable.setHorizontalAlignment(JLabel.CENTER);
//将按钮添加至按钮及结果面板中
Buttonpanel.add(Resetbutton);
Buttonpanel.add(Printfbutton);
JPanel youpanel=new JPanel();
youpanel.add(CountLable,BorderLayout.NORTH);
//为计数面板添加标签和文本框
// le.CountLable(Countpanel);
//设置窗体属性
setLayout(new BorderLayout());
setBounds(200,10,800,1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//计时器
//Countpanel.setBackground(Color.YELLOW);
miaobiao=new jishiqi();
miaobiao.startMiaoniao();
miaobiaopanel=miaobiao.get();
container.add(miaobiaopanel);
//选择
myradio=new myRadio();
container.add(myradio.get(),BorderLayout.EAST);
//将计数面板,按钮面板放置在容器中指定位置
//container.add(Zhongpanel, BorderLayout.CENTER);
container.add(Countpanel, BorderLayout.CENTER);
container.add(Buttonpanel,BorderLayout.SOUTH);
container.add(youpanel, BorderLayout.EAST);
//System.out.println(Countpanel.getHeight());
sl=new SomeListener(this);
sl.myAddActionLIstener();
}
public void init() {

Countpanel = new JPanel();
le.CountLable(Countpanel);
Countpanel.setLayout(new GridLayout(25, 4,10,10));
container.add(Countpanel, BorderLayout.CENTER);
}
}

 

 

package com.yu.project;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.yu.config.MyConfig;
import com.yu.tiku.Lianxiti;
public class LableAndResult {
public static List<JLabel> tiList = new ArrayList<>();//创建用户输入计算结果的文本框集合
public static List<JTextField> userJieguoList = new ArrayList<>();//答题框
public static List<Integer> trueList = new ArrayList<>();//创建所有题目正确答案集合
private Lianxiti lianxiti = null;
private int ji=0;
private int ou=0;
private int i=0;
public LableAndResult(Lianxiti lianxiti) {
this.lianxiti=lianxiti;
}
public void CountLable(JPanel Countpanel){
int tishu=Integer.parseInt(MyConfig.myMap.get("题数"));
System.out.println(tishu);
for(i=0;i<tishu;i++){
JLabel label = new JLabel();
//重点:在设置布局的条件下,调用setPreferredSize(new Dimension(80, 20))可以设置标签的大小
//重点:而不能调用setsize()方法
label.setPreferredSize(new Dimension(80, 30));
label.setFont(new Font("楷体",Font.BOLD, 30));
label.setBorder(BorderFactory.createLineBorder(Color.WHITE));//设置标签的边界
tiList.add(label);//list为题目(标签)集合,题目在标签中呈现
JTextField textField = new JTextField(4);
userJieguoList.add(textField);//list1为用户输入计算结果的文本框集合
}
for(i = 0;i<tishu*2;i++){//利用if-else语句来间隔输出标签和文本框
if(i%2 == 0){//如果余数为0,则添加标签
Countpanel.add(tiList.get(ji));
ji++;
}else{//如果余数为1,则添加文本框
userJieguoList.get(ou).setFont(new Font("楷体",Font.BOLD, 25));
Countpanel.add(userJieguoList.get(ou));
ou++;
}
}
CreateRandom();//调用创建随机题目的方法CreateRandom();
}
public void CreateRandom(){
lianxiti.CreateRandom();
}
}

 

package com.yu.project;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.yu.config.MyConfig;
import com.yu.tiku.Lianxiti;
public class LableAndResult {
public static List<JLabel> tiList = new ArrayList<>();//创建用户输入计算结果的文本框集合
public static List<JTextField> userJieguoList = new ArrayList<>();//答题框
public static List<Integer> trueList = new ArrayList<>();//创建所有题目正确答案集合
private Lianxiti lianxiti = null;
private int ji=0;
private int ou=0;
private int i=0;
public LableAndResult(Lianxiti lianxiti) {
this.lianxiti=lianxiti;
}
public void CountLable(JPanel Countpanel){
int tishu=Integer.parseInt(MyConfig.myMap.get("题数"));
System.out.println(tishu);
for(i=0;i<tishu;i++){
JLabel label = new JLabel();
//重点:在设置布局的条件下,调用setPreferredSize(new Dimension(80, 20))可以设置标签的大小
//重点:而不能调用setsize()方法
label.setPreferredSize(new Dimension(80, 30));
label.setFont(new Font("楷体",Font.BOLD, 30));
label.setBorder(BorderFactory.createLineBorder(Color.WHITE));//设置标签的边界
tiList.add(label);//list为题目(标签)集合,题目在标签中呈现
JTextField textField = new JTextField(4);
userJieguoList.add(textField);//list1为用户输入计算结果的文本框集合
}
for(i = 0;i<tishu*2;i++){//利用if-else语句来间隔输出标签和文本框
if(i%2 == 0){//如果余数为0,则添加标签
Countpanel.add(tiList.get(ji));
ji++;
}else{//如果余数为1,则添加文本框
userJieguoList.get(ou).setFont(new Font("楷体",Font.BOLD, 25));
Countpanel.add(userJieguoList.get(ou));
ou++;
}
}
CreateRandom();//调用创建随机题目的方法CreateRandom();
}
public void CreateRandom(){
lianxiti.CreateRandom();
}
}

 

PSP阶段 实际花费时间百分比 估计花费时间百分比
计划 10 8
明确需求和其他相关因素,估计每个阶段的时间成本 6 4
开发 84 86
需求分析 7 8
生成设计文档 4 8
设计复审(和同事审核设计文档) 4 4
代码规范(为目前的开发制定合适的规范) 2 3
具体设计 11 13
具体代码 31 30
代码复审 13 10
测试(自测,修改代码,提交修改) 12 10
报告 8 8
测试报告 3 3
计算工作量 2 2
事后总结,并提出过程改进计划 3 3
posted @ 2021-06-01 23:10  本性使然  阅读(46)  评论(0)    收藏  举报