Java实现小学四则运算练习系统(UI)
github项目地址 :https://github.com/feser-xuan/Arithmetic_test3_UI
小伙伴的博客链接:http://www.cnblogs.com/fukang/p/8711021.html
我的学号:201571030104
小伙伴的学号:201571030109
实验要求
在《实验二 软件工程个人项目》中,同学们实现了一个命令行四则运算出题小程序,本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能:
(1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;
(2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:
(3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;
- (4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:
(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;
(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。
(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。
1、需求分析
该项目要求程序有人机交互界面,且可评判成绩。可为用户提供百以内整数算式、带括号算式、真分数算式三种练习,可为进行多轮测试并记录成绩生成柱状图并且记录用户消耗的时间。
2、功能分析
- 可实现基本要求,即可生成数字在 0 和 100 之间,运算符在3个到5个之间的计算表达式,并计算出表达式的结果
- 随机可生成带括号的运算式,括号不会超过运算符的个数
- 生成真分数的四则运算
- 有用户界面,可进行多轮测试
- 记录测试结果,并将以往成绩以柱状图展示
- 测试时,记录用户的测试用时
3、设计实现
4、运行测试
- 设计交互界面,首页登陆,登录用户名“admin”,密码123456。
- 答题界面
- 答题完毕后,可以点击保存练习过的题目(包括自己答题的答案)
- 答题结束后,可以查看自己得分情况(具体的用一个柱状统计图展示)
5、核心代码
- 登录界面
public class Login { public Login()
{
JFrame f=new JFrame();
f.setTitle("小学生四则运算答题系统");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setVisible(true); //设置窗口的大小和位置
f.setSize(500,500);
f.setLocation(200,200); Container con=f.getContentPane();//生成一个容器
con.setLayout(new GridLayout(7,1)); JPanel pan1 =new JPanel();
JLabel title=new JLabel("欢迎登陆小学生四则运算答题系统");
title.setFont(new Font("宋体",Font.BOLD, 20));
pan1.add(title);
con.add(pan1);
//生成一个新的版
JPanel pan2 = new JPanel();
JPanel pan3 = new JPanel();
JPanel pan4 = new JPanel();
JPanel pan5 = new JPanel(); con.add(pan2);
con.add(pan3);
con.add(pan4);
con.add(pan5); JLabel name=new JLabel("用户名");
pan2.add(name);
TextField tf_name=new TextField(20);
pan2.add(tf_name); JLabel pass = new JLabel("密码");
pan3.add(pass);
TextField password=new TextField(20);
password.setEchoChar('*');
pan3.add(password); JButton b_log=new JButton("登陆");
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("admin")&& myPassword.equals("123456")){
JOptionPane.showMessageDialog(null, "登陆成功!");
f.dispose();
MyExGUI ui = new MyExGUI(); }
else{
JOptionPane.showMessageDialog(null, "账号或密码错误!");
name.setText( "");
password.setText( "");
} }
});
pan4.add(b_log); JButton b_exit=new JButton("退出");
b_exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "谢谢使用!");
f.setVisible(false);//隐藏窗体
System.exit(0);//退出程序
}
});
pan5.add(b_exit);
//登陆和退出这两个按钮放在第四个版面上 } }
- 练习界面
package ui_test; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList; import javax.swing.*; public class MyExGUI extends JFrame{
ArrayList<String> user_zongti = new ArrayList<String>();
ArrayList<String> user_zonganswer = new ArrayList<String>();
ArrayList<String> user_answer = new ArrayList<String>();
ArrayList<String> true_answer = new ArrayList<String>();
ArrayList<String> jta_timu = new ArrayList<String>();
ArrayList<String> jta_zong = new ArrayList<String>();
ArrayList<Integer> user_fenshu = new ArrayList<Integer>();
JMenuBar jmb; //菜单条组件
JMenu menu1, menu2, menu3, menu4, menu5;//菜单
JMenuItem item1, item2, item3, item4, item5, item6;//菜单项
JMenu build; //二级菜单
JMenuItem file, project;
TextArea answer_all = new TextArea();
TextField jta = new TextField();
TextField jta_answer = new TextField();
JLabel num_answer = new JLabel();
JLabel answer1;
JToolBar jtb;//工具条
JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7,jb_next;
int answer_count;
int answer_fenshu;
public MyExGUI()
{
//创建菜单
jmb = new JMenuBar(); menu1 = new JMenu("文件(F)");
menu1.setMnemonic('f'); //助记符
menu2 = new JMenu("编辑");
menu2.setMnemonic('E');
menu3 = new JMenu("格式");
menu4 = new JMenu("查看");
menu5 = new JMenu("帮助"); build = new JMenu("新建"); file = new JMenuItem("文件");
project = new JMenuItem("答题");
item1 = new JMenuItem("打开");
item2 = new JMenuItem("保存(S)");
item3 = new JMenuItem("另存为");
item4 = new JMenuItem("页面设置");
item5 = new JMenuItem("打印");
item6 = new JMenuItem("退出"); answer1 = new JLabel("第 1 题"); //添加菜单项至菜单上
build.add(file);
build.add(project); menu1.add(build);
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu1.addSeparator();
menu1.add(item4);
menu1.add(item5);
menu1.add(item6);
//将菜单加入至菜单栏
jmb.add(menu1);
jmb.add(menu2);
jmb.add(menu3);
jmb.add(menu4);
jmb.add(menu5); JPanel contentPanel = new JPanel();
contentPanel.setLayout(null);
JLabel daan = new JLabel("答案");
JLabel dengyu = new JLabel("=");
num_answer=answer1;
num_answer.setFont(new Font("宋体",Font.BOLD, 22));
jb_next = new JButton("下一题");
jta.setFont(new Font("宋体",Font.BOLD, 22));
jta_answer.setFont(new Font("宋体",Font.BOLD, 22));
jb_next.setFont(new Font("宋体",Font.BOLD, 22));
daan.setFont(new Font("宋体",Font.BOLD, 22));
dengyu.setFont(new Font("宋体",Font.BOLD, 22)); contentPanel.add(num_answer);
contentPanel.add(daan);
contentPanel.add(dengyu);
contentPanel.add(jta); contentPanel.add(jta_answer);
contentPanel.add(answer_all);
contentPanel.add(jb_next); num_answer.setBounds(90, 20, 130, 50);
daan.setBounds(250, 20, 90, 50);
jta.setBounds(50, 70, 150, 30);
dengyu.setBounds(205, 70, 20, 20);
jta_answer.setBounds(230, 70, 100, 30);
jb_next.setBounds(350, 70, 110, 30);
answer_all.setBounds(50, 120, 400, 300); this.setJMenuBar(jmb); //添加菜单栏,不能设定位置,会自动放在最上部
this.add(contentPanel); this.setTitle("在线答题系统");
this.setSize(600, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
item1.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JFileChooser jfc=new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
jfc.showDialog(new JLabel(), "选择");
File file=jfc.getSelectedFile();
if(file.isDirectory()){
// System.out.println("文件夹:"+file.getAbsolutePath());
}else if(file.isFile()){
String s=file.getAbsolutePath();
}
}
});
item2.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
FileOutputStream outSTr = null;
BufferedOutputStream Buff = null;
boolean flag = true;
File file;
//String test ;
do{
//test = "test"+count; String inputValue = JOptionPane.showInputDialog("Please input file name");
file = new File(inputValue+".txt");
if (!file.exists()) {
// 创建文件
try { flag=file.createNewFile(); } catch (IOException e) {
e.printStackTrace(); }
flag=false;
}
else{ JOptionPane.showMessageDialog(null, "该文件名已存在,请重新输入", "ERROR", JOptionPane.ERROR_MESSAGE);
flag=true;
}
}while(flag);
//写入文件
String u_answer;
try {
outSTr = new FileOutputStream(file);
Buff = new BufferedOutputStream(outSTr);
System.out.println("选择是后执行的代码"+user_zongti.size()+user_answer.size());
for (int i = 0; i < user_zongti.size(); i++)
{
try {
Buff.write(user_zongti.get(i).getBytes());
Buff.write(" ".getBytes());
u_answer = user_answer.get(i);
if(u_answer.equals(""))
u_answer ="没有作答"; Buff.write(u_answer.getBytes());
Buff.write("\r\n".getBytes());
} catch (IOException e) {
e.printStackTrace();
i--;
}
}
Buff.flush();
Buff.close(); } catch (IOException e) {
e.printStackTrace();
}
//Buff.close();
try {
outSTr.close();
} catch (IOException e) {
e.printStackTrace();
}
user_zongti.clear();
user_answer.clear();
}
}); project.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
arithmetic art = new arithmetic();
true_answer=art.list_answer;
jta_timu = art.list_timu;
jta_zong = art.list;
answer_count=1;
answer_all.setText("");
for (int i = 0; i < art.list_timu.size(); i++)
{
user_zongti.add(jta_zong.get(i));
answer_all.append(jta_timu.get(i));
answer_all.append("\r\n");
}
num_answer.setText("第 "+answer_count+" 题");
jta.setText(jta_timu.get(answer_count-1));
answer_count++; }
});
jb_next.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
String temp;
temp = jta_answer.getText(); if(jta.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "错误,请导入题库", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
jta_answer.setText("");
if(answer_count<=20)
{
if(isInteger(temp))
{ user_answer.add(temp);
System.out.println("选择否后执行的代码"+temp+"user_size"+user_answer.size());
num_answer.setText("第 "+answer_count+" 题");
jta.setText(jta_timu.get(answer_count-1));
answer_count++;
}
else{
JOptionPane.showMessageDialog(null, "错误", "请输入数字", JOptionPane.ERROR_MESSAGE);
}
}
else{
user_answer.add(temp);
System.out.println("选择否后执行的代码"+temp+"user_size"+user_answer.size());
answer_fenshu=0;
for(int i=0;i<user_answer.size();i++)
{
if(user_answer.get(i).equals(true_answer.get(i)))
answer_fenshu+=5;
}
user_fenshu.add(answer_fenshu);
Object[] options = { "是", "取消" };
int res=JOptionPane.showOptionDialog(null, "点击以继续 查看成绩", "答题完毕",
JOptionPane.DEFAULT_OPTION, JOptionPane.YES_NO_OPTION,
null, options, options[0]);
if(res==JOptionPane.YES_OPTION){
chart ct =new chart(user_fenshu);
ct.setVisible(true); }else{
Object[] option = { "是", "取消" };
int res1=JOptionPane.showOptionDialog(null, "继续新一轮答题", "新一轮答题",
JOptionPane.DEFAULT_OPTION, JOptionPane.YES_NO_OPTION,
null, option, option[0]); if(res1==JOptionPane.YES_OPTION){
arithmetic art = new arithmetic();
true_answer=art.list_answer; jta_timu = art.list;
answer_count=1;
answer_all.setText("");
jta_answer.setText("");
for (int i = 0; i < art.list_timu.size(); i++)
{
user_zongti.add(jta_timu.get(i));
answer_all.append(jta_timu.get(i));
answer_all.append("\r\n");
}
num_answer.setText("第 "+answer_count+" 题");
jta.setText(jta_timu.get(answer_count-1));
answer_count++; }else{ } } } }
}); } public static boolean isInteger(String str) {
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
} }
- 绘图界面
package ui_test; import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;
import java.util.Random; import javax.swing.JFrame; public class chart extends JFrame{
//绘制柱形统计图
ArrayList<Integer> ran=new ArrayList<Integer>();
public chart(ArrayList<Integer> scores)
{
super();
getContentPane().setForeground(Color.CYAN);
setForeground(Color.CYAN);
setBackground(Color.CYAN);
for(int i=0;i<scores.size();i++)
{
ran.add(scores.get(i));
System.out.println(scores.get(i));
} setTitle("绘制柱形图");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g){
int Width = getWidth();
int Height = getHeight();
int leftMargin = 20;//柱形图左边界
int topMargin = 50;//柱形图上边界
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.WHITE);//绘制白色背景
g2.fillRect(0, 0, Width, Height-100);//绘制矩形图
g2.setColor(Color.black);
for(int i=0;i<=10;i++)
{
//绘制灰色横线和百分比
g2.drawString((100-10*i)+"", 15, topMargin+30*i);
g2.drawLine(5, topMargin+30*i, Width, topMargin+30*i);//绘制灰色横线
}
g2.setColor(Color.YELLOW);
for(int i=0;i<=ran.size();i++)
{
//绘制柱形图
int step = (i+1)*40;//设置每个柱形图的水平间隔为40
//绘制矩形
g2.fillRoundRect(leftMargin+step*2-5,(100-ran.get(i))*3+50, 40, 300-(100-ran.get(i))*3, 40, 10);
//列出测试轮数
g2.drawString("第"+(i+1)+"轮", leftMargin+step*2, 380);
}
} }
- 随机产生四则远算式
package ui_test; import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner; public class arithmetic
{
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list_timu = new ArrayList<String>();
ArrayList<String> list_answer = new ArrayList<String>();
public arithmetic()
{
FileOutputStream outSTr = null;
BufferedOutputStream Buff = null;
int number_n=20,count; ArrayList<String> list_temp = new ArrayList<String>();
String[] operator = new String[]{"+","-","*","/"}; Random rand = new Random();
File file1 = new File("result.txt");
if (file1.exists()) {
// 创建文件
try {
file1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} while(number_n>0)
{
int[] number_temp = new int[rand.nextInt(2)+3];
String[] str_temp = new String[number_temp.length-1];
for(int i=0;i<number_temp.length;i++)
{
if(i<number_temp.length-1)
{
number_temp[i]=rand.nextInt(100);
list_temp.add(String.valueOf(number_temp[i]));
str_temp[i]=operator[rand.nextInt(4)];
list_temp.add(str_temp[i]); } else
{
number_temp[i]=rand.nextInt(100);
list_temp.add(String.valueOf(number_temp[i]));
}
} count=calculate_RPN(produce_RPN(list_temp));
if(count !=-1)
{
list_timu.add(transform_string(list_temp));
list_answer.add(String.valueOf(count));
list_temp.add(" = "+count);
list.add(transform_string(list_temp));
number_n--;
list_temp.clear();
}
else
list_temp.clear();
System.out.println(number_n); }
try {
outSTr = new FileOutputStream(file1);
Buff = new BufferedOutputStream(outSTr);
try {
Buff.write("201571030104 丁炜轩".getBytes());
Buff.write("\r\n".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < list.size(); i++)
{
try {
Buff.write(list.get(i).getBytes());
Buff.write("\r\n".getBytes());
} catch (IOException e) {
e.printStackTrace();
i--;
}
}
Buff.flush();
Buff.close(); } catch (IOException e) {
e.printStackTrace();
}
//Buff.close();
try {
outSTr.close();
} catch (IOException e) {
e.printStackTrace();
} for (int i = 0; i < list.size(); i++)
{
System.out.print(list.get(i));
System.out.println();
}
System.out.print("计算完毕!"); } public static int calculate_RPN(ArrayList<String> list_temp)
{
int i=0,t;
double a=0,b=0;
String l_temp;
Stack sk=new Stack(20);
for(t=0;t<list_temp.size();t++)
{
l_temp = list_temp.get(i++);
if(!isInteger(l_temp))
{
b = sk.mypop();
a = sk.mypop();
switch(l_temp)
{
case "+":sk.mypush(a+b);break;
case "-":sk.mypush(a-b);break;
case "*":sk.mypush(a*b);break;
case "/":
if(b==0)
return -1;
sk.mypush(a/b);break;
}
System.out.println("st.mytop: "+sk.mypeek());
}
else{
sk.mypush((double)Integer.parseInt(l_temp));
} }
if(!sk.myisempty())
{
a = sk.mypop();
b = a-(int)a;
System.out.println("a: "+a);
if(a>0 && b==0 )
{
return (int)a;
}
else
return -1;
}
else
return -1; } public static ArrayList<String> produce_RPN(ArrayList<String> list_temp)
{
int t=0,i=0;
String tmp;
Tack mytack = new Tack(20);
ArrayList<String> lt_temp = new ArrayList<String>();
while(true)
{
tmp = list_temp.get(i++);
if(isInteger(tmp))
{
lt_temp.add(tmp);
}
else{
if(mytack.myisempty())
{
mytack.mypush(tmp);
} else{
if(isCPriority(tmp, mytack.mypeek()))
mytack.mypush(tmp);
else{
lt_temp.add(mytack.mypop());
mytack.mypush(tmp);
} }
}
if(i>=list_temp.size())
{
while(!mytack.myisempty())
lt_temp.add(mytack.mypop());
System.out.println(transform_string(list_temp));
list_temp = lt_temp;
System.out.println(list_temp);
return list_temp;
}
} } public static boolean isInteger(String str) {
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
public static boolean isCPriority(String str,String s) {
if((str+s).equals("*+") || (str+s).equals("*-") || (str+s).equals("/+") || (str+s).equals("/-"))
return true;
else
return false;
}
public static String transform_string(ArrayList<String> list_temp)
{
String s="";
for(int i=0;i<list_temp.size();i++)
{
s+=list_temp.get(i);
}
return s; } static class Stack
{
int mytop;
double stk[]; public Stack(int num) {
mytop=-1;
stk=new double[num];
}
/*出栈*/
double mypop()
{
double peek=stk[mytop];
mytop--;
return peek;
}
/*入栈*/
void mypush(double x)
{
mytop++;
stk[mytop]=x; }
/*判空*/
Boolean myisempty()
{
if(mytop==-1)
return true;
else
return false;
}
/*取栈顶元素*/
double mypeek()
{
double peek=stk[mytop];
return peek;
}
/*栈大小*/
int mysize()
{
return mytop+1;
}
} static class Tack
{
int mytop;
String tk[]; public Tack(int num) {
mytop=-1;
tk=new String[num];
}
/*出栈*/
String mypop()
{
String peek=tk[mytop];
mytop--;
return peek;
}
/*入栈*/
void mypush(String x)
{
mytop++;
tk[mytop]=x; }
/*判空*/
Boolean myisempty()
{
if(mytop==-1)
return true;
else
return false;
}
/*取栈顶元素*/
String mypeek()
{
String peek=tk[mytop];
return peek;
}
/*栈大小*/
int mysize()
{
return mytop+1;
} } }
- main函数
package ui_test; public class Main { public static void main(String[] args) {
Login lg = new Login();
//new MyExGUI(); } }
6、总结
通过本次实验,对于结对编程有了非常浓厚的兴趣,也体会到了结对编程对于项目的重要意义,总之收获很多。
在项目的设计、编写、调试、优化中,遇到了很多熟悉而又陌生的问题,花费的时间也比较多。由于对于计算机语言的偏好,对于有些语言,我选择舍弃,注重计算机的一门语言,努力做到最好。闻道有先后,术业有专攻。
7、结对编程(照片)
8、展示PSP
PSP2.1 |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
30 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
360 |
300 |
Analysis |
需求分析 (包括学习新技术) |
100 |
60 |
Design Spec |
生成设计文档 |
10 |
10 |
Design Review |
设计复审 (和同事审核设计文档) |
20 |
10 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
10 |
5 |
Design |
具体设计 |
60 |
35 |
Coding |
具体编码 |
120 |
130 |
Code Review |
代码复审 |
10 |
10 |
est |
测试(自我测试,修改代码,提交修改) |
30 |
40 |
Reporting |
报告 |
30 |
43 |
Test Report |
测试报告 |
25 |
30 |
Size Measurement |
计算工作量 |
2 |
3 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
3 |
10 |
9、请使用汉堡评价法给你的小伙伴一些点评。
我的小伙伴是傅康,他很认真,对待每一件事都有一个积极的态度,在这次结对编程中,承担主要的工作量,如果他是赛车手,我就是导航员,如果他是狙击手,我就是观察员,如果他是机长,我就是副机长,我们相辅相成,缺一不可。在生活中,我的小伙伴是我的室友,我对他也有一个比较全面的了解,他的工作能力强,有责任心,对待事物和热情。在这次编程中,我们两个都提出了建设性的意见。在这次编程中,我们两个都提出了建设性的意见,互相修改代码,虽然有些争执,但是还是很好的解决了,完成了这次编程任务。
10、 结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。
结对编程,在每一时刻都是一个程序员在编程,说效率如何高,也只是1+1>1,但是否大于2呢?答案是肯定的。首先,一个人的编程,平均很难实现1>80%×1的工作效力。但是在和同伴一起工作时,必须保持思维一直高度集中,所以平均都可以达到1>80%×1的个人效力,同时有了一遍代码评审,使得出错几率就降低,减少了bug的产生。也由于两个人的思想汇集,能创造了很多新编程算法或结构重用等。所以着眼于整个项目来看,这个实践确实大大提高了效率。本次结对编程,就很好的证明了1+1>2这一点。
Java实现小学四则运算练习系统(UI)的更多相关文章
- Java实现小学四则运算练习
Github项目地址:https://github.com/feser-xuan/Arithmetic.git 1.需求分析 软件基本功能要求如下: 程序可接收一个输入参数n,然后随机产生n道加减乘 ...
- java实现自动生成小学四则运算——朱庭震,詹祺豪
组员:朱庭震,詹祺豪 Github地址:https://github.com/ztz1998/second/tree/master 1题目:实现一个自动生成小学四则运算题目的命令行程序. 2说明: 自 ...
- 小学四则运算练习(JAVA编写)
源码在Github的仓库主页链接地址:https://github.com/rucr9/rucr 看到这个题目,大概很多人会发出“切,这也太简单了吧!有必要小题大做?”的感叹!是的,仅仅作为一道数学运 ...
- 小学四则运算APP 最后阶段
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 这次发布的是我们APP的最终版本!图片背景有根据用户需求改变!还增加了草稿纸运算的画布功能! 运行结果如下: package com.ex ...
- 小学四则运算APP 第三阶段冲刺-第一天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第三次冲刺阶段时间:12.12~12.19 本次发布的是音乐播放功能,可以根据用户需求一边播放音乐一边做题,也拥有暂停播放音乐的功能,增强 ...
- 小学四则运算APP 第二阶段冲刺-第五天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是判断题代码,已经实现部分功能,,但是美中不足的是判断错误 panduanset.j ...
- 小学四则运算APP 第二次冲刺 第四天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是合并后的选择题功能界面的设置: ChoiceSet.java: package c ...
- 小学四则运算APP 第二阶段冲刺-第三天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是判断题的部分代码 panduanset.java import com.examp ...
- 小学四则运算APP 第二个冲刺 第一天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是已完成的功能二(选择题): ChoiceActivity.java: packag ...
随机推荐
- 微信小程序のCss(一)
一.margin:外边距:设置对象四边的外延边距. margin: 20rpx 10rpx 25rpx 10rpx :如果提供全部四个参数值,将按上.右.下.左的顺序作用于四边. margin:20r ...
- Solaris 11配置IPS安装系统包(类似linux中的yum源)
参考:http://blog.chinaunix.net/uid-8860-id-3777457.html 一. 概述: Solaris 11被称为第一个云操作系统,因此在很多方面体现了云系统的一些特 ...
- Linux安装consul
1.下载并解压consul # cd /opt/ # mkdir consul # chmod 777 consul #cd consul #wget https://releases.hashico ...
- Html5 手机端网页不允许缩放
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- Android 由 android:launchMode="singleInstance“引发的界面无法返回的情况
问题描述:现有A.B.C三个Activity.现在A跳转到B再由B跳转到C,然后依次返回.正常情况是C先返回B然后再返回的A.但现在的情况是C直接跳过B直接返回到A了. 解决办法:认真排查了A.B.C ...
- SkylineGlobe6.5遍历信息树节点方法
//------------------- //searchGeometries function searchGeometries2(parentNode, callbackFunc) { SGWo ...
- RocketMQ阅读注意
1 队列个数设置 producer发送消息时候设置,特别注意:同一个topic仅当第一次创建的时候设置有效,以后修改无效,除非修改broker服务器上的consume.json文件,
- Maven学习笔记-03-Eclipse和Maven集成
本文使用 Eclipse 集成 Maven,并创一个基于 maven的web工程 一 环境版本信息 本文使用的版本信息如下: Eclipse Version: Mars.1 Release (4.5. ...
- 将WinForm程序(含多个非托管Dll)合并成一个exe的方法
原文:将WinForm程序(含多个非托管Dll)合并成一个exe的方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. ILMerge能把托管dl ...
- Android开发——ListView使用技巧总结(二)
0. 前言 Android中的ListView是用的比较多的控件之一,在上一篇Android开发--ListView使用技巧总结(一)中对ListView的ViewHolder机制.优化卡顿方式以及 ...