题目 c++面向对象程序设计课程设计清单:5小题+职工工资管理系统(类、链表实现)姓名:学号:专业:计算机科学与技术学院:指导教师:2018年6月17日Part 1: 小程序练习1 类的继承定义一个point类,包含私有数据成员x,y,成员函数包括无参构造函数,带参构造函数,set和get属性函数。
定义circle类,从point类公有派生,增加数据成员半径r,成员函数包括无参构造函数,带参构造函数,计算面积函数getarea。
在main函数中定义一个circle的对象,并计算其面积。
/*1.定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx() sety() getx() gety() 四个属性函数。
2.定义circle类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及获取半径r的函数get_r() 计算面积并获取面积的函数getarea()。
3.在主函数中定义类的对象c1并初始化r=2。
再调用getarea()函数输出面积*/#include <iostream>using namespace std;class point 义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)2.重载自加自减运算符和<<、>>运算符。
3.在主函数中实现运算符重载。
4.友元函数需要声明。
*/#include<iostream>#include<cmath>using namespace std;class counter;istream& operator>>(istream& is,counter& a);ostream& operator<<(ostream& os,counter& a);class counter rintinfo();printf("\n");cout << "temp中数据构成的圆面积为 " << s->area() << endl;cout << "体积为 " << (*s).volume() << endl;system("pause");return 0;}运行结果:4 模板编写一个使用类模板对数组进行查找、求元素和、重载下标[]运算符,以及输出的程序。
1)设计一个类模板:形式1为template<class T>class Array;形似2为template<class T,int n>class Array;用于对T类型的数组进行构造和输出;2)产生模板类Array<int>和Array<double>进行测试;3)产生模板类Array<int,10>和Array<double,10>进行测试。
定义student类,私有数据成员字符数组name[20];2. 定义运算符<<,>>重载;3. 在住函数中定义student 类数组s[N];并以输出和二进制的方式打开文件#include <iostream>#include <fstream>#include <string>#define N 5using namespace std;class student;ostream& operator<<(ostream & os, student s);istream & operator >> (istream & is, student &s);class student.cin>>s[i];ofstream ofs("c:\\test\\", ios_base::out);if(!ofs){cerr<<"file open failed"<<endl;exit(1);}for( i=0;i<N;i++)出的文件流对象iofile。
("d:\\",ios_base::in|ios_base::out|ios_base::app);册职工 2.修改信息 3.删除信息 4.信息查询*"<<endl;cout<<"\t\t* 5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"<<endl; cout<<"\t\t* *"<<endl; cout<<"\t\t*****************************************************"<<endl; cout<<endl<<"请选择相应操作菜单项:"; cin>>menu; while()) { cout<<"请选择正确的菜单选项。
"<<endl; (); fflush(stdin); cin>>menu; } switch(menu) { case 0: cout<<"成功退出系统!"<<endl; return 0; case 1: st=st->Add(st); break; case 2: st=st->Modify(st); break; case 3: st=st->Del(st); break; case 4: { cout<<"\t\t*****************************************************"<<endl; cout<<"\t\t*====================菜单选顶=======================*"<<endl; cout<<"\t\t* *"<<endl; cout<<"\t\t* 1.根据工号精确查询职工信息 *"<<endl; cout<<"\t\t* 2.根据姓名.科室查询职工信息 *"<<endl; cout<<"\t\t* 3.各个科室的平均工资 *"<<endl; cout<<"\t\t* *"<<endl;cout<<"\t\t*****************************************************"<<endl; cout<<endl<<"请选择相应操作菜单项:"; cin>>menu; switch(menu) { case 1: st->Search_Unique_Front(st); break; case 2: st->Search(st); break; case 3: int t; cout<<"请输入科室的个数:"; cin>>t; for(int i=0;i<t;i++) { cout<<"请输入第"<<i+1<<"个科室的名称:"; cin>>post; st->SearchPost(st,post); } } } case 5: st->Save_ByFile(st,iofile); break; case 6: st->Sort(st); break; case 7: st->Display_List(st); break; default: cout<<"请选择正确的菜单项进行操作。
多谢合作!"<<endl; } } st->Rel(st); (); return 0; }七、运行结果分析1.注册2.查询3.修改4.删除5.排序八、收获及体会通过这次课程设计,增加了我们对软件知识的了解。
让自己在学习C++面向对象技术的过程中我们也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解;在具体操作中学得C++面向对象技术的理论知识得到巩固加强,达到了实践的目的,也发现了自己的不足之处,为以后的C++面向对象技术学习指明了方向,同时体会到C++面向对象技术具有的语句简洁,使用灵活,执行效率高等特点。
发现上机操作的重要性,特别是对类封装、链表有了深刻的理解。
通过实际操作,学会C++面向对象技术编程的基本操作、基本方法,开发了自己的逻辑思维能力,培养了分析问题,解决问题的能力。
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查询。
在用的时候难免出现这样或那样的错误。
在设计的调试过程中也无法顺利地完成调试工作,有了一个清晰简单的菜单和一些提示信息后,调试过程完成得非常顺利。
回顾此课程设计,我要感谢老师的授课讲解以及研究生学长的指导。
的确,从拿到题目到完成整个编程,从理论到实践,在这些日子了,可以学到很多很多的东西,同时不仅巩固了以前所学的知识,而且学到了很多书本上所没学到过的知识。
只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为成为自己的技能,从而提高自己的能力。