《面向对象程序设计》课程作业 (四)

•采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?
•类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?
•该自动出题软件采取何种算法或者是如何实现的?可以采用流程图描述的方法。

类的划分

根据需求,我划分了三个类。

类1:UserInteraction

  • 作用:负责与用户交互
  • 属性:题数
  • 行为:读取用户输入的题数、选择语言、

类2:Expression

  • 作用:负责有关算式的部分
  • 属性:算式字符串、符号字符数组
  • 行为:产生随机数字、产生随机符号、产生算式

类3:Answer

  • 作用:负责有关答案的部分
  • 属性:算式结果、正确题数、错误题数
  • 行为:运算算式答案、检验答案、统计结果

流程图

首先UserInteraction类负责与用户交互,输入题目数量n和选择语言后传递给Expression类,Expression类根据传递的消息进行算式的产生,然后传递给Answer类,Answer类根据产生的算式进行答案的运算,再根据UserInteraction类中输入的答案判断对错,最后输出统计结果。

代码构思

class UserInteraction //负责与用户交互 
{
private:
	int n;//题数 
	int language;
            int ans;//答案
public:
	void getNumber(int n);//获取题数
	void chooseLanguage();//选择语言 
	void getQuestions();//统计题数
	void getAnswer();//获取答案
};

class Expression //负责和算式有关的 
{
private:
	string equa;//算式
	char sign[4];
public:
	void randomNumber(); //随机数字
	void randomOperation(); //随机符号
	void generateExpression();//产生算式 
}; 

class Answer() //负责跟答案有关的部分 
{
private:
	double result;
	int right;
	int wrong;
public:
	void calculateResult (); //运算答案
	void checkanswer(); //检验答案
	void countQuestions();//统计结果
};
原文地址:https://www.cnblogs.com/ctsyx/p/6862928.html