面向对象程序设计课程设计报告正文.docx

上传人:b****7 文档编号:11495702 上传时间:2023-03-02 格式:DOCX 页数:17 大小:46.54KB
下载 相关 举报
面向对象程序设计课程设计报告正文.docx_第1页
第1页 / 共17页
面向对象程序设计课程设计报告正文.docx_第2页
第2页 / 共17页
面向对象程序设计课程设计报告正文.docx_第3页
第3页 / 共17页
面向对象程序设计课程设计报告正文.docx_第4页
第4页 / 共17页
面向对象程序设计课程设计报告正文.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

面向对象程序设计课程设计报告正文.docx

《面向对象程序设计课程设计报告正文.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计报告正文.docx(17页珍藏版)》请在冰豆网上搜索。

面向对象程序设计课程设计报告正文.docx

面向对象程序设计课程设计报告正文

目录

1前言1

2需求分析1

2.1任务和要求1

2.2运行环境1

2.3开发工具1

3分析和设计1

3.1系统分析及设计思路1

3.2主要类图1

3.3函数流程图2

4具体代码实现2

5课程设计总结2

5.1程序运行结果或预期运行结果2

5.2设计结论2

参考文献2

致谢2

1前言

随着科学的进步和科技的发展,计算机的应用可以说是家喻户晓,但是随着计算机应用领域的不断扩大,计算机已经深入到社会和生活的各个领域,而对于我们21世纪的青年来说,在社会主义发展的新阶段,更应该了解和掌握时代的脉搏,通晓计算机的知识和识别计算机的语言,在掌握了C++语言的概念和语法后,能熟悉掌握面向对象程序设计的编程方法及各种编程技巧,并能够利用简洁的语句编写出高效、完整,以解决在生活中各个方面遇到的具体问题,且为程序语言的软件编程奠定基础,也是在C语言程序的基础之上,使我对计算机语言有了更进一步的理解,和更深一步的认知。

同时通过用C++程序设计语言的应用,可以让我们提高学生的C++编程水平,让我们能够学有所获,灵活的运用所学知识,来实现机器语言。

2需求分析

2.1任务和要求

(1)该程序是分数计算器,程序能完成基本的加减乘除算术运算,要求界面提示清楚,便于操作。

(2)以a/b的形式输入输出分数,对输出结果可以约分的分数要进行约分。

(3)程序具有判断功能,当有非法的输入时(如分母等于零等),能给出提示信息并退出运算

(4)程序能以菜单形式显示相应的运算。

2.2运行环境

(1)WINDOWS2000/XP系统

(2)VisualC++6.0编译环境或DEVC++5.0编译环境

2.3开发工具

C++语言

3分析和设计

3.1系统分析及设计思路

该程序是分数计算器,所以要完成分数与分数之间的加、减、乘、除、乘运算和分数与整数之间的加、减、乘、除、乘运算,以及分数的幂运算。

程序分为以下几个模块:

1.类模块

该模块主要是定义一个分数类Fraction。

其中包括两个私有成员numerator(分子),denominator(分母),并对在后面需要用到的程序进行声明。

Fraction(){numerator=1;denominator=1;}//定义构造函数

Fraction(intn,intd){numerator=n;denominator=d;}

用两个构造函数对私有成员numerator(分子)、denominator(分母)进行初始化。

具体实现代码如下;

classFraction//声明分数类

{

public:

Fraction(){numerator=1;denominator=1;}//定义构造函数

Fraction(intn,intd){numerator=n;denominator=d;}

voidsimplify();//声明约分函数

voidsetdate();//声明输入函数

voiddisplay();//声明输出函数

voidpower();//声明分数的幂函数

friendvoidcalculate();//声明计算方法函数

Fractionoperator+(Fraction&f2);//声明重载分数和分数的加法运算符

Fractionoperator-(Fraction&f2);//声明重载分数和分数的减法运算符

Fractionoperator*(Fraction&f2);//声明重载分数和分数的乘法运算符

Fractionoperator/(Fraction&f2);//声明重载分数和分数的除法运算符

//Fractionoperator*=(Fraction&f2);

Fractionoperator+(int&i2);//声明重载分数和整数的加法运算符

Fractionoperator-(int&i2);//声明重载分数和整数的减法法运算符

Fractionoperator*(int&i2);//声明重载分数和整数的乘法运算符

Fractionoperator/(int&i2);//声明重载分数和整数的除法运算符

private:

intnumerator,denominator;//定义分数的分子和分母

};

2.重载模块

由于是特殊的函数成员对象之间相互运算,所以需要使用运算符重载功能,以便用来计算数据之间的大小。

该模块有两个部分:

一个部分是对分数和分数的四则运算符重载。

四则运算的原理为:

加法原理:

结果的分子是两个数的分子分母交换相乘相加的和,结果的分母是两分母相乘。

减法的原理与加法类似。

乘法的原理:

分母相乘,分子相乘。

除法的原理:

第二个分数的分子分母互换,再使用乘法原理。

实现代码如下:

FractionFraction:

:

operator+(Fraction&f2)//重载分数与分数运算符+

{Fractionf;

f.numerator=numerator*f2.denominator+denominator*f2.numerator;

f.denominator=denominator*f2.denominator;

returnf;

}

FractionFraction:

:

operator-(Fraction&f2)//重载分数与分数运算符-

{Fractionf;

f.numerator=numerator*f2.denominator-denominator*f2.numerator;

f.denominator=denominator*f2.denominator;

returnf;

}

FractionFraction:

:

operator*(Fraction&f2)//重载分数与分数运算符*

{Fractionf;

f.numerator=numerator*f2.numerator;

f.denominator=denominator*f2.denominator;

returnf;

}

FractionFraction:

:

operator/(Fraction&f2)//重载分数与分数运算符/

{Fractionf;

f.numerator=numerator*f2.denominator;

f.denominator=denominator*f2.numerator;

returnf;

}

另一个部分是分数与整数的四则运算符重载。

在做分数与整数的四则运算时,只要将整数看成是分母为1的分数,其他的和分数与分数的四则运算类似。

实现将整数看成分数的语句如下:

(i2是用户定义的整数)

Fractionf2;

f2.numerator=i2;

f2.denominator=1;

3输入输出约分模块

在输入函数中用cin>>numerator>>ch>>denominator;输入一个分数,形如a/b。

再用一个for语句来判断输入的分数是否符合要求。

for(;denominator==0;)

{

cout<<"输入错误,分母不能为零!

"<

setdate();

break;

}

在输出函数中,用几个if语句来考虑分数输出结果的几种情况。

当分子为0时,则输出0,;当分子是分母的整数倍时,则一个整数numerator/denominator;否则,输出分数a/b的形式。

实现代码如下:

if(numerator==0)//当分子为0时,输出0

cout<<'0'<

else

if(numerator%denominator==0)//当分子是分母的整数倍时,输出一个整数

cout<

else

cout<

}

在约分函数中,先用一个for语句和一个if语句来判断分子与分母是否有公约数,如果有,分子分母除以这个公约数,一以实现约分。

实现代码如下:

for(i=1;i<=denominator&&i<=numerator;i++)

{

if(denominator%i==0&&numerator%i==0)

{

sum=i;

if(sum!

=1)

{

numerator=numerator/sum;

denominator=denominator/sum;

}

}

}

4.计算模块

此模块主要是对计算具体过程的实现。

在这个过程中,我们要用到system("cls")进行清屏,这样可以使界面更为清晰,直观。

首先是分数与分数的四则运算的实现。

用一个fraction函数来调用calculate函数,在calculate函数中,通过调用输入函数setdate来输入两个分数,并定义字符ch,用来选择要输入的运算符(“+”、“-”、“*”、“/”)在调用约分函数simplify函数和输出函数display函数来输出最终的计算结果。

在计算完成后用一个if语句来判断是否继续进行当前的运算。

具体实现代码如下:

voidcalculate()

{charch,ch1;

Fractions,f1,f2;

f1.setdate();

cin>>ch;

f2.setdate();

switch(ch)//选择运算符“+”、“-”、“*”、“/”

{case'+':

s=f1+f2;break;

case'-':

s=f1-f2;break;

case'*':

s=f1*f2;break;

case'/':

s=f1/f2;break;

}

f1.display();

cout<

f2.display();

cout<<"=";

s.simplify();

s.display();

cout<

cout<<"是否继续进行计算?

(Y/N):

";

cin>>ch1;

if(ch1=='n')

k=0;

system("cls");

}

然后是分数与整数的四则运算的实现。

在此过程中,我们只需要自定义一个整数,其他实现过程和分数与分数的四则运算的实现过程类似。

最后是分数的幂运算的实现。

在进行幂运算时,也要注意不同情况,先要用if判断语句来判断是否为0次幂,若是则输出1。

否则就用一个for语句通过累乘来计算。

在调用约分函数simplify函数和输出函数display函数来输出最终的计算结果。

在计算完成后用一个if语句来判断是否继续进行当前的运算。

具体实现代码如下:

voidpower()//定义分数的幂运算函数

{system("cls");//清屏

Fractionf,f1;

intn,i;

charch1;

f.setdate();

cin>>n;

if(n==0)//如果是0次幂,则输出1

cout<<"f="<<1<

else

{for(i=1;i<=n;i++)

{f1=f1*f;//计算分数的多次幂

}

f.display();

cout<<"^"<

f1.simplify();//调用约分函数

f1.display();

cout<

cout<<"是否继续进行计算?

(Y/N):

";

cin>>ch1;

if(ch1=='n')

k=0;

system("cls");

}

}

5主函数模块

用为该分数计算器的特点是实现对分数进行加减乘除幂操作,根据这个特点在主函数设计菜单,列出这个程序所有能进行的功能。

用switch语句来判断用户选择的功能并进行相应的运算。

调用fraction()是进行分数与分数的四则运算。

调用integer()是进行分数与整数的四则运算。

调用power()是进行分数的幂运算。

在每次计算后再用一条if语句来判断是否继续运行。

当不再使用此分数计算器是,则按0退出,并显示“谢谢您的使用”的界面。

具体实现代码如下:

intmain()

{

charch1;

while(k!

=0)

{system("cls");//清屏

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

cout<<"********************"<

cout<<"**********欢迎使用分数计算器**********"<

cout<<"********************"<

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

cout<

cout<<"*******************************"<

cout<

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

cout<<"**********1.分数与分数的四则运算**********"<

cout<<"**********2.分数与整数的四则运算**********"<

cout<<"**********3.幂**********"<

cout<<"**********0.退出**********"<

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

cin>>k;

switch(k)//选择计算类型

{

case1:

{system("cls");//清屏

fraction();//分数与分数的运算

cout<<"是否继续进行分数与分数的计算?

(Y/N)";

cin>>ch1;

if(ch1=='n')

{k=5;break;};

}

case2:

{

system("cls");//清屏

integer();//分数与整数的运算

cout<<"是否继续进行分数与整数的计算?

(Y/N)";

cin>>ch1;

if(ch1=='n')

{k=5;break;};

}

case3:

{

system("cls");//清屏

power();//分数的幂运算

cout<<"是否继续进行分数的幂计算?

(Y/N)";

cin>>ch1;

if(ch1=='n')

{k=5;break;};

}

case5:

continue;

}

}

system("cls");//清屏

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

cout<<"********************"<

cout<<"**********谢谢您的使用**********"<

cout<<"********************"<

cout<<"**********∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽**********"<

return0;

}

3.2主要类图

+共有成员

-私有成员

#保护成员

 

3.3函数流程图

根据需要填上具体内容,没有重要的流程图可以不填。

 

4具体代码实现

写上源程序,并加上必要的注释。

5课程设计总结

5.1程序运行结果或预期运行结果

程序运行的主菜单模式:

图5.1主界面图

当分母为0时,显示出错信息:

图5.2错误提示

两个分数相加,并对输出结果进行约分:

图5.3两个分数相加图

两个分数相减,且最终的计算结果中分母为0时,则输出0。

.

图5.1两个分数相减图

两个分数相乘,且最终计算结果分子是分母的整数倍,则输出一个整数numerator/denominator。

图5.1分数与整数相乘图

分数的幂运算。

图5.1分数幂运算图

 

按0则退出,显示“欢迎使用的界面”。

图5.1退出界面图

5.2设计结论

试验中,我们按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;

通过对例题的学习,我们最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;

编码的速度有一个从慢到快的过程,在本次试验中,我们的速度依然比较慢,这看出我们平时编码比较少,缺乏熟练度,并对算法了解不深入;

但是我们的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。

再以后我们将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。

1.编码要尽量使程序简单,采用最切实可靠的算法,实现封装,不同部分的代码应分工明确,最后由主函数统一调用;

2.编写完成后先自己检查一遍代码,然后由机器检测,找出错误的根源,从不同角度思考如何解决问题;

3.测试时应尽可能输入各种可能情况的数据以确保程序准确无误。

4.应避免任何可能的漏洞,使代码的可用性和可靠性增强。

5.试验中,我按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;

6.通过对例题的学习,我最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;

7.编码的速度有一个从慢到快的过程,在本次试验中,我的速度依然比较慢,这看出我平时编码比较少,缺乏熟练度,并对算法了解不深入;

8.但是我的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。

再以后我将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。

本次试验中,我们先将书上的代码编译通过,通过讨论,认为书上检查异常的方式不便于理解,于是直接采用输出到dos窗口的方式,所以没有使用到utility.h头文件,同时,由于我们电脑上安装的编译系统不方便对.h文件进行调试修改,所以我们采用的cpp文件,在一个cpp文件中写下所有代码。

对于txt文件输出的格式,我们做的稍微人性化,界面简洁,容易区分

 

参考文献

[1]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1

[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:

辽宁大学出版社,2008.

[3]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:

中国铁道出版社,2008.

致谢

经过两周的课程设计,我学到了许多关于c++的知识,我要感谢罗老师对我们的耐心指导,同时,我也感觉到了团队的力量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1