




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计大作业 -简易计算器程序 姓名: * 学号: * 班级: 信息09-1班 学院:信息科学与工程学院计算器1 编程目的a) 掌握c+程序设计语言,学会编写简易的程序。b) 能够根据实际问题编译其解决办法。c) 计算器设计,能进行加减乘除平方基本运算,二进制,十进制,八进制,十六进制之间的转换,三角的计算等功能。2 系统简介运用C+6.0呈现一定的友好界面进行简单的运算3 编程思路根据C+语言,将具体实现某个功能的函数设成计算器类的共有函数成员,将进行计算的数据设为类的私有成员,运用判断语句进行功能选择性跳跃。4 总体设计(附类图)Calculator-a:double-b:double-res:double-num50:double-w50:char-c:char-len:int-fl:short+add():void+min():void+mul():void+div():void+power():void+_10_2():void+_10_8():void+_10_16():void+_2_10():void+_8_10():void+_16_10():void+_2_8():void+_8_2():void+_2_16():void+_16_2():void+_16_8():void+_8_16():void+mix():void+cos1():void+cos2():void+Sin1():void+Sin2():void+tan1():void+tan2():void+input():void+output():int+getfl():short+mainmenu():void+_1_fun():void+_2_fun():void+_3_menu():void+_4_menu():void+_3_1_menu():void+_3_2_menu():void+_3_3_menu():void+output2(int i): void5 关键技术说明类结构、选择判断结构、循环结构的应用。6 源代码#include#include#include#include#include#define PI 3.1415using namespace std;class calculator private: double a,b,res,num100; char w100,c; int len; short fl; public: void add(); void min(); void mul(); void div(); void power(); void _10_2(); void _10_8(); void _10_16(); void _2_10(); void _8_10(); void _16_10(); void _2_8(); void _8_2(); void _2_16(); void _16_2(); void _16_8(); void _8_16(); void mix(); void cos1(); void cos2(); void sin1(); void sin2(); void tan1(); void tan2(); void input(); int output(); short getfl(); void mainmenu(); void _1_fun(); void _2_fun(); void _3_menu(); void _4_menu(); void _3_1_menu(); void _3_2_menu(); void _3_3_menu(); void output2(int i); calculator () a=0;b=0;res=0;num0=0;w0=0;len=0;c=0;fl=0;void calculator:mainmenu() int j;do cout*请选择*endl; cout 1、加减乘除和乘方的简单运算endl; cout 2、加减乘除和乘方的混合运算endl; cout 3、三角函数运算endl; cout 4、进制转换endl; cout 0、退出endl ;cout*欢迎使用本计算器,Sunday敬上*j; system(CLS);if(fabs(j)4) cout输入错误!请再次输入4); if(j=1) _1_fun(); else if(j=2) _2_fun(); else if(j=3) _3_menu(); else if(j=4) _4_menu(); else cout谢谢使用本计算器endl;return ;void calculator:_1_fun() short i; cout请输入要计算的式子,如计算:1+2,直接输入:1+2再按回车即可endl; do coutacb; switch(c) case +:add();break ; case -:min();break; case *:mul();break ; case /:div();break ; i=output(); while (i=1); if(i=0) cout谢谢使用本计算器endl;return; else if(i=2|i=3) mainmenu(); else cout输入错误!请重新启用endl;return ;void calculator:_2_fun() cout请输入要计算的式子,如计算:1+2*3,直接输入:1+2*3再按回车即可endl; short j,i; do coutnumi; scanf(%c,&wi); while(wi+!=10); len=i; mix(); j=output(); while (j=1); if(j=0) cout谢谢使用本计算器endl;return; else if(j=3|j=2) mainmenu(); else cout输入错误!请重新启用endl;return ;void calculator:_3_menu() short i;do cout 请选择所要计算的三角函数:endl; cout 1、正弦endl; cout 2、余弦endl; cout 3、正切endl; cout 4、返回上一层endli; system(CLS);if(fabs(i)4|i=0) cout输入错误!请再次输入4|i=0);fl=-2; if(i=1) _3_1_menu(); else if(i=2) _3_2_menu(); else if(i=3) _3_3_menu(); else fl=0;mainmenu();void calculator:_4_menu() short i;do cout*请选择*endl; cout 1、二进制转八进制endl; cout 2、二进制转十进制endl; cout 3、二进制转十六进制endl; cout 4、八进制转二进制endl; cout 5、八进制转十进制endl; cout 6、八进制转十六进制endl; cout 7、十进制转二进制endl; cout 8、十进制转八进制endl; cout 9、十进制转十六进制endl; cout 10、十六进制转二进制endl; cout 11、十六进制转八进制endl; cout 12、十六进制转十进制endl; cout 13、返回上一层endli; system(CLS);if(fabs(i)13|i=0) cout输入错误!请再次输入13|i=0); if(i=1) _2_8(); else if(i=2) _2_10(); else if(i=3) _2_16(); else if(i=4) _8_2(); else if(i=5) _8_10(); else if(i=6) _8_16(); else if(i=7) _10_2(); else if(i=8) _10_8(); else if(i=9) _10_16(); else if(i=10) _16_2(); else if(i=11) _16_8(); else if(i=12) _16_10(); else if(i=13)mainmenu(); else cout输入错误!请重新启用endl;return ;void calculator:_3_1_menu() short m; cout*请选择*endl; cout 1、弧度制计算endl; cout 2、角度值计算endl; cout 3、返回上一层endl; cout 4、返回主菜单endlm; system(CLS); if(m=1) cout请输入要计算的正弦弧度数值:endl; sin1(); else if(m=2) cout请输入要计算的正弦角度数值:endl; sin2(); else if(m=3) _3_menu(); else if(m=4) mainmenu(); else cout输入错误!请重新启用endl;return ;void calculator:_3_2_menu() short m; cout*请选择*endl; cout 1、弧度制计算endl; cout 2、角度值计算endl; cout 3、返回上一层endl; cout 4、返回主菜单endlm; system(CLS); if(m=1) cout请输入要计算的余弦弧度数值:endl; cos1(); else if(m=2) cout请输入要计算的余弦角度数值:endl; cos2(); else if(m=3) _3_menu(); else if(m=4) mainmenu(); else cout输入错误!请重新启用endl;return ;void calculator:_3_3_menu() short m; cout*请选择*endl; cout 1、弧度制计算endl; cout 2、角度值计算endl; cout 3、返回上一层endl; cout 4、返回主菜单endlm; system(CLS); if(m=1) cout请输入要计算的正切弧度数值:endl; tan1(); else if(m=2) cout请输入要计算的正切角度数值:endl; tan2(); else if(m=3) _3_menu(); else if(m=4) mainmenu(); else cout输入错误!请重新启用endl;return ;int calculator:output() if(fl=-1) return 0; memset(num,0,sizeof(num);memset(w,0,sizeof(w);len=0;c=0; if(fl!=2)if(fl=-2&fabs(res)0.000001)cout 0;else cout结果为:res;coutendlendl; fl=0;res=0; short i; cout*请选择*endl; cout 1、继续计算endl; cout 2、返回上一层endl; cout 3、返回主菜单endl; cout 0、退出endli; system(CLS); return i;void calculator:add()res=a+b;void calculator:min()res=a-b;void calculator:mul()res=a*b;void calculator:div()res=a/b;void calculator:power()res=pow(a,b);void calculator:_10_2() int i=0,j,e1,e; double sw; char te; short m=-1; do char s50; memset(s,0,sizeof(s); if(fl!=2) couta; e=(int)fabs(a); e1=(int)e; i=0; if(e1=0) s0=0; while(e10) si+=(e1%2)+48; e1=e1/2; for(j=0;ji/2;j+) te=sj; sj=si-j-1; si-j-1=te; cout转换为二进制数:; if(a=e) puts(s); else for(j=0;ji-1;j+) coutsj; if(i=1) cout0.; else cout.; sw=a-e1; i=0; sw=(sw-(int)fabs(sw)*2; while(sw!=0&i=5) printf(%d,(int)(sw*10)/10+1); else printf(%d,(int)(sw*10)/10); i+; sw=(sw-(int)fabs(sw)*2; if(fl!=2) fl=2; m=output(); while (m=1); if(m=2) _4_menu(); else if(m=3) mainmenu(); else if(m=0) cout谢谢使用本计算器endl;return ;else if(m=-1); else cout输入错误!请重新启用endl;return ;void calculator:_10_8() short i,m=-1; int e; double sw; do if(fl!=2) couta; e=(int)fabs(a);cout转换为八进制数:; printf(%o,e); if(a!=e) cout.; sw=a-e; i=0; sw=(sw-(int)fabs(sw)*8; while(sw!=0&i=5) printf(%d,(int)(sw*10)/10+1); else printf(%d,(int)(sw*10)/10); i+; sw=(sw-(int)fabs(sw)*8; coutendl; if(fl!=2) fl=2; m=output(); while (m=1); if(m=2) _4_menu(); else if(m=3) mainmenu(); else if(m=0) cout谢谢使用本计算器endl;return ;else if(m=-1); else cout输入错误!请重新启用endl;return ;void calculator:_10_16() short i,m=-1; int e; double sw; do if(fl!=2) couta; e=(int)fabs(a);cout转换为十六进制数:; printf(%x,e); if(a!=e) cout ; printf(%x,e); cout.; sw=a-e; i=0; sw=(sw-(int)fabs(sw)*16; while(sw!=0&i=5) switch(int)(sw*10)/10+1) case 10:couta;break; case 11:coutb;break; case 12:coutc;break; case 13:coutd;break; case 15:coute;break; default:cout(int)(sw*10)/10+1; else switch(int)(sw*10)/10) case 10:couta;break; case 11:coutb;break; case 12:coutc;break; case 13:coutd;break; case 15:coute;break; default:cout(int)(sw*10)/10; i+; sw=(sw-(int)fabs(sw)*16; if(fl!=2) fl=2; m=output(); while (m=1); if(m=2) _4_menu(); else if(m=3) mainmenu(); else if(m=0) cout谢谢使用本计算器endl;return ;else if(m=-1); else cout输入错误!请重新启用endl;return ;void calculator:_2_10() double f; short i,j; do coutc; w0=c; gets(&w1); for(;wi!=.&wi!=0;i+) switch(wi) case 0:res=res*2.0+0.0;break; case 1:res=res*2.0+1.0;break; default:cout输入错误!endl;fl=-1;return ; for(;wi!=0;i+) switch(wi) case .:break; case 0:f=2*f;break; case 1:f=2*f;res=res+1.0/f;break; default:cout输入错误!endl;fl=-1;return ; if(fl=1) a=res;fl=2; else j=output(); while(j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_8_10() double f; short i=0,j=0; do coutc; w0=c; gets(&w1); for(;wi!=.&wi!=0;i+) switch(wi) case 0:res=res*8.0+0.0;break; case 1:res=res*8.0+1.0;break; case 2:res=res*8.0+2.0;break; case 3:res=res*8.0+3.0;break; case 4:res=res*8.0+4.0;break; case 5:res=res*8.0+5.0;break; case 6:res=res*8.0+6.0;break; case 7:res=res*8.0+7.0;break; default:cout输入错误!endl;fl=-1;return ; for(;wi!=0;i+) switch(wi) case .:break; case 0:f=8*f;break; case 1:f=8*f;res=res+1.0/f;break; case 2:f=8*f;res=res+2.0/f;break; case 3:f=8*f;res=res+3.0/f;break; case 4:f=8*f;res=res+4.0/f;break; case 5:f=8*f;res=res+5.0/f;break; case 6:f=8*f;res=res+6.0/f;break; case 7:f=8*f;res=res+7.0/f;break; default:cout输入错误!endl;fl=-1;return ; if(fl=1) a=res;fl=2; else j=output(); while(j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_16_10() double f=1; short i=0,j=0; do coutc; w0=c; gets(&w1); for(;wi!=.&wi!=0;i+) switch(wi) case 0:res=res*16.0+0.0;break; case 1:res=res*16.0+1.0;break; case 2:res=res*16.0+2.0;break; case 3:res=res*16.0+3.0;break; case 4:res=res*16.0+4.0;break; case 5:res=res*16.0+5.0;break; case 6:res=res*16.0+6.0;break; case 7:res=res*16.0+7.0;break; case 8:res=res*16.0+8.0;break; case 9:res=res*16.0+9.0;break; case a:res=res*16.0+10.0;break; case b:res=res*16.0+11.0;break; case c:res=res*16.0+12.0;break; case d:res=res*16.0+13.0;break; case e:res=res*16.0+14.0;break; case f:res=res*16.0+15.0;break; default:cout输入错误!endl;fl=-1;return ; for(;wi!=0;i+) switch(wi) case .:break; case 0:f=16*f;break; case 1:f=16*f;res=res+1.0/f;break; case 2:f=16*f;res=res+2.0/f;break; case 3:f=16*f;res=res+3.0/f;break; case 4:f=16*f;res=res+4.0/f;break; case 5:f=16*f;res=res+5.0/f;break; case 6:f=16*f;res=res+6.0/f;break; case 7:f=16*f;res=res+7.0/f;break; case 8:f=16*f;res=res+8.0/f;break; case 9:f=16*f;res=res+9.0/f;break; case a:f=16*f;res=res+10.0/f;break; case b:f=16*f;res=res+11.0/f;break; case c:f=16*f;res=res+12.0/f;break; case d:f=16*f;res=res+13.0/f;break; case e:f=16*f;res=res+14.0/f;break; case f:f=16*f;res=res+15.0/f;break; default:cout输入错误!endl;fl=-1;return ; if(fl=1) a=res;fl=2; else j=output(); while(j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_2_8() short j=0; do fl=1; _2_10(); if(fl=2) _10_8(); j=output(); while (j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_8_2() short j=0; do fl=1; _8_10(); if(fl=2) _10_2(); j=output(); while (j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_2_16() short j=0; do fl=1; _2_10(); if(fl=2) _10_16(); j=output(); while (j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_16_2() short j=0; do fl=1; _16_10(); if(fl=2) _10_2(); j=output(); while (j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_16_8() short j=0; do fl=1; _16_10(); if(fl=2) _10_8(); j=output(); while (j=1); if(j=2) _4_menu(); else if(j=3) mainmenu(); else if(j=0) cout谢谢使用本计算器endl;return ;else if(j=-1); else cout输入错误!请重新启用endl;return ;void calculator:_8_16() short j=0; d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 诊所引流现场管理制度
- 诊疗技术授权管理制度
- 调解中心监督管理制度
- 财政特设专户管理制度
- 货代公司各类管理制度
- 货物装卸安全管理制度
- 货船安全生产管理制度
- 2025年中国感应式皂液器行业市场全景分析及前景机遇研判报告
- 2025年中国动作感应手柄行业市场全景分析及前景机遇研判报告
- 液压工具质保协议书范本
- 2025至2030中国材料疲劳试验机行业项目调研及市场前景预测评估报告
- 2025年陕西、山西、宁夏、青海四省(陕晋宁青)高考 生物真题试卷 附答案
- 2024年西昌市教育和体育局考核聘用公立幼儿园教师真题
- 2025设备租赁合同版本范文
- 2025年浙江杭州钱塘区和达能源有限公司招聘笔试冲刺题(带答案解析)
- 2025年衣物清洁多元化发展趋势白皮书-天猫家清第一财经商业数据中心
- 冷链物流园建设项目投融资与财务方案
- 保险业务员分级考试试题及答案
- 2024统编版七年级道德与法治下册期末测试卷(含答案)
- 酒店经销商合同协议书
- 转让钓场合同协议书
评论
0/150
提交评论