最新C++课程设计.docx

上传人:1595****071 文档编号:33829429 上传时间:2022-08-12 格式:DOCX 页数:29 大小:260.40KB
返回 下载 相关 举报
最新C++课程设计.docx_第1页
第1页 / 共29页
最新C++课程设计.docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《最新C++课程设计.docx》由会员分享,可在线阅读,更多相关《最新C++课程设计.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品资料C+课程设计.江苏科技大学课程实践报告设计题目: 程序设计(VC+)实践设计时间: 2018-2-26至2018-3-2学 院: xxxxxx专业班级xxxxxxx学生姓名:xxxx 学号 xxxxxxx指导老师:严熙基础题第二题:实验目的:建立类练习类的使用;练习类内说明类外定义;练习调用函数;for循环语句实验内容:试建立一个类SP,求f(n,k)=1k+2k+3k+.+nk,另有辅助函数power(m,n)用于求mn。具体要求如下:(1)私有成员数据。int n,k:存放公式中n和k的值(2)公有成员函数SP(int n1,int k1):构造函数,初始化成员数据n和k。int

2、power(int m,int n):mn。int fun():求公式的累加和。void show():输出求得的结果。(3)在主程序上定义对象s,对该类进行测试。实验编码:#includeclass SPint n,k;public:SP(int n1,int k1)n=n1;k=k1;int power(int m,int n);int fun();int SP:power(int m,int n)int s=1;for(;n;)s=s*m;n=n-1;return s;int SP:fun()int t=0;for(int i=1;i=n;i+)t=t+power(i,k);return

3、 t;void main()int n,k;cout请输入nn;cout请输入kk;SP s(n,k);int t=s.fun();cout测试结果为tendl;实验结果:实践小结:类内说明类外定义的时候千万不能忘了全局运算符。 基础题第三题:实验目的:创建移动数据的类;对数组进行移动转移;加深对数组的理解;实验内容:建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员float array20:一维整型数组。int n:数组中元素的个数。(2)公有成员函数MOVE(float b,int m):构造函数,初始

4、化成员数据。void average():输入平均值,并将数组中的元素按要求重新放置。void print():输出一维数组。(3)在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试实验编码:#includeclass MOVEprivate:float array20;int n;public:MOVE(float b,int m)for(int i=0;im;i+)arrayi=bi;n=m;void average();void print();MOVE();void MOVE:average()float ave=0;int i,j;for

5、(i=0;in;i+)ave+=arrayi;ave/=n;cout平均值为aveendl;float turn20;j=0;for(i=0;in;i+)if(arrayi=ave)turnj=arrayi;j+;j=0;for(i=0;iave)turnn-1-j=arrayi;j+;for(i=0;in;i+)arrayi=turni;void MOVE:print()for(int i=0;in;i+)coutarrayi ;void main()float b1=1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3;int num;num=sizeof(b1)/sizeo

6、f(float);MOVE s(b1,num);s.average();s.print();实验结果:实践小结:本来以为程序很容易实现还不进行排序应该很容易就写出来了,但是事实证明不进行排序的话更难实现功能。基5:实验目的:实现绝对回文数功能;练习类内说明类外定义;设计二进制算法;私有和公有函数的编写;实验内容:定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员 lint n:整型数字。lint y: 标记是否为回文数。(2)公有成员函数lPalindrome (

7、int x) :构造函数,根据x参数初始化数据成员n,y初始化为0。lvoid huiwen () :判断数n是否为绝对回文数。lvoid show( ) :若该数为回文数,则在屏幕显示。 (3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。实验编码:#include class palindromeint n,y;public:palindrome(int x)n=x;y=0;void huiwen();void show();void palindrome:huiwen() int i=0,j=0; int m; m=n;

8、while(m) m/=10; i+; m=n; while(m) m/=2; j+; int*s3=new inti; int*s2=new intj; m=n; for(int k=0;ki;k+) s3i-1-k=m%10; m/=10; m=n; for(k=0;kj;k+) s2j-1-k=m%2; m/=2; int num3=0; for(k=0;ki/2;k+) if(s3i-1-k=s3k) num3+; else break; int num2=0; for(k=0;kj/2;k+) if(s2j-1-k=s2k) num2+; else break; if(num3=(i

9、/2)&num2=(j/2) y=1; void palindrome:show()if(y=1)coutn是绝对回文数endl;if(y=0)coutn不是绝对回文数endl;void main()int a;cout请输入任意整数a;palindrome p(a);p.huiwen();p.show();实验结果:实践小结:绝对回文数功能比起回文数来说又难了不少,在网上查了一下功能函数才实现了二进制算法的功能。基础题11题:实验目的:数组间的数据的移动和转换;通过指针在两个数组间的使用来实现交换数据的功能;实验内容:建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等

10、长)。例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。具体要求如下:(1)私有数据成员lchar str180 :存放被插入的字符串。lchar str240 :存放待插入的字符串。(2)公有成员函数lSTRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。lvoid process():将str2中的字符串插入到str1中。lvoid print():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。实验编码:#include#include

11、class STRINGchar str180;char str240;public:STRING(char *s1,char *s2);void process();void print();STRING:STRING(char *s1,char *s2)for(int i=0;i80;i+)str1i=s1i;for(int j=0;j40;j+)str2j=s2j;void STRING:process()char s40;strcpy(s,str1);int i=0,j=0;while(str2i)str1j+=str2i;str1j+=si;i+;str1j=0;void STRIN

12、G:print()cout交叉后的字符串为:;coutstr1endl;void main()char str180,str240;cout输入字符串1endl;cin.getline(str1,39);cout输入字符串2endl;cin.getline(str2,39);STRING test(str1,str2);test.process();test.print();实验结果:实验总结:刚开始程序一直崩溃,修改了很多次之后才恢复正常。基础题十七题:实验目的:通过函数实现计算一个数的正弦值;构建多个功能函数相互调用实现功能;实验内容:定义一个类SIN,求(函数我不会打)具体要求如下:(1

13、)私有成员数据。lint x:输入公式中x的值,求sin(x)。lint n:输入公式中n的值。(2)公有成员函数。lSIN(int x, int n ):构造函数,用于初始化x和n的值。lint power( int q):求q!的值。lint mi( int m,int n):求 的值。lint fun( ):用于求SIN(X)的值。lvoid show( ):输出求得的结果。(3) 在主程序中定义对象test,对该类进行测试。实验编码:#includeclass SINdouble x;int n;public:SIN(double x,int n)this-x=x;this-n=n;d

14、ouble mi(int m,int n);double fun();void show();double power(int q);double SIN:power(int q)int s=1;for(int i=1;i=q;i+)s=s*i;return s;double SIN:mi(int m,int n)int sum=1;for(int i=1;i=n;i+)sum=sum*m;return sum;double SIN:fun()float s=0;for(int i=1;i=n;i+)s+=mi(-1,i+1)*mi(x,2*i-1)/power(2*i-1);return s

15、;void SIN:show()coutsin(x)的值为fun()endl;void main()double x;int n;cout请输入要求的x值x;cout请输入公式中的n值n;SIN test(x,n);test.show();实验结果:实验总结:注意输入值的范围,不然很容易出错提2:实验目的:使用类与不同类之间的函数调用问题;实验内容:设计一个电子通信录。其中包括如下类: (1)通信地址类addr。包含公有数据: 成员char post10; /邮编 成员char ad40; /家庭地址 构造函数addr(char p10=; 成员函数void setadd(addr a); /

16、用a为当前对象赋值 (2)出生年月类birth。包含公有数据: 成员int year; /年份 成员int month; /月份 成员int day; /日期 构造函数birth(int y=0,int m=0,int d=0); 成员函数void setbir(birth b); /用b为当前对象赋值 (3)类friends。包含数据: 私有成员int number; /序号 私有成员char name20; /姓名 私有成员char sex; /性别 私有成员char telephone13; /联系电话 公有成员birth bir; /出生年月 公有成员addr add; /通信地址 公

17、有构造函数friends(int nu=0,char n20=s= ,int y=0,int m=0,int d=0,char p10=; 公有成员函数void setfri(int nu,char n20,char s,birth b,addr a,char t13); /为当前对象赋值 公有成员函数friends input(friends &bb); /为对象bb输出数据 公有成员函数int search(friends aa100,char n20); /在aa中查找姓名为n的对象 公有成员函数void show(friends aa); /输出对象aa 公有成员函数void dele

18、t(friends aa100,int k); /在aa中删除下标为k的元素 (4)在主函数中完成主菜单的设计,并根据输入值完成所需操作。 创新要求:自设计界面,要求美观、方便,还可自增加功能,如依据不同的条件排序后输出等。 程序执行后主菜单如下:1输入数据 2输出数据 3查找数据 4删除数据5退出 请选择(15):实验编码:#include#includeclass addrpublic:char post10; /邮编char ad40; /家庭地址addr(char p10=,char a40=)strcpy(post,p);strcpy(ad,a);void setadd(addr a

19、)/为当前对象赋值strcpy(post,a.post);strcpy(ad,a.ad);class birthpublic:int year;/年份int month;/月份int day;/日期birth(int y=0,int m=0,int d=0)year=y;month=m;day=d;void setbir(birth b)/为当前对象赋值year=b.year;month=b.month;day=b.day;class friendsint number;/序号char name20;/姓名char sex;/性别char telephone13;/联系电话birth bir;

20、/出生年月addr add;/通信地址public:friends(int nu=0,char n20=,char s= ,int y=0,int m=0,int d=0,char p10=,char a40=,char t13=): bir(y,m,d),add(p,a)/构造函数number=nu;strcpy(name,n);sex=s;strcpy(telephone,t);void setfri(int nu,char n20,char s, birth b,addr a,char t13)/为当前对象赋值number=nu;strcpy(name,n);sex=s;strcpy(t

21、elephone,t);bir.year=b.year;bir.month=b.month;bir.day=b.day;strcpy(add.post,a.post);strcpy(add.ad,a.ad);friends input(friends &bb)cout请输入数字number:bb.number; cout请输入姓名name:bb.name; cout请输入性别sex(男man,女woman):bb.sex; cout请输入手机号telephone:bb.telephone; cout请输入年份year:bb.bir.year; cout请输入月份month:bb.bir.mon

22、th; cout请输入日day:bb.bir.day; cout请输入邮政编码post:bb.add.post; cout请输入地址ad:bb.add.ad;return bb;int search(friends aa100,char n20)/在数组aa中查找姓名为n的对象for(int i=0;i100;i+)if(strcmp (aai.name,n)=0)return i;return 0;void show(friends aa)/输出对象aacoutaa.numberendl;coutaa.nameendl;if(aa.sex=m)cout男endl;else cout女endl

23、;coutaa.sexendl;coutaa.telephoneendl;coutaa.bir.yearendl;coutaa.bir.monthendl;coutaa.bir.dayendl;coutaa.add.postendl;coutaa.add.adendl;void delet(friends aa100,int k)/在数组aa中删除下标为k的元素for(int i=k;i=100;i+)aai=aai+1;void main() /测试int n,m;char s20=abc;friends aa;friends c100;cout1.输入数据endl;cout2.输出数据en

24、dl;cout3.查找数据endl;cout4.删除数据endl;cout5.退出endl;cout请选择(1-5):n;while(n!=5)cout请选择(1-5):n;switch(n)case 1:for (int i=0;i100;i+)aa.input(ci);break; case 2:aa.show(aa);break; case 3:if(aa.search(c,s) cout查找的姓名为s的下标为:aa.search(c,s);else cout没有找到姓名为s的对象:endl; break; case 4:cout输入删除下标m:m;aa.delet(c,m);break

25、; case 5:break;实验结果:实验总结:查了很多的程序才有点思路,但自己写的时候还是老是出错,借用了部分网上的代码提3:实验目的:设计一个结构体类型用于存储车辆相关信息;设计一个描述停车场的类Park;定义类Automobile,继承了Park类的相关信息,除了定义构造函数和析构函数以外,还有纯虚函数virtual void Pay()const=0用于显示车辆信息以及车牌号及车辆类型等相关数据;enter()与leave()函数用于控制车辆进出,以及虚函数virtual void pay()用于保存车辆信息;定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之

26、外,分别具有载重,乘坐人数,排气量等信息;实验内容:设计一个停车场管理系统。具体要求如下: (1)停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同种类的的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。 (2)管理系统模拟实际车辆停车的情况:新来车辆时如果有空位,按顺序为该车分配停车位;车辆开走时,交纳相应停车费;统计各类车辆的数量。 (3)定义描述停车场的类Park,其中有3个位置用于存放各类车辆。 (4)定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相应停车费。(5)定义派生类Truck,

27、Carriage和Car,这些车辆除了拥有车牌号(字符串)、车辆已使用年数(整数)之外,Truck还拥有载重量(浮点数,单位吨)属性, Carriage还拥有乘坐人数(整数,单位人)属性,Car还拥有排气量(浮点数,单位L)属性。具体实现上述纯虚函数Pay,显示每类车辆的相应信息,并给出计价提示,其中Truck收费2元/小时,Carriage收费1.5元/小时,Car收费1元/小时。 (6)重载输入“”操作符,使得可以通过cin直接读入每类车辆的相应信息。 (7)编写main函数,测试上述所要求的各种功能,即根据菜单命令为新来车辆分配停车位、开走车辆(输入车位编号)时付费、显示停车场中各类车辆

28、的数量。 程序执行情况如下所示: 欢迎使用本系统 本系统包含的功能如下: 1 为新来车辆分配停车位 2 开走车辆 3 统计各类车辆的数量 0 退出系统 请选择:1 a 为卡车分配停车位 b 为客车分配停车位 c 为小轿车分配停车位 请选择:a 请输入车牌号:1111 请输入使用年份:2001 请输入载重量:5 请输入放车时间:10 该车辆已加入实验编码:#include#include /文件 #include /调用系统时间 #include /控制格式 #include#includeusing namespace std; const int N=3; /停车场规模 struct nod

29、e /结构体 描述停车场 基本属性 char Carinformation64; /车牌号 char type16; /车辆类型 bool full; /判断是否停满 time_t t1,t2; /停车时间 ;class Automobile;class park public: park(); park() bool Full(); /车辆进入 bool Empty(); /车辆离开 int count; /计数 node locationN; /三个车位 ;park:park() /初始化 count=0; for(int i=0;i=N) return true; return fals

30、e; bool park:Empty() /判断是否为空 if(count=0) return true; return false; class Automobile:public park public: Automobile(); Automobile() bool enter(); /进入 bool leave(); /离开 float TL()const; /计算时间 virtual void Pay()const=0;/纯虚函数控制输出 virtual void pay(); protected: char C64; char ty16;Automobile:Automobile(

31、):park() C64=0; ty16=0;float Automobile:TL()const float s=0; for(int i=0;iN;i+) if(strcmp(locationi.Carinformation,C)=0) s=locationi.t2-locationi.t1; /系统参数,为方便显示结果在此利用秒来计数 break; return s; bool Automobile:enter() /进入 cout进入停车场!endl; if(Full()=1) cout车位已满!endl; return true; else cout请输入车辆类型:ty; cout请

32、输入车牌号:C; for(int i=0;iN;) if(locationi.full=false) strcpy(locationi.Carinformation,C); strcpy(locationi.type,ty); count+; locationi.full=true; locationi.t1=time(0); /开始计时 char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t1) ); cout进入时间:tmpendl; return false; else i+; cout车位已满!endl; ret

33、urn true; bool Automobile:leave() /离开 if(Empty()=1) cout车位已空!endl; return false; else cout请输入要离开车辆的车牌号:C; for(int i=0;iN;) if(strcmp(locationi.Carinformation,C)=0) locationi.t2= time(0); /离开时间 char tmp16; strftime( tmp, sizeof(tmp),%X,localtime(&locationi.t2) ); cout离开时间时间:endl; couttmpendl; cout要离开车辆的相关信息:endl; cout车辆类型:locationi.typeendl; locationi.type16=0; cout车牌号:locationi.Carinformationendl; locationi.Carinformation64=0; locationi.full=false; count-;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁