NO1.菜鸟请教C++问题,望大家帮忙看看(关于友元类)

fengyuan0999 2008-04-14 05:54:34
题目:

设计一个学生类CStudent,其结构如下:
l 私有数据成员Name(学生姓名)、Degree(成绩)、Level[7](成绩等级);
l 构造函数对数据成员初始化;
l 设计一个CStudents的友元类CProcess,其结构包含两个成员函数:
n void Transform(CStudent& s);实现对s的数据成员Level的判断其成绩的等级,:>=90为优秀;80~89为良好;70~79为中等;60~69为及格;< 60为不及格;
n void Display(CStudent& s)输出s成绩的等级;
l 输出结果如下:
姓名 成绩 等级
Mary 78 中等
Jack 93 优秀
Mike 54 不及格
John 88 良好

下面是我写的(感觉好多错误,好多不完善):

#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class cstudent
{
public:
cstudent(string n,int d,char l[7]);
void show()
{
cout<<name<<degree;
}
friend class cprocess;
private:
string name;
int degree;
char level[7];
}
class cprocess
{
public:
void transform(cstudent& s);
void display(cstudent& s);
private:
cstudent s;

};
cstudent::cstudent(string n,int d,char l[7])
{
name=n;
degree=d;
level[7]=l[7];
}
void cprocess::transform(cstudent& s)
{
if(s.degree>=90)
level[7]="优秀";
else if(s.degree>=80&&s.degree<=89)
level[7]="良";
else if(s.degree>=70&&s.degree<=79)
level[7]="中";
else if(s.degree>=60&&s.degree<=69)
level[7]="及";
else if(s.degree<60)
level[7]="不及";
}
void cprocess::display(cstudent& s)
{
cout<<level;
}
int main()
{
cout<<setw(10)<<"姓名"<<setw(10)<<"成绩"<<setw(10)<<"等级"<<endl;
cstudent s("mary",78,l[7]);
void transform(cstudent& s);
void display(cstudent& s);
}



希望大家帮我修改哈,谢谢!!!!

...全文
229 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyuan0999 2008-04-15
  • 打赏
  • 举报
回复
昨天经过高手的指点,我已完成
谢谢各位的关注。谢谢
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
enum elevel
{
EXCELLENCE,
GOOD,
MIDDLE,
PASS,
FAIL
};
class cstudent
{
friend class cprocess;
public:
cstudent(string n,int d)
{
name=n;
degree=d;
}

private:
string name;
int degree;
elevel level;
};
class cprocess
{
public:
void transform(cstudent& s)
{
if(s.degree>=90)
s.level=EXCELLENCE;
else if(s.degree>=80&&s.degree<=89)
s.level=GOOD;
else if(s.degree>=70&&s.degree<=79)
s.level=MIDDLE;
else if(s.degree>=60&&s.degree<=69)
s.level=PASS;
else if(s.degree<60)
s.level=FAIL;
}
void display(cstudent& s)
{
cout<<setw(10)<<s.name<<setw(10)<<s.degree;
if(EXCELLENCE == s.level)
std::cout<<setw(10)<<"Excellence"<<std::endl;
else if(GOOD == s.level)
std::cout<<setw(10)<<"Good"<<std::endl;
else if(MIDDLE == s.level)
std::cout<<setw(10)<<"Middle"<<std::endl;
else if(PASS == s.level)
std::cout<<setw(10)<<"Pass"<<std::endl;
else
std::cout<<setw(10)<<"Fail"<<std::endl;
}
};
int main()
{
cout<<setw(10)<<"姓名"<<setw(10)<<"成绩"<<setw(10)<<"等级"<<endl;
cstudent s1("Mary", 78);
cstudent s2("Jack", 93);
cstudent s3("Mike", 54);
cstudent s4("John", 88);
cprocess p;
p.transform(s1);
p.display(s1);
p.transform(s2);
p.display(s2);
p.transform(s3);
p.display(s3);
p.transform(s4);
p.display(s4);

}






Alix-Lei 2008-04-14
  • 打赏
  • 举报
回复
随便改了一下只是能运行了,题目要求没看,错误确实太多了
#include <iostream>
#include <iomanip>
#include <string>
#include <string.h>

using namespace std;

class cstudent
{
public:
cstudent(string n,int d,char l[7]);
void show() { cout << name << degree; }
friend class cprocess;
private:
string name;
int degree;
char level[7];
};

class cprocess
{
public:
cprocess(cstudent &t):s(t){};
void transform(cstudent & t);
void display(cstudent & t);
private:
cstudent s;
};

cstudent::cstudent(string n,int d,char l[7])
{
name = n;
degree = d;
strcpy(level,l);
}

void cprocess::transform(cstudent& t)
{
if(t.degree >= 90)
strcpy(t.level,"优秀");
else if(t.degree >=80 && t.degree <= 89)
strcpy(t.level,"良");
else if(t.degree >= 70 && t.degree <= 79)
strcpy(t.level,"中");
else if(t.degree>=60 && t.degree <=69)
strcpy(t.level,"及格");
else if(t.degree <60)
strcpy(t.level,"不及");
}

void cprocess::display(cstudent& t)
{
cout << t.level;
}

int main()
{
char l[7] = " ";
cout << setw(10) << "姓名" << setw(10) << "成绩" << setw(10) << "等级" <<endl;
cstudent s("mary",78,l);
cprocess m(s);
m.transform(s);
m.display(s);
return 0;
}
fengyuan0999 2008-04-14
  • 打赏
  • 举报
回复
就是看不明白了才求救的啊。
希望大家帮忙改改
再不,大家把这题当“练手”,麻烦写一下嘛,再次感谢
guzhilei1986 2008-04-14
  • 打赏
  • 举报
回复
jf
clhposs 2008-04-14
  • 打赏
  • 举报
回复
错误比较多 建议楼主在看看书

JF
Treazy 2008-04-14
  • 打赏
  • 举报
回复
jf
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-14 05:54
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下