首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了
admin
2016-10-28
29
问题
使用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<fstream.h>
#include<assert.h>
#include<string.h>
#define NMAX50
class Teacher;
class student
{
public:
Student(char*name="未知",char*number="00000",doublemark=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<<m_name<<"\t"<<mnumber<<"\t"<<m_mark<<endl;
}
protected:
char *m_name;
char m_number[5];
double m_mark;
//********1********
};
class Teacher
{
public:
Teacher(){};
~Teacher()(
for(int i=0;i<m_count;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[20];
char number[5];
double mark=0j
m_count=0;
cout<<"姓名\t"<<"学号\t"<<"成绩\t"<<endl;
for(int]i=0;!in.eof();i++){
in>>name;
in>>number;
in>>mark;
m_c6unt++;
m_pStu
=new Student(name,number,mark);
cout<<name<<"\t"<<number<<"\t"<<mark<<endl;
}
}
void Teacher::SortScore()
{
double sum=0;
for(int i=0;i<m-count;i++)
{
int index=i;
for(int j=i+1;j<m_count;j++)
{
if(m_pStu[j]->m_mark>m_pStu[index]->m_mark)
index=j;
}
//********2********
if()
{
Student*ps=m_pStu
;
m_pStu
=mpStu
[index];
m_pStu[index]=ps;
}
}
}
void Teacher::Display()
{
cout<<"姓名\t"<<"学号\t"<<"成绩\t"<<endl;
for(int j=0;j<m_count;J++)
{
m_pStu[j]->DisplayMsg(),
}
}
int Teacher::BestScore(Student*pS[])
{
int index=0;
int count=1;
//********3********
for(int j=1;j<m_count;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<<"输入的学生信息:"<<endl;
Teacher.InputScore();
Teacher.SortScore();
cout<<endl(<"排序后的学生信息:"<<endl;
Teacher.Display();
cout<<endl<<"查询成绩最高的学生信息:"<<endl;
int n=Teacher.BeStScore(pStudent);
while(n--)
{
pStudent[n]->DisplayMsg();
}
}
选项
答案
(1)添加语句:friend elass 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/G7Np777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下程序的执行结果是______。#include<iostream.h>#include<fstream.h>#include<stdlib.h>voidmain(){
以下程序的输出结果是#include<iostream.h>voidmain(){charx=040;cout<<(x<<1);}
在双链表中,每个节点有两个指针域,一个指向前驱节点,另一个指向【】。
派生类的构造函数的成员初始化列表中,不能包含
有以下程序:#include<iostream.h>classA{inta;public:A(inti){a=i;}void
一个学生关系模式为(学号,姓名,班级号,…),其中学号为关键词:一个班级关系模式为(班级号,专业,教室,…),其中班级号为关键词:则学生关系模式中的外关键词为【】。
以下程序的执行结果为()。#include<iostream.h>classmyClass{Dublic:myClass(intdata);myClass(){value=0;
通过使用new和delete两个运算符进行的分配为【】存储分配。
软件工程的出现是由于
如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*cp的值是()。
随机试题
何谓呼吸商?
急性有机磷农药中毒患者,发生肺水肿时抢救的首要措施是()
某患者,男,28岁。食欲不振1周。化验:ALT1350U/L,血清总胆红素30μmol/L,抗-HAVIgM(-),HBsAg(+),HBeAg(+),抗-HBcIgM(+),抗-HCV(-),抗-HEV(-)。该患者最可能诊断为()
阿司匹林片的测定药用NaOH的测定
甲与乙因借款合同发生纠纷,甲向某区法院提起诉讼,法院受理案件后,准备适用普通程序进行审理。甲为了能够尽快结案,建议法院适用简易程序对案件进行审理,乙也同意适用简易程序。下列哪一选项是正确的?(2008年·卷三·单选46题)
某旅馆相邻客房之间的隔墙的计权隔声量按规范规定应≥45dB,下列哪项隔墙构造不符合标准要求?[2001—088]
2019年3月,某审计组对乙企业2018年度财务收支进行了审计。该企业有关生产与存货循环审计情况和资料如下:1.审计人员计算近3年毛利率并进行趋势分析,发现近3年该企业毛利率逐年大幅度上升。2.审计人员对乙企业存货进行监盘,做法如下:(1)审计人员独
根据马丁.特罗的理论,大众化阶段高等教育的毛入学率为()。
说明教育的相对独立性。
家庭接入Internet可以通过光缆入户,即(56)方式,也可以通过传统的线缆接入。当使用电话线接入时,有多种模式,对称模式的技术有(57)。ADSL接入铜线的传输距离可达(58)km,通过多路复用技术,这个线路上可同时存在(59)个信道。当使用HFC方式
最新回复
(
0
)