四则运算生成(最近天气不错,太阳当空照)

2023-11-21 06:20

本文主要是介绍四则运算生成(最近天气不错,太阳当空照),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

四则运算生成

题目要求

本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
能够自动生成四则运算练习题
可以定制题目数量
用户可以选择运算符
用户设置最大数(如十以内、百以内等)
用户选择是否有括号、是否有小数
用户选择输出方式(如输出到文件、打印机等)
最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

队友及Coding

写代码的人吃喝玩乐:当然是我寄己了啦(Coding传送门)
写测试的人丰乳肥臀:睡在我下铺的肌肉男(肌肉男博客传送门)

924802-20180417221313478-490751526.jpg

以下是正文

作为一个对精通C和C++的人,我选择用JAVA实现。

以下为基本实现结构图:
924802-20180417143100072-1130608092.png

以下为不怎么友好的图形化界面:
924802-20180417143412130-1597282587.png

以下为图形化界面代码:

package swing;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Toolkit;import javax.swing.JRadioButton;
import javax.swing.JCheckBox;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;public class functionChoose extends JFrame {private JPanel contentPane;private JTextField numtxt;private JTextField maxtxt;/*** Create the frame.*/public functionChoose() {setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//setBounds(100, 100, 450, 300);setTitle("功能选择");setSize(450, 300);Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();int x = (int) ((screen.getWidth() - getWidth()) / 2);int y = (int) ((screen.getHeight() - getHeight()) / 2);setLocation(x, y);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(null);setContentPane(contentPane);JLabel 括号 = new JLabel("\u62EC \u53F7");括号.setFont(new Font("微软雅黑", Font.BOLD, 13));括号.setBounds(10, 149, 35, 23);contentPane.add(括号);JRadioButton khY = new JRadioButton("Y");khY.setFont(new Font("微软雅黑", Font.BOLD, 13));khY.setBounds(56, 149, 35, 23);contentPane.add(khY);JRadioButton khN = new JRadioButton("N");khN.setFont(new Font("微软雅黑", Font.BOLD, 13));khN.setBounds(110, 149, 40, 23);contentPane.add(khN);ButtonGroup groupkuohao = new ButtonGroup();groupkuohao.add(khY);groupkuohao.add(khN);JLabel 小数 = new JLabel("\u5C0F \u6570");小数.setFont(new Font("微软雅黑", Font.BOLD, 13));小数.setBounds(10, 182, 35, 23);contentPane.add(小数);JRadioButton xsY = new JRadioButton("Y");xsY.setFont(new Font("微软雅黑", Font.BOLD, 13));xsY.setBounds(56, 182, 35, 23);contentPane.add(xsY);JRadioButton xsN = new JRadioButton("N");xsN.setFont(new Font("微软雅黑", Font.BOLD, 13));xsN.setBounds(110, 182, 40, 23);contentPane.add(xsN);ButtonGroup groupxiaoshu = new ButtonGroup();groupxiaoshu.add(xsY);groupxiaoshu.add(xsN);JLabel 运算符 = new JLabel("\u8FD0\u7B97\u7B26");运算符.setFont(new Font("微软雅黑", Font.BOLD, 13));运算符.setBounds(10, 76, 40, 23);contentPane.add(运算符);JCheckBox Add = new JCheckBox("+");Add.setBounds(56, 76, 50, 23);contentPane.add(Add);JCheckBox Sub = new JCheckBox("-");Sub.setBounds(110, 76, 50, 23);contentPane.add(Sub);JCheckBox Mult = new JCheckBox("*");Mult.setBounds(56, 114, 50, 23);contentPane.add(Mult);JCheckBox Div = new JCheckBox("/");Div.setBounds(110, 114, 50, 23);contentPane.add(Div);JLabel num = new JLabel("\u7B97\u5F0F\u4E2A\u6570");num.setFont(new Font("微软雅黑", Font.BOLD, 13));num.setBounds(10, 10, 60, 15);contentPane.add(num);JLabel max = new JLabel("\u6700\u5927\u6570");max.setFont(new Font("微软雅黑", Font.BOLD, 13));max.setBounds(10, 45, 65, 15);contentPane.add(max);numtxt = new JTextField();numtxt.setFont(new Font("微软雅黑", Font.BOLD, 13));numtxt.setBounds(80, 7, 66, 21);contentPane.add(numtxt);numtxt.setColumns(10);maxtxt = new JTextField();maxtxt.setFont(new Font("微软雅黑", Font.BOLD, 13));maxtxt.setBounds(80, 42, 66, 21);contentPane.add(maxtxt);maxtxt.setColumns(10);JLabel outMethod = new JLabel("\u8F93\u51FA\r\n\u65B9\u5F0F");outMethod.setFont(new Font("微软雅黑", Font.BOLD, 13));outMethod.setBounds(10, 220, 54, 15);contentPane.add(outMethod);JRadioButton outMethodF = new JRadioButton("\u6587\u4EF6");outMethodF.setFont(new Font("微软雅黑", Font.BOLD, 13));outMethodF.setBounds(70, 216, 60, 23);contentPane.add(outMethodF);JRadioButton outMethodP = new JRadioButton("\u6253\u5370\u673A");outMethodP.setFont(new Font("微软雅黑", Font.BOLD, 13));outMethodP.setBounds(130, 216, 70, 23);contentPane.add(outMethodP);ButtonGroup prin = new ButtonGroup();prin.add(outMethodP);prin.add(outMethodF);JButton button = new JButton("\u751F\u6210\u7B97\u5F0F");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//算式个数numString n1 = numtxt.getText();int num = Integer.parseInt(n1);//System.out.println("个数"+num);//结果最大值maxString n2 = maxtxt.getText();int max = Integer.parseInt(n2);//System.out.println("最大值"+max);//算式包含的运算符(+,-,*,/,括号,小数)int[] a = {0,0,0,0};int kh=0,outp=0,xs=0;if(Add.isSelected())a[0] = 1;if(Sub.isSelected())a[1] = 1;if(Mult.isSelected())a[2] = 1;if(Div.isSelected())a[3] = 1;if(khY.isSelected()) {kh = 1;}else {kh = 0;}if(xsY.isSelected()) {xs = 1;}else {xs = 0;}if(outMethodF.isSelected()) {outp = 1;}else {outp = 0;}//算式输出程序    output.out(num,max,a,kh,xs,outp);}});button.setFont(new Font("微软雅黑", Font.BOLD, 13));button.setBounds(299, 182, 93, 23);contentPane.add(button);}
}

以下为四则运算生成函数框图:

924802-20180417143209627-740847710.png

以下为四则运算生成式代码:

package swing;
import java.util.Random;
public class output {public static void out(int n,int m,int[] A,int KH,int XS,int OUTP) {/*System.out.print(n);System.out.print(m);System.out.print(A[0]);System.out.print(A[1]);System.out.print(A[2]);System.out.print(A[3]);System.out.print(KH);System.out.print(XS);System.out.println(OUTP);*/int[] B = new int[4];B[0] = A[0];B[1] = A[1];B[2] = A[2];B[3] = A[3];int numOFfunction = 0,t = A[0] + A[1] + A[2] + A[3],l = 0,k = 0,j = 0;double x;Random number = new Random();    //产生随机整数Random choose = new Random();    //产生随机数决定所用运算符Random XSRan = new Random();     //随机决定是否产生小数Random KHRan = new Random();     //随机产生括号for(int i = 0;i < n;i ++) {j = t;k = 0;l = 0;//循环产生指定数目的算式numOFfunction = t;A[0] = B[0];A[1] = B[1];A[2] = B[2];A[3] = B[3];if(KH == 1) {if (t >= 2 && l == 0 && j > 2) {if(KHRan.nextInt(2) == 1) {System.out.print("(");l++;}}}if(XS == 1) {             //判断并产生小数x = Math.random() + number.nextInt(m)+.12;if(XSRan.nextInt(3) == 0) {System.out.printf("%.2f",x);if(l != 0) {k++;j--;}}else {System.out.print(number.nextInt(m)+1);if(l != 0) {k++;j--;}}}else {System.out.print(number.nextInt(m)+1);   //第一个数if(l != 0) {k++;j--;}}if(k == 2) {System.out.print(")");k = 0;l=0;}while(numOFfunction != 0) {int ran;while(true) {ran = choose.nextInt(4);if(A[ran] == 1) {A[ran] = 0;break;}}if(ran == 0) {System.out.print("+");numOFfunction = numOFfunction - 1;}else if(ran == 1) {System.out.print("-");numOFfunction = numOFfunction - 1;}else if(ran == 2 ) {System.out.print("*");numOFfunction = numOFfunction - 1;}else if(ran == 3) {System.out.print("/");numOFfunction = numOFfunction - 1;}if(KH == 1) {if (t >= 2 && l ==0 && j > 2) {if(KHRan.nextInt(2) == 1) {System.out.print("(");l++;}}}if(XS == 1) {x = Math.random() + number.nextInt(m)+.12;if(XSRan.nextInt(3) == 0) {System.out.printf("%.2f",x);if(l != 0) {k++;j--;}}else {System.out.print(number.nextInt(m)+1);if(l != 0) {k++;j--;}}}else {System.out.print(number.nextInt(m)+1);if(l != 0) {k++;j--;}}if(k == 2) {System.out.print(")");k = 0;l = 0;}}System.out.println("=");}}
}

图形化界面实例化:

package swing;import swing.functionChoose;public class mainP {public static void main(String[] args) {functionChoose frame = new functionChoose();frame.setVisible(true);}
}

运行结果

输入

924802-20180417143859001-527901934.png

输出

924802-20180417143905545-335693562.png

代码测试

写测试的人丰乳肥臀:睡在我下铺的肌肉男(肌肉男博客传送门)

总结评价

正如老师上课所说,结对编程真的很有效率。两个人互相监督,提高了代码质量,减少差错,节省了很多时间。跟队友合作也是互相学习提高的过程。
在这次编程中用到了没接触过的Swing的相关知识,我们一起通过网络以及图书资源查找相关知识,最终实现了功能。人多力量大,而且队友很靠谱,遇到问题提出了很多有建设性的解决方案。

转载于:https://www.cnblogs.com/joker157/p/8866395.html

这篇关于四则运算生成(最近天气不错,太阳当空照)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400415

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

poj1330(LCA最近公共祖先)

题意:求最近公共祖先 思路:之前学习了树链剖分,然后我就用树链剖分的一小部分知识就可以解这个题目了,记录每个结点的fa和depth。然后查找时,每次将depth大的结点往上走直到x = y。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring>

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma