问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下:
(1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了,比如由本科升到研究生,原来的信息,还有效,而只需添加研究生的必要信息,不过现在不必马上实现,但应当有所考虑。
(2)学生的所仃信息可以查看,但也只有学生自己才有这个权利。
(3)学生的信息可以从文件中读取来构造信息库,需要把信息输出到屏幕以便核实,但这需耍任课老师来完成。
(4)老师能提供所教学生的完整信息列表,同时可按成绩高低排序。
(5)为了便于学校评定奖学金,需要单独查找成绩最高的同学(一般不采用把成绩单令部排列后来选取,可能这比较耗费时间,岁然要求不太合理.但要按用户的需求操作,同时需要指出的是,如果成绩最高者有数名,需要—一列出)。
(6)由于学校的机器比较老,内存严重不足,每个老师带的学生数不一样,但也不会超过50人。
以上功能的程序框架已经形成,考生需要按照需求来逐个实现。
(1)请在注释∥********1********之后添加适当的语句,以便实现功能需求(1)。
(2)请在注释∥********2********处添加适当的语句,成绩单排序功能。
(3)请在注释∥********3********处实现查找成绩最高学生名单。
无需修改main()主函数,当得到下面的结粜,该系统可能被采用。
输入的学生信息:
姓名 学号 成绩
周华0001 78.5
李强0002 98
刘星0003 89
贺兰0004 78
周红0005 76.5
赵邦0006 85
高俊0007 98
排序后的学生信息:
姓名 学号 成绩
李强0002 98
高俊0007 98
刘星0003 89
赵邦 0006 85
周华000l 78.5
贺兰 0004 78
周红0005 76.5
查询成绩最高的学生信息:
高俊0007 98
李强0002 98
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
#include
#include
#define NMAX 50
class Teacher;
class Student
{
public:
student(char *name=“未知
”,char *number=“0 0 0 0 0”,double
mark=0.0)
{
int len=strlen(name);
m name=new char[len+1];
strcpy(m name,name);
strcpy(m number,number);
m mark=mark;
}
Student()
{
delete[]m name;
}
void DisplayMsg()
{
cout<>name;
in>>number;
in>>mark;
m—count++;
m pStu[i]=new Student
(name,number,mark);
cout<m—mark>
m_pStu[index]->m—mark)
index=j;
}
∥********2********
if()
{
Student*ps=m pStu[i];
m_pStu[i]=m_pStu
[index];
m.pStu[index]=ps;
}
}
}
void Teacher::Display()
{
cout<<“姓名\t”<<“学号\t”<<“成绩\t”<DisplayMsg();
}
}
int Teacher::BestScore(Student
*pS[])
int index=0;
int count=1;
∥********3********
for(int j=1; jm—mark>
m pStu[index]一>m mark)
{
count=1;
index=j;
pS[count++]=m pStu
[index];
}
else if(m_pstu[j]>m—mark
=m_pStu[index]一>m_mark)
{
index=j;
pS[count++]=m pStu
[index];
}
}
return count;
}
void main()
{
Teacher Teacher;
Student*pStudent[NMAX];
cout<<“输入的学生信息:”<
9isplayMsg();
}
}
【正确答案】正确答案:(1)添加语句:friend ClasS Teacher; (2)将“if()”补充完整为: if(i ndex!:j) (3)添加语句:pS[0]=m pStu[0];
【答案解析】解析:类Student含有三个成员变量:姓名、五个英文字符的学号和精确到小数点后一位的一科成绩,类Teacher含有Student对象数组的指针Student*m_pStu[NMAX]、m_average和m—count三个成员变量,类Teacher有多个成员函数,完成学生数据输入、排序、查找最好成绩和打印等功能。