




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.面向对象的程序设计课程设计报告姓 名: 学 号: 班 级: 院 系: 数学与计算机学院 日 期: 2015.1.3 1. 课程题目 题目1:通过组合和派生构成新的类本设计题目的任务是使用Point类产生Line类。分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。题目2:成绩管理系统 输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行
2、管理(例N=5) 要求 l 用户录入每个学生每门课程的分数; l 能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名; l 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息; l 显示每门科目中,成绩在90分以上的学生信息。另外还输出每门科目中不及格的学生信息; l 能按姓名或者学号查找,增加,删除和保存各个学生的信息。2. 设计分析题目1:point1,point2 作为point类的对象,两个点确定一条直线。题目2:3. 代码设计题目一:A:组合类#include<iostream>
3、#include<math.h> using namespace std; template <class T> class Point protected: T x; T y; public : Point(); Point(T,T); Point(Point<T> &); Point(); void setX(T); T getX(); void setY(T); T getY(); void displayPoint(); ; template <class T> Point<T>:Point() x=0; y=0; c
4、out<<"Point 类默认构造函数!"<<endl; template <class T> Point<T>:Point(T x,T y) this->x=x; this->y=y; cout<<"Point 类带参构造函数!"<<endl; template <class T> Point<T>:Point(Point<T> &newPoint) this->x=newPoint.x; this->y=newP
5、oint.y; cout<<"Point 类拷贝构造函数!"<<endl; template <class T> Point<T>:Point() cout<<"Point 类析构函数!"<<endl; template <class T> void Point<T>:setX(T x) this->x=x; template <class T> T Point<T>:getX() return this->x; templ
6、ate <class T> void Point<T>:setY(T y) this->y=y; template <class T> T Point<T>:getY() return this->y; template <class T> void Point<T>:displayPoint() cout<<" ("<<x<<","<<y<<")"<<endl; template
7、 <class T> class Line private: Point<T> point1; Point<T> point2; public: Line(); Line(Point<T>,Point<T>); Line(T,T,T,T); Line(Line<T> &); Line(); void setPoint1(Point<T>); Point<T> getPoint1(); void setPoint2(Point<T>); Point<T> getPoin
8、t2(); void displayLine(); T length(); ; template <class T> Line<T>:Line() cout<<"Line类默认构造函数!"<<endl; template <class T> Line<T>:Line(Point<T> p1,Point<T> p2) this->point1=p1; this->point2=p2; cout<<"Line类带参构造函数!"<<
9、;endl; template <class T> Line<T>:Line(T x1,T y1,T x2,T y2):point1(x1,y1),point2(x2,y2) cout<<"Line类构造函数!"<<endl; template <class T> Line<T>:Line(Line<T> &line):point1(line.point1),point2(line.point2) cout<<"Line类拷贝构造函数!"<<
10、;endl; template <class T> Line<T>:Line() cout<<"Line类析构函数!"<<endl; template <class T> void Line<T>:setPoint1(Point<T> point1) this->point1=point1; template <class T> Point<T> Line<T>:getPoint1() return this->point1; template
11、 <class T> void Line<T>:setPoint2(Point<T> point2) this->point2=point2; template <class T> Point<T> Line<T>:getPoint2() return this->point2; template <class T> T Line<T>:length() return sqrt(fabs(point1.getX()-point2.getX()*(point1.getX()-point2.
12、getX()+fabs(point1.getY()-point2.getY()*(point1.getY()-point2.getY(); template <class T> void Line<T>:displayLine() cout<<"!"<<endl; cout<<"Line直线上两点是:"<<endl; point1.displayPoint(); point2.displayPoint(); cout<<"Line两点之间的距离是:"&
13、lt;<length()<<endl; cout<<"!"<<endl; ;void main() Line<double> line(2,3,7,7); line.displayLine();B:派生类:#include<iostream> #include<math.h> using namespace std; template <class T> class Point protected: T x; T y; public : Point(); Point(T,T); Poi
14、nt(Point<T> &); Point(); void setX(T); T getX(); void setY(T); T getY(); void displayPoint(); ; template <class T> Point<T>:Point() x=0; y=0; cout<<"Point 类默认构造函数!"<<endl; template <class T> Point<T>:Point(T x,T y) this->x=x; this->y=y; c
15、out<<"Point 类带参构造函数!"<<endl; template <class T> Point<T>:Point(Point<T> &newPoint) this->x=newPoint.x; this->y=newPoint.y; cout<<"Point 类拷贝构造函数!"<<endl; template <class T> Point<T>:Point() cout<<"Point 类析构
16、函数!"<<endl; template <class T> void Point<T>:setX(T x) this->x=x; template <class T> T Point<T>:getX() return this->x; template <class T> void Point<T>:setY(T y) this->y=y; template <class T> T Point<T>:getY() return this->y; tem
17、plate <class T> void Point<T>:displayPoint() cout<<" ("<<x<<","<<y<<")"<<endl; template <class T> class Line:public Point<T> private: T x1; T y1; public : Line(); Line(T,T); Line(T,T,T,T); Line(Line<T> &a
18、mp;); Line(); void setX1(T); T getX1(); void setY1(T); T getY1(); void displayLine(); T length(); ; template <class T> Line<T>:Line() cout<<"Line 类的默认构造函数!"<<endl; template <class T> Line<T>:Line(T x1,T y1) this->x1=x1; this->y1=y1; cout<<&qu
19、ot;Line类的带参构造函数!"<<endl; template <class T> Line<T>:Line(T x1,T y1,T x ,T y):Point<T>(x,y) this->x1=x1; this->y1=y1; cout<<"Line类的带参构造函数!"<<endl; template <class T> Line<T>:Line(Line<T> &newLine):Point<T>(newLine) t
20、his->x1=newLine.x1; this->y1=newLine.y1; cout<<"Line类的拷贝构造函数!"<<endl; template <class T> Line<T>:Line() cout<<"Line 类的析构函数!"<<endl; template <class T> void Line<T>:setX1(T x1) this->x1=x1; template <class T> T Line<
21、;T>:getX1() return this->x1; template <class T> void Line<T>:setY1(T y1) this->y1=y1; template <class T> T Line<T>:getY1() return this->y1; template <class T> T Line<T>:length() return sqrt(fabs(x-x1)*(x-x1)+fabs(y-y1)*(y-y1); template <class T>
22、void Line<T>:displayLine() cout<<"!"<<endl; cout<<"Line直线上两点是:"<<endl; cout<<" ("<<x1<<","<<y1<<")"<<endl; displayPoint(); cout<<"Line两点之间的距离是:"<<length()<<
23、endl; cout<<"!"<<endl; void main() Line<double> line(2,3,7,7); line.displayLine();题目2:#include<string>#include<iostream>#include<fstream>using namespace std;class studentpublic:char name20;double maths,Chinese,English,physics,chemistry,average,sum;studen
24、t()cout<<"student的默认构造函数被调用!"<<endl;student(char n20,double m,double C,double e,double p,double c)strcpy(name,n);maths=m;Chinese=C;English=e;physics=p;chemistry=c;cout<<"student带参数的构造函数被调用!"<<endl;double getsum()sum=maths+Chinese+English+physics+chemistry;
25、return sum;double getaverage()average=getsum()/5;return average;friend main();main(void)cout<<"请选择您需要的操作:"<<endl; cout<<"操作数据:"<<endl; cout<<"(0)数据录入"<<endl;cout<<"(1)增加人员"<<endl; cout<<"(2)删除人员"&
26、lt;<endl; cout<<"(3)修改数据"<<endl; cout<<"查询数据:"<<endl; cout<<"(4)按总成绩查询"<<endl;cout<<"(5)按姓名查询"<<endl; cout<<"(6)输出所有学生的数据"<<endl; cout<<"成绩排名:"<<endl; cout<<&q
27、uot;(7)按总分查询排名"<<endl; cout<<"(8)按数学查询排名"<<endl;cout<<"(9)按语文查询排名"<<endl; cout<<"(10)按英语查询排名"<<endl; cout<<"(11)按物理查询排名"<<endl;cout<<"(12)按化学查询排名"<<endl;cout<<"选择相关操作请输
28、入相对的括号里的阿拉伯数字:" char p;char w; student *s50; ofstream *file50; int i=0; int j=0; bool flag2=0; do cin>>p; if(p>='0'&&p<='12') flag2=1; else cout<<"指令错误!请重新输入:"<<endl; while(flag2=0);doswitch(p)case '0':char c; char name20;double
29、Chinese,maths,English,physics,chemistry; do cout<<"请输入姓名:" cin>>name; cout<<"请输入语文成绩:" cin>>Chinese; cout<<"请输入数学成绩:" cin>>maths; cout<<"请输入英语成绩:" cin>>English; cout<<"请输入物理成绩:"cin>>physics;
30、cout<<"请输入化学成绩:"cin>>chemistry;filej=new ofstream("d:document",ios:ate); *filej<<"姓名:"<<name<<"数学成绩"<<maths<<"语文成绩"<<Chinese<<"英语成绩"<<English<<"物理成绩"<<physics
31、<<"化学成绩"<<chemistry<<endl;j+;si=new student(name, maths, Chinese, English,physics,chemistry); i+; cout<<"数据录入成功,想继续录入吗(y/n)"<<endl; cin>>c; flag2=0;do if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; c
32、in>>c; else flag2=1; while(flag2=0); while(c='y'); break; case '1': char name20;double Chinese,maths,English,physics,chemistry; char c; do cout<<"请输入您要增加的学生的姓名:" cin>>name; cout<<"请输入语文成绩:" cin>>Chinese; cout<<"请输入数学成绩:&quo
33、t; cin>>maths; cout<<"请输入英语成绩:" cin>>English; cout<<"请输入物理成绩:"cin>>physics;cout<<"请输入化学成绩:"cin>>chemistry;filej=new ofstream("d:document",ios:ate); *filej<<"姓名:"<<name<<"语文成绩"<&
34、lt;Chinese<<"数学成绩"<<maths<<"外语成绩"<<English<<"物理成绩"<<physics<<"化学成绩"<<chemistry<<endl; j+; si=new student(name, maths, Chinese, English,physics,chemistry); i+;cout<<"数据录入成功,想继续录入吗?(y/n)"<&
35、lt;endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '2': char name20;bool flag3=0;char c; do cout<<"请输入您要删除的学生姓名:"<<endl; cin>>name; for(int h=0;h<i;h
36、+) if(strcmp(name,sh->name)=0) flag3=1;i-; do sh=sh+1; h+; while(h<=i); if(flag3=0) cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!" cout<<"要继续删除吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin&
37、gt;>c; while(c='y');break; case '3': char name20;double mat,Chin,Eng,phy,che;flag2=0; char c;do cout<<"请输入您要修改的学生的姓名:" cin>>name;for(int h=0;h<i;h+) if(strcmp(name,sh->name)=0) flag2=1; cout<<"请输入新的语文成绩:" cin>>Chin; cout<<&qu
38、ot;请输入新的数学成绩:" cin>>mat; cout<<"请输入新的英语成绩:" cin>>Eng; cout<<"请输入新的物理成绩:" cin>>phy; cout<<"请输入新的化学成绩:" cin>>che;sh->maths=mat; sh->Chinese=Chin;sh->English=Eng; sh->physics=phy;sh->chemistry=phy;cout<<&q
39、uot;数据修改成功!" if(flag2=0) cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl; cout<<"想继续修改吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '4
40、': double t;char c; do int flag1=0; cout<<"请输入你要查询学生的总成绩:"<<endl; cin>>t;for(int q=0;q<i;q+) if(sq->getsum()=t) flag1=1; cout<”要查询的学生是:"<<(*sq).name<<endl; if(flag1=0) cout<<"对不起,您要查询的学生不存在!"<<endl; cout<<"您想继
41、续查询吗?(y/n)"<<endl; cin>>c;if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '5': char n20;int j=0;char c; do int flag=0; cout<<"请输入你要查询的学生姓名:" cin>>n; for(int j=0;
42、j<i;j+) if(strcmp(n,(*sj).name)=0) flag=1; cout<<"您要查询的学生是:"<<(*sj).name<<endl; cout<<(*sj).name<<" "<<"语文:"<<(*sj).Chinese<<" "<<"数学:"<<(*sj).maths<<" "<<"英语:&
43、quot;<<(*sj).English<<" "<<"物理:"<<(*sj).physics<<" "<<"化学:"<<(*sj).chemistry<<endl<<"的总成绩成绩是"<<(*sj).getsum()<<" "<<"平均成绩是:"<<(*sj).getaverage()<<
44、endl; if(flag=0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令错误!请重新输入!"<<endl; cin>>c; while(c='y'); break; case '6': cout<<
45、"本系统所有学生数据如下:"<<endl; if(i=0) cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;for(int k=0;k<i;k+) cout<<k+1<<"姓名:"<<sk->name<<" "<<"语文:"<<sk->Chinese<<" "<<"数学:"<&l
46、t;sk->maths<<" "<<"英语:"<<sk->English<<" "<<"物理:"<<sk->physics<<" "<<"化学:"<<sk->chemistry<<" "<<"总分:"<<(*sk).getsum()<<" "
47、;<<"平均分:"<<(*sk).getaverage()<<endl; break; case '7': int t;student b; cout<<"本系统所以学生排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+) if(st->getsum()<(sy->getsum() t=y; if(t!=x) b=*sx; *sx=*st; *st=b; if(i=0) cout
48、<<"管理系统中没有录入数据或者数据已经被删除!"for(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<<"语文:"<<" "<<sk->Chinese<<"数学:"<<" "<<sk->maths <&l
49、t;"英语:"<<" "<<sk->English<<"物理:"<<" "<<sk->physics<<"化学:"<<" "<<sk->chemistry<<"总分:"<<" "<<(*sk).getsum() <<"平均分:"<<"
50、"<<(*sk).getaverage()<<endl; break; case '8': int t;student b; cout<<"本系统所以学生数学排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+)if(st->maths)<(sy->maths) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"管理系统中没有录
51、入数据或者数据已经被删除!"for(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<<"语文:"<<" "<<sk->Chinese<<"数学:"<<" "<<sk->maths <<"英语:"<&
52、lt;" "<<sk->English<<"物理:"<<" "<<sk->physics<<"化学:"<<" "<<sk->chemistry<<"总分:"<<" "<<(*sk).getsum() <<"平均分:"<<" "<<(*sk).ge
53、taverage()<<endl;break;case '9': int t;student b; cout<<"本系统所以学生语文排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+)if(st->Chinese)<(sy->Chinese) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"管理系统中没有录入数据或者数据已经被删除!"f
54、or(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<<"语文:"<<" "<<sk->Chinese<<"数学:"<<" "<<sk->maths <<"英语:"<<" "<
55、<sk->English<<"物理:"<<" "<<sk->physics<<"化学:"<<" "<<sk->chemistry<<"总分:"<<" "<<(*sk).getsum() <<"平均分:"<<" "<<(*sk).getaverage()<<en
56、dl;break;case '10': int t;student b; cout<<"本系统所以学生英语排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+)if(st->English)<(sy->English) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"管理系统中没有录入数据或者数据已经被删除!"for(int k=0;k<i;k
57、+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<<"语文:"<<" "<<sk->Chinese<<"数学:"<<" "<<sk->maths <<"英语:"<<" "<<sk->English&
58、lt;<"物理:"<<" "<<sk->physics<<"化学:"<<" "<<sk->chemistry<<"总分:"<<" "<<(*sk).getsum() <<"平均分:"<<" "<<(*sk).getaverage()<<endl;break;case '
59、11': int t;student b; cout<<"本系统所以学生物理排名如下:"<<endl; for(int x=0;x<i-1;x+) t=x; for(int y=x+1;y<i;y+)if(st->physics)<(sy->physics) t=y; if(t!=x) b=*st; *st=*sx; *sx=b; if(i=0) cout<<"管理系统中没有录入数据或者数据已经被删除!"for(int k=0;k<i;k+) cout<<k+1<<" "<<"姓名:"<<" "<<sk->name<<"语文:"<<" "<<sk->Chinese<<"数学:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年尾矿资源高效利用技术突破与创新研究报告
- 2025-2030中国花草盆景行业市场深度调研及供需与投资价值研究报告
- 住酒店合同协议书范本
- 专职导员考试题及答案
- 互联网医疗平台2025年在线问诊平台行业技术发展报告
- 教师培训合同协议书范本
- 工业互联网平台边缘计算硬件架构在智慧能源管理2025年应用前景报告
- 理化生实验试题及答案
- 医生淘汰测试题及答案大全
- 红脸儿阅读测试题及答案
- 2025安徽淮北源淮实业有限公司招聘5人笔试备考试题及答案解析
- 2025年国际安全与反恐研究职业资格考试试题及答案
- 2025年下半年黔东南州能源投资限公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 45551-2025蜜蜂生产性能测定技术规范
- 荔枝采摘合同协议书
- 太湖苏州辖区生态清淤一期工程环境影响报告书
- 精神分裂症患者个案护理查房
- 2025届江苏省苏州市高考冲刺押题(最后一卷)英语试卷含解析
- 中国共产主义青年团纪律处分条例试行解读学习
- 三方水泥合同协议
- 江苏省南通市如皋市八校2025届初三下学期教育质量调研(二模)化学试题含解析
评论
0/150
提交评论