2017《面向对象程序设计》课程作业五
2017《面向对象程序设计》课程作业五
github连接:https://github.com/Travaill/RefactoringArithmetic.git
一、一个有待修改的类图
二、程序功能
- 选择中文,英文,德语法语,日语五种语言
- 程序能接收用户输入的整数答案,并判断对错
- 程序结束时,统计出答对、答错的题目数量
三、代码规范
- 函数的命名必须使用英文单词,不使用拼音缩写
- 函数的命名如果一个单词的必须首字母大写,如果多个单词的用下划线隔开
- 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
- 要随意定义全局变量,尽量使用局部变量。
- 函数的旁边必须注释上本函数的功能
- 禁止GOTO语句。
- 源文件头部应进行注释,列出:生成日期、作者、模块目的/功能等。
示例:
示例:
示例:
下面这段源文件的头注释比较标准,可以不局限于此格式,但上述信息要包含在内。示例:
示例:
下面这段源文件的头注释比较标准,可以不局限于此格式,但上述信息要包含在内。示例:
下面这段源文件的头注释比较标准,可以不局限于此格式,但上述信息要包含在内。
说明:Description一项描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等。/************************************************************
FileName: test.cpp
Author:
Version :
Date:
Description: // 模块描述
Version: // 版本信息
Function List: // 主要函数及其功能
- -------
History: // 历史修改记录
< author > < time > < version > < desc >
David 96/10/12 1.0 build this moudle ***********************************************************/
History是修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。
- 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值等
示例:
/*************************************************
Description: // 函数功能、性能等的描述
Input: // 输入参数说明,包括每个参数的作 用、取值说明及参数间关系。
Output: // 对输出参数的说明。
Return: // 函数返回值的说明
Other // 其它说明
*************************************************/
- 函数名以大写字母开头,采用谓宾结构(动名),且应反映函数执行什么
操作以及返回什么内容。
- 类、结构、联合、枚举的命名须分别以C、S、U、E开头,其他部分遵从一般变量命名规范。
四、代码展示
类Expression
#include<string>
using namespace std;
class CExpression
{
public:void InitExpression();void GetExpression(string &str);friend bool JudgeExpression(string str);friend bool JudgeResult(double res);
private:string exp;double res;int RandomNumber(int low, int high);char RandomOperation();double CalculateResult(string str);void CalculatePolynomial();int OpeRank(char x);
};
类Control
#include<string>
using namespace std;
class CControl
{
public:bool JudgeExpression(string str);bool JudgeResult(double res);bool GetKeyAndExit();void StatisticalResult();
private:int wrong;int right;
};
类File
#include<string>
using namespace std;
class CFile
{
public:int ReadFile();bool JudgeIfGet();void OutputFile();
private:string inputFilePath;string outputFilePath;
};
类File的派生类 Resouce
class CResource:public CFile
{
public:private:string resouceFilePath;string recouce[8];
};
已经实现了生成表达式的功能
#include<string>
using namespace std;
class CExpression
{
public:void InitExpression();void GetExpression(string &str);friend bool JudgeExpression(string str);friend bool JudgeResult(double res);
private:string exp;double res;int RandomNumber(int low, int high);char RandomOperation();
#include"Expression.h"
#include<sstream>void CExpression::GetExpression(string &str)
{str = exp;
}
int CExpression::RandomNumber(int low, int high) //生成[low,high]随机数
{return (rand() % (high - low + 1) + low);
}char CExpression::RandomOperation() //生成四则运算符
{char ope;switch (RandomNumber(1,4)){case 1:ope = '+'; break;case 2:ope = '-'; break;case 3:ope = '*'; break;case 4:ope = '/'; break;}return ope;
}void CExpression::InitExpression()
{stringstream ss;string str[2] = { "" };for (int i = 0; i < 2; i++){int mode = RandomNumber(1, 3);if (mode == 1){ss << '(' << RandomNumber(1,10) << RandomOperation() <<RandomNumber(1,10) << ')';}if (mode == 2){ss << RandomNumber(1, 10) << RandomOperation() << RandomNumber(1, 10);}if (mode == 3){ss << RandomNumber(1, 10);}str[i] = ss.str();ss.str("");}ss << str[0] << RandomOperation() << str[1];string str1 = ss.str();ss.str("");exp = str1;
}
#include<stdlib.h>
#include<iostream>
#include<time.h>
#include<string>
#include"Expression.h"
using namespace std;
int main()
{srand((unsigned)time(NULL));CExpression obj;obj.InitExpression();string exp;obj.GetExpression(exp);cout << exp<<endl;system("pause");return 0;
}
五、提交日志证明
六、程序测试
七、个人感受
本次作业进行完全的代码重构,暂时只重构了一个生成表达式的部分,想先请教一下老师和YC学长,这样重构是否符合面对对象的思想。后续会逐渐完成其他部分的重构。
八、对栈知识的探索
要使用标准库的栈和队列,首先得添加头文件
#include < stack >
定义栈:
stack< int > curStack;
栈的操作:
curStack.empty() 如果栈为空返回true,否则返回false;
curStack.size() 返回栈内元素的大小;
curStack.pop() 从栈顶弹出一个成员;
curStack.push() 向栈内压入一个成员;
curStack.top() 返回栈顶,但不删除成员;
转载于:https://www.cnblogs.com/linshen/p/6892096.html
2017《面向对象程序设计》课程作业五相关推荐
- 2017福州大学面向对象程序设计课程作业五
作业链接 课程第五次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...
- 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...
『易坊知识库摘要_兰州大学|兰州大学C语言程序设计课程作业( 五 )』34.用户未作答标准答案exp04. 以下叙述中正确的是 在程序的一行上可以出现多个有效的预处理命令行使用带参的宏时,参数的类型应 ...
- C#面向对象程序设计课程实验五:实验名称:C#面向对象技术
C#面向对象程序设计课程实验五:实验名称:C#面向对象技术 实验内容:C#面向对象技术 一. 实验目的及要求 二.实验环境 三.实验内容与步骤 3.1.实验内容:测试类,实现多态 3.2.实验步骤 3 ...
- 2017福州大学面向对象程序设计课程作业八
作业链接 课程第七次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...
- 2017福州大学面向对象程序设计课程作业七
作业链接 课程第七次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...
- 2017福州大学面向对象程序设计课程作业六
作业链接 课程第六次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...
- 2017福州大学面向对象程序设计课程作业四
作业链接 课程第四次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...
- 2017《面向对象程序设计》作业四
2017<面向对象程序设计>作业四 林燊 031602325 https://www.cnblogs.com/linshen/ github链接:https://github.com/Tr ...
- C++面向对象程序设计大作业:魔兽世界(三):开战
C++面向对象程序设计大作业:魔兽世界(三):开战 问题描述 问题分析 代码 问题描述 问题来自于北京大学郭炜老师的C++慕课的大作业 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部.两个司令部 ...
- C++《面向对象程序设计课程设计》
C++<面向对象程序设计课程设计> <面向对象程序设计课程设计>课程说明 适用专业:计算机科学与技术 课程周数:5周 一.根据计算机科学与技术专业人才培养方案制订. (一)课程 ...
最新文章
- pcb二次钻孔_PCB的内层制作流程,你学会了吗?
- idea创建maven项目的路径
- ASP.NET2.0数据操作之创建业务逻辑层
- 笔记本电脑频繁自动重启_笔记本电脑自动重启是什么原因
- Yaf框架视频教程之入门篇【已完成】
- Android 解锁app,应用锁「AppLock」v3.3.0 for Android 完美解锁版
- 黑苹果电池电量补丁_【黑苹果】用一次实战记录电池热补丁的编写方法
- Ku高通量卫星“星地一体化”应急通信系统解决方案
- 故障:PDF 文件打印失败
- 解决使用百度地图API时偏移问题并自适应中心点和比例
- html项目符号正方形,html – 列表项下的项目符号
- 通过Hook进行游戏的全局加速
- u盘中Trojan.Generic病毒
- 2021届 联发科技视频一面 嵌入式软件
- 饿了么想“蜕变”,张旭豪要把AI这顶“帽子”变成“呢子大衣”
- Plotly:最强Python可视化库,没有之一
- openssl enc 加密/解密文件
- 快速入门rsync远程同步
- android 8.0 華為m3,华为揽阅M3平板配置全曝光:8.0英寸+快充+麒麟950
- java map.put map_Java Map put()用法及代码示例