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

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

相关文章

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

SQLServer中生成雪花ID(Snowflake ID)的实现方法

《SQLServer中生成雪花ID(SnowflakeID)的实现方法》:本文主要介绍在SQLServer中生成雪花ID(SnowflakeID)的实现方法,文中通过示例代码介绍的非常详细,... 目录前言认识雪花ID雪花ID的核心特点雪花ID的结构(64位)雪花ID的优势雪花ID的局限性雪花ID的应用场景