1. 1. 要求
  2. 2. 问题分析
  3. 3. 待实现的功能
  4. 4. 存在问题

面向对象的程序设计计划书

要求

  • 项目简介

    一位小学教师Ken希望完成这样的任务:针对于小学生正在学习四边形(quadrangle)的特性,编写一个小软件,能够随机在屏幕上显示矩形(rectangle)、正方形(square)、平行四边形(parallelogram)、梯形(trapezoid)和菱形(diamond)五种形体之一,同时显示该形体的特性和关键数据(随机产生),学生复习形体的特性,然后根据给出的关键数据计算形体的面积,软件判断其结果的正确性。在学习过程中,软件记录产生的每一个形体,在学生选择不再继续后,将其学习的过程重放一遍,用以重温,加深印象。

  • 编程语言:C++

  • 最后实现的效果如下展示:

    选择模式:
  1. 学习模式
  2. 复习模式

用户输入1:
开始进入学习模式,并随机出现图形,图形的参数为随机数

  1. 平行四边形
    展示名字,参数,图形样子
    请输入面积:
    若用户输入面积正确,返回上上一级,选择模式
    若用户输入面积错误,弹出“请重新输入”,直到输入正确为止
  2. 矩形
  3. 正方形
  4. 梯形
  5. 菱形

用户输入2:
若队列为空,则提醒“尚未学习”
返回最初的样子,选择模式
若已经有学习过的内容,则一定顺序弹出(正序或者逆序),不需要重复之前的学习步骤,就是不用再次输入面积,只需要直接弹出名字(wnat()),画出形体以及参数即可(darw()),当弹出完毕之后,程序结束。注意:darw()里面有名字与参数的输出。

问题分析

List应该是构成一个容器,用链表构成,加入的时候,长度+1,p = p->next,将学习过的图形放到最后一位,最后遍历的时候,长度-1,并且输出,直到长度为0的时候提醒“复习结束”,到这个时候程序结束。当重载了[]之后,可以返回链表的特定位置的元素

  • size();//返回列表中的节点数,在list类中增加private的元素len,而size()就是用来返回len的;
  • push_back();//将数据添加到列表末尾,这个函数应用到学习过程中向链表增加元素,会用到[];
  • operator[];//返回指定下标的数据,这是一个运算符的重载函数,原型为QUADPTR& operator;
  • traverse();//遍历,需要一个访问函数作为参数
  • pop_back() //用来删除列表的最后一个节点,其原型为:void pop_back();

待实现的功能

  1. 随机设置四边形的参数
    解决:生成随机数
  2. 判断用户输入是否正确
    解决:用while(i != area),只有当错误时才会反复执行
  3. 随机输出某个四边形
    解决:switch语句每个四边形有编号,用生成随机数的方法来选择四边形

存在问题

  1. 随机数不能为0(四边形的参数)
  2. 梯形画出来有误
  3. 梯形面积计算有误
  4. 菱形不对
  5. 计算出的面积有可能为浮点数
  6. 复习模式会陷入死循环
  7. 遍历函数的参数是访问函数,那么访问函数是什么,访问函数与遍历函数都需要实现什么功能?