ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

个人开发流程 计应192 张明辉

2021-05-31 20:35:27  阅读:127  来源: 互联网

标签:张明辉 count java swing 192 计应 new import public


一、计划

    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.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import com.yu.config.MyConfig;
import com.yu.jishiqi.jishiqi;
import com.yu.test.start;
public class SomeListener {
    public int num ;//设置用户答对的题数
    public JLabel CountLable;
    //public List<Integer> userlist = new ArrayList<>();//创建存储用户计算结果的集合
    public JButton Clearbutton;//创建清空按钮
    public JButton Resetbutton;//创建重置按钮
    public JButton Printfbutton;//创建打印按钮
    public List<Integer> userlist = new ArrayList<>();
    public Count count;
    public SomeListener(Count count){
        this.count=count;
    }
    public void myAddActionLIstener() {
        //为清空按钮添加动作监听
        count.Clearbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                for(JTextField cleartextField : LableAndResult.userJieguoList){
                    cleartextField.setText("");
                    cleartextField.setBorder(BorderFactory.createLineBorder(Color.GRAY));
                }    
            }
        });
        //为重置按钮添加动作监听
        count.Resetbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                count.miaobiao.sec.setText(jishiqi.KONG+"00");
                count.miaobiao.min.setText("00"+jishiqi.KONG);
                count.miaobiao.miaobiaoMan.setSuspend(true);
                count.miaobiao.miaobiaoMan.restart=true;
                new start().startlx();
                System.out.println(count.miaobiao.miaobiaoMan.isAlive());
                //count.miaobiao.startMiaoniao();
                count.CountLable.setText("");
                count.Countpanel.removeAll();
                count.init();
                count.le.CreateRandom();
                for(JTextField cleartextField : LableAndResult.userJieguoList){
                    cleartextField.setText("");
                    cleartextField.setBorder(BorderFactory.createLineBorder(Color.GRAY));
                }
            }
        });
        //为秒表面板添加监听
        count.miaobiaopanel.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(count.miaobiao.miaobiaoMan.isSuspend()) {
                count.miaobiao.miaobiaoMan.setSuspend(false);
                }else {
                count.miaobiao.miaobiaoMan.setSuspend(true);
                }
            }
        });
        //为打印按钮添加监听
        count.Printfbutton.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent arg0) {
                
                Integer i;
                Double result;
                num = 0; 
                //停止秒表
                //获取用户在文本框中输入的计算结果
                for(i = 0;i<LableAndResult.userJieguoList.size();i++){//list为用户输入计算结果的文本框集合
                    //Integer.parseInt()方法用于将字符串转换成数字
                    if(LableAndResult.userJieguoList.get(i).getText().equals("")) {
                    userlist.add(-1);
                    }else {
                    userlist.add(Integer.parseInt(LableAndResult.userJieguoList.get(i).getText()));
                    }
                }
                count.miaobiao.miaobiaoMan.setSuspend(false);
                //计算用户做对的题目个数
                for(i = 0;i<userlist.size();i++){
                    if(userlist.get(i) == LableAndResult.trueList.get(i)){//list2为所有题目正确答案的集合
                        num++;//num为用户计算正确的个数
                        LableAndResult.userJieguoList.get(i).setBorder(BorderFactory.createLineBorder(Color.GREEN));
                    }else {
                    LableAndResult.userJieguoList.get(i).setBorder(BorderFactory.createLineBorder(Color.RED));
                    }
                }
                //计算用户做题的正确率
                result = ((num*1.0)/(LableAndResult.tiList.size())*100);
                count.CountLable.setText(result + "%");    
                userlist.clear();
            }
            
        });
        //设置按钮加监听
        count.myradio.set.addActionListener(new ActionListener() {
            JButton c1 = count.myradio.set;
            @Override
            public void actionPerformed(ActionEvent arg0) {
                String msg="";
                ButtonGroup radios=count.myradio.bg;
                Enumeration<AbstractButton> radioBtns=radios.getElements();
                while (radioBtns.hasMoreElements()) {
                    AbstractButton btn = radioBtns.nextElement();
                    if(btn.isSelected()){
                        msg=btn.getText();
                        break;
                    }
                }
                MyConfig.myMap.put("年级", msg);
                MyConfig.myMap.put("题数", count.myradio.tishu.getText());
//                count.myradio.tishu.getText();
//                System.out.println(count.myradio.tishu.getText());
            }
            
        });
    }
}
    
复制代码

psp

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

标签:张明辉,count,java,swing,192,计应,new,import,public
来源: https://www.cnblogs.com/bxsr/p/14833093.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有