简单的学生信息处理程序实现
2014-03-19 17:16
344 查看
描述
在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的。
输入
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
输出
一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
样例输入
样例输出
下面是郭老师的代码,学习的榜样
在一个学生信息处理程序中,要求实现一个代表学生的类,并且所有成员变量都应该是私有的。
输入
姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
其中姓名、学号为字符串,不含空格和逗号;年龄为正整数;成绩为非负整数。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
输出
一行,按顺序输出:姓名,年龄,学号,四年平均成绩(向下取整)。
各部分内容之间均用单个英文逗号","隔开,无多余空格。
样例输入
Tom,18,7817,80,80,90,70
样例输出
Tom,18,7817,80
#include <iostream> #include <string> using namespace std; class STU { private: char name[30]; int age; char ID[30]; int grade1, grade2, grade3, grade4; public: void init(); int ave(); void print(); }; void STU::init() { char ch; cin.getline(name, 30, ','); cin >> age >> ch; cin.getline(ID, 30, ','); cin >> grade1 >> ch >> grade2 >> ch >> grade3 >> ch >> grade4; } int STU::ave() { return (grade1 + grade2 + grade3 + grade4)/4; } void STU::print() { cout << name << "," << age << "," << ID << "," << ave() << endl; } int main() { STU student; student.init(); student.print(); return 0; }
下面是郭老师的代码,学习的榜样
/* by Guo Wei 个人习惯:类名和函数名首字母大写,变量名第一个单词小写,后面的单词首字母大写 */ #include <iostream> #include <string> #include <cstring> #include <cstdio> using namespace std; class Student { private: static const int GRADES = 4; //只和Student相关的常量,写在 CStudent类内部比较好 string name; int id; int age; int score[GRADES]; public: int Average(); string GetName() { return name; } //返回值不要设成 string & ,哪怕是 const string & 也不太好,因为这样等于向外暴露了 name 属性,“隐藏”的效果不好了 //虽然效率低了点,但面向对象的思想本来就会用程序的运行效率换取工程实现的效率以及可维护性,可重用性等。 int GetId() { return id; } int GetAge() { return age; } void SetName( const string & name_) { name = name_; } void SetAge( int age_) { age = age_; } void SetId( int id_) { id = id_; } void SetScore(int score_[]) { memcpy(score,score_,sizeof(score)); } void Init(const char *); }; void Student::Init(const char * line) { const char * p = strchr(line,','); //p指向line中的第一个 ',' string s = line; name = s.substr(0,p-line); // substr(i,l)取从下标i开始,长度为 l 的子串 sscanf(p + 1, "%d,%d,%d,%d,%d,%d",&age,&id,score,score+1,score+2,score+3); // p + 1 指向后面的年龄,学号等的字符串 } int Student::Average() { int sum = 0; for( int i = 0;i < Student::GRADES; ++i ) sum += score[i]; return sum / Student::GRADES; } int main() { Student stu; char line[200]; gets(line); stu.Init(line); printf("%s,%d,%d,%d",stu.GetName().c_str(),stu.GetAge(),stu.GetId(),stu.Average()); return 0; }
相关文章推荐
- 编程作业—C++初探 简单的学生信息处理程序实现
- 编程作业 简单的学生信息处理程序实现[北京大学C++课程]
- 简单的学生信息处理程序实现 (Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 简单的学生信息处理程序实现(C++程序设计第2周)
- 简单的学生信息处理程序实现
- 简单的学生信息处理程序实现
- 简单的学生信息处理程序实现(C++程序设计第2周)
- c++note1 简单的学生信息处理程序实现
- 简单的学生信息处理程序实现
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- 一个简单的四则运算程序C语言实现--实现处理括号
- 简单的学生成绩处理程序源代码――含注释 (*^__^*)
- 简单的中文信息处理C#实现代码片段
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 顺序表实现简单学生信息管理
- 一般处理程序加简单三层实现增删查改(2)
- 实现winfrom进度条及进度信息提示,winfrom程序假死处理
- java实现简单的学生信息管理系统
- 程序阅读:简单C++学生信息管理系统