(页数:11 字数:3019)一.选题背景 C++是由C语言发展成为的以面向对象为主要特征的语言。C++支持面向对象程序设计,通过类和对象的概念把数据和对数据的操作封装在一起。类是一个抽象的概念,用来描述某一类对象所共有的、本质的属性和类行为。类是面向对象程序设计的核心,类把数据(事物的属性)和函数(事物的行为——操作)封装为一个整体。 友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,在说明时前面加关键字friend。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性。友元函数的特点是能够访问类中的私有成员的非成员函数。 我所设计的题目是:学生成绩管理。 要求是:编写一个student学生类和student类的友元类friendstudent。其中 student类包含4个数据成员,有两个非静态成员name和score分别用来表示学生的姓名和成绩,两个静态数据成员count和total_score分别用来表示学生的总人数和总成绩;friendstudent类包含两个成员函数Disp()和Total()分别用来输出学生的姓名、成绩和总的学生人数及学生的总成绩。
二.方案论证 2.1方案一 不使用类和对象,使用main()主函数实现程序的设计。 程序如下: #include<iostream.h> #include<iomanip.h> #define n 4 //表头的字符串 #define m 10 //表头每项字符的长度 #define p 3 //定义学生数 void main() { char course[n][m]; //定义表头数组,存放课程等信息 int i,j,loca; //定义循环和定位变量 float score[p][n],temp=0.0; //定义成绩数组和临时变量 cout<<"please input title for student's scores:"<<endl; for(i=0;i<n;i++) cin>>course[i]; //输入表头字符 for(i=0;i<p;i++) { cout<<endl; for(j=0;j<n;j++) //输入学生序号和成绩 cin>>score[i][j]; } for(i=0;i<p;i++) { for(j=0;j<n;j++) temp+=score[i][j]; score[i][n-1]=temp/4; //平均成绩村入表的最后一列 temp=0.0; } for(i=0;i<p-1;i++) loca=i; for(j=i+1;j<p;j++) if(score[j][n-1]>score[loca][n-1]) loca=j; if(i!=loca) { for(int k=0;k<p;k++) { temp=score[i][k]; score[i][k]=score[loca][k]; score[loca][k]=temp; } } for(i=0;i<n;i++) cout<<setw(8)<<course[i]; for(i=0;i<p;i++) { cout<<endl<<endl; for(j=0;j<n;j++) cout<<setw(8)<<score[i][j]; } cout<<endl; }
目 录 一.选题背景………………………………………………………………………… 1 二.方案论证………………………………………………………………………… 1 2.1方案一………………………………………………………………………… 1 2.2方案二………………………………………………………………………… 3 三.过程论述………………………………………………………………………… 3 3.1算法…………………………………………………………………………… 3 3.2程序代码……………………………………………………………………… 3 四.程序分析………………………………………………………………………… 5 4.1运行结果…………………………………………………………………………5 4.2程序分析…………………………………………………………………………6 五.总结…………………………………………………………………………………7 六.设计体会及今后的改进意见………………………………………………………7 参考文献…………………………………………………………………………………8 附…………………………………………………………………………………………9
|