c++程序设计报告类与对象Word格式.docx
- 文档编号:22642449
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:45
- 大小:222.83KB
c++程序设计报告类与对象Word格式.docx
《c++程序设计报告类与对象Word格式.docx》由会员分享,可在线阅读,更多相关《c++程序设计报告类与对象Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
要求包括:
构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
三、实验内容与步骤
(1)程序源代码
#include<
iostream>
usingnamespacestd;
enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};
classCPU
{
public:
CPU(){}
CPU(enumCPU_Rankx,inty,doublez):
cpu_rank(x),frequency(y),voltage(z)
{
}
voidCPU_Run()
cout<
<
"
CPUrun!
!
endl;
voidCPU_Stop()
CPUstop!
~CPU()
析构函数被调用!
private:
CPU_Rankcpu_rank;
intfrequency;
doublevoltage;
};
/**
定义了CPU类
Cpu_rank是枚举数据成员
每个函数调用时都有输出特定的语句,方便观察函数的调用
**/
intmain()
CPUa(P1,3,4.3);
a.CPU_Run();
a.CPU_Stop();
return0;
}
程序运行结果截图
(2)程序源代码
#include<
cstring>
CPU(){}
CPU(enumCPU_Rankr,intf,doublevol);
CPU析构函数被调用!
CPU_Rankcrank;
CPU:
:
CPU(CPU_Rankr,intf,doublevol)
crank=r;
frequency=f;
voltage=vol;
classRAM
RAM(){}
RAM(intsi,intsp,stringstr);
~RAM()
RAM析构函数被调用!
intSize,Speed;
stringRam_Model;
//型号
RAM:
RAM(intsi,intsp,stringstr)
Size=si;
Speed=sp;
Ram_Model=str;
classCDROM
CDROM(){}
CDROM(stringstr);
~CDROM()
CDROM析构函数被调用!
stringCdrom_Model;
CDROM:
CDROM(stringstr)
Cdrom_Model=str;
classCOMPUTER
COMPUTER(){}
COMPUTER(CPUcpu,RAMram,CDROMcdrom);
voidComputer_Run()
Computerrun!
voidComputer_Stop()
Computerstop!
~COMPUTER()
Computer析构函数被调用!
CDROMC_cdrom;
RAMC_ram;
CPUC_cpu;
COMPUTER:
COMPUTER(CPUcpu,RAMram,CDROMcdrom):
C_cpu(cpu),C_ram(ram),C_cdrom(cdrom)
调用复制构造函数"
定义了Computer类,包括成员CPU,CDROM和RAM
子类的定义和上一题一样
enumCPU_Rankp1=P1;
CPUcpu(p1,0,0.0);
RAMram(0,0,"
xxxxxxx"
);
CDROMcdrom("
COMPUTERcomputer(cpu,ram,cdrom);
(3)程序源代码
classBirthday_date
Birthday_date(intx,inty,intz)
year=x;
month=y;
date=z;
};
voidsetdate(intx,inty,intz);
voidshowdate();
~Birthday_date()
Birthday_date析构函数被调用!
intyear,month,date;
voidBirthday_date:
setdate(intx,inty,intz)
year=x;
month=y;
date=z;
inlinevoidBirthday_date:
showdate()
year<
年"
month<
月"
date<
日"
classPeople
People(intx,charch,Birthday_datedate1,stringstr);
People(People&
a);
voidshowinformation();
~People()
析构函数被调用!
!
intnumber;
charsex;
stringid;
Birthday_datebirthday;
People:
People(People&
a):
birthday(a.birthday)
number=a.number;
sex=a.sex;
id=a.id;
People(intx,charch,Birthday_datedate1,stringstr):
birthday(date1)
number=x;
sex=ch;
id=str;
voidPeople:
showinformation()
编号:
number<
性别:
sex<
出生日期:
;
birthday.showdate();
身份证号:
id<
Birthday_datebirthday1(0,0,0);
intyear1,month1,date1,num=0;
charsex1;
stringid1;
请依次输入员工的编号,性别"
cin>
>
num>
sex1;
请输入员工出生日期"
year1>
month1>
date1;
birthday1.setdate(year1,month1,date1);
请输入员工的身份证号"
id1;
Peoplenum1(num,sex1,birthday1,id1);
num1.showinformation();
定义了People类和Birthday类,其中Birthday类内嵌在People类之中
Setdate来实现数据的初始化
4实验体会(实验遇到的问题及解决方法)
1.定义一个类需要定义它的构造、析构与复制构造等函数
2.构造函数创建对象并初始化数据、析构函数删除该对象
3.函数的执行顺序:
构造函数其他函数析构函数
4.组合类构造时先调用基类的构造函数
5.在cin后加上endl编译时会报错
6.构造组合类的对象使不但要对基本数据类型的成员进行初始化,还要对内嵌对象进行初始化
问题:
CPU类对象进行实参传递的时候,如果将CPU_Rank的值设为某一个数字(比如2),一直无法正常编译。
解决办法:
如果将上述数字2改为P2,则编译通过,且能正常运行。
后来查阅资料,才知道在进行实参传递的时候必须用声明的类型,而不能用数字,且如果没有指定第一个的数字,系用会将其第一个默认为0。
且在使用enum时各个命名之间用逗号分隔,而不是分号。
实验二数组、指针与字符串
四、实验目的
(1)学习使用数组。
(2)学习字符串数据的组织和处理。
(3)学习标准C++库的使用。
(4)掌握指针的使用方法。
(5)练习通过Debug观察指针的内容及其所指的对象的内容
(6)联系通过动态内存分配实现动态数组,并体会指针在其中的作用。
(7)分别使用字符数组和标准C++库练习处理字符串的方法。
五、实验原理
(1)编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。
(2)使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
(3)编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
(4)使用string类定义字符串对象,重新实现上一小题。
(5)定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。
实现并测试这个类。
(6)定义包含5个元素的对象数组,每个元素都是Employee类型的对象。
(7)(选做)修改实验4中的选做实验中的people(人员)类。
具有的属性如下:
姓名charname[11]、编号charnumber[7]、性别charsex[3]、生日birthday、身份证号charid[16]。
其中“出生日期”定义为一个“日期”类内嵌对象。
在测试程序中定义people类的对象数组,录入数据并显示。
六、实验内容与步骤
algorithm>
voidprint(intstr[][3])
for(inti=0;
i<
3;
i++)
for(intj=0;
j<
j++)
str[i][j]<
"
Print函数来实现打印二维数组的功能
使用了两个for()循环
voidtemp(int(*p)[3])
intstr[3][3];
str[j][i]=*(*(p+i)+j);
*(*(p+i)+j)=str[i][j];
Temp函数来实现矩阵的转制
使用到数组指针
ints[3][3];
s[i][j]=3*i+j+1;
初始化最初的二维数组
初始的矩阵为:
print(s);
temp(s);
转置后的矩阵为:
cstdlib>
int(*p1)[3]=newint[3][3];
*(*(p1+j)+i)=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p1+i)+j);
delete[]p1;
函数基本上和上一题函数相同
使用动态内存申请的方式,int(*p)[3]=newint[3][3]申请内存
Delete[]p1释放内存
(3)源程序代码
intfuc(char*res,chars1[],chars2[])
intlen1,len2,cnt=0,len;
len1=strlen(s1);
len2=strlen(s2);
len1;
*(res+i)=s1[i];
for(inti=len1;
(len1+len2);
*(res+i)=s2[cnt];
cnt++;
len=len1+len2;
returnlen;
charstr1[105],str2[105],ans[205];
intlen;
请输入第一个字符串:
str1;
请输入第二个字符串:
str2;
len=fuc(ans,str1,str2);
连接后的字符串为:
len;
ans[i];
(4)程序源代码
classString
String(charstr[]);
chargetchar(intn);
intgetlen();
chars[105];
String:
String(charstr[])
inti=0;
while(str[i]!
='
\0'
)
s[i]=str[i];
i++;
charString:
getchar(intn)
returns[n];
intString:
getlen()
len=strlen(s);
voidsplus(Strings1,Strings2)
intlen1,len2,cnt,len;
charans[205];
cnt=0;
len1=s1.getlen();
len2=s2.getlen();
ans[i]=s1.getchar(i);
ans[i]=s2.getchar(cnt);
自己定义了string类,splus实现字符串的相加
Stringstr1("
123"
Stringstr2("
456"
splus(str1,str2);
(5)程序源代码
classEmployee
Employee()
stringsi="
xxxxxxxx"
name=si;
address=si;
city=si;
codenum=si;
voidsetinformation(stringstr1,stringstr2,stringstr3,stringstr4);
voidchange_name(stringstr);
voiddisplay();
stringname;
stringaddress;
stringcity;
stringcodenum;
voidEmployee:
change_name(stringstr)
name=str;
display()
姓名:
name<
家庭住址:
address<
城市:
city<
邮编:
codenum<
setinformation(stringstr1,stringstr2,stringstr3,stringstr4)
name=str1;
address=str2;
city=str3;
codenum=str4;
Employeenum1;
strings1,s2,s3,s4,s5;
请输入员工姓名:
s1;
请输入员工家庭住址:
s2;
请输入员工所在城市:
s3;
请输入员工邮编:
s4;
num1.setinformation(s1,s2,s3,s4);
num1.display();
请输入修改后的员工姓名:
s5;
num1.change_name(s5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 报告 对象
![提示](https://static.bdocx.com/images/bang_tan.gif)