• 第四次课程作业


    题目要求

    OOA(Object Oriented Analysis,面向对象分析): 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能够反映真实情况的需求模型。
    OOD(Object Oriented Design,面向对象设计):将面向对象分析阶段形成的需求模型进一步具体设计。如类的设计(继承、派生、类与类之间的消息协作)、算法的设计等。采取通用的工具,如流程图、类图等来描述。

    Q1:采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?

    A:大致可分为四个类。
    1.文件读写类,将各种界面进行读取,输入输出流文件。

    class file
    {
    private:
        int n;//题数
        char input[100];
        char output[100];
    public:
        void readfile1();//读取文件
        void readfile2(char *p, int n, int right);//运行
        void writefile1(char *s,double right, double answer);//内容写入
    };
    

    2.用户交互类,用于不同用户的语言需求,根据用户需求生成语言,题目数和生成答案。

    class ex
    {
        private:
        int num;
        int answer;
        int random;
        public:
        void scanf();//选择语言,获取数据
        void answer();//输出正确答案
        void statistics();//统计题数
    }
    

    3.随机生成类,用于随机生成加减乘除,数字以及符号。

    class random
    {
        private:
        int number;
        char operation; 
        public:
        int randomnum();//随机数
        char randomoperation();//随机运算符
        char randomexpress();//随机算式
    };
    

    4.计算类,用于计算结果

    class cal
    {
        private:
        int answer;
        char express;
        public:
        int cal();//计算结果
        void judge();//统计答题情况
    }
    

    类图如下:

    Q2:类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?

    A:流程图如下:

    Q3:该自动出题软件采取何种算法或者是如何实现的?

    A:采用循环队列栈等等...至于博客园中大神们用到的逆波兰,目前还在研究中...

    感想:

    非常感谢各位大佬们的帮助,此次改进代码后类的思路较为清晰,也渐渐出现了模块化的水准,再一步步的向分装化改进,程序变得更加清楚,也纠正了自己的编码习惯。

  • 相关阅读:
    简述虚拟打印功能的实现方法。
    什么是spool系统,什么是预输入,什么是缓输出?
    什么是虚拟设备技术,什么是虚拟设备,如何进行虚拟设备分配?
    什么是共享设备,对共享设备如何分配?
    什么是独占设备,对独占设备如何分配?
    对I/O设备分配的一般策略是什么?
    maven+nexus setting.xml配置(收藏)
    MySQL自动化安装(双主多从读写分离)
    Shell常用操作
    shell中的比较语句
  • 原文地址:https://www.cnblogs.com/Cleveland/p/6860613.html
Copyright © 2020-2023  润新知