软件工程个人作业01

一、题目: 像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。(有能力者改编成网页版)

1.设计思想:了解题目要求,进行相关的定义与程序编写,再进行验证。

2.源代码:

//韩迪的出题算法
//2017/3/6

package dijia;
import java.util.Random;
import java.util.Scanner;

public class test1 {

public static void main(String[] args) {

System.out.println("整数运算请输入1;分数预算请输入2");

Random random = new Random();
Scanner scanner = new Scanner(System.in);
int bb = scanner.nextInt();

if(bb == 1)
{

System.out.println("请输入题目的个数:");
int M = scanner.nextInt();

//定义变量
int m=0;

//创建M个数组储存M道题
int [][] a = new int[M][4];

//产生30道题目
for(int i = 0;i < M;i++)
{
a[i][0] = random.nextInt(100);
a[i][2] = random.nextInt(100);
a[i][1] = random.nextInt(4);
}

//排除重复的题目
while(m <= (M - 1)*M/2)
{
for(int j = 0;j < M;j++)
{
for(int k = j+1;k < M;k++)
{
m++;
if((a[j][0] == a[k][0] && a[j][1] == a[k][1] && a[j][2] == a[k][2]) || (a[j][1] == 3 && a[j][2] == 0))
{

int b = (int)Math.random()*100;
int c = (int)Math.random()*100;
int d = (int)Math.random()*4;

a[k][0] = b;
a[k][1] = d;
a[k][2] = c;
}
}
}
}

//输出题目
for(int i = 0;i < M;i++)
{
if(a[i][1] == 0)
{
System.out.println(a[i][0]+"+"+a[i][2]+"=");
}
if(a[i][1] == 1)
{
System.out.println(a[i][0]+"-"+a[i][2]+"=");
}
if(a[i][1] == 2)
{
System.out.println(a[i][0]+"*"+a[i][2]+"=");
}
if(a[i][1] == 3)
{
System.out.println(a[i][0]+"/"+a[i][2]+"=");
}
}
}

//分数运算
if(bb == 2)
{
System.out.println("请输入题目的个数:");
int MM = scanner.nextInt();
int nn = 0;

//定义相关数组
int a1[] = new int [MM];//储存第一个分数的分子
int b1[] = new int [MM];//储存第二个分数的分子
int a2[] = new int [MM];//储存第一个分数的分母
int b2[] = new int [MM];//储存第二个分数的分母
int cc[] = new int [MM];//储存四则运算符号
char dd[] ={‘+‘,‘-‘,‘*‘,‘/‘};

for(int i = 0;i < MM;i++)
{
a1[i] = random.nextInt(100);
a2[i] = random.nextInt(100);
b1[i] = random.nextInt(100);
b2[i] = random.nextInt(100);
cc[i] = random.nextInt(4);

}
//排除的分数题目
while(nn <= MM*(MM-1)/2)
{
for(int iii = 0;iii < MM;iii++)
{
nn++;

for(int ii = iii+1;ii < MM;ii++)
{
nn++;

if( (cc[ii] == 3 && b1[ii] == 0) || b2[ii] == 0 || a2[ii] == 0 || (a1[ii] >= a2[ii]) || (b1[ii] >= b2[ii]) || (a1[ii] == a1[iii] && b1[ii] == b1[iii] && a2[ii] == a2[iii] && b2[ii] == b2[iii] && cc[ii] == cc[iii]))
{
a1[ii] = random.nextInt(100);
a2[ii] = random.nextInt(100);
b1[ii] = random.nextInt(100);
b2[ii] = random.nextInt(100);
cc[ii] = random.nextInt(4);
}
}
}
}

//输出题目
for(int jj = 0;jj < MM;jj++)
{
System.out.println("("+a1[jj]+"/"+a2[jj]+")"+dd[cc[jj]]+"("+b1[jj]+"/"+b2[jj]+")"+"=");
}

}
}
}

3.截图:

<1>

<2>

时间: 03-06

软件工程个人作业01的相关文章

软件工程概论作业01

软件工程作业01 写一个能自动生成三十道小学四则运算题目的 "软件",要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性).题目避免重复.可定制出题的数量. 思路:随机生成两个数进行计算,设立一个随机的参量用来判断是生成整数还是分数:生成分数时先生成分母,然后将分子的上限设置为分母,这样就会生成真分数: package demo; import java.util.Random; import java.util.Scanner; public class work {

软件工程结对作业01

一.题目: 结对项目开发-四则运算四 把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判. 注:这是一个两人结对开发的项目,开发人员:曾凯    刘雨鑫 二.程序设计思想: (1)功能分析: 1.这是一个可以在线答题的web版四则运算程序,用户可以通过设点一些参数来生成题目,然后回答这些题目,提交后程序检查回答的正确性,然后将题目的回答情况通过页面显示的方式反馈给用户. 2.由于参数设置导致交互不太方便,用户需要考虑参数如何搭配,由此实现按照年级答题,用户只需要

软件工程结对作业02(借鉴版)

软件工程结对作业02(借鉴版) 在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序.但在对学姐程序就行修改时发现了一些问题: 在Newjsp中能调用html中的题目个数的参数 在Myjsp中不能调用html中的题目个数的参数 其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用 源程序: NewFeil.html <!DOCTYPE html> <html> <head&g

软件工程第一次作业补充

软件工程第一次作业的补充 对于作业"在一周之内快速看完<构建之法>,列出你不懂的5-10个问题". 作业要求有: (1)在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 (2)列出一些事例或资料,支持你的提问 (3)说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾? 例如:我看了这一段文字 (引用文字),有这个问题 (提出问题):我查了资料,有这些说法

软件工程教学作业 汇总

本篇文章收集并整理各位教师在博客园中发表的软件工程教学作业,希望为各位老师.学生和爱好者提供便利. 如果博文作者提出异议或意见,本人虚心接受并诚恳道歉. 小林觉 http://www.cnblogs.com/juking/ 学年 学期 作业 链接 简介 2015-2016 1 1 http://www.cnblogs.com/juking/p/4787124.html http://www.cnblogs.com/juking/p/4803578.html   2015-2016 1 2 htt

课程作业01:模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

1.设计思想: 首先是从JavaAppArguments.java示例开始,此示例已打印参数,定义数字 之和和作为存储单位的整型,然后将输入参数的字符串转化为整型,之后求和即可. 2.程序源码: //课程作业01 //李慧,2016.9.20 package demo; public class CommandParameterSum { public static void main(String[] args) { // TODO Auto-generated method stub Sys

软件工程第一次作业程序开发历程

收到软件工程的作业,面对题目“......”.我先拟定了一个大概的思路,以及一些关键的函数.思路利用循环产生30道算术式,并计算答案,存储答案,在利用循环显示30道题的答案. 而关键函数我认为就是随机正整数的产生.考虑到这点,我决定用javascript来编写我的程序,其一是因为最近学习js,其二是因为对c和c++有点陌生了,然后javascript有Math.random这个函数,尽管它只能产生0与1之间的随机数.决定完语言后,我又分析了下题目,考虑到涉及真分数的问题,我将程序分成整数与真分数

软件工程个人作业02-1

老师对自动出题的系统又有了新的功能: 1.是否有乘除法: 2.是否有括号:最多可支持十个数参与计算 3.数值范围: 4.加减结果有无负数: 5.除法结果有无余数: (因为和上文的思路有些交汇,不懂的可以参考上文 >>点击这里参考上文) 下面是我的思路: 1.是否有乘除法: 分条件设置a的值 如果选择无乘除:a=(int)(0+Math.random()*2);//a=0或a=1时分别对应着string数组的"+""-" 如果选择无乘除:a=(int)(0

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma