转型第一步

题目连接

分析:

根据对于自我代码的分析,我总体上归纳出三类,一类是关于表达式的生成,一类是关于文件的读写,一类是关于语言的选择。

以下为我的分类:

  • 表达式类:随机数字,随机运算符,随机数计算,生成表达式,结果计算。
  • 读取类:题数,输出流文件,输入流文件,答案判断错误。
  • 语言类:语言类型输入,初始化语言选择,界面输出。

协作关系:

主函数主要代码(具体没有实现)

#include "allclass.h"
#include<iostream>
using namespace std;
int main()
{
	//创建对象
	expresses ex;
	Language lan;
	R_and_W file;
	int n, i, j, k;//一些传入变量
	double ans;//答案
	char c;//一些传入变量
	char * express = new char[20];//一些传入变量
	/*
	主要使用通过信息传递:

	lan.scanf();//开始界面

	file.readFile(char * s);//读取题数

	express=ex.generateExpression();//得到表达式

	an=ex.calculateResult();//得到答案

	sum+=file.Coutright(double answers, double inputerswner);//判断错误

	lan.Choose();//选择语言输出

	file.writeFile();//写入文件中

	*/
	return 0;
}

类的主要内容:


class expresses {//表达式类
private:
	char a[4];//个位数整数
	char oper[3];//运算符
	char change(int x);//随机数转变成运算符 
	char randomNumber();//用于随机生成数字
	char randomOperation();//用于随机生成运算符
	int IsOperator(char c);// 判断是否为运算符 
	int Priority(char oper1, char oper2);//运算符比较 
	double calculate(double a, int oper, double b);//两个数的计算 
public:
	double calculateResult(char *express);//用于计算结果
	char * generateExpression(/*char num[], char o[]*/);//用于生成运算式-里面可以改成无参数-因为是private
};

class Language//语言类
{
private:
	char language;
	ifstream inf;//读取语言文件
public:
	void set(char c);//外界传入
	void scanf();//初始界面选择语言
	void Choose(char c, int a);//语言选择,以及选择输出 错误 或 正确
};


class R_and_W//读取类
{
private:
	int n;//题数
	ifstream fin;//读取题数文件
	ofstream fout;//结果写入文件
	double inputanswer;//输入的答案
public:
	void set();//外界数据存入
	int readFile(/*char * s*/);//读取题数 
	void writeFile2(/*char *s, double n, double right*/);//每次运行的结果总结
	void writeFile(/*char *s, char * p, double rans, double inans*/);//每题内容的写入 
	int Coutright(double answers, double inputerswner);
};

具体编码没有实现,以上是目前自我的设想。

不足之处:

  1. 有部分功能有交叉现象
  2. 没有具体写出类与类之间的消息协作
  3. 没有运用继承,与派生的知识
  4. 以上代码还没有修改其一些参数形式
原文地址:https://www.cnblogs.com/q1076452761/p/6851428.html