版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、课程设计目的1、使学生能够比较熟练地掌握c+语言的基本语法规则;2、熟练掌握基本的面向对象的程序设计方法,如类的实现、创建类的实例对象、实现类的继承等;3、掌握各种面向对象的程序设计技术,如多态的实现、运算符重载、使用c+标准库等。4、掌握在vc+平台上进行程序设计和调试的方法。二、系统设计要求题目1:通过组合和派生构成新的类本设计题目的任务是使用point类产生line类。分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。题目2:人员信息管理系统本设计题目的任务是设计一个人员信息管理系统,并使用虚函数实现多态性,完成显示不同人员信息的任务。设计employee类,用
2、来存储雇员的编号,级别,月薪等信息,能够对其进行操作和显示。以employee为基类派生出technician类,表示兼职技术人员,以及manager类,表示经理,以及salesman类,表示兼职推销员。利用manage类和salesman类派生出salesmanager类,表示销售经理。注意使用虚基类。进一步使用虚函数和抽象类改进上面的程序。题目3:成绩管理系统 输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对n门考试的成绩进行管理要求 l 用户录入每个学生每门课程的分数; l 能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和排名; l 计算全班各
3、门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息; l 显示每门科目中,成绩在90分以上的学生信息。另外还输出每门科目中不及格的学生信息; l 能按姓名或者学号查找,增加,删除和保存各个学生的信息。三、设计思路line类起点:beginpoint终点:endpoint长度:length1.1、point类横坐标:x纵坐标:y竖坐标:z类的组合类的派生line类起点:beginpoint终点:endpoint长度:lengthpoint类横坐标:x纵坐标:y竖坐标:z1.2、23、print() 界面函数,主界面如下searchno() 按照编号查找学生信
4、息saveinfo() 将学生信息保存到文件setup () 查找失败后创建一个新同学sort() 学生成绩总分排序浏览avescore() 计算各科平均成绩higer() 查看成绩高于90分的学生信息failed() 查看成绩不及格的学生信息searchname() 按照姓名查找学生信息exit(0) 退出系统四、调试过程1首先由于刚开始没读懂题意,我直接把课题一的模板类实现做成只有一个display()函数,根本没有真正显示出模板类的优点,后来通过和其他同学的讨论研究才发现自己在理解上有些偏差,于是我毫不犹豫地把原来学的程序放弃了,直接重新开始我的新任务,最后终于搞出来时,心情异常激动。2
5、.对于第二个课题,原本以为很简单的事,忽然发现运行时总是提醒调用了private的数据成员,搞得我很迷糊,虽然很努力的整天对着电脑修改错误,但结果收效甚微,错误没改好,貌似又出现了更多的错误,简直是一团乱麻,当时真想放弃,最终在同学的帮忙下终于做完,有点身心疲惫的感觉。3.第三个题目很有挑战性,因为越做越觉得很吸引我,它一点一点促使我向前进。在可以运行时我激动地搂着宿舍同学跳啊跳的,但是程序运行一段时间后就会自动中止,这让我很头疼,实在是有种受不了的感觉,看看其他同学也是很郁闷,但总不能只做一半就放弃,于是我上网看程序、图书馆查资料、看课本,终于成功了!五、程序源代码实验一# include
6、# include using namespace std;template class pointpublic:point(); /point类的默认构造函数point(t,t,t); /point类的带参数的构造函数point(point &); /point类的拷贝构造函数point(); /point类的析构函数void setx(t x1) /设置x的函数x=x1;void sety(t y1) /设置y的函数y=y1;void setz(t z1) /设置z的函数z=z1;t getx() /读取x的函数return x;t gety() /读取y的函数return y;t get
7、z() /读取z的函数return z;void display(); /在屏幕上显示pointprotected:t x; /point类的横坐标t y; /point类的纵坐标t z; /point类的竖坐标;template point:point()x=y=z=0;coutpoint类的默认构造函数被调用!endl;template point:point(t x,t y,t z)this-x=x;this-y=y;this-z=z;coutpoint类的带参数的构造函数被调用!endl;template point:point(point &p)x=p.x;y=p.y;z=p.z;c
8、outpoint类的拷贝构造函数被调用!endl;template point:point()coutpoint类的析构函数被调用!endl;template void point:display()cout(x,y,z);template class line:public pointpublic:line(); /line类的默认构造函数line(t,t,t,t,t,t); /line类的带参数的构造函数line(line &); /line类的拷贝构造函数line(); /line类的析构函数void setbeginpoint(t x1,t y1,t z1) /设置起点beginpoi
9、nt.setx(x1);beginpoint.sety(y1);beginpoint.setz(z1);void setendpoint(t x2,t y2,t z2) /设置终点endpoint.setx(x2);endpoint.sety(y2);endpoint.setz(z2);point getbeginpoint() /读取起点return beginpoint;point getendpoint() /读取终点return endpoint;void clength() /计算长度t l1;l1=pow(endpoint.getx()-beginpoint.getx(),2)+p
10、ow(endpoint.gety()-beginpoint.gety(),2)+pow(endpoint.getz()-beginpoint.getz(),2);length=sqrt(l1);t getlength() /读取长度return length;void display(); /在屏幕上显示lineprivate:point beginpoint; /起点point endpoint; /终点t length; /长度;template line:line()length=0.0;coutline类的默认构造函数被调用!endl;template line:line(t x1,t
11、 y1,t z1,t x2,t y2,t z2):beginpoint(x1,y1,z1),endpoint(x2,y2,z2)clength();coutline类的带参数的构造函数被调用!endl;template line:line(line &l):beginpoint(l.beginpoint),endpoint(l.endpoint)length=l.length;coutline类的拷贝构造函数被调用!endl;template line:line()coutline类的析构函数被调用!endl;template void line:display()beginpoint.dis
12、play();cout;endpoint.display();cout它的长度是lengthendl;void main()cout创建line类的对象时,不传递参数:n构造函数的调用顺序如下endl;line line1;line1.display();cout创建line类的对象时,传递参数:n构造函数的调用顺序如下endl;line line2(0,0,0,1,1,1);line2.display();cout创建line类的对象时,传递参数:n构造函数的调用顺序如下endl;line line3(0.1,0.2,0.3,1.1,1.2,1.3);line3.display();cout
13、创建line类的对象时,调用类的拷贝构造函数:n构造函数的调用顺序如下endl;line line4(line3);line4.display();实验二/employee.h文件#if ! defined employee_h#define employee_h# include# includeusing namespace std;class employeepublic:employee(); /employee类的默认的构造函数employee(string,string,string,float); /employee类的带参数的构造函数employee(employee &);
14、/employee类的拷贝构造函数employee() /employee类的析构函数bool setid(string); /设置编号的函数bool setname(string); /设置姓名的函数bool setgrade(string); /设置级别的函数bool setsalary(float); /设置月薪的函数string getid() /读取编号的函数return id; string getname() /读取姓名的函数return name; string getgrade() /读取级别的函数return grade;float getsalary() /读取月薪的函数
15、return salary;virtual void display() /在屏幕上显示雇员信息protected:string id;string name;string grade;float salary;employee:employee()id=0000;name=noname;grade=0000;salary=0.0;employee:employee(string id,string strname,string strgrade,float s)if(sizeof(id)!=0)id=id;if(sizeof(strname)!=0)name=strname;if(sizeo
16、f(strgrade)!=0)grade=strgrade;if(s0)salary=s;employee:employee(employee &e)id=e.id;name=;grade=e.grade;salary=e.salary;bool employee:setid(string id)if(sizeof(id)!=0)id=id;return true;elsereturn false;bool employee:setname(string strname)if(sizeof(strname)!=0)name=strname;return true;elseretur
17、n false;bool employee:setgrade(string strgrade)if(sizeof(strgrade)!=0)grade=strgrade;return true;elsereturn false;bool employee:setsalary(float s)if(s0)salary=s;return true;elsereturn false;#endif/technician.h文件#if ! defined technician_h#define technician_h# includeemployee.h# include# includeusing
18、namespace std;class technician:public employee /technician技术人员类公有继承employee雇员类public:technician() /technician类的默认的构造函数technician(string id,string strname,string strgrade,float s); /technician类的带参数的构造函数technician(technician &); /technician类的拷贝构造函数technician() /technician类的析构函数void display(); /在屏幕上显示t
19、echnician技术人员类的信息;technician:technician(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)technician:technician(technician &t):employee(t)void technician:display()cout技术人员的个人信息如下:endl;cout编号t姓名t级别tt月薪endl;coutidtnametgradetsalaryendl;# endif/salesman.h文件#if ! defined s
20、alesman_h#define salesman_h# include# includeemployee.h# includeusing namespace std;class salesman:virtual public employee /salesman销售人员类公有继承employee雇员类public:salesman() /salesman类的默认的构造函数salesman(string id,string strname,string strgrade,float s); /salesman类的带参数的构造函数salesman(salesman &); /salesman类的
21、拷贝构造函数salesman() /salesman类的析构函数void display(); /在屏幕上显示salesman销售人员类的信息;salesman:salesman(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)salesman:salesman(salesman &s):employee(s)void salesman:display()cout销售人员的个人信息如下:endl;cout编号t姓名t级别tt月薪endl;coutidtnametgradetsala
22、ryendl;# endif/manager.h文件#if ! defined manager_h#define manager_h# include # include # include employee.husing namespace std;class manager:virtual public employee /manager经理类公有继承employee雇员类public:manager() /manager类的默认构造函数manager(string id,string strname,string strgrade,float s); /manager类的带参数的构造函数
23、manager(manager &); /manager类的构造函数类manager() /manager类的析构函数void display(); /在屏幕上显示manager经理类的信息;manager:manager(string id,string strname,string strgrade,float s):employee(id,strname,strgrade,s)manager:manager(manager &m):employee(m)void manager:display()cout经理的个人信息如下:endl;cout编号t姓名t级别t月薪endl;coutidt
24、nametgradetsalaryendl;#endif/salesmanager.h文件#if ! defined salesmanager_h#define salesmanager_h# include# include# includesalesman.h# includemanager.husing namespace std;class salesmanager: public manager ,public salesman /salesmanager销售经理类公有继承employee雇员类private:string id;string name;string grade;fl
25、oat salary;public:salesmanager() /salesmanager类的默认的构造函数salesmanager(string id,string strname,string strgrade,float s); /salesmanager类的带参数的构造函数salesmanager(salesmanager &s); /salesmanager类的拷贝构造函数salesmanager() /salesmanager类的析构函数void display(); /在屏幕上显示salesmanager销售经理的信息;salesmanager:salesmanager(str
26、ing id,string strname,string strgrade,float s):salesman(id,strname,strgrade,s),manager(id,strname,strgrade,s)id=id;name=strname;grade=strgrade;salary=s;salesmanager:salesmanager(salesmanager &sm):salesman(sm),manager(sm)id=sm.id;name=;grade=sm.grade;salary=sm.salary;void salesmanager:display(
27、)cout销售经理的个人信息如下:endl;cout编号t姓名t级别tt月薪endl;coutidtnametgradetsalaryendl;#endif/test2.cpp主函数# include# include# includesalesmanager.h# includetechnician.husing namespace std;void createmployeearray(int capacity)string id,strname,strgrade;float s;employee * ptrtoemployee;for(int i=0;icapacity;i+)cout请
28、输入第i+1个雇员的信息endl;coutid;coutstrname;coutstrgrade;couts;if(strgrade=技术人员)technician pt(id,strname,strgrade,s);ptrtoemployee=&pt;ptrtoemployee-display();else if(strgrade=经理)manager pm(id,strname,strgrade,s);ptrtoemployee=±ptrtoemployee-display();else if(strgrade=销售人员)salesman ps(id,strname,strgrade
29、,s);ptrtoemployee=&ps;ptrtoemployee-display();else if(strgrade=销售经理)salesmanager psm(id,strname,strgrade,s);ptrtoemployee=&psm;ptrtoemployee-display();void main ()int capacity;coutcapacity;employee *ptr;createmployeearray(capacity);实验三#include#include#include#includeusing namespace std;class student
30、friend int searchno(student* ptrs,string no,int i); /按照编号查找!friend void saveinfo(student* ptrs,int i); /保存到文件!friend student* setup(student* ptrs,int &i); /查找失败后创建一个新同学!friend void sort(student* ptrs,int i); /按照总分排序!friend void higher(student* ptrs,int i); /输出各科高于90分的同学!friend void avescore(student*
31、 ptrs,int i); /计算各科的平均成绩!friend void failed(student* ptrs,int i); /输出各科不及格同学!friend int searchname(student* ptrs,string nam,int i); /按照姓名查找!public:student();student(float math,float english,float c,float chinese,float physics,string name,string no,string sex);void createstu(); /用来输入学生信息void display(
32、); /显示学生相关信息void search(); /将五科成绩分为三个层次记录在a数组中private:string name,no,sex;float math,c,english,chinese,physics,sum;float average;char a5;student:student() /默认构造函数!int i; name+=wins;no+=520325;sex=男;math=60;english=60;c=60;chinese=60;physics=60;sum=math+english+c+chinese+physics;average=sum/5; for(i=0
33、;iname=name;this-sex=sex;this-chinese=chinese;this-math=math;this-english=english;this-c=c;this-physics=physics;sum=math+english+c+chinese+physics;average=sum/5; for(i=0;i5;i+)ai=e;void student:createstu() /输入学生信息!coutno;coutname;coutsex;coutchinese;coutmath;coutenglish;coutc;coutphysics;sum=math+en
34、glish+c+chinese+physics;average=sum/5;void student:display() /输出学生信息coutsetw(10)编号setw(10)姓名setw(5)性别setw(5)语文setw(5)数学setw(5)英语setw(5)c语言setw(5)物理endl; coutsetw(10)nosetw(10)namesetw(5)sexsetw(5)chinesesetw(5)mathsetw(5)englishsetw(5)csetw(5)physicsendl;void student:search() /将每一门分数分为三个等级,记录在a中!int
35、 i;for(i=0;i=90)a0=h;else if(chinese=90)a1=h;else if(math=90)a2=h;else if(english=90)a3=h;else if(c=90)a4=h;else if(physics60)a4=l;elsebreak;void sort(student*ptrs,int i) /将学生按照总分排名!int j,k,flag;student s;for(j=0;ji-1;j+) /冒泡排序flag=0; /i表示总学生人数for(k=1;ki-j;k+)if(ptrsflag.sumptrsk.sum)flag=k;s=ptrsfl
36、ag;ptrsflag=ptrsi-j-1;ptrsi-j-1=s;void main() cout welcom to =n; cout ttt *n; cout ttt * *n; cout ttt *学生成绩管理系统*n; cout ttt * *n; cout ttt * 版主:计科薛双 *n; cout ttt * *n; cout ttt *n; int i,j,decide;char temp;string nam;couti;student*ptrs=new studenti;for(j=0;ji;j+)ptrsj.createstu();ptrsj.search();sort
37、(ptrs,i); while(1) cout welcom to =n; cout ttt *n; cout ttt * *n; cout ttt *学生成绩管理系统*n; cout ttt * *n; cout ttt * 版主:计科薛双 *n; cout ttt * *n; cout ttt *n; coutt请选择n; coutttn; couttt1. 按照总分排名 n; couttt2. 计算各门功课平均分 n; couttt3. 显示各门成绩超过九十的学生 n; couttt4. 显示各门不及格的学生 n; couttt5. 按照姓名查找学生 n; couttt6. 按照编号查找学生 n; couttt7. 保存学生信息到文件 n; couttt8. 退出系统 n; coutttn; cout 请选择(1-8):n; couttttttemp; if(temp8|temp1)continue;else if(temp=8)coutttt* 谢谢使用! *endl; coutttt* 再见! *endl; exit(0); break;else switch(temp)case 1:for(j=0;ji;j+)ptrsj.displ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招生常见问题解答
- 2025年科技园区厂房租赁及配套设施合同3篇
- 二零二五年度酒店装修改造合同样本4篇
- 2024年09月河北承德银行秋季招考笔试历年参考题库附带答案详解
- 2024年09月江苏苏州银行南京分行招考(158)号笔试历年参考题库附带答案详解
- 2024年09月北京/天津/辽宁2024锦州银行青锦正式开启笔试历年参考题库附带答案详解
- 二零二五版摩托车售后服务网点建设与运营合同4篇
- 2024年09月2024中国建设银行江苏省分行校园招聘1300人笔试历年参考题库附带答案详解
- 二零二五年度供应链金融合同模板4篇
- 2025年度企业汽车租赁管理与维护合同
- 眼内炎患者护理查房课件
- 肯德基经营策略分析报告总结
- 买卖合同签订和履行风险控制
- 中央空调现场施工技术总结(附图)
- 水质-浊度的测定原始记录
- 数字美的智慧工业白皮书-2023.09
- -安规知识培训
- 2021-2022学年四川省成都市武侯区部编版四年级上册期末考试语文试卷(解析版)
- 污水处理厂设备安装施工方案
- 噪声监测记录表
- 中国传统文化服饰文化
评论
0/150
提交评论