1、计算机专业学期三课程设计面向对象程序设计课程设计报告姓 名 小精灵学 号 20080808指导教师 徐嘉斌任务一. 1一、 任务内容:.1二、 设计思路.2三、 实现代码.2四、 运行结果及分析.3任务二. 4一、 任务内容:.4二、 设计思路.5三、 实现代码.5四、 运行结果及分析.6任务三. 6一、 任务内容:.6二、 设计思路.7三、 实现代码.7四、 运行结果及分析.9浙江理工大学科技与艺术学院机电系课程设计报告任务一一、 任务内容:完成内容:按照要求设计类(根据输出设计类)设计类就是根据数据封装的要求,抽象出适合的类。有如下测试程序和测试程序的输出结果,要求设计类Welcome。(
2、1)测试程序如下:voidmain()Welcomewe;Welcomeyou(we);you.Display();you.Set(“Thankyou.”);coutyou.Get()endl;you.talk();you.Display();(2)测试程序的输出结果如下:Welcome!Thankyou.输入:Howaboutyou?输出:Howaboutyou?输入:Fine,thankyou.输出:Fine,thankyou.输入:OKAllrightGoodbye!OKGoodbye!Goodbye!注:后面5行为倒数第6行输出后接下去的输出内容。(3)设计类Welcome的原则:1)
3、在头文件welcome.h中声明类2)在welcome.cpp中实现类3)使用内联函数定义Display()函数4)演示文件名用学号作主名。1浙江理工大学科技与艺术学院机电系课程设计报告二、 设计思路由给出的代码来构造此程序。开头部分,由Display输出Welcome,再用Get输出被Set存进的Thank you。利用循环函数While建立主体部分,输入OK时跳出循环。结尾部分,因为给出的代码中建立了两个对象,所以调用析构函数时可直接输出两个Goodbye。开始Welcome输入OKYdinlinevoidDisplay()voidSet(chara)char*Get()N输出输出“All
4、rightGoodbye”voidtalk()Welcome()Welcome(constWelcome&w)结束三、 实现代码/Welcome.h#include#includeusingnamespacestd;classWelcomeprivate:chard100;public:inlinevoidDisplay()coutdendl;voidSet(chara)strcpy(d,a);char*Get()returnd;voidtalk();Welcome();Welcome(constWelcome&a);Welcome()coutGoodbye!endl;Welcome()/12
5、1-2.cpp#include#include#includeWelcome.husingnamespacestd;voidmain()Welcomewe;Welcomeyou(we);you.Display();you.Set(Thankyou.);coutyou.Get()endl;you.talk();you.Display();2/121-1.cpp#include#include#includeWelcome.h浙江理工大学科技与艺术学院机电系课程设计报告;strcpy(d,OK);coutAllrightendl;coutGoodbye!endl;voidWelcome:talk(
6、)cout输入:;cin.getline(d,100);while(strcmp(d,OK)!=0)cout输出:dendl;cout和输出运算符,分数以1/2、-15/29这样的形式来输入和输出,注意分子、分母可能包含负号。在分数类中,还应重载+、-、*、/运算符。应有一个函数,对分数进行约分与规格化,在规格化之后,分母一定是正的,并且分子分母的最大分约数为1,如对4/-8正规化之后表示成-1/2。仿照计算器的运算过程,采用计算器方式进行有关分数运算。二、 设计思路(1)约分的关键是求分子分母的最大公约数,用Gcm(m,n)表示求m与n的最大公约数:当n=0时,Gcm(m,n)=m当n0时,
7、Gcm(m,n)=Gcm(n,m%n)可用递归编程实现Gcm(m,n)。(2)分数的四则运算可按如下方式进行:(3)利用Reduction函数将负号全都归到分子身上。(4)Operation函数来实现当运算符输入错误时的提示。(5)当除数为0时,main函数中有实现显示除数不能为0的设置。开始分数加法运算分数计分数减法运算分数乘法运算分数除法运算输入除数、被除数和除号分母为输出“不能为除数,请重新输入。Y算异常处理报告N0器自行约分负号转到分子为负数加括号输出结束4浙江理工大学科技与艺术学院机电系课程设计报告三、 实现代码#include#includevoidOperation(char&i
8、ndex);usingnamespacestd;classFractionprivate:intfz;intfm;intGcm(intm,intn);public:Fraction(intn=1,intd=1);Fraction();voidReduction();intGetFz()returnfz;intGetFm()returnfm;voidSetFz(intn);voidSetFm(intd);Fractionoperator+(Fraction&a);Fractionoperator-(Fraction&a);Fractionoperator*(Fraction&a);Fractio
9、noperator/(Fraction&a);friend ostream &operator(istream&is,Fraction&s);intFraction:Gcm(intm,intn)if(n=0)returnm;elsereturnGcm(n,m%n);voidFraction:Reduction()if(fm0)fz=-fz;fm=-fm;intf=Gcm(abs(fz),fm);fz=fz/f;fm=fm/f;voidOperation(char&index)for(;)coutindex;if(index=+|index=-|index=*|index=/)break;els
10、ecout(istream&is,Fraction&s)charch;intm,n;for(;)coutmchn;s.SetFz(m);s.SetFm(n);if(ch=/&n!=0)break;elsetryif(ch!=/)throw1;if(n=0)throw2;catch(inti)if(i=1)cout输入格式错误,请重新输入!iendl;elseif(i=2)cout分母为0,请重新输入!endl;5s.Reduction();returnis;浙江理工大学科技与艺术学院机电系课程设计报告r.fm=fm*a.fm;r.Reduction();returnr;FractionFrac
11、tion:operator*(Fraction&a)ostream&operator(ostream&os,Fraction&s)if(s.fz0)if(abs(s.fz)%s.fm=0)os(s.fz/s.fms.fm)os(s.fz/s.fm又s.fz%s.fm/s.GetFm();elseos(s.GetFz()/s.GetFm();elseif(s.fz%s.fm=0)oss.fz/s.fm;elseif(s.fz=0)oss.fm)oss.fz/s.fm又s.fz%s.fm/s.GetFm();elseoss.GetFz()/obj1;Operation(index);cinobj2
12、;if(index=+)r=obj1+obj2;elseif(index=-)r=obj1-obj2;elseif(index=*)r=obj1*obj2;elseif(index=/)6浙江理工大学科技与艺术学院机电系课程设计报告for(;)i=obj2.GetFz();coutobj1indexobj2=reif(i=0)ndl;cout不能为除数,couto;请重新输入。obj2;elsebreak;elsebreak;return0;r=obj1/obj2;四、 运行结果及分析图2分析:第一个加法运算体现了约分的功能,第二个减法运算体现了假分数的自行转换功能,第三个乘法运算体现了给负数
13、加括号的功能,第四个除法运算体现了自行将分母的负号提给分子的功能,以及最后五行体现了运算符错误的提示和分母为0的提示。7浙江理工大学科技与艺术学院机电系课程设计报告任务三一、 任务内容:要求:能够对文件进行存储和读取。要求用一个结构记载学生属性,编写一个学生类以完成各种操作。具体要求如下:(1)有10个小学生,每个学生有数学、语文两门课,从键盘输入学生的学号、姓名及成绩,计算每个学生的平均成绩,将数据存入stud.dat中。(2)学生的所有属性用一个结构进行描述。(3)要求对“”进行重载。(4)选作要求:可将两门课都不及格的学生信息从链表或数组中删除,并另存入bad.dat中;将学生姓名和平均
14、成绩抽取出来。(5)以下程序测试结果供参考(此处不列举)二、 设计思路建立两个类,并建立一个for循环来实现菜单的选择功能。使用链表储存输入的信息,当选择查找与删除数据时,通过链表来寻找用户要寻找的数据。菜单菜单功能选择增加原始记录显示各种文件保存原始文件查找学生成绩开始功能选择输入学生信息删除原始记录输入0?N修改学生信息Y结束程序运行结束8浙江理工大学科技与艺术学院机电系课程设计报告三、 实现代码#include#include#include#includeusingnamespacestd;classStudentpublic:charname20;charId20;intCnum;i
15、ntMnum;intsum;Student*Next;voidInput()coutname;coutId;coutCnum;coutMnum;sum=(Cnum+Mnum)/2;voidReadFile(istream&in)innameIdCnumMnumsum;voidShow()coutnametIdtCnumtMnumtsumtendl;classStudentmassagepublic:Studentmassage();Studentmassage();voidShowMenu();voidFind();voidSave();voidModifyItem();voidRemoveI
16、tem();voidSwap(Student*,Student*);voidSort();intListCount();voidDisplay()cout姓名t学号t语文t数学t平均Next;p!=End;p=p-Next)p-Show();coutInput();End-Next=newStudent;End=End-Next;cout添加成功!endl;coutNext!=End;p=p-Next)if(!strcmp(p-Next-name,name)returnp;returnNULL;Student*FindID(char*Id)for(Student*p=Head;p-Next!=End;p=p-Next)if(!strcmp(p-Next-Id,Id)returnp;9returnNULL;浙江理工大学科技与艺术学院机电系课程设计报告cout6.修改学生信息endl;cout0.结束程序运行endl;Studentmassage:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1