zoukankan      html  css  js  c++  java
  • 第四次课程作业

    第四次课程作业

    github仓库 arithmatic3.0

    首先要谢谢老师给我了一周的时间进行一次大的改进,这次改进是我的项目更像是面向对象的项目,也更符合现在的水平,具体这次改动和有很多的经验我会再另发一篇博客进行说明,当然改动后最直接的成果就是本次作业不用改动,不废话,上图。

    类图

    这个就是我的类图,很简洁,分为三个类,去掉了所有的全局变量和静态变量,类之间没有影响,不需要在一个类中引用另一个类的属性,当然本来就不能,全定为private了,这里我没有定公有属性是因为我认为没有必要,三个类之间不需要传递消息,只需要主函数知道有init,result,和check的方法就可以了,知道了运算方法或者成员属性也没用,所以只有主函数中才会实例化三个类,只有主函数可以调用一个类的成员函数。

    几个类的介绍:

    1. interface类是除了算式,其他的界面输出,当然语言的获取是输出的前提,所以有关语言的函数作为私有成员函数保存,first是程序刚开始的与使用者交互界面,mid每一道题结果告知界面,finally是最后统计结果界面。
    2. equation类是处理整数算式的类,和我上面的流程图一样,外部只可以调用init和result类,而不需要知道关于计算的成员方法。
    3. 与equation类相似,也只留下一个init和result方法。

    程序实现

    代码实现

    这是主函数的构想

    int main()
    {
        Interface inter;
    	int n = inter.first();             //多少题
    	for (int j = 0;j < n;j++)
    	{
    		Fraction fra;
    		Equation equ;
    		{
    			equ.initequation();       //初始化整数算式
    			result=equ.result();      //计算并返回答案
    		}
    		else
    		{
    			fra.initFraction();       //初始化分数算式
    			result=fra.result();      //计算并返回答案
    		}
    		inter.mid(answer,result);     //当前答案结果输出
    	}
    	inter.finally();
    }
    

    这是主函数代码(与构想一致)

    #include "stdafx.h"
    #include "equation.h"
    #include "Fraction.h"
    #include "Interface.h"
    #include <time.h>
    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    int main()
    {
        Interface inter;
    
    	double result;
    
    	int n = inter.first();                  //多少题
    	srand((unsigned(time(NULL))));
    	for (int j = 0;j < n;j++)
    	{
    		Fraction fra;
    		equation equ;
    		int judge = rand() % 5;       //出现分数运算的几率,目前1/5
    		if (judge != -1)
    		{
    			equ.initequation();       //初始化整数算式
    			result=equ.result();      //计算并返回答案
    		}
    		else
    		{
    			fra.initFraction();       //初始化分数算式
    			result=fra.result();      //计算并返回答案
    		}
    		int answer;
    		cin >>answer;
    		inter.mid(answer,result);     //当前答案结果输出
    		cout << endl;
    	}
    	inter.finally();
    	return 0;
    }
    
  • 相关阅读:
    LeetCode两数之和
    Windows端口被占用解决方法
    Vue函数防抖和函数节流
    Elasticsearch入门
    BIO/NIO/AIO对比
    Java日期格式转换不用发愁
    Java 类型转换工具类(持续更新)
    c++ regex 正则类例子及其gcc4.8报错
    c/c++ 编译错误汇总
    Android recover 修改更新字符串显示
  • 原文地址:https://www.cnblogs.com/hi-reader/p/6853845.html
Copyright © 2011-2022 走看看