2017《面向对象程序设计》作业四

林燊 031602325 https://www.cnblogs.com/linshen/

github链接:https://github.com/Travaill/arithmetic.git

1.设计思路

2.程序功能

  • 能对0--10之间的整数进行四则运算(加减乘除)

  • 能实现选择中文,英文,德语法语,日语五种语言
  • 程序能接收用户输入的整数答案,并判断对错
  • 程序结束时,统计出答对、答错的题目数量

3.算法分析

  • 类generate 实现随机算式的生成
  • 类calculate 计算算式的结果
  • 类control 控制题目生成的数量 控制生成符合要求的算式 控制程序的退出 控制程序的语言
  • 类printf 输出算式、判断结果、统计答题情况

4.代码规范

  • 函数的命名必须使用英文单词,不使用拼音缩写
  • 函数的命名如果一个单词的必须首字母大写,如果多个单词的用下划线隔开
  • 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
  • 要随意定义全局变量,尽量使用局部变量。
  • 函数的旁边必须注释上本函数的功能
  • 禁止GOTO语句。

5.代码展示

类"control"

bool Control::JudgeIfGet(char *language)          //判断路径是否正确
{fstream file;stringstream ss;char filepath[200] = "";ss<<"Languagerc\\"<<language<<".txt";ss>>filepath;ss.str("");file.open(filepath,ios::in);if (file.is_open()){file.close();return true;}
}void Control::GetResource(string *Resource,char *filepath)    //读取资源文件
{fstream File;stringstream ss; File.open(filepath,ios::in);int i,j;string Line;for (i=0;i<8;i++){getline(File,Line);swap(Line,Resource[i]);}File.close();
}

main

    char language[20];gets(language);while(!Control().JudgeIfGet(language)){cout<<"请输入你所需要的语言的名称:"<<endl;cout<<"Please enter a name for the language you need:"<<endl;cout<<"Bitte geben sie ihren namen: die erforderlichen Sprachen"<<endl;cout<<"Prie dans la langue dont vous avez besoin:"<<endl;cout<<"入力してください。あなたに必要な言叶の名称:" <<endl; gets(language);}fstream file;stringstream ss;char filepath[200] = "";ss<<"Languagerc\\"<<language<<".txt";ss>>filepath;ss.str("");string Resource[30];Control().GetResource(Resource,filepath);  Printf()._Printf(Resource);

6.提交日志证明

7.程序测试


9.个人感受

此次的作业其实目的是让我们学习C++对于文件操作,如下为个人觉得可以记录的东西.

文件操作

头文件 fstream: 可同时读写操作的文件类

打开文件(Open a file)

成员函数open():void open (const char * filename, openmode mode);

这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合: ios::in 为输入(读)而打开文件 
ios::out 为输出(写)而打开文件 
ios::ate 初始位置:文件尾 
ios::app 所有输出附加在文件末尾 
ios::trunc 如果文件已存在则先删除该文件 
ios::binary 二进制方式

关闭文件(closing a file)

需要调用成员函数close(),它负责将缓存中的数据排放出来并关闭文件。

读取文件中的字符

getline(istream &in, string &s)

从输入流读入一行到string s

•功能:

–从输入流中读入字符,存到string变量

–直到出现以下情况为止:

•读入了文件结束标志

•读到一个新行

•达到字符串的最大长度

–如果getline没有读入字符,将返回false,可用于判断文件是否结束

检验文件是否打开

使用is_open()函数,如果打开成功返回1,失败返回0

小技巧

因为getline如果没有读取到字符直接返回false,所以可以直接使用getline(istream &in, string &s)作为进入循环的条件.

我没有应用strcpy来进行字符串的存储,而是直接使用,swap(string sub,string str)来进行二者的交换变向进行存储.

.ps

此次的作业,由于上次的作业基本由我一个人完成,所以这次作业我希望搭档能够完成更多的部分,但搭档由于自身原因,没有完成自己的部分,所以导致这次的作业不能及时上交,所以这次作业由我全部完成.

前期在寻找用rc文件来解决问题的时候用了大量的时间,走投无路,参考了赵畅同学的陈璟同学的方法,得知可以用txt文件来实现.

关于抄袭的现象,我个人认为学习计算机本来就是在借鉴别人的代码算法中慢慢的把这些东西熟练的应用,同时在借鉴的同时需要带有自己的思考,要把借鉴过来的东西变成自己的东西,借鉴完后,下次遇到同样的东西能解决吗?如果可以,那么就是一次成功的学习,如果不能就完全是一个毫无意义的复制黏贴.同时,在借鉴的时候你可以相出可以优化地方吗?亦或是你能想出更好的办法,我觉得各行各业都是这样发展起来的.借鉴,掌握,创新,这才是学习的正确方法.

转载于:https://www.cnblogs.com/linshen/p/6559461.html

2017《面向对象程序设计》作业四相关推荐

  1. “2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排...

    "2017面向对象程序设计(Java)第十一周学习总结"存在问题的反馈及教学安排 1."提出表扬的同学:姜依萍,王雪玲,徐楠,相文君,赵晓 未提交作业的同学:任红强,王瑞 ...

  2. 面向对象程序设计第四单元总结(UML系列)

    2019面向对象程序设计第四单元总结 前言 ​ 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是 ...

  3. 面向对象程序设计作业 6.1~6.4

    面向对象程序设计作业 6.1-6.4 面对对象基础题三道.继承多态一道. #include <iostream> #include <string> #include < ...

  4. 2017级面向对象程序设计 作业二

    以下均以扫描方式为例,即电梯只会在最底层和最高层选择掉头,路途中遇到路径方向相同的乘客将他带上电梯. 文字描述面向过程实现的步骤: 一. 定义有关电梯的变量,如:1.电梯当前所在楼层.,2. 电梯内的 ...

  5. 2017级面向对象程序设计 作业三

    Deadline:2018-05-13 22:00pm 题目升级 一栋10层的大楼(楼层编号1-10),设3台无限载重的电梯,初始时电梯停在1层.其中:1号电梯只能停留在奇数层,2号电梯可以各层都停留 ...

  6. 对于“2017面向对象程序设计(Java)第五周工作总结”存在问题的反馈及本周教学计划...

    一:问题反馈 "上周我们学习的新内容主要是第五章,并对第四章内容做了巩固.从学生上交的实验报告完成情况以及学习Java心得博客中的反馈可以看出,学生对构造器.重载.超类.多态.抽象类这几个概 ...

  7. 2017面向对象程序设计(Java)第六周学习总结

    转眼间,2017年的法定节日已经休完,我们的java学习也已经进行了六周.下面,我将对上个礼拜的学习情况进行总结. 首先,是学习态度问题.虽然同学们已经从家或者各个旅游景点回来,但是心还是没回来.有同 ...

  8. 头歌 C++ 面向对象程序设计 实验四 公有继承 —— 学生信息类

    设计一个学生信息类 一.任务描述 本关任务:声明并定义一个学生信息类. 二.相关知识 为了完成本关任务,你需要掌握类的声明和定义. 类 在现实世界中,经常有属于同一类的对象.例如,你的自行车只是世界上 ...

  9. 2017面向对象程序设计(Java)第十七周助教工作总结

    本学期已接近尾声,java课程也即将结束.经过一学期的java学习,相信大家已经从最初的懵懂.困惑渐渐的走向了柳暗花明,并对java的体系结构有了更加清晰的认识.但一学期的学习是远远不够的,java技 ...

  10. 2017面向对象程序设计(Java)第十六周学习总结

    本周主要学习了Java多线程,要求掌握Java多线程的运行机制.增加一个知识点:就我目前所知的,一般要同时启动多个任务时,需要用到多线程,我还想了解了解还有什么其他情况会用到多线程? 针对这个问题,有 ...

最新文章

  1. 从oracle中读取图片,Pb从oracle中读取和保存图片
  2. 未来已来:5G将在这88个方面影响我们的工作和生活
  3. 2019.01.19-2018年6月NEYC集训counting
  4. java 实验报告模板_Java实验报告模板.doc.doc
  5. spark 历史版本下载地址
  6. flink 运行一段时间 内存溢出_Flink之运行时环境
  7. c++继承:共有、私有、保护继承
  8. C/C++字符串输入方法比较(带回车不带回车输入)
  9. Python 小白从零开始 PyQt5 项目实战(5)布局管理
  10. 通过JS函数劫持自定义百度云分享提取码
  11. 静态路由的配置(以华为eNSP为例)
  12. c语言中头文件及其作用,C语言头文件的作用是什么
  13. firebug-2.0.19-fx.xpi绿色免费下载
  14. XJTU_选课小助手
  15. eclipse如何配置Maven
  16. 平面/球面坐标中已知起点坐标、(偏转)角度、长度求终点坐标(三角函数)
  17. 献给正在纠结的朋友——转产品还是转测试
  18. 汽车软件行业工程师详细介绍?(中)
  19. 域控制器组策略:部署软件自动下发
  20. Python求积分(定积分)

热门文章

  1. 11g rac生产环境异机恢复报错RMAN-6013
  2. Exchange 2003 限制用户外发邮件
  3. 打不死的redis集群
  4. 初识Microsoft Hyper-v Server
  5. 整数点与Pick定理
  6. android 拷贝文件到其他目录下
  7. KMP(字符串匹配)算法 O(m+n)
  8. Android---手动创建线程与GUI线程同步(三)
  9. Python中collections模块
  10. 如何发布Android Library到maven私有仓库