菜鸟学IT之四则运算升级版
本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
团队代码github远程仓库的地址:https://github.com/Linagong/ruangong2.git
第一部分:要求
从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
八个可扩展方向:
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
第二部分:开发环境
第三部分:实现与统计图
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个扩展功能,这需要后期继续努力完成实验。
菜鸟之作,不足之处多多指教!
菜鸟学IT之四则运算升级版的更多相关文章
- 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...
- 菜鸟学Java(十五)——Java反射机制(二)
上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...
- 菜鸟学Java(十四)——Java反射机制(一)
说到反射,相信有过编程经验的人都不会陌生.反射机制让Java变得更加的灵活.反射机制在Java的众多特性中是非常重要的一个.下面就让我们一点一点了解它是怎么一回事. 什么是反射 在运行状态中,对于任意 ...
- RIGHT-BICEP单元测试——“二柱子四则运算升级版”
RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单 ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- 0基础菜鸟学前端之Vue.js
简介:0基础前端菜鸟,啃了将近半月前端VUE框架,对前端知识有了初步的了解.下面总结一下这段时间的学习心得. 文章结构 前端基础 Vue.js简介 Vue.js常用指令 Vue.js组件 Vue.js ...
- C语言编程—自动生成四则运算升级版
#include<stdio.h> #include<time.h> struct fenshu { int fenzi; int fenmu; }Fenshu[]; int ...
- 菜鸟学配置vim
看啥都不会的菜鸟怎么进行vim配置 如果你想让你的vim和VS差不多你一定需要这个网址 http://www.open-open.com/lib/view/open1429884437588.html ...
- 【菜鸟学Linux】Cron Job定期删除Log(日志)文件
以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...
随机推荐
- Intellij IDEA 阅读源码的 4 个绝技,我必须分享给你!
前段时间分享了<阅读跟踪 Java 源码的几个小技巧>是基于 Eclipse 版本的,看大家的留言都是想要 IDEA 版本的源码阅读技巧. 所以,为了满足众多 IDEA 粉丝的要求,栈长我 ...
- python接口自动化(十一)--发送post【data】(详解)
简介 前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data ...
- 网络协议 17 - HTTPDNS:私人定制的 DNS 服务
[前五篇]系列文章传送门: 网络协议 12 - HTTP 协议:常用而不简单 网络协议 13 - HTTPS 协议:加密路上无尽头 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - ...
- ionic4 混合移动开发 (前世今生)
ionic 从2016年初识,经历了 ionic2 ionic3.至今 ionic4,终于在2018年7月份发布了测试版. ionic Framework 可以说得上是最接近原生app的ui组件,漂亮 ...
- 秋招提前批小结(CVTE一面挂、阿里三面挂)
7月27日:CVTE一面 30分钟(挂) 1.自我介绍 2.有没有做过JavaWeb相关的项目?你觉得难点在哪里呢? 3.你这个博客系统有没有加权限系统?如果被拦截封包获取了账号密码怎么办?(没加,凉 ...
- XSS 绕过技术
XSS Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常是可以被看作 ...
- Asp.Net Core 轻松学-一行代码搞定文件上传
前言 在 Web 应用程序开发过程中,总是无法避免涉及到文件上传,这次我们来聊一聊怎么去实现一个简单方便可复用文件上传功能:通过创建自定义绑定模型来实现文件上传. 1. 实现自定义绑定模型 1 ...
- Java——容器类库框架浅析
前言 通常,我们总是在程序运行过程中才获得一些条件去创建对象,这些动态创建的对象就需要使用一些方式去保存.我们可以使用数组去存储,但是需要注意数组的尺寸一旦定义便不可修改,而我们并不知道程序在运行过程 ...
- Memcache的 简介
MemCache memcache是一套分布式的高速缓存系统.目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速度提升效果十分显著,是一套开放源代码软件. 工作 ...
- java爬虫系列目录
1. java爬虫系列第一讲-爬虫入门(爬取动作片列表) 2. java爬虫系列第二讲-爬取最新动作电影<海王>迅雷下载地址 3. java爬虫系列第三讲-获取页面中绝对路径的各种方法 4 ...