c语言程序设计课程设计报告分数计算器.docx
《c语言程序设计课程设计报告分数计算器.docx》由会员分享,可在线阅读,更多相关《c语言程序设计课程设计报告分数计算器.docx(15页珍藏版)》请在冰点文库上搜索。
c语言程序设计课程设计报告分数计算器
《C++语言程序设计》课程设计报告
姓名:
指导
学号:
班级:
10计本2班
日期:
2011年05月20日
计算机科学与技术系课程设计评分表
课程名称:
面向对象程序设计分数计算器
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
功能完善度
综合成绩
学号
班级
姓名
综合成绩
教师签名:
日期:
C++语言课程设计——简单计算器
说明书
一、设计目标
制作一个分数计算器,以完成分数之间,分数与整数之间的四则运算,以及求分数的指数。
系统界面不做牵制要求。
在进行运算后可以选择继续运算或者进行下一次新的运算,能实现返回功能。
二、设计图
1、总体设计图
2、详细图
case1
case2
case3
fenshu()
js()
js()
zs()
模块功能说明及调用关系说明:
三、图解
1、欢迎使用简单计算器
2、等待系统进入主菜单
在此选择计算类型【选择代码,回车确定】
1、为选择分数与分数之间的四则运算、
2、为选择分数与整数之间的四则运算
3、为分数的指数运算
0、为安全退出程序
3、选择分数与分数之间的四则运算
分数与分数的加法如:
18/5+16/3=134/15
分数与分数的减法如:
1/6-/2=-1/3
注:
在此举例分数与分数的加法、减法
计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择
4、选择分数与整数之间的四则运算
分数与整数的乘法如:
1/2*2=1/1
分数与整数的加法如:
1/5+6=31/5
注:
在此举例分数与整数的乘法、加法
计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择
5、选择分数的指数运算
如:
1/3的2次方等于1/9
如:
2/3的2次方等于4/9
6、安全退出
注:
计算完成后,按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择
至此,以安全退出。
。
。
四、调试和测试
<1>、调试方法:
首先打开MicrosoftVisualC++6.0,运行程序,出现错误修改再运行,直至运行结果0error,0warning结束。
接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。
<2>、调试时出现的问题及解决方案:
1、当多次运行程序时,屏幕被运行数据占满,显得很杂乱。
解决方案:
引用清屏函数。
2、在进行运算时要实现反复运算得有返回功能,由于我们
程序分支,不能正常的调用完毕后进入下一个循环,自动返回。
解决方案:
直接在switch的cash语句中直接调用所需返回的函数。
按y或n,选择是否继续,y则继续本类运算,n为返回到主菜单,再次进行选择
3、在一次运算完毕后如何不返回继续作下一次的相同运算。
解决方案:
作用循环语句,结果始终为真,结尾利用if语句控制是否跳入上级菜单或者continue。
4、如何在欢迎界面停留时间。
解决方案:
通过for循环,执行无条件的";"的语句,通过执行次数控制程序在欢迎界面的停留时间。
5、还有一些小错误,比如未声明就直接使用变量、未对一些变量初始化、声明是空值函数却有返回值、缺少";"、使用getch(),system("cls")却缺少相应的头文件,出现警告…………
五、分析及结论
在做这个课程设计报告之初是仿照以前的计算器,但是,由于程序行数做了要求,而且题目要求不一样,所以我就在仿照以前的计算器的同时,进一步完善其功能。
该程序是我经过多次编写,修改,在不懂的问题上,与指导朋友——刘华和刘洋一起讨论,根据观察其他程序,通过菜单选择实现不同功能得到的启发,将自己所需实现的功能通过文字形式的菜单表现出来。
然后再菜单处进行选择计算类型,正常完成计算,返回和退出。
我最满意的地方是“清屏”和“在界面上停留的时间”,总之这个程序基本能符合我自己的要求。
不足之处:
1、代码重用;
2、不能熟练的运用类;
3、没有用到指针和数组,对数组和指针还不能很好的运用。
心得体会:
通过这次课程设计我对这学期所学的C++语言的理论知识得到巩固,达到该设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意。
同时体会到C++语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。
发现自己对指针还不能正确使用。
通过实际操作,学会C++语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。
六、附录
附录源代码:
#include
#include//数学函数的定义
#include//屏幕操作函数
#include//库函数
constintn=;
usingnamespacestd;
intxz;
classjsq
{
public:
jsq(){}
~jsq(){}
menu();//菜单
fenshu();//分数之间的运算
js();//整数与分数运算
start();//开始
zs();//分数的指数运算
tc();//退出
fun(intt,intf);//约分函数
private:
inta,b,c,d,i,r,t,t1,f,f1,x;
charn,q;
};
voidcd()//进入界面
{
inti,j;
cout<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"★***★欢迎使用分数计算器★***★"<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<cout<<"||★★★★★★★★★★★★★★★★★★★★★★★★||"<cout<<"||★********************************************★||"<cout<<"||★重庆工商大学派斯学院★||"<cout<<"||★计算机科学系★||"<cout<<"||★制作人:
10计本2邓寅森★||"<cout<<"||★2011年5月★||"<cout<<"||★********************************************★||"<cout<<"||★★★★★★★★★★★★★★★★★★★★★★★★||"<{
cout<for(i=0;icout<<"在";
for(i=0;icout<<"进";
for(i=0;icout<<"入";
for(i=0;icout<<"系";
for(i=0;icout<<"统";
for(i=0;icout<<",";
for(i=0;icout<<"请";
for(i=0;icout<<"稍";
for(i=0;icout<<"等";
for(i=0;ifor(j=0;j<=6;j++)
{
cout<<".";
for(i=0;i}
for(i=0;i<8*n;i++);
cout<cout<}
for(j=0;j<=50;j++)
{
cout<<"<";
for(i=0;i<=;i++);
}
}
jsq:
:
menu()//主菜单
{
do{
system("cls");//清屏
cout<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"★******************简单计算器******************★"<cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"1:
分数之间的运算"<cout<<"2:
整数与分数运算"<cout<<"3:
分数的指数运算"<cout<<"0:
退出"<cout<<"请按键选择,回车确定";
cin>>xz;
}while(xz<0||xz>3);//循环结束条件
}
jsq:
:
start()//自定义科学函数
{
jsqjs;
js.menu();
while(xz>=1&&xz<=3)
{
switch(xz)
{
case1:
{
js.fenshu();
break;
}
case2:
{
js.js();
break;
}
case3:
{
js.zs();
break;
}
}
cout<cout<<"是否继续进行运算(Y\\N):
";//提示是否继续
if(getch()=='n')
js.menu();//调用标准函数实现返回
elsecontinue;//重复上一次法则运算
}
if(xz==0)
js.tc();
}
jsq:
:
fun(intt=0,intf=0)//约分
{
intr,t1=t,f1=f;
while((r=t%f)!
=0)
{t=f;
f=r;
}
t1=t1/f;
f1=f1/f;
cout<"<}
jsq:
:
tc()//退出
{
cout<for(;i<30000;i++);/*控制界面停留时间*/
system("cls");//清屏
cout<cout<<"★谢谢使用★"<cout<<"★bay-bay★"<cout<<"★★★★★★★★★"<for(;i<0;i++);/*控制界面停留时间*/
system("cls");//清屏
}
jsq:
:
fenshu()//自定义分数函数
{
jsqjs;
system("cls");
cout<cout<<"======================"<cout<<"欢迎使用分数之间的计算"<cout<<"======================"<cout<<"输入第一个分数【形如:
1/2】:
";
cin>>a>>n>>b;
cout<";
cin>>q;
cout<1/2】:
";
cin>>c>>n>>d;
if(b==0||d==0)
{cout<switch(q)
{
case'+':
t1=t=a*d+b*c;//分子
f1=f=b*d;//分母
js.fun(t1,f1);
break;
case'-':
t1=t=a*d-b*c;
f1=f=b*d;
js.fun(t1,f1);
break;
case'*':
t1=t=a*c;
f1=f=b*d;
js.fun(t1,f1);
break;
case'/':
t1=t=a*d;
f1=f=b*c;
js.fun(t1,f1);
break;
}
}
jsq:
:
js()//自定义分数函数【分数+整数】
{
system("cls");//清屏
cout<cout<<"======================"<cout<<"欢迎使用分数与整数运算"<cout<<"======================"<cout<<"输入第一个分数【形如:
1/2】:
";
cin>>a>>n>>b;
cout<";
cin>>q;
cout<1】:
";
cin>>x;
if(b==0)
{cout<switch(q)
{
case'+':
t1=t=x*b+a;
f1=f=b;
fun(t1,f1);
break;
case'-':
t1=t=a-b*x;
f1=f=b;
fun(t1,f1);
break;
case'*':
t1=t=a*x;
f1=f=b;
fun(t1,f1);
break;
case'/':
t1=t=a;
f1=f=b*x;
fun(t1,f1);
break;
}
}
jsq:
:
zs()//分数的指数
{
system("cls");
cout<cout<<"======================"<cout<<"欢迎使用分数的指数计算"<cout<<"======================"<cout<形如1/2】:
";
cin>>a>>q>>b;
cout<<"请输入指数【实数:
形如2】:
";
cin>>c;
t=pow(a,c);
f=pow(b,c);
cout<"<}
voidmain()//主函数
{
jsqa;
cd();//调用菜单函数
a.start();//调用开始函数
}