《计算机专业第三学期的课程设计.docx》由会员分享,可在线阅读,更多相关《计算机专业第三学期的课程设计.docx(30页珍藏版)》请在第壹文秘上搜索。
1、面向对象程序设计课程设计报告姓名小精灵学号20230808指导教师徐嘉斌目录任务一错误!未定义书签。一、 任务内容:错误!未定义书签。二、 设计思绪错误!未定义书签。三、 实现代码错误!未定义书签。四、 运行成果及分析错误!未定义书签。任务二错误!未定义书签。一、 任务内容:错误!未定义书签。二、 设计思绪错误!未定义书签。三、 实现代码错误!未定义书签。四、 运行成果及分析错误!未定义书签。任务三错误!未定义书签。一、 任务内容:错误!未定义书签。二、 设计思绪错误!未定义书签。三、 实现代码错误!未定义书签。四、 运行成果及分析错误!未定义书签。任务一一、任务内容:完毕内容:按照规定设计类
2、(根据输出设计类)设计类就是根据数据封装的规定,抽象出适合的类。有如下测试程序和测试程序的输出成果,规定设计类Welcomeo(1)测试程序如下:voidmain()Welcomewe;Welcomeyou(we);you.DisplayO;you.Set(Thankyou.,);coutyou.Get()endl;you.talk();you.DisplayO;(2)测试程序时输出成果如下:Welcome!Thankyou.输入:HOWaboutyou?输出:Howaboutyou?输入:Fine,thankyou.输出:Fine,thankyou.输入:OKAllrightGoodbye!
3、OKGoodbye!Goodbye!注:背面5行为倒数第6行输出后接下去B输出内容。(3)设计类WeIComeB原则:1)在头文献WelCome.h中申明类2)在welcome,cpp中实现类3)使用内联函数定义DiSPlay()函数4)演示文献名用学号作主名。二、设计思绪由给出B代码来构造此程序。开头部分,由Display输出Welcome,再用Get输出被Set存进1向Thankyou。运用循环函数While建立主体部分,输入OK时跳出循环。结尾部分,由于给出的J代码中建立了两个对象,因此调用析构函数时可直接输出两个Goodbye0三、实现代码/Welcome.h#include incl
4、ude using namespace std;voidtalk();Welcome();Welcome(constWelcome&a);-Welcome()coutGoodbye!endl;);WelcomedinlinevoidDisplayOvoidSet(chara)char*Get()voidtalk()classWelcomeprivate:/121-2.cppChardllOO;#includepublic:#includeinlinevoidDisplayOcoutdendl;);#includeWelcome.hMvoidSet(chara)strcpy(d,a););usi
5、ngnamespacestd;char*Get()returnd;);void main()Welcome we;Welcome you(we);you.Display();you.Set(Thank you.);coutyou.Get()endl;you.talk();you.Display();)/121-l.cpp#include #include #includeWelcome.hvoid Welcome: :talk()(CoUt输入:;cin.getline(d,100);while(strcmp(d,OK)!=0)(COUtv输出:dendl;CoUtv输入:”;cin.getl
6、ine(d,100););strcpy(d,OK,);cout,A11right,endl;cout,Goodbye!endl;1Welcome:Welcome(constWelcome&a)(strcpy(d,a.d);strcpy(d,Welcome!);)四、运行成果及分析c.C:DocuertsandSettingsAdinis:Tator桌面Debug121一1exe”Weleone!Ihankyou.输入:Howareyou?施(出:Howareyou?施入:Fine,thankyou.瑜出:Fine,thankyou.输入:OKAllrightGoodbye?OKGoodbye,
7、Goodbye?Pressanykeytocontinue分析:前面先自动输出WeICome!和Thankyou.,然后运用循环While函数反复顾客的输入。采用了多文献构造,运用构造函数、析构函数和拷贝构造函数将成果输出。最终调用析构函数输出“Goodbye!”任务二一、任务内容:规定:为分数定义一种类。分数定义为两个整数之比。将分数表达为int类型的两个值:一种表达分子,一种表达分母。重载输入和输出运算符分数以12-1529这样的I形式来输入和输出,注意分子、分母也许包括负号。在分数类中,还应重载+、-、*、/运算符。应有一种函数,对分数进行约分与规格化,在规格化之后,分母一定是正0,并且
8、分子分母B最大分约数为1,如对4/-8正规化之后表达成-1/2。仿照计算器B运算过程,采用计算器方式进行有关分数运算。二、设计思绪(1)约分的关键是求分子分母的最大公约数,用Gcm(m,n)表达求In与n时最大公约数:当n=0时,Gcm(m,n)=m当n0时,Gcm(m,n)=Gcm(n,m%n)可用递归编程实现GCm(m,n)0(2)分数的四则运算可按如下方式进行:acad+bcacadbCajCacacadbdbdbdbdbdbdbdbe(3)运用RedUCtion函数将负号全都归到分子身上。(4)Operation函数来实现当运算符输入错误时的提醒。(5)当除数为O时,IIIain函数中
9、有实现显示除数不能为O的设置。三、实现代码include#includevoidOperation(char&index);usingnamespacestd;classFraction(private:intfz;intfm;intGcm(intm,intn);Fraction(intn=Lintd=1);-Fraction();voidReduction();intGetFz()returnfz;);intGetFm()returnfm;voidSetFz(intn);voidSetFm(intd);Fractionoperator+(Fraction&a);Fractionoperato
10、r-(Fraction&a);Fractionoperator*(Fraction&a);Fractionoperator(Fraction&a);public:friendostream&operator(ostreamcinindex;&os,FraCtiOn&s);friendi stream&operator(istream&is,Fraction &s);;int Fraction:Gcm(int m,int n)(if(n=O)return m;else retum Gcm(n,m%n);)void Fraction:Reduction()(if(fmO)fz=-fz;fm=-fm
11、;)int f=Gcm(abs(fz),fm);fz=fzf;fm=fmf;)void Operation(char &index)for(;)if(index=,+index=-index=-*,index=7,)break;elsecout ”请输入对时H勺运算符:“;)Fraction:Fraction(int n,int d):fz(n),fm(d) Reduction();)void Fraction:SetFz(int n)fz=n;)void Fraction:SetFm(int d)fm=d;)istream &operator(istream &is,Fraction &s)
12、(char ch;int m,n;for(;)(CoUtmchn;s.SetFz(m);coutv”请输入运算符:;s.SetFm(n);if(ch=/&n!=O)break;else tryif(ch!=V) throw 1;if(n=0) throw 2;1catch(int i) if(i=l)COUt输入格式错误,请重新 输入!VViVVendl;else if(i=2)CoUI分母为0,请重新输 入!endl;)1)s.Reduction();return is;ostream &operator(ostream &os,Fraction &s)(if(s.fzO)(if(abs(s
13、.fz)%s.fm=O)os,(s.fzs.fms.fm)os,(s.fzs.fm 又 s.fz%s.fm,7s.GetFm(); else os(s.GetFz()7s.GetFm();)elseif(s.fz%s.fm=O) oss.fzs.fm;else if(s.fz=O)oss.fm)oss.fzs.fm又vvs.fz%s.fmvvvs.GetFm();elseFractionFraet沁n:OPeratOr(Fraction&a)oss.GetFz()7s.GetFm();1return os;)Fraction Fraction:operator+(Fraction &a) (Fraction r;r.fz=fz*a.fm+fm*a.fz;r.fm=fm*a.fm;r.Reduction();return r;)Fraction Fraction:operator-(Fraction &a)(Fraction r;r.f=fz*a.fm-fm*a.fz;r.fm=