首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了
admin
2020-10-21
94
问题
使用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
周华 0001 78.5
贺兰 0004 78
周红0005 76.5
查询成绩最高的学生信息:
高俊0007 98
李强0002 98
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
#include
#include
#define NMAX 50
class Teacher ;
C1ass Student
{
public:
Student(char*name=II未知
“,char *number=”00000”,double
mark=0.0)
{
int len=strlen(name);
m—name=new char[1en+1];
strcpy(m_name,name);
strcpy(m_number,number);
m_mark=mark ;
}
一Student()
{
delete[]m—name ;
)
void DisplayMsg()
{
cout <
number<<“\t”<
}
protected:
char *m—name;
char m number[5];
double m—mark;
∥********1********
};
C1ass Teacher
{
public:
Teacher(){);
~Teacher()(
for(int i=0 ; i
i++)
{
delete m_pStu
;
m_pStu
=NULL ;
}
};
int BestScore(Student*pS[]);
void InputScore();
void Display();
void SortScore();
protected:
Student*m_pStu[NMAX];
double m_average;
int m count;
},
void Teacher::InputScore()
{
ifstream in(“data.txt”);
assert(in);
char name[2 0];
char number[5];
double mark=0 ;
m—count=0;
cout<<”姓名\t”<<”学号\t”
<
for( int i=0; !in.eof();
i++){
in>>name;
in>>number;
in>>mark;
m~count++;
m pStu
=new Student
(name,number,mark);
cout<
<<“\t”<
}
}
void Teacher::SortScore()
{
double sum=0;
for(int i=0; i
i++)
{
int index=i ;
for(int J=i+1; J
{
if(m pStu[j]_>m—mark>
m_pStu[index]一>m_mark)
index=j;
}
∥********2********
if()
{
Student*ps=m_pStu
;
m_pStu
=m_pStu
[index];
m_pStu[index]=ps?
}
}
}
void Teacher::Display()
{
cout<<”姓名\t<<”学号\t”
<<“成绩\t”<
for(int j=0; j
{
m_pStu[j]->DisplayMsg();
}
}
int Teacher::BestScore(Student
*pS[])
{
int index=0:
int count=1;
∥********3********
for(int j=1 ; j
{
if(m_pStu[j]->m—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<<”输入的学生信息:”<
Teacher.InputScore();
Teacher.SortScore();
cout<
Teacher.Display();
cout<
int n=Teacher.BeStScore
(pStudent);
while(n一一)
{
pStudent[n]一>
DisplayMsg();
}
}
选项
答案
(1)添加语句:friend class Teacher; (2)将“if()”补充完整为: if(index!=j) (3)添加语句:pS[0]=m.-pstu[0];
解析
(1)学生的信息受到严密保护和限制,任课老师可以修改学生数据,比如本科升到研究需要修改学号等信息,因此老师类(1’eacher")可以访问学生类(Student),故老师类是学生类友元类,故第1个标识下应添加“friend classTeacher;"。
(2)SortScore()成员函数是实现按成绩高低的排序,函数结构是二重循环,采用的是选择法排序,每次在内层循环中寻找成绩最高的元素的下标,如果找到的最高成绩的元素的下标和现在的位置(外层循环变量i+l的值)不同则两者交换,故第2个标识下的判断条件为“if(index!=x)”。
(3)BestScore(Student*pS[])实现查找成绩最高学生名单,即利用循环查找数组中的每个元素的成绩值,先假设第一个元素的成绩最高,然后再循环中逐个比较,如果有成绩更高的,那么将更高的成绩保存下来,搜索整个数组就能找到成绩最高的学生,即第3标识下应添加“pS[0]=mpStu[0];”。
转载请注明原文地址:https://www.kaotiyun.com/show/fNyp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型。请在注释//********
使用VC6打开考生文件夹下的源程序文件modi2.cpp。请补充完整程序fun(inti),使程序完成以下功能:如果i=5,则输出如下5行井号。###############注意:不要改动main()函数,不得增行或删行,也不得更改程序的结
数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)完成构造函数,设置数组元素的个数为0,请在注释//********1********之后添加语句。(2)完成函数
使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到s1,s2中。注意:不要改动main函数,不能增行或删行,
使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件modi1.txt中。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误
使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成函数fun(char*s;inta[]),其功能是把S中出现的数字转换成数字存储在a[]中,然后返回转换的个数。例如:s="1234abcdef567";则:a[]中存储着1234567
面向对象方法中,继承是指()。
下列选项中不符合良好程序设计风格的是()。
关于函数重载,下列叙述中错误的是()。
随机试题
自古以来,中国的文人士大夫都很注意思想情操的把握和修养,这是中华民族传统文化的精华。文人的爱国意识、忧患意识、责任意识、慎独意识历来都是很强烈的,经过数千年之[a],形成了一种民族的风骨和气度,形成了一种民族的自强不息的精神。屈原、司马迁、陶渊明、文天祥这
W公司今年每股发放现金股利1元(D0=1)。公司为了解在不同股利增长情况下的股票价值,根据股票投资的估价模型,分别以股利零增长、股利固定增长和股利分阶段增长三种情形,对本公司上市普通股的价值进行了估算,股东要求的收益率为15%。其估算结果如下表所示。请
RNA聚合酶Ⅱ催化生成之产物RNA聚合酶Ⅲ催化生成之产物
引起代谢性碱中毒的最常见的外科疾病是
泌尿系造影检查不包括
胫骨内侧髁下方至内踝尖的骨度分寸是
拍卖的程序一般可以分为以下几个主要阶段:()。
下列有关有机化合物的说法正确的是()。
十二届全国人大一次会议于2013年3月10日举行第三次全体会议,最高人民法院院长和最高人民检察院检察长分作的“两高”工作报告,向外界宣示了中国的反腐决心。毫无疑问,反腐已经成为社会高度关注的问题。面对严峻的国家工作人员职务犯罪、司法腐败的形势,“两高”报告
Whatisthepassagemainlyabout?Accordingtothepassage,whendocsatradeimbalanceoccur?When______.
最新回复
(
0
)