工学VC++计算器课程设计报告.docx
- 文档编号:15169530
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:20
- 大小:228.75KB
工学VC++计算器课程设计报告.docx
《工学VC++计算器课程设计报告.docx》由会员分享,可在线阅读,更多相关《工学VC++计算器课程设计报告.docx(20页珍藏版)》请在冰点文库上搜索。
工学VC++计算器课程设计报告
VC++计算器课程设计报告
一、作品名称:
计算器
二、本次课程设计的目的
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
三、主要功能
实现计算器的功能。
用户根据程序提示,输入数字或字符,选择要进行的运算,可以进行正弦、余弦、正切、开方、对数、加、减、乘、除、华氏温度与摄氏度之间的换算以及平方根的运算。
四、具体内容释解
1.初始运行界面如下:
2.进行正弦运算
3.进行混合运算
4.求平方根运算,根据用户输入与系统提示,运行过程依次如下:
5.进行华氏温度和摄氏度间的转化,运行如下:
6.进行测试
7.选择6键,回到菜单界面,运行如下:
五、备注:
1.#include为编译预处理命令,其作用是将源程序文件中的预处理命令进行处理,生成一个中间文件,编译系统再对此文件进行编译并生成目标代码,最后生成的代码中并不包含预处理命令。
2.#defineMAX100为宏定义,以后程序中再出现100,都用MAX代替。
3.exit()为库函数,其功能是终止程序运行,将流程控制返回给操作系统。
exit(表达式)通常把表达式的值作为终止程序的原因。
用0表示正常退出,其他整数值作为异常处理。
使用它时,要包含头文件stdlib.h。
4.voidtest();测试函数。
测试程序是由计算机出题、用户运算,计算机判断对错并给出分数,计算机用随机数发生器给出两个操作数。
六、附录(源程序)
计算器(calculator)--源代码及关键源代码注解如下:
#include
#include
#defineMAX100//宏定义
#include
#include
#include
#include
doublenumber1,number2,answer,number3,num[10000];//定义全局变量
intn,k=1;
charinput,val;//定义输入的运算符号
classoopcalc{
private:
doublex,y;//私有变量X和Y
doublefartocel(doublenumber1);//华氏温度转化为摄氏温度的函数声明
doubleceltofar(doublenumber1);//摄氏温度转化为华氏温度的函数声明
doublesqroot(doublenumber1);//
voidcalcsqr();
voidcalccos();
voidcalctan();
voidcalcsin();
voidcalclog();
public:
doublegetX(){returnx;}
doublegetY(){returny;}
doubleset(){x=number1;y=number2;}
doublecalcadd(doublenumber1,doublenumber2);//加法运算的函数声明
doublecalcsub(doublenumber1,doublenumber2);//减法运算的函数声明
doublecalcdiv(doublenumber1,doublenumber2);//除法运算的函数声明
doublecalcmult(doublenumber1,doublenumber2);//乘法运算的函数声明
voidcalcfartocel();
voidcalcceltofar();
voidcalcsroot();
voidexitprog();
voidmenu();//主菜单函数
voidcaculate();//混合运算函数的函数声明
voidtest();//测试函数的函数声明
voidbadinput();
};
voidoopcalc:
:
calcsin()//类体外函数,定义正弦函数
{
cout<<"TheSinFunction\n";
cout<<"Enteranumber:
";
cin>>number1;
answer=sin(number1);
cout<<"Thesinof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calccos()//类体外函数,定义余弦函数 { cout<<"TheCosFunction\n"; cout<<"Enteranumber: "; cin>>number1; answer=cos(number1); cout<<"Thecosof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calctan()//类体外函数,定义正切函数 { cout<<"TheTanFunction\n"; cout<<"Enteranumber: "; cin>>number1; answer=tan(number1); cout<<"Thetanof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calcsqr()//求平方的函数 { cout<<"ThesqrFunction\n"; cout<<"Enteranumber: "; cin>>number1; answer=(number1*number1); cout<<"Thesqrof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calclog()//对数函数 { cout<<"TheLogFunction\n"; cout<<"Enteranumber: "; cin>>number1; if(number1<=0) { cout<<"Badinput! \n"; cout<<"Pressanykeytocontinue\n"; getch(); menu(); } else answer=log(number1); cout<<"Thelogof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } doubleoopcalc: : calcadd(doublenumber1,doublenumber2)//加法运算 { answer=number1+number2; return(answer); } doubleoopcalc: : calcsub(doublenumber1,doublenumber2)//减法运算 { answer=number1-number2; return(answer); } doubleoopcalc: : calcdiv(doublenumber1,doublenumber2)//除法运算 { if(number2==0){getch();//排除除数为零的情况 menu();} else answer=number1/number2; return(answer); } doubleoopcalc: : calcmult(doublenumber1,doublenumber2)//乘法运算 { answer=number1*number2; return(answer); } voidoopcalc: : calcfartocel()//华氏温度转化为摄氏温度 { cout<<"TheFarenheittoCelsiusFunction\n"; cout<<"EnteratempatureinFarenheit: "; cin>>number1; answer=((number1-32)*5)/9; cout<<"ThetempatureinCelsiusis"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calcceltofar()//摄氏温度转化为华氏温度 { cout<<"TheCelsiustoFarenheitFunction\n"; cout<<"EnteratempatureinCelsius: "; cin>>number1; answer=number1*9/5+32; cout<<"ThetempatureinFarenheitis"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : calcsroot()//求平方根的函数 { cout<<"TheSquareRootFunction\n"; cout<<"Firstnumber: "; cin>>number1; if(number1<0){//排除负数开平方根 cout<<"yourenterisincorrect,pleaseenteranewnumber\n"; getch(); menu(); } else answer=sqrt(number1); cout<<"Thesquarerootof"< cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidoopcalc: : exitprog() { exit(-1); } voidoopcalc: : menu() { oopcalca; system("cls");//执行系统命令: cls-清屏 cout<<"==================MENU===============\n"; cout<<"s: 选择s进行正弦运算\n"; cout<<"c: 选择c进行余弦运算\n"; cout<<"t: 选择t进行正切运算\n"; cout<<"g: 选择g进行对数运算\n"; cout<<"n: 选择n进行求平方运算\n"; cout<<"1: 选择1进行混合运算\n"; cout<<"2: 选择2进行华氏温度转化为摄氏温度的运算\n"; cout<<"3: 选择3进行摄氏温度转化为华氏温度的运算\n"; cout<<"4: 选择4进行求平方根运算\n"; cout<<"5: 选择5进行测试\n"; cout<<"6: 选择6退出运算\n"; cout<<"请选择: "; cin>>input; cout<<"=====================================\n"; switch(input) { case's': case'S': a.calcsin(); break; case'c': case'C': a.calccos(); break; case't': case'T': a.calctan(); break; case'g': case'G': a.calclog(); break; case'n': case'N': a.calcsqr(); break; case'1': a.caculate(); break; case'2': a.calcfartocel(); break; case'3': a.calcceltofar(); break; case'4': a.calcsroot(); break; case'5': a.test(); break; case'6': a.exitprog(); break; default: a.badinput(); } } voidoopcalc: : caculate() { oopcalca; cout<<"TheMultifunction(混合四则运算)\n"; for(intn=1;;n++){ cout<<"Number"< "; cin>>num[n];//输入要运算的数 if(num[n]==0){//遇到0为止 cout<<"Pressanykeytocontinue\n"; getch(); menu();} switch(k) { case1: if(n==1){answer=num[1];break;}//如果第一个数则不进行运算 else{answer=a.calcadd(answer,num[n]);//如果不是第一个数进行运算 cout<<"Theansweris"< break;} case2: if(n==1){answer=num[1];break;}//如果第一个数则不进行运算 else{answer=a.calcsub(answer,num[n]);//如果不是第一个数进行运算 cout<<"Theansweris"< case3: if(n==1){answer=num[1];break;}//如果第一个数则不进行运算 else{answer=a.calcmult(answer,num[n]);//如果不是第一个数进行运算 cout<<"Theansweris"< case4: if(n==1){answer=num[1];break;}//如果第一个数则不进行运算 else{answer=a.calcdiv(answer,num[n]);//如果不是第一个数进行运算 cout<<"Theansweris"< } label1: cout<<"Pleasechoosethefunctionyouwant(+or-or*or/): \n"; cin>>val; switch(val) { case'+': k=1;break; case'-': k=2;break; case'*': k=3;break; case'/': k=4;break; default: cout<<"Badinput! \n";gotolabel1; } } } voidoopcalc: : test()//测试函数 { cout<<"TheTestFunction\n"; ints; floatp; s=rand()%4+1;//随机给出题目的+或-或*或/ srand(time(NULL)); number1=rand()%MAX+1;//在1~100之间随机给出数字 number2=rand()%MAX+1; switch(s) { case1: cout< answer=calcadd(number1,number2); break; case2: cout< answer=calcsub(number1,number2); break; case3: cout< answer=calcdiv(number1,number2); break; case4: cout< answer=calcmult(number1,number2); break; } cin>>p; if(answer==p){cout<<"Correct! Youareveryclever! \n";} else{cout<<"NO! Thecorrectansweris"< cout<<"Pressanykeytocontinue\n"; cout< getch(); menu(); } voidoopcalc: : badinput() { cout<<"BADINPUT! \n"; cout<<"Pressanykeytocontinue\n"; getch(); menu(); } voidmain() { oopcalcs; s.menu(); } 七、心得体会 这个程序其实并不是由我一人独立完成的,在程序的设计和编译过程当中,我得到了许多学长学姐以及同学们的帮助和辅导,整个完成过程既单调又精彩。 单调的是这项共作本身就需要耐下心来,仔细琢磨,反复调试,尤其在错误百出却又找不到解决方法时,仅仅用苦闷或者发愁怕是无法表达出那种心情的,失望却不能绝望。 我们重整旗鼓,一次又一次地修改着,尝试着……枯燥而乏味。 但当我们看到程序能顺利运行时,那种喜悦远远超出了当初失败的郁闷之情。 这次课程设计让我获益匪浅,我懂得了,做出一个优秀的程序,不是一蹴而就的事情,更不是马马虎虎随随便便就能成功的。 它需要绝对严谨的学习作风和一丝不够的认真态度。 说实话,我的VC++学的并不是很好,所以刚接到这个任务的时候,心里很是忐忑不安,很没信心。 但是通过真正的动手实践,不仅唤起了我对VC++程序设计的兴趣和热情,我的能力也有了一定的提高。 真的是好处多多呀。 所以非常感谢老师及学校给我们提供这样的学习环境和机会,让我们能更进一步的把书本上的知识和实践行动结合在一起,从而更好的掌握这一课程。 此外,此次课程设计也使我从实践中认识到了,VC++6.0真的是一个非常强大并且十分高效的开发系统,很值得我们进一步去学习它、研究它、应用它。 在此,我向在一直以来在课程设计过程中所有给予我们帮助的老师、同学表示衷心的感谢。 最后,感谢学院、老师给予我这样一个机会,亲身实践自己的所学,让我的大学生活更加丰富多彩,谢谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工学 VC 计算器 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)