四则运算【校园宿舍】

匿名25 匿名39



【声明!】
本博客内容仅为学校要求提交的内容,所有包含着此声明的博文或多或少为“学业要求”的产品,与个人所想展现的想法无关,所有含此声明的博文将在毕业后存档删除。
若因此行为而给大家带来了不快,本人深表歉意。



以下正文

Program vs. Software/Service
一、没错这是一个作业要求
小学老师要每周给同学出300道四则运算练习题。

这个程序有很多种实现方式。

C/C++
C#/VB.net/java

Excel
Unix Shell
Emacs/Powershell/Vbscnpt
Python
两个运算符100以内的数字,不需要写答案。【估计时同t】

现在估计写这个程序需要的时间

马上把代码写出来
需要写答案,并且保证答案在0 100之间【估计时间t】

二、题目理解
300道运算题,此300实际上只是表示多并没有要求什么其他内容,为了方便显示定义为20道。

四则运算,无非就是加减乘除,复合算术或是单符号运算均可,实现符合运算可以用random.range()随即决定运算数量与符号,额外加一个除法判定可以杜绝小数运算,如果目标对象是不会负数的小学生可以对生成题目的答案进行判定,若小于零则删除重置算术。
运算符100以内,这是约束。

保证答案0-100之内,这是约束,与判定是否为小数运算或负数运算一致。

三、程序设计
设计语言选定为Java(毕竟刚好在学这个还一直再用)。
20(300)道题即是while循环。

四则运算即是a、b、c、d四个数,大小用Math.random()*y随即定义,大小随y的不同而范围不同。

符号则用0 1 2 3 决定加减乘除,同样也用Math.random()*3定义,根据情况的不同输出不同的值,并对该值进行判定,查看是否符合要求,若符合则输出题目记录答案,不符合则重置。

答案记录,选定输出,da[i] i++变量记录,手动决定输出与否。

四、时间预估
针对运算,因为全数随机,出现负值,小数运算的概率比较大,加法过百的概率也很大,所以万一运气不好出题可能会缓慢,但是总时间上不成问题。

初版开发单符号运算不出答案十分简单预期15分钟完成编辑周期。

再版开发多符号运算显示答案本质上与上述代码没有区别,也就多7+1+4行,预计20分钟完成【毕竟初代在设计时已经完成了数字&符号的随机与答案判断,所以再版与初版等于没有差异】。

五、设计代码&运行显示

import java.util.*;
public class jisuan {
    public static String yuefen(int a,int b){
        int y = 1;
        for(int i=a;i>=1;i--){
            if(a%i==0&&b%i==0){
                y = i;
                break;
            }
        }
        int z = a/y;
        int m = b/y;
        if(z==0) {
            return "0";
        }
        return ""+z+"/"+m;
    }
    public static void main(String[] args) {
        int x,y,i,a1;
        int d1=0;
        String d = null;
        System.out.println("1、整数计算式,2、真分数计算式");
        Scanner scan1=new Scanner(System.in);
        a1=scan1.nextInt();
        if(a1==1){
        System.out.println("请输入题目的数量");
        Scanner scan2=new Scanner(System.in);
        x=scan2.nextInt();
        int daan[]=new int [x];
        System.out.println("请输入数值的范围");
        y=scan2.nextInt();
        for(i=0;i<x;i++){
            int a=(int)(Math.random()*y);
            int b=(int)(Math.random()*y);
            int c=(int)(Math.random()*3);
            if(c==0)
            {
                d1=a+b;
                System.out.print(a+"+"+b+"=       ");
            }
            if(c==1)
            {
                d1=a-b;
                System.out.print(a+"-"+b+"=       ");
            }
            if(c==2)
            {
                d1=a*b;
                System.out.print(a+"*"+b+"=       ");
            }
            if(c==3)
            {
                d1=a/b;
                System.out.print(a+"/"+b+"=       ");
            }
            if((i+1)%3==0){
                System.out.println();
            }
            daan[i]=d1;
        }
        System.out.println("是否显示答案(显示请输入1)");
        if(scan2.nextInt()==1){
                for(i=0;i<x;i++){
                    System.out.print(daan[i]+"     ");
                }
            }
        }
        if(a1==2){
            int M,Z;
            System.out.println("请输入题目的数量");
            Scanner scan2=new Scanner(System.in);
            x=scan2.nextInt();
            String daan[]=new String [x];
            int x1,x2,B,m1,m2;
            System.out.println("请输入分母数值的范围");
            B=scan2.nextInt();
            for(i=0;i<x;i++){
                m1=1+(int)(Math.random()*B);
                x1=1+(int)(Math.random()*m1);
                m2=1+(int)(Math.random()*B);
                x2=1+(int)(Math.random()*m2);
                int c=(int)(Math.random()*3);
                if(c==0){
                    Z=x1*m2+x2*m1;
                    M=m1*m2;
                    d=yuefen(Z,M);
                    System.out.print(x1+"/"+m1+"+"+x2+"/"+m2+"=       ");
                }
                if(c==1){
                    Z=x1*m2-x2*m1;
                    M=m1*m2;
                    d=yuefen(Z,M);
                    System.out.print(x1+"/"+m1+"-"+x2+"/"+m2+"=       ");
                }
                if(c==2){
                    Z=x1*x2;
                    M=m1*m2;
                    d=d=yuefen(Z,M);
                    System.out.print(x1+"/"+m1+"*"+x2+"/"+m2+"=       ");
                }
                if(c==3){
                    Z=m1*x2;
                    M=m2*x1;
                    d=d=yuefen(Z,M);
                    System.out.print(x1+"/"+m1+"/"+x2+"/"+m2+"=       ");
                }
                if((i+1)%3==0){
                    System.out.println();
                }
                daan[i]=d;

            }
            System.out.println("是否显示答案(显示请输入1)");
            if(scan2.nextInt()==1){
                for(i=0;i<x;i++){
                if((i+1)%3==0) {
                    System.out.println();
                }
                System.out.println(daan[i]+"     ");
                }
            }
        }
    }
}

jisuan

六、增量开发

上述初版代码满足了以下内容:

随机值、整数运算、无小数除法、指定计算数范围、出题数量、选择显示答案。

增量开发内容【实际上是板块啦……】

多符号运算

char[] operator=new char[]{‘+‘,‘-‘,‘*‘,‘/‘};
Random random=new Random();
ArrayList<String>expression=new
ArrayList<String>();
for(int i=0;i<num;i++){
int n=random.nextInt(3)+3;
int[] number=new int[n+1];
String ex=new String();
for(int j=0;j<=n;j++){
number[j]=random.nextInt(100)+1;
}
for(int j=0;j<n;j++){
int s=random.nextInt(4);
ex+=String.valueOf(number[j])+String.valueOf(operator[s]);
if(s==3){number[j+1]=decide(number[j],number[j+1]);
}
}
ex+=String.valueOf(number[n]);
expression.add(ex);
}

mode1

除法优化

private static int decide(int x,int y){
Random random=new Random();
if(x%y!=0){
y=random.nextInt(100)+1;
return decide(x,y);
}
else{
return y;
}
}

mode2

七、参考文献

耿祥义 张跃平 Java2实用教程(第五版)[M] 清华大学出版社

以上——OVER

原文地址:https://www.cnblogs.com/von-wunder-er/p/10565915.html

时间: 2024-10-28 18:15:45

四则运算【校园宿舍】的相关文章

javaWeb校园宿舍管理解析(一)

从网上看到一个开源的web项目-校园宿舍管理系统,大致看了一下源码,框架很简单,用的struts2+jdbc+jsp,虽然作为一个很简单的项目,但对于新手来说,直接看一套系统的源码,很快就会失去兴趣,本人作为一个新人过来很理解这种感受,因此对于这套系统,我准备将他重新翻写一遍,顺便将技术框架修改一下以便自己提高一下自己技术,在这里分享一下重新搭建项目的过程. 主体框架不动,仍用struts2,持久层方面我准备用mybatis,数据库用oracle11g. 废话不多说,直接开干! 首先创建一个Dy

wifi诞生地之一校园宿舍

最近在宿舍,电信和移动的移动信号不知道为什么很弱,而且wifi有时候连不上,就算连上了也上不了网,这可急死了宿舍的小伙伴,不过我无所谓,我用的是电信的宽带,基本不用无线,但是自从wifi信号弱了之后,宿舍的小伙伴开始借我的电信帐号上网了,虽然分享是乐趣,但是六个人用一个上网帐号,这样明显不够用. 没办法,创建wifi的任务就落到了我的身上.我们想的是大家一起买个无线路由器,买回来之后自己装无线路由器,可是我们谁也没装过无线路由器,大家也都不会装,这个方法就被pass掉了,接下来的方法就是在笔记本

javaWeb校园宿舍管理解析(四)

关于3种身份的登录验证已经完成,现在我们开始逐步完成菜单中的选项. 首先看管理员进入系统的菜单选项,第一个是楼宇管理员,看源码关于该功能,只是简单的增删改查,工作中其实往往大多数也是针对实体类的增删改查,无非是持久层技术不同或者企业有大牛将这些方法统一,方便拿来直接用,先看效果页面. 上面一个页面关于楼宇管理员管理包含四个功能:查询(条件查询和全查询).删除.修改.新增. 首先我们来理清楚思路,管理员身份登录,进入index.jsp页面,我们会发现菜单相应操作都在left.jsp中,首先定位到-

javaWeb校园宿舍管理解析(三)

前两章主要集成Struts2以及mybatis,并进行的相应的小测试,现在我们来实现整个登录功能,说简单一下,登录功能就是登录页-->发送请求-->action-->dao-->主菜单. Struts2做为一个声明性架构,struts.xml作为他的入口,用来定义动作默认地方,很多企业习惯将功能模块化,然后在引入struts.xml,因为我们这个项目比较简单,我就不模块化了,所有动作都定义在struts.xml中. <?xml version="1.0" 

校园宿舍管理系统课程设计报告

课程设计报告 学    号   201610411418  /  2016104114122 姓    名   吴帝勇 /谢志良 班    级   16计科4班 题    目   校园宿舍管理系统 授课老师    袁飞 目录 第一章系统概述..............................................................................................................................1 1.

[项目源码] JavaWeb校园宿舍管理系统

jsp校园宿舍管理系统源码,采用Servlet+JSP+MySQL.包含数据库文件,界面采用bootstrap,简洁大方. 项目导入eclipse后的目录结构如下: 关注下面公众号,回复“宿舍管理系统”下载源码 原文地址:https://www.cnblogs.com/dreamboy/p/11293750.html

JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统

项目简介 项目来源于:https://gitee.com/passenger134/javaweb-sushe 本系统基于JSP+Struts2+JDBC+Mysql的校园宿舍管理系统.该系统没有使用全套的SSH框架,只使用了跳转层Struts2,非常适合学习Struts2时使用. 难度等级:中等 技术栈 编辑器 Eclipse Version: 2019-12 (4.14.0) 前端技术 基础:html+css+JavaScript 框架:无 后端技术 JSP+Struts2+JDBC 数据库

javaWeb校园宿舍管理解析(二)

上一章我们已经集成struts2,本章我们主要将mybatis集成进来,方便我们持久层代码的编写. 首先添加相应的包:mybatis-3.1.1.jar,oracle驱动包:ojdbc14.jar 创建管理员用户存储表,用来查询登录页选择管理员的用户,数据稍后再插入. CREATE TABLE admin(  Admin_ID number(11), Admin_Username varchar(20), Admin_Password varchar(20), Admin_Name varcha

〖Network〗宿舍配置两路由器,同时访问校园内网和校园外网

环境: 校园宿舍, 10.x.x.x 和 172.16.x.x~172.31.x.x是校园内网,本科教务系统什么的都在上边 路由器: 路由器1(校园内网):水星MR807 路由器2(拨号上网):TP Link WR740R 达成目标: 宿舍成员通过路由器2正常访问校园外网,同时,可以正常访问校园内网. 操作步骤: 一.配置路由器1(校园内网) 1. 修改路由器地址从192.168.1.1到192.168.1.2: 登录192.168.1.1 -- 网络配置 -- LAN -- IP地址 -- 输