菜鸟学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/

菜鸟学IT之四则运算升级版的更多相关文章

  1. 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)

    菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...

  2. 菜鸟学Java(十五)——Java反射机制(二)

    上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...

  3. 菜鸟学Java(十四)——Java反射机制(一)

    说到反射,相信有过编程经验的人都不会陌生.反射机制让Java变得更加的灵活.反射机制在Java的众多特性中是非常重要的一个.下面就让我们一点一点了解它是怎么一回事. 什么是反射 在运行状态中,对于任意 ...

  4. RIGHT-BICEP单元测试——“二柱子四则运算升级版”

    RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单 ...

  5. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  6. 0基础菜鸟学前端之Vue.js

    简介:0基础前端菜鸟,啃了将近半月前端VUE框架,对前端知识有了初步的了解.下面总结一下这段时间的学习心得. 文章结构 前端基础 Vue.js简介 Vue.js常用指令 Vue.js组件 Vue.js ...

  7. C语言编程—自动生成四则运算升级版

    #include<stdio.h> #include<time.h> struct fenshu { int fenzi; int fenmu; }Fenshu[]; int ...

  8. 菜鸟学配置vim

    看啥都不会的菜鸟怎么进行vim配置 如果你想让你的vim和VS差不多你一定需要这个网址 http://www.open-open.com/lib/view/open1429884437588.html ...

  9. 【菜鸟学Linux】Cron Job定期删除Log(日志)文件

    以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...

随机推荐

  1. 消费阿里云日志服务SLS

    此文档只关心消费接入,不关心日志接入,只关心消费如何接入,可直接跳转到[sdk消费接入] SLS简介 日志服务: 日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务,在阿里巴 ...

  2. springboot+aop切点记录请求和响应信息

    本篇主要分享的是springboot中结合aop方式来记录请求参数和响应的数据信息:这里主要讲解两种切入点方式,一种方法切入,一种注解切入:首先创建个springboot测试工程并通过maven添加如 ...

  3. 字典fromkeys方法和update方法

    #Author : Kelvin #Date : 2019/1/17 15:27 #字典的update方法,是向调用者字典中添加另外一个字典 dict1 = {"name":&qu ...

  4. 死磕 java集合之LinkedHashSet源码分析

    问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedHashSet与HashSet有什么不同? (3)LinkedHashSet是有序的吗? (4)LinkedHashS ...

  5. was cached in the local repository, resolution will not be reattempted until the update interval of fintech has elapsed or updates are forced

    今天使用命令mvn compile编译maven项目时提示错误信息,错误信息如下: [ERROR] Failed to execute goal on project <project_name ...

  6. Entity Framework 之存储过程篇

    最近几天在搞CRUD,使用的是EF这个ORM,最近的项目中上了存储过程,就把在开发中的经验分享出来!我们先创建一个最基本的存储过程,脚本如下,这是一个不带参数的存储过程,我们从最简单的往上走! cre ...

  7. 深度解密HTTP通信细节

    目录 HTTP报文截获 背景介绍 抓包 mac本地 远程docker 请求 && 分析 关闭服务进程 关闭docker 重启docker 正常请求 HTTP协议分析 整体介绍 编码 M ...

  8. ftp上传与下载文件

    准备工作 服务器已经配置好ftp服务 服务器linux centos 7.4 搭建ftp服务器:https://www.cnblogs.com/mmzs/p/10601683.html 需要用到的ja ...

  9. Android 8.0 的部分坑及对应解决方法

    虽然 Android 9.0 都已经面世了,本篇文章写的有点迟了. 但是迟到好过不到,因此基于此这边还是记录一下项目中遇到的 Android 8.0 的坑及对应解决方法. 每次系统升级,虽然系统功能更 ...

  10. js 格林威治时间转正常格式并兼容ios

    function timeChange(time) { var date = time.substr(0, 10); //年月日 var hours = time.substring(11, 13); ...