四则运算需求分析和功能实现--杨宇杰

四则运算需求分析和功能实现

一.基本要求

1.编写小学四则运算测试系统,要求完成两位数以内(包括两位数)的加,减,乘,除四则运算。下述所有四则运算表达式均需随机生成。使用参数能够控制生成题目的数量。

(例如:12+6+7=?3*4*6=?)

2.能根据用户的输入来选择运算种类(例如:加法运算、减法运算....),让程序能接受用户输入答案,并判定对错。 最后给出总共 对/错 的数量。程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。

二.扩展要求

1.扩展用户的运算种类,除了整数,还要支持真分数四则运算

(例如:1/3+3/5+2/7=?)

2.进一步扩展功能,实现混合四则运算,即扩展表达式类型。

例如:25 - 3 * 4 - 2 / 2 + 89 = ?

1/2 + 1/3 - 1/4 = ?

( 5 - 4 ) * (3 +28) =?

注:(1)判别各运算符在表达式中计算的优先级

(2)括号的生成位置

(3)分数与整数的混合运算,可以考虑将整数转化为分数形式,即分母为1

下面是个人编写的真分数运算实现代码,供参考:

	public static String caculate(String s){
		String ss = s;
		String end = null;

		int a1 = ss.charAt(0)-‘0‘;
		int a2 = ss.charAt(2)-‘0‘;
		int b1 = ss.charAt(4)-‘0‘;
		int b2 = ss.charAt(6)-‘0‘;
		int c = 1;

		if(ss.charAt(3)==‘-‘)
			c = -1;
		int e1 = a1 * b2 + c * a2 * b1;
		int e2 = a2 * b2;
		int e11 = Math.abs(e1);
		int e22 = Math.abs(e2);
		if(e1 == 0)
	      end = 0+"";
		else
			if(e11 % e22 == 0){
				end = e1/e2 +"";
			}else if(e22 % e11 == 0){
				if(e2/e1<0)
					end = "-" + 1 + "/" +Math.abs(e2/e1);
				else
				end = 1 + "/" +e2/e1;
			}else if(c == 1){
				end = e11 + "/" + e22;
				}else
					end = "-" + e11 + "/" + e22;
		return end;
	}

  生成真分数表达式核心代码:

public class caculator {

	 //生成真分數表達式
	public static String zhen(){
		int y = (int) (Math.random()*2)+1;//随机生成运算符的数量
		int[] w = new int[10];
		String str =null;
		if(y==1){
			char ch = "+-".charAt((int) (Math.random()*2));
			for(int i=0;i<(2*y+2);i++){
				w[i]= (int) (Math.random()*9)+1;
			}
			str = w[0] + "/" + w[1] + ch + w[2] + "/" + w[3] + "=";
			return str;
		}
		if(y==2){
			for(int i=0;i<2*y+2;i++){
				w[i] = (int) (Math.random()*9)+1;
			}
			char ch1 = "+-".charAt((int) (Math.random()*2));
			char ch2 = "+-".charAt((int) (Math.random()*2));
			str = w[0] + "/" + w[1] + ch1 + w[2] + "/" + w[3] + ch2 + w[4] + "/" + w[5] + "=";
			return str;
		}
		if(y==3){

		}
		return str;
	}

	//生成整数表达式
	public static String zhengshu(){
		int y = (int) (Math.random()*1)+2;//随机生成运算符的数量
		int[] in = new int[10];
		String str =null;
		char ch1=0,ch2=0,ch3=0,ch4=0;
		if(y==2){
			for(int i=0;i<y+1;i++){
				in[i] = (int) (Math.random()*30)+1;
			}
			int num = (int) (Math.random()*2);
			if(num==0){//左边加括号
				 ch1 = "+-".charAt((int) (Math.random()*2));
				 ch2 = "*/".charAt((int) (Math.random()*2));
			str = "(" + in[0] + ch1 + in[1] + ")" + ch2 + in[2] +"=";
			}else{
				 ch1 = "+-".charAt((int) (Math.random()*2));
				 ch2 = "*/".charAt((int) (Math.random()*2));
			str = in[0] + ch2 + "(" + in[1] + ch1 + in[2] + ")" +"=";
			}
			return str;
		}
		return str;
	}

  

时间: 2024-10-20 12:08:31

四则运算需求分析和功能实现--杨宇杰的相关文章

BugPhobia启程篇章:需求分析与功能定位

0x01 :引言 If you weeped for the missing sunset, you would miss all the shining stars 我看着大巴缓缓的驶过街角,我躲在那些树后,内心安静的做着告别 相遇在一场雨里 告别在另一场雨里 多好 0x02 :项目的基本定位概述 There are no trails of the wings in the sky, while the birds has flied away.   网站基本定位 面向CS/EE领域的垂直搜

四则运算GUI版本功能展现

对于四则运算的GUI版本实现支持批量出题,由于我的不积极导致教师没找到对应的连接,现在重新补上链接 http://www.cnblogs.com/liquan/p/5978687.html coding.net的地址: ssh:[email protected]:muziliquan/GUIVersion.git git:git://git.coding.net/muziliquan/GUIVersion.git

分享《深度学习入门:基于Python的理论与实现》+PDF+源码+斋藤康毅+陆宇杰

下载:https://pan.baidu.com/s/1FYcvG1tB__ooitilMpJC7w 更多资料分享:http://blog.51cto.com/14087171 <深度学习入门:基于Python的理论与实现>高清中文版PDF+源代码 高清中文版PDF,314页,带目录标签,可复制粘贴,高清晰.配套源代码. 深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术.书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习

现代软件工程 第一章 四则运算的实现--栈实现

像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”, 分别满足下面的各种需求.下面这些需求都可以用命令行参数的形式来指定: a) 除了整数以外,还要支持真分数的四则运算. (例如:  1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩展功能和可以支持的表达式类型,最后希望能支持下面类型的题目 (最多 10 个运算符,括号的数量不限制):         25 - 3 * 4 - 2 / 2 + 89

第四题:根据邹欣老师的教材相关内容,确定小组成员的角色,细化项目需求、时间计划、列出产品积压工作项和预计开发时间

根据小组的详细讨论,以个人爱好与特长结合,最后确定了每个成员担当的角色 小组成员 角色分工   尤心心 组长,项目每周管理与总结,开发工程师   徐萧瑞 结构设计与数据库设计,开发工程师   杨宇杰 需求分析,开发工程师   张立鹏 前端开发,开发工程师   张鹏 测试与开发工程师   细化项目需求: 基本需求是:学生注册登录系统,开始答小学生四则运算题(题目随机产生20道),时间限定,分数产生 可能拓展需求:题目难度选择(带真分数运算,最大数值等),题目产生数量选择,查看答题,错题重新考试,分

小学生四则运算软件进度报告(一)

本小组决定采用B/S架构设计此软件. 上一周我们小组明确了分工, 由杨宇杰负责整理需求文档, 由张立鹏负责前端页面设计, 业务逻辑部分徐潇瑞负责给小学生出题目(生成四则运算表达式的java程序(包括简单,混合,真分数)), 张鹏和尤心心负责业务逻辑的计算表达式并判断打分等部分. 目前初步页面设计:

8.快速阅读现代软件工程后所产生的疑问及思考

1.什么是Scrum?(第六章-敏捷流程) Scrum 是一个敏捷开发框架,它由一个开发过程,几种角色以及一套规范的实施方法组成.它可以被运用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架. Scrum 定义了 4 种主要的角色:1.产品拥有者:该角色负责产品的远景规划,平衡所有利益相关者的利益,同时确定产品需求积压的优先级等.它是开发团队和客户或最终用户之间的联络点.2.利益相关者:该角色与产品之间有直接的利益关系,通常也是由客户或最终用户代表组成.他们负责收集编写产品需求,审查

3.快速阅读现代软件工程后所产生的问题汇总

1.什么是Scrum?(第六章-敏捷流程) Scrum 是一个敏捷开发框架,它由一个开发过程,几种角色以及一套规范的实施方法组成.它可以被运用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架. Scrum 定义了 4 种主要的角色:1.产品拥有者:该角色负责产品的远景规划,平衡所有利益相关者的利益,同时确定产品需求积压的优先级等.它是开发团队和客户或最终用户之间的联络点.2.利益相关者:该角色与产品之间有直接的利益关系,通常也是由客户或最终用户代表组成.他们负责收集编写产品需求,审查

10. Software, Software Engineering, water fall (瀑布模型),Code Complete等名词的来源

①.Software-软件”一词是20世纪60年代才出现的,软件Software——1958年由贝尔实验室的著名统计学家John Tukey 提出软件与硬件一起构成完整的计算机系统,它们是相互依存,缺一不可的. 自从第一台计算机诞生以后,就开始了软件的生产,到现在为止,经过了三个阶段.即程序设计时代,程序系统时代,软件工程时代. 1.程序设计时代(1964年~1956年) 这个阶段的生产方式是个体手工劳动,使用的工具是机器语言,汇编语言. 2.程序系统时代(1956年~1968年) 这阶段的生产