四则运算课程第四次作业

四则运算器课程作业4

题目要求:

OOA(Object Oriented Analysis,面向对象分析): 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能够反映真实情况的需求模型。

OOD(Object Oriented Design,面向对象设计):将面向对象分析阶段形成的需求模型进一步具体设计。如类的设计(继承、派生、类与类之间的消息协作)、算法的设计等。采取通用的工具,如流程图、类图等来描述。

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

    类的代码:

#include<vector>
#include<string>
#include<fstream>
using namespace std;

void InitPriorities();

class Mutual        //用户的交互类
{
public:
    void init();                //初始化
    void scan();                //该函数用于与用户交互,获取输入数据
    void DisPlayAnswer();       //输出正确答案
    void print();               //将统计结果输出给用户    
private:
    float answer;
    int correctNum;
    
};
class Randomvalue       //随机生成类
{
public:
    Random();//初始化数字和符号
    int randomNumber();         //用于随机生成数字
    char randomOperation();     //用于随机生成运算符
private:
    vector<char> sign;
    vector<int> num;
};

class CreatExpresstion      //算式类 
{
public:
    template<typename T> string Tostring(T i);
    void generateExpression();  //用于生成运算式   
    float calculateResult();    //计算结果 
    float caculate(float Operand1, float Operand2, char Operator);
private:
    string expression;
    float answer;
};

class Filestream        //文件读写类
{
public:
    Filestream(string infilepath, string outfilepath);
    int readFile();
    template <typename T> void writeFile(T t);  
private:
    string _InFilePath;
    string _OutFilePath;
    ifstream _ifs;
    ofstream _ofs;      
};

类图:

1093043-20170514232212738-734800258.png

整体流程图:

1093043-20170514232224441-1961646028.png

类之间功能协作图:

1093043-20170514232236269-1429577449.png

重要算法实现图:

1093043-20170514232247582-598200214.png

本次作业的感想:

本次作业是对四则运算随机出题软件的整体思路框架的整合,将整体思路通过更清晰的流程图类图等的形式展现出来,能使今后的迭代工作的思路更加清晰,提高自己的代码素养,能将文件功能分块更加清楚地展现,有助于理解代码。分析自己思路中模糊的地方,分析能更好改善的地方,提高自己代码的效率,节省更多的时间空间。

转载于:https://www.cnblogs.com/mercuialC/p/6854425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值