求赐一个面向对象程序

Programmerjacinth 2004-01-06 06:47:33
描述课程类和学生类。用重用类的多文件程序结构形式,编制面向对象应用程序。
学生类有学生名字,学生最多可以选五门课程,学生实际学的门数,可以给定学生的名字,可以得到学生的名字,可以得到学生给定课程的成绩,可以得到学生所学课程的平均成绩,可以给学生增加一门课(同时在该课程类对象中增加一个学生)。
课程最多有30个学生,课程有实际学生个数,课程有实际学生名单,课程有学分数,课程有每个学生的成绩;课程可以得到学分数,可以设置学分,可以得到平均成绩,可以得到某个学生成绩。
现有数学课,张三学数学,成绩为3.1分,李四数学成绩为4.5分。求其平均成绩,求张三数学成绩。
现有物理课,学时(学分)数为4,张三学物理,成绩为4,求张三所学的所有课程的平均成绩。
在此先谢过了!
...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Programmerjacinth 2004-01-12
  • 打赏
  • 举报
回复
谢谢楼上两位的代码!
zchuer 2004-01-09
  • 打赏
  • 举报
回复
没看清楚,修正一下
函数Student::AddCourse(char *coursename)改成Student::AddCourse(Course &refCourse)
然后在else{}里增加一些相对于refCourse的操作,基本上就完成了。

今天下班了,所以不写了,^_^

zchuer 2004-01-09
  • 打赏
  • 举报
回复
//file: STUDENT.h

#ifndef _STUDENT
#define _STUDENT
class Student
{
public:
Student(char *sName);
char *GetStudentName();
int GetCourseScore(char *coursename);
int GetAverageScore();
void AddCourse(char *coursename);
private:
char *studentName;
struct
{
char *courseName;
int score;
} courseData[5];
int courseNum;
};
#endif

///////////////////////////////////////////////////////////////////

//file: COURSE.h

#ifndef _COURSE
#define _COURSE
class Course
{
public:
void SetMark(int newMark);
int GetCurrentMark();
int GetAverageScore();
int GetStudentNum();
int GetStudentScore(char *studentName);
private:
char *courseName;
int mark;
struct
{
char *studentName;
int score;
} studentData[30];
int studentNum;
};
#endif

///////////////////////////////////////////////////////////////

//file: course.cpp

#include "COURSE.h"
#include <string.h>
#include <math.h>
#include <iostream.h>

int Course::GetCuurentMark()
{
return mark;
}

int Course::GetAverageScore()
{
if(studentNum!=0)
{
int sum=0;
for(int i=0;i<studentNum;i++) sum+=studentData[i].score;
return (sum/studentNum);
}
else return (-1);
}

int Course::GetStudentNum()
{
return studentNum;
}

int Course::GetStudentScore(char *studentName)
{
for(int i=0;(abs(strcmp(studentName,studentData[i].studentName)))&&(i<studentNum);i++)
;
if(i>=studentNum)
{
cout<<"No such STUDENT!"<<endl;
return (-1);
}
return studentData[i].score;
}

void Course::SetMark(int newMark)
{
mark=newMark;
}

//////////////////////////////////////////////////////////////////

//file: student.cpp

#include "STUDENT.h"
#include "COURSE.h"
#include <string.h>
#include <math.h>
#include <iostream.h>

Student::Student(char *sName)
{
studentName=sName;
}

char *Student::GetStudentName()
{
return studentName;
}

int Student::GetCourseScore(char *coursename)
{
for (int i=0;(abs(strcmp(coursename,courseData[i].courseName)))&&(i<courseNum);i++ );
if(i>=courseNum)
{
cout<<"This student doesnot take this COURSE!!"<<endl;
return (-1);
}
return courseData[i].score;
}

int Student::GetAverageScore()
{
int sum=0;
for(int i=0;i<courseNum;i++)
sum+=courseData[i].score;
return (sum/courseNum);
}

void Student::AddCourse(char *coursename)
{
if(courseNum>5)
{
cout<<"This student can take no more COURSE!"<<endl;
}
else
{
courseData[courseNum].courseName=coursename;
courseData[courseNum].score=0;
courseNum++;
}
}



小李匪盗 2004-01-09
  • 打赏
  • 举报
回复
#include<afxtempl.h>
class CCourse;
class CStudent
{
public:
CStudent();
virtual ~CStudent();

public:
//设置学生名字
void SetName(CString strName);
//得到名字
CString GetName();
//得到某一课程的分数
int GetScore(CString strCourse);
//得到平均分
int GetAverage();
//加入一门课
bool AddCourse(CCourse* pCourse);

public:
CArray<CCourse*, CCourse*> m_arrCourse;//课程数组

protected:
CString m_strName;//学生名字
int m_maxCourse;//最多课程数
int m_trueCourse;//目前课程数
};

class CCourse
{
public:
CCourse();
virtual ~CCourse();

public:
//加入学生
bool AddStudent(CStudent* pStudent);
//得到某学生的分数
int GetScore(CString strName);
//得到此门课的平均分
int GetAverage();
//得到某学生的平均分
int GetSomeOneAve(CString strName);

public:
CArray<CStudent*, CStudent*> m_arrStudent;//学生数组

protected:
CString m_str; //课程名
int m_maxStudent; //最多学生数
int m_trueStudent;//目前学生数
};



实现起来应该比较简单了。
shuneng 2004-01-09
  • 打赏
  • 举报
回复
UP
Programmerjacinth 2004-01-09
  • 打赏
  • 举报
回复
是,谁给出能够正确运行的代码(vc6),这100分尽数给出。
zchuer 2004-01-09
  • 打赏
  • 举报
回复
好像是钱能《c++程序设计教程》上的课后习题...
grooving 2004-01-09
  • 打赏
  • 举报
回复
up
Programmerjacinth 2004-01-09
  • 打赏
  • 举报
回复
不知道是怎么回事,怎么没有人回答呢?
dddd8888 2004-01-07
  • 打赏
  • 举报
回复
up

64,676

社区成员

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

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