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)的更多相关文章

  1. Java实现小学四则运算练习

     Github项目地址:https://github.com/feser-xuan/Arithmetic.git 1.需求分析 软件基本功能要求如下: 程序可接收一个输入参数n,然后随机产生n道加减乘 ...

  2. java实现自动生成小学四则运算——朱庭震,詹祺豪

    组员:朱庭震,詹祺豪 Github地址:https://github.com/ztz1998/second/tree/master 1题目:实现一个自动生成小学四则运算题目的命令行程序. 2说明: 自 ...

  3. 小学四则运算练习(JAVA编写)

    源码在Github的仓库主页链接地址:https://github.com/rucr9/rucr 看到这个题目,大概很多人会发出“切,这也太简单了吧!有必要小题大做?”的感叹!是的,仅仅作为一道数学运 ...

  4. 小学四则运算APP 最后阶段

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 这次发布的是我们APP的最终版本!图片背景有根据用户需求改变!还增加了草稿纸运算的画布功能! 运行结果如下: package com.ex ...

  5. 小学四则运算APP 第三阶段冲刺-第一天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第三次冲刺阶段时间:12.12~12.19 本次发布的是音乐播放功能,可以根据用户需求一边播放音乐一边做题,也拥有暂停播放音乐的功能,增强 ...

  6. 小学四则运算APP 第二阶段冲刺-第五天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是判断题代码,已经实现部分功能,,但是美中不足的是判断错误 panduanset.j ...

  7. 小学四则运算APP 第二次冲刺 第四天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是合并后的选择题功能界面的设置: ChoiceSet.java: package c ...

  8. 小学四则运算APP 第二阶段冲刺-第三天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是判断题的部分代码 panduanset.java import com.examp ...

  9. 小学四则运算APP 第二个冲刺 第一天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第二次冲刺阶段时间:11.29~12.09 本次发布的是已完成的功能二(选择题): ChoiceActivity.java: packag ...

随机推荐

  1. !important的用法

    如果写成:a{color:teal !important},IE6和其它高版本浏览器都认识,(IE6虽然不认识!important,但它还是能够认识!important之前的color:teal这个属 ...

  2. 你不得不知道的 .NET CORE —— .NET Framework, .NET Core 和 .NET Standard 的区别

    .NET Framework 和 .NET Core 是平台应用框架,而 .NET Standard 是 .NET 底层库.因此只要用 .NET Standard 工程来写的代码可以直接在上层的平台应 ...

  3. Java基础之集合篇(模块记忆、精要分析)

    千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...

  4. Echo团队Alpha冲刺随笔 - 第三天

    项目冲刺情况 进展 完成了三分一左右,前端整体页面框架已有,后端也在稳步推进 问题 今天问题较少,主要还是出在对于框架的掌握上 心得 继续加油! 今日会议内容 黄少勇 今日进展 实现社区公告,个人信息 ...

  5. AI 机器学习基础

    深度学习是机器学习的一个特定分支. 1.学习算法 对于某类任务T和性能度量P, 2.线性回归 3.正规方程(normal equation) 4.监督学习(supervised learning) 5 ...

  6. python条件、循环语句

    既然讲到语句,那先说明一下语句块.语句块不是一种语句,是一组语句.在条件为真时执行或者多次的一组语句.主要注意其格式,用冒号来标识语句块的开始,块中每行缩进相同的量,一般4个空格(tab字符位置为8个 ...

  7. 每个大主播都是满屏弹幕,怎么做到的?Python实战无限刷弹幕!

    anmu 是一个开源的直播平台弹幕接口,使用他没什么基础的你也可以轻松的操作各平台弹幕.使用不到三十行代码,你就可以使用Python基于弹幕进一步开发.支持斗鱼.熊猫.战旗.全民.Bilibili多平 ...

  8. thymeleaf参考手册

    1.创建 html <!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"></html&g ...

  9. C# out关键词应用

    C#的out关键词,即是方法内赋值. 返回处理后的结果.打个比喻,有一个宽度的需要按比例缩放.标准宽度为88,如宽度大于这个标准宽度的话,按照0.8进行缩放.如果小于标准宽度,输出的结果没变化. 此时 ...

  10. Python高阶函数--map

    map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...