请教:两个相互关联的重用类的定义

拖地扫风烟 2004-05-07 09:02:11
本人刚学C++,用的是钱能的教材其中有一个题目无法搞定

题目:描述课程类和学生类,学生最多可学5门课程,学生实际学的门数,可以给定学生
名字,可以得到学生名字,可以得到学生给定的课程成绩,可以得到所学课程的平均成绩,可以增加一门课(同时在该课程中增加一个学生).
课程最多有30个学生,课程实际学生数,课程实际学生名单,课程有学分数及每个学生成绩,课程可以得到学分数,课程可以设置学分数,课程可以得到班平均成绩,
课程可以得到某个学生成绩.
现有数学课,张三,成绩3.1分,李四,成绩4.5分.求其平均成绩,求张三数学成绩.
现有物理课,学时为4,张三,成绩4分.求张三所学课程平均成绩.

ps:千辛万苦在网上找到一习题解答,这题里面竟然是ignore,郁闷
不一定要完整的代码,能说明接口和思路就行.
...全文
87 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
拖地扫风烟 2004-05-08
  • 打赏
  • 举报
回复
谢谢楼上俩位了,特别感谢freefalcon(心宇)让我学了不少东西:).
freefalcon 2004-05-07
  • 打赏
  • 举报
回复
不一定要完整的代码,能说明接口和思路就行.
——欣赏,有前途,赞一个,:)

学生、课程关系用单一的类来描述不太理想,因为它们体现的是一种关系数据库模型
这当中,学生和课程仅仅是两个基本元素,它们之间的关系也是一个很重要的方面(数据库中用表来表示),针对这种关系,也许按下面这种方式设计更好一点

struct student //只包含基本属性
{
string name;
int age;
string number; //学号
};

struct course
{
string name;
string number; //编号
};

struct student_course
{
string student_number; //学号
string course_number; //课程号
int score; //分数
}

class course_manager //选课系统类
{
public:
void student_select_course(const student& s, const course& c); //选课
void get_student_courses(vector<course>& vec); //查询选了哪些课
...........
private:
vector<student> students; //所有学生
vector<course> courses; //所有课程
vector<student_course> scs; //关系表
};

上面对楼主的题可能一点帮助都没有,但实际应用中却是一个能解决问题的思路(仅仅是思路,由于students, courses和course_manager应该是唯一的,所以还可以用singlton模式来处理......................)
cngdzhang 2004-05-07
  • 打赏
  • 举报
回复
课程类:

class Course
{
private:
int coursenum;
double point;
Student student[30];
int currentStudent;
public:
double getPoint()
{
return point;
}
void setPoint(double p)
{
point=p;
}
int getStudentNumber()
{
return currentStudent;
}
void addStudent(Student &st)
{
student[currentStudent]=st;
currentStudent++;
}
double getAvgScore()
{
int i;
double sum=0.0;
for(i=0;i<currentStudent;i++) sum+=student[i].getscore(scorenum);
return sum/currentStudent;
}

}
cngdzhang 2004-05-07
  • 打赏
  • 举报
回复
学生类:

class student
{
private:
char name[20];
int course[5];
double coursescore[5];
int toalcourse;
public:
void getName(char *s)
{
strcpy(s,name);
};
void setName(char *s);
{
strcpy(name,s);
}
double getScore(int c)
{
if(c<=0 || c>totalcourse) return -1;
return coursescore[c-1];
}
void setScore(int c,double score)
{
if(c<=0 || c>totalcourse) return;
coursescore[c-1]=score;
}
double getAvgScore()
{
double sum=0.0;
int i;
for(i=0;i<totalcourse;i++) sum+=coursescore[i];
return sum/totalcourse;
}
void addCourse(int c)
{
course[totalcourse]=c;
coursescore[toalcourse]=0.0;
totalcourse++;
}
};

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧