博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类和对象-2
阅读量:4452 次
发布时间:2019-06-07

本文共 4416 字,大约阅读时间需要 14 分钟。

比上一个版本添加了一个计算班级平均分的函数determineClassAverage()

还是3个文件

GradeBook.h

#ifndef GRADEBOOK_H#define GRADEBOOK_H// GradeBook.h// GradeBook类展示了该类的公共接口。成员函数出现在GradeBook.cpp中#include
// 该程序使用C++标准的string类using std::string;// GradeBook类的定义class GradeBook{ public: /** 构造函数初始化GradeBook对象 */ GradeBook( string ); /** Access courseName * 返回courseName */ string getCourseName(); /** Set courseName * 设定courseName的值 */ void setCourseName(string ); void displayMessage(); // 显示一条欢迎信息 void determineClassAverage(); // 计算用户输入的成绩的平均分 private: string courseName; //这个GradeBook的课程名称}; // GradeBook类定义结尾#endif // GRADEBOOK_H

 

GradeBook.cpp

// GradeBook.cpp// Implementation of the GradeBook member-function definitions.// The setCourseName function performs validation#include
using std::cout;using std::endl;using std::cin;#include "GradeBook.h" // include definition of class GradeBook// constructor initializes courseName with string supplied as argumentGradeBook::GradeBook( string name ){ setCourseName( name ); // validate and store courseName} // end GradeBook constructor// function that sets the course name// ensures that the courseName has at most 25 charactersvoid GradeBook::setCourseName( string name ){ if( name.length() <= 25 ) // if name has 25 or fewer characters courseName = name; // store the courseName if( name.length() > 25 ) // if name has more than 25 characters { courseName = name.substr( 0, 25 ); // start at 0, length of 25 cout << "Name \"" << name << "\" exceeds maximum length (25).\n" << "Limiting courseName to the first 25 characters.\n" << endl; }} // end function setCourseName// function to get the course namestring GradeBook::getCourseName(){ return courseName; // return object's courseName} // end function getCourseName// display a welcome message to the GradeBook uservoid GradeBook::displayMessage(){ // call the getCourseName to get the coureName cout << "Welcome to the grade book for\n" << getCourseName() << "!" << endl;} // end function displayMessage// determine class average based on 10 grades entered by uservoid GradeBook::determineClassAverage(){ int total; // sum of grades entered by user int gradeCounter; // number of the grade to be entered next int grade; // grade value entered by user int average; // average of grades // initialization phase total = 0; // initialize sum gradeCounter = 1; // initialize loop counter // processing phase while( gradeCounter <= 10 ) // loop 10 times { cout << "Enter grade: "; // prompt for input cin >> grade; // input next grade total += grade; // add grade to total gradeCounter++; // increment counter by 1 } // end while // termination phase average = total / 10; // integer division yields integer result // display total and average of grades cout << "\nTotal of all 10 grades is " << total << endl; cout << "Class average is " << average << endl;} // end function determineClassAverage

 

测试文件 main.cpp

// main.cpp// Create GradeBook object and invoke its determineClassAverage function.#include "GradeBook.h"  // include definition of class GradeBook// function main begins program executionint main(){    // Create GradeBook object myGradeBook and    // pass course name to constructor    GradeBook myGradeBook( "CS101 C++ Programming!" );    myGradeBook.displayMessage();   // display welcome message    myGradeBook.determineClassAverage();    // find average of 10 grades    return 0;   // indicate successful termination}   // end main

 

软件工程知识

  • 在计算机上解决问题最困难的部分在于开发出解决该问题的算法。一旦确定了正确的算法,从算法生成C++程序通常是相当简单的。
  • 每级细化的结果和顶层一样,都是完整的算法描述,只是详细的程度不同而已。
  • 许多程序都可以在逻辑上划分为三个阶段:初始化程序变量的初始化阶段,输入数据的值和程序变量(如计数器变量和总和变量)做相应的调整的处理阶段,以及计算和打印最终结果的收尾阶段。
  • 当伪代码算法描述的细节足以将伪代码转换成C++代码时,这种自上而下逐步求精的过程就可以结束了。此时C++程序的实现是水到渠成的事情。
  • 不写伪代码在简单或熟悉的问题上或许会行得通,但是在大型的或复杂的项目中往往会导致开发陷入困境。

 

常见的编程错误

  • 没有初始化的各种计数器变量和总数变量将导致逻辑错误
  • 假定整数除法的结果采取四舍五入(而不是截尾),将会产生不正确的结果
  • 在一个循环之后,使用该循环的计数器控制变量进行计算通常会导致一个常见的逻辑错误—相差1错误
  • 选择的标记值(-1,输入中用作终止值)如果也是一个合法的值,将会导致一个逻辑错误
  • 企图用0做除数通常会导致一个致命的逻辑错误

 

错误预防技巧

  • 初始化每一个计数器变量(0或1)和总数变量(0),或者在声明时,或者在赋值语句中
  • 进行除法运算时,如果除数有可能为0,则必须在程序中显示地测试这种可能性是否存在,如果存在,那么就必须做适当的处理

 

良好的编程习惯

  • 将声明语句与其他语句用空行隔开,每行只声明一个变量并且添加上注释,可以增强可读性

 

转载于:https://www.cnblogs.com/tmmuyb/p/3762956.html

你可能感兴趣的文章
一些提高开发效率的 Category
查看>>
拓扑排序基础题——排序
查看>>
搭建keepalived+mysql主从复制高可用
查看>>
假如你在每一个变化中看见崭新的自己
查看>>
转:iphone 申请证书
查看>>
电子测量作业——采用DDS(数字频率合成法)设计信号发生器 ,完成设计方案。...
查看>>
Python就业方向
查看>>
一步步学习SPD2010--第二章节--处理SP网站(3)--创建网站层次架构
查看>>
TCP
查看>>
Excel常用函数大全
查看>>
团队-团队编程项目中国象棋-模块测试过程
查看>>
R-创建数据集-ch2
查看>>
gitHub地址
查看>>
10个经典的C语言面试基础算法及代码
查看>>
[概念] js的函数节流和throttle和debounce详解
查看>>
普通的java Ftp客户端的文件上传
查看>>
视图系统
查看>>
Palindromes _easy version
查看>>
vue 小记
查看>>
CURRICULUM VITAE
查看>>