计算机专业学期三课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》
课
程
设
计
报
告
姓名小精灵
学号20080808
指导教师徐嘉斌
目录
任务一 (1)
一、任务内容: (1)
二、设计思路 (2)
三、实现代码 (2)
四、运行结果及分析 (3)
任务二 (4)
一、任务内容: (4)
二、设计思路 (4)
三、实现代码 (5)
四、运行结果及分析 (7)
任务三 (8)
一、任务内容: (8)
二、设计思路 (8)
三、实现代码 (9)
四、运行结果及分析 (12)
任务一
一、任务内容:
完成内容:按照要求设计类(根据输出设计类)
设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome。(1)测试程序如下:
void main(){
Welcome we;
Welcome you(we);
you.Display();
you.Set(“Thank you.”);
cout< you.talk(); you.Display(); } (2)测试程序的输出结果如下: Welcome! Thank you. 输入:How about you? 输出:How about you? 输入:Fine,thank you. 输出:Fine,thank you. 输入:OK All right Goodbye! OK Goodbye! Goodbye! 注:后面5行为倒数第6行输出后接下去的输出内容。 (3)设计类Welcome 的原则: 1)在头文件welcome.h 中声明类 2)在welcome.cpp中实现类 3)使用内联函数定义Display()函数 4)演示文件名用学号作主名。 二、设计思路 由给出的代码来构造此程序。开头部分,由Display输出Welcome,再用Get 输出被Set存进的Thank you。利用循环函数While建立主体部分,输入OK时跳出循环。结尾部分,因为给出的代码中建立了两个对象,所以调用析构函数时可直接输出两个Goodbye。 三、实现代码 //Welcome.h #include #include using namespace std; class Welcome{ private: char d[100]; public: inline void Display(){cout< void Set(char a[]){strcpy(d,a);}; char *Get(){return d;}; void talk(); Welcome(){}; Welcome(const Welcome &a); ~Welcome(){cout<<"Goodbye!"< }; //121-2.cpp #include #include #include"Welcome.h" using namespace std; void main() { Welcome we; Welcome you(we); you.Display(); you.Set("Thank you."); cout< you.talk(); you.Display(); } //121-1.cpp #include #include #include"Welcome.h" void Welcome::talk() { cout<<"输入:"; cin.getline(d,100); while(strcmp(d,"OK")!=0) { cout<<"输出:"< cout<<"输入:"; cin.getline(d,100); }; strcpy(d,"OK"); cout<<"All right"< cout<<"Goodbye!"< } Welcome:: Welcome(const Welcome &a) { strcpy(d,a.d); strcpy(d,"Welcome!"); } 四、运行结果及分析 图 1 分析:前面先自动输出Welcome!和Thank you.,然后利用循环While函数重复用户的输入。采用了多文件结构,利用构造函数、析构函数和拷贝构造函数将结果输出。最后调用析构函数输出“Goodbye!” 任务二 一、任务内容: 要求:为分数定义一个类。分数定义为两个整数之比。将分数表示为int类型的两个值:一个表示分子,一个表示分母。 重载输入>>和输出运算符<<,分数以1/2、-15/29这样的形式来输入和输出,注意分子、分母可能包含负号。在分数类中,还应重载+、-、*、/运算符。 应有一个函数,对分数进行约分与规格化,在规格化之后,分母一定是正的,并且分子分母的最大分约数为1,如对4/-8正规化之后表示成-1/2。 仿照计算器的运算过程,采用计算器方式进行有关分数运算。 二、设计思路 (1)约分的关键是求分子分母的最大公约数,用Gcm(m,n)表示求m与n的最大公约数: 当n=0时,Gcm(m,n)=m 当n≠0时,Gcm(m,n)= Gcm(n,m%n) 可用递归编程实现Gcm(m,n)。 (2)分数的四则运算可按如下方式进行: (3)利用Reduction函数将负号全都归到分子身上。 (4)Operation函数来实现当运算符输入错误时的提示。 (5)当除数为0时,main函数中有实现显示除数不能为0的设置。