首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学
使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下: (1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学
admin
2019-01-19
74
问题
使用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
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
1 #include<fstream.h>
2 #include<assert.h>
3 #include<string.h>
4 #define NMAX 50
5 class Teacher;
6 class Student
7 {
8 public:
9 Student(char *name=’’未知’’,char *number=’’00000’’,double mark=0.0)
10 {
11 int len=strlen(name);
12 m name=new char[len+1];
13 strcpy(m_name,name);
14 strcpy(m_number,number);
15 m_mark=mark;
16 }
17 ~Student()
18 {
19 delete[]m_name;
20 }
21 void DisplayMsg()
22 {
23 cout<<m_name<<’’\t’’<<m_number<<’’\t’’<<m mark<<end1;
24 }
25 protected:
26 char *m_name;
27 char m_number[5];
28 double m_mark;
29 //********1********
30
31 };
32 class Teacher
33 {
34 public:
35 Teacher(){);
36 ~Teacher(){
37 for(int i=0;i<m count;i++)
38 {
39 delete m_pStu
;
40 m_pStu
=NULL;
41 }
42 };
43 int BestScore(Student*pS[]);
44 void InputScore();
45 void Display();
46 void SortScore();
47 Drotected:
48 Student*m_pStu[NMAX];
49 double m_average;
50 int m_count;
51 };
52 void Teacher::InputScore()
53 {
54 ifstream in(’’data.txt’’);
55 assert(in);
56 char name[20];
57 char number[5];
58 double mark=0;
59 m_count=0;
60 cout<<’’姓名\t’’<<’’学号\t’’<<’’成绩\t’’<<end1;
61 for( int i=0; !in.eof();i++){
62 in>>name;
63 in>>number;
64 in>>mark;
65 m_count++;
66 m_pStu
=new Student(name,number,mark);
67 cout<<name<<’’\t’’<<number<<’’\t’’<<mark<<end1;
68 }
69 }
70 void Teacher::SortScore()
71 {
72 double sum=0;
73 for(int i=0; i<m_count;i++)
74 {
75 int index=i;
76 for(int j=i+l;j<m count;j++)
77 {
78 if(m_pStu[j]->m mark>m_pStu[index]->m_mark)
79 index=j;
80 }
81 //********2********
82 if()
83 {
84 Student *ps=m_pStu
;
85 m_pStu
=m_pStu[index];
86 m_pStu[index]=ps;
87 }
88 }
89 }
90 void Teacher::Display()
91 {
92 cout<<’’姓名\t’’<<’’学号\t’’<<’’成绩\t’’<<end1;
93 for(int j=0; j<m count;j++)
94 {
95 m_pStu[j]->DisplayMsg();
96 }
97 }
98 int Teacher::BestScore(Student*pS[])
99 {
100 int index=0;
101 int count=1;
102 //********3********
103
104 for(int j=1;j<m_count;j++)
105 {
106 if(m_pStu[j]->m mark>m_pStu[index]->m_mark)
107 {
108 count=1;
109 index=j;
110 pS[count++]=m_pStu[index];
111 }
112 else if(m_pStu[j]>m_mark==m_pStu[index]->m_mark)
113 {
114 index=j;
115 pS[count++]=m_pStu[index];
116 }
117 }
118 return count;
119 }
120 void main()
121 {
122 Teacher Teacher;
123 Student *pStudent[NMAX];
124 cout<<’’输入的学生信息:’’<<end1;
125 Teacher.InputScore();
126 Teacher.SortScore();
127 cout<<end1<<’’非序后的学生信息:’’<<end1;
128 Teacher.Display();
129 cout<<end1<<"查询成绩最高的学生信息:’’<<end1;
130 int n=Teacher.BestScore(pStudent);
131 while(n--)
132 {
133 pStudent[n]->DisplayMsg();
134 }
135 }
选项
答案
(1)添加语句:friend class Teacher; (2)将“if()”补充完整为:if(index!=j) (3)添加语句:pS[0]=m_pStu[0];
解析
类Student含有三个成员变量:姓名、五个英文字符的学号和精确到小数点后一位的一科成绩,类Teacher含有Student对象数组的指针Student水m_pStu[NMAX]、m_average和m_count三个成员变量,类Teacher有多个成员函数,完成学生数据输入、排序、查找最好成绩和打印等功能。
(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/YgAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有以下程序:#include<iostream>usingnamespacestd;classA{private:inta;public:A(inti){a=i;}void
数据库管理最本质的特点是实现数据的共享。为了实现数据的共享,保证数据的独立性、完整性和安全性,需要有一组软件来管理数据库中的数据,处理用户对数据库的访问,这组软件称为______。
下列程序的运行结果为#include<iostream.h>template<classTT>classFF{TTa1,a2,a3;public:FF(TTb1,TTb2,TTb3){a1
已知有定义:constintD=5;inti=1;doublef=0.32;charc=15;则下列选项错误的是
若已定义inta=256,执行语句cout<<hex<<a;的结果是
下面关于数组的描述错误的是
以下不使用线性结构表示实体之间联系的模型的是()。
数据结构分为逻辑结构与存储结构,线性链表属于______。
有如下定义:classMA{intvalue:public:MA(intn=0):v;alut(n){}};MA*ta,tb:其中MA类的对象名标识符是______。
数据结构分为线性结构和非线性结构,带链的队列属于______。
随机试题
小路,今年15岁,初中毕业考上了职业中专。由于父母离异,法院将其判给了爸爸。但是爸爸很快为小路找了继母,继母对小路并不好,不让爸爸给小路筹集学费。而小路的生母由于一直没有一个很好的工作,也没钱供小路上学。小路的学费问题严重困扰着小路。问题:针对小路目
“三突出”创作原则
在控制过程中,管理者按照标准对资源配置、工作成果等进行监测的阶段是
Zeta电位降低产生:微生物作用可使乳剂:
HPMCP可作为片剂的辅料使用正确的是
市级商服中心()。
1989年联合国通过了一部关于儿童权益问题的法规,法规中明确指出:18岁以下的任何人都是积极和创造的权利主体,拥有包括生存、发展和充分参与社会、文化、教育、生活以及他们个人成长与福利所必需的活动权利,这部法规是()
持之以恒的精神固然可贵,但如果我们所坚持、所固守的是_______甚至错误的,那坚持到底的结果只能是一错再错。人生允许_______,敢于放弃不切实际的理想,也是一种生存智慧。依次填入画横线部分最恰当的一项是()。
请在【答题】菜单下选择【进入考生文件夹】命令,并按照题目要求完成下面的操作。注意:以下的文件必须保存在考生文件夹下。在考生文件夹下打开工作簿Excel.xlsx,按照要求完成下列操作并以该文件名(Excel.xlsx)保存工作簿。某公司拟对其产品季度
A、It’salmosttimeforlunch.B、Onlyafewstrawberrieswillbeeatenatlunch.C、Therearejustenoughstrawberriesforlunch.
最新回复
(
0
)