这篇博客是上次博客的后续
这篇博客和上一篇博客的思路一致,只是对一些没有具体实现的代码进行了实现,并且修改出信息的传递
类图的修改
看了许多同学的博客,感觉自己根本不是在写类图,只是随便的写写中文名称而已,和赵畅学长等同学差得好多
附上修改后的类图:
- 在这边说一下,我认为类中public部分主要就是用于对外操作,所以我觉得类中的设计中,可以把一些函数放在private;
- 这样保证了,public中的函数都是类似于接口的作用---还不是很了解接口的概念(自我认为是public中的一些函数)
- 然后用传参的形式,进行信息的传递
编写完后main函数
#include<iostream>
using namespace std;
#include "allclass.h"
int main(int argc,char *argv[])
{
expresses ex;//表达类
Language lan;//语言类
R_and_W file;//读取类
int cal_num,i,j,k;
double rightans=0;
double inputans=0;
int right_num=0;
char * express=NULL;//利用动态数组存表达式
lan.scanf();//初始界面
char c;//输入语言类型
cin >> c;
lan.set(c);//传递信息
cal_num=file.readFile(argv[1]);//获取题数
for (i = 0; i < cal_num; i++)
{
express = ex.generateExpression();//得到表达式
rightans = ex.calculateResult(express);//得到计算结果
if (ex.IsInt(rightans)) {//计算结果的判定.剔除小数情况
lan.scanf2(express, i);
cin >> inputans;
right_num += file.Countright(rightans, inputans, lan);
file.writeFile1(argv[2], express, rightans, inputans);//存入out.txt中
}
else i = i - 1;
}
delete[] express;//释放
file.writeFile2(express, right_num);//存入最终结果
lan.print(right_num, cal_num);//输出
return 0;
}
类:
表达式类
语言类
读取类
主要流程图:
ps:写完流程图后感觉还是不符合面向对象的思想0.0