首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生:丈件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果
使用VC6打开考生:丈件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果
admin
2017-03-22
35
问题
使用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;
class Student
{
public:
Student(char *name=“未知
”,char *number=“00000”,double
mark=0.01
{
int len=strien(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<
number<<"\t"<
}
protected:
char *m name;
char m number[5];
double m mark;
//********1********
};
Class Teacher
{
public:
Teacher()(};
~Teacher(){
for(int i=0;i
i++)
{
delete m pStu
;
m pStu
=NULL;
}
};
int BestScore(Student*pS[]);
void InputScore();
void mi splay();
void SortScore();
protected:
Student *m_pStu[NMAX];
double m average;
int m count;
};
void Teacher::InputScore()
{
ifstream in("data.txt");
assert(in);
char name[20];
char number[5];
double mark=0;
m count=0;
cout<<"姓名\t"<<"学号\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++)
f
int index=i;
for(int j=i+l ; j
j++1
{
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;
pSpcount++]=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)学生的信息受到严密保护和限制,任课老师可以修改学生数据,比如本科升到研究需要修改学号等信息,因此老师类(Teacher)可以访问学生类(Student),故老师类是学生类友元类,故第1个标识下应添加“friend class Teacher;”。
(2)SortScore()成员函数是实现按成绩高低的排序,函数结构是二重循环,采用的是选择法排序,每次在内层循环中寻找成绩最高的元素的下标,如果找到的最高成绩的元素的下标和现在的位置(外层循环变量i+1的值)不同则两者交换,故第2个标识下的判断条件为“if(index!=j)”。
(3)BestScore(Student*pS[])实现查找成绩最高学生名单,即利用循环查找数组中的每个元素的成绩值,先假设第一个元素的成绩最高,然后再循环中逐个比较,如果有成绩更高的,那么将更高的成绩保存下来,搜索整个数组就能找到成绩最高的学生,即第3标识下应添加“ps[0]=m pStu[0];”。
转载请注明原文地址:https://kaotiyun.com/show/59Ap777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
判断char型变量c是否为小写字母的正确表达式是
有如下程序#include<iostream.h>intfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,
下列工具中为需求分析常用工具的是
有如下程序:#includeusingnamespacestd;classAA{public:AA(){tout
有如下程序:#includeusingflamespacestd;className{charname[20];public:Name(){strcpy(name,“”);cout
计算斐波那契数列第n项的函数定义如下:intfib(intn){if(n==0)return1;elseif(n==1)return2;elsereturnfib(n-1)+ilb(n-2);}若执行函数调用表达式fib(
已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则
下面的函数定义是某函数模板能够生成的函数实例intsquare(intn)(returnn*n;)doublesquare(doublen)(retumn*n;)由此可知,该函数模板的定义是______。
随机试题
司马迁的《史记》原名《________》。
A.桑白皮汤B.华盖散C.麻杏石甘汤D.二陈汤喘证之痰浊阻肺证,宜
一患者行金属烤瓷冠修复,冠就位后发现冠十分密合,经调无早接触后选择聚羧酸粘固剂粘固,调拌粘固剂时严格按照粉、液比例,按就位道方向就位,面垫一棉卷,让患者紧咬5分钟,粘固完成后再次检查发现咬合过高。在粘固前可采取何种预防措施
《民事诉讼法》第一百二十五条第一款规定“当事人在法庭上可以提出新的证据”,该“新的证据”所指的是下列哪些情形?
《公路工程建设项目招标投标管理办法》规定,公路工程建设项目履行项目审批或者核准手续后,方可开展勘察设计招标;初步设计文件批准后,方可开展施工监理、设计施工总承包招标;施工图设计文件批准后,方可开展施工招标。施工招标采用资格预审方式的,在初步设计文件批准后,
营业利润计算中的营业税金及附加包括()。
《统计执法检查规定》第三十三条规定,统计执法检查机关在做出对法人或者其他组织二千元以上的罚款的行政处罚决定前,应当告知当事人有要求举行听证的权利。()[2016年中级真题]
()是当今制造业最先进的生产管理模式之一。
北京市区某酒业有限公司为增值税一般纳税人,主营白酒生产销售,同时通过自设的车问生产酒瓶。2011年1月份和2月份的生产经营情况如下:(1)1月从国内购进修理配件,取得防伪税控系统开具的增值税专用发票,注明金额280万元、增值税税额47.6万元,取得
给定资料1.“多地多位婴儿疑似接种乙肝疫苗致死事件”有了初步调查结论:2013年12月13日至31日期间,各地报告的17个接种深圳康泰产乙肝疫苗后死亡的病例,死因各不相同,明确或初步判断,与其接种疫苗无关。2014年1月,国家食品药品监督管理总局
最新回复
(
0
)