• 菜鸟学IT之四则运算升级版


     菜鸟学IT之四则运算升级版

    本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

    团队代码github远程仓库的地址:https://github.com/Linagong/ruangong2.git

    第一部分:要求

    从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

    • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
    • 用户可以输入答案
    • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

    八个可扩展方向: 

    1. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
    2. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
    3. 用户答题结束以后,程序可以显示用户答题所用的时间
    4. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
    5. 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 
    6. 程序可以出单个整数阶乘的题目:如:4!=24
    7. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
    8. 程序可以设置皮肤功能,可以改变界面的颜色即可。

    第二部分:开发环境

     

    第三部分:实现与统计图

    1.统计图

    PSP2.1

    Personal Software Process Stages

    Time Senior Student(h)

    Time(h)

    Planning

    计划

    0.2

    0.1

    · Estimate

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

    8

    10

    Development

    开发

    1

    1.5

    · Analysis

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

    1

    5

    · Design Spec

    生成设计文档

    0

    0

    · Design Review

    设计复审

    0

    0

    · Coding Standard

    代码规范

    0.1

    0.1

    · Design

    具体设计

    0.2

    0.2

    · Coding

    具体编码

    3

    5

    · Code Review

    代码复审

    0

    0

    · Test

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

    0.5

    1

    Reporting

    报告

    0

    0

    Test Report

    测试报告

    0

    0

    ·workload

    计算工作量

    8

    10

    ·correction

    并提出过程改进计划

    1

     

    2.功能实现 

    • 用户登录功能

    用户名:root   密码:123456

    //字符串记录输入信息
    JLabel name=new JLabel("用户名",JLabel.RIGHT);
            pan2.add(name);
            TextField tf_name=new TextField(20);
            pan2.add(tf_name);
    
            JLabel pass = new JLabel("密   码",JLabel.RIGHT);
            pan3.add(pass);
            TextField password=new TextField(20);
            password.setEchoChar('*');
            pan3.add(password);
    
    b_log.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    //获取用户名和密码,进行校验
                    String myUsername=tf_name.getText();
                    String myPassword=password.getText();
                    if(myUsername.equals("root")&& myPassword.equals("123456")){
                        JOptionPane.showMessageDialog(null, "登陆成功!");
                        frameLogin.dispose();
                        jieMian CK=new jieMian();//跳转到运算界面
    
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "账号或密码错误!");
                        name.setText( "");
                        password.setText( "");
                    }
    
                }
            });
    • 阶乘实现
    case 4:
    //当随机数为4是进行阶乘运算
                            sum=1;
                            T2.setText(d+"!");
                            for (int i = 1; i<=d;i++){
                                sum=sum*i;
                            }
                            
    • 背景修改
    boolean backgroundNumber=true;//记录颜色布尔型值转换颜色
    B4.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (backgroundNumber==true){
                        panel.setBackground(Color.CYAN);//panel组件颜色
                        panel2.setBackground(Color.CYAN);//panel2组件颜色
                        panel1.setBackground(Color.cyan);//panel1组件颜色
                        backgroundNumber=false;
                    }else {
                        panel.setBackground(Color.red);
                        panel2.setBackground(Color.red);
                        panel1.setBackground(Color.red);
                        backgroundNumber=true;
                    }
                }
            });
    • 负整数运算
    //把数字记录到suanshi字符串中
    switch (first){
                        case 0:
                            switch (second){
                                case 0:
    
                                    sum=a+b+c;
                                    suanshi=fushu(a,suanshi);
                                    suanshi=suanshi+"+";
                                    suanshi=suanshi+fushu(b,suanshi);
                                    suanshi=suanshi+"+";
                                    suanshi=suanshi+fushu(c,suanshi);
                                    T2.setText(suanshi);
    
                                  break;
    //判断随机产生的随机数是否为负数
        private static String fushu(int a,String suanshi) {
    
            if (a<0) {
                suanshi ="(" + a + ")";
            }
            else {
                suanshi = "" + a;
            }
            return suanshi;
        }
    • 题目数目限定
    tishu=Integer.parseInt(T1.getText());//获取总题数
                    if(tishu>5){
                        JOptionPane.showMessageDialog(new JFrame().getContentPane(),
                                "题数不能大于5",
                                "四则运算", JOptionPane.INFORMATION_MESSAGE);
    
                        T1.setText("");
                        tishu=Integer.parseInt(T1.getText());//获取总题数
                    }
    • 限定答题时间为120秒
    timer.schedule(new TimerTask()
                    {
                        public void run() {
                            finishTime =System.currentTimeMillis();
                            duration= finishTime - startTime;
                            if(duration/1000==120 && summary<tishu)
                            {
                                
                                frame.setVisible(false);
    
                            }
                            String str=df.format(new Date(duration));
                            T5.setText(str);
                        }
                    }, 1000, 1000);
    • 答题结束弹出提示答题时间窗口
    JOptionPane.showMessageDialog(null,"答题时间已到。答题总题数为"+(dadui+dacuo)+"," +
     "答对题数为"+dadui+",答错题数为"+dacuo+"," +"未答题题数为"+(tishu-dacuo-dadui)+"," +
    "答题使用时间:"+(allDuration +duration)/1000+"秒。");
    

      

    第四部分:运行结果

    效果1:登录页面

    用户名:root   密码:123456

     

    效果2:自定义颜色面板

     

    效果3:题目限定

     

    效果4:负整数运算

     

    效果5:阶乘运算

    效果6:计算结束结束

     

    第五部分:合作伙伴与分工方向

    成员一:林计高(本人)

     负责功能:  

    1.用户登录功能

    2.背景颜色转换

    3.答题时间限定为120秒

    4.结束答题弹出提示框

    成员二:王志鑫  

    博客园:https://www.cnblogs.com/qiannuohan/p/9846211.html

     负责功能:  

    1.算式生成与打印

    2.阶乘实现

    3.负整数运算括号

    4.题目数限定

    附:工作照片

    第六部分:总结

           在这次实验中,我与伙伴的合作分工合理,每个人都负责自己擅长的部分。由于项目结队完成并生成用户界面完成运算,导致之前用C语言写的代码“荒废”了(虽然C语言也能实现用户界面,但是相对与Java的用户界面更难与不美观。最重要的是不会用C语言实现用户界面)。要重新用Java语言写算式运算,由于需要用户界面,初次接触这个功能的我们边上网查找语法边实现把之前C语言的运算程序换成Java语言的运算程序,我的伙伴负责把C语言语法换成Java语言,我负责上实现用户界面化。通过一番“恶补”相对了解Java界面化实现,完成从控制台计算到用户界面答题的转换。功能也逐渐分工完善起来,本来目标是完成8个扩展方向,但是由于时间不够与知识储备不足的原因,最终只能完成6个扩展功能,这需要后期继续努力完成实验。


    菜鸟之作,不足之处多多指教!

    队友博客园网址:http://www.cnblogs.com/qiannuohan/ 

  • 相关阅读:
    如何克服晕车?
    简单C程序,迷宫
    非名校毕业年薪20W程序员 心得分享
    北京:一个大学生每年要花多少钱
    PowerPoint超链接字体颜色修改、怎么去掉超链接下划线
    河南旅游景点介绍
    程序员必看的十大电影
    AMD的cpu如何安装Mac OS
    C/C++面试之算法系列--去除数组中的重复数字
    Warshall算法
  • 原文地址:https://www.cnblogs.com/JGaoLin/p/9846103.html
Copyright © 2020-2023  润新知