您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > mfc基于wince的计算器
计算机学院课程设计报告课程名称嵌入式体系结构学号09070624姓名解路宽完成日期2012.4.15报告完成日期2012.4.15成绩教师签字年月日一,课程设计目的1.在课堂教学的基础上进一步的认识嵌入式应用程序的开发流程2.掌握WindowsEmbeddedCE6.0应用程序的设计方法和流程3.掌握MFC编程语言4.比较WindowsEmbeddedCE6.0与桌面版Windows应用程序开发的异同二,课程设计内容WindowsEmbeddedCE计算器1.基本功能1),仿照Windows计算器的功能,标准型实现加减乘除+/-倒数等计算功能。科学计算其实现三角函数、乘方、开方、阶乘、对数等功能。同时,还要求实现四则运算的功能。菜单为中文,计算结果要求正确。2),完成一次计算点击“=”后,应根据继续输入的是数字还是符号判断是清零还是继续计算。计算结果通过+/-求反3),四则预算计算式能判断词法错误和语法错误2.提高功能1),标准型可实现MC、MR、MS、M+、%等功能;2),可实现与、或、异或、非等逻辑运算功能;3),实现不同进制之间的转换。三,需求分析【标准型】以一个double型的编辑框为普通数字以及计算结果显示框,通过添加的数字和功能按钮输入数字、运算符等。通过radio控件选择计算器的类型,并同步弹出相应类型的显示。并且实现了实现MC、MR、MS、M+、%,进制转换等功能;【科学型】是在原有标准型的基本功能上,添加一些三角函数、指数对数的运算功能;并且单令添加了进制转换的数字输入窗口和结构输出窗口;【四则运算】对内部的算法比较严厉,采用编译原理的语法分析与词法分析,进行逐层次,嵌套式的计算,内部规定了对应符号的优先级,其对应的基本句子如下:E==E+T|E-T|T;T==F|T*F|T/FF==(E)|id;其中,id表示终结符;并且在循环嵌套的计算过程中,弹出相应的错误提示。四:详细设计1,整体界面设计:2,主要的声明:【Cxlk0624Dlg.H】public://声明相关变量,并在xlk0624.cpp中的固定函数中初始化doubleend1;//结果doubleend2;doublenum2;intnum;//标志,表示上一步的操作,用-1,~9,···分别表示相关项目intpoint;//标志,如果小数点被按下,point为,否则为,其他运算符也同样类似的标记doubletemp;//用来存放中间变量,此处专门存放小数点后面的数值doubletemp2;//只存放整数的值doubleqf;//取反的标志doublejiafa;运算符的标志doublejianfa;doublechengfa;doublechufa;doublefuhao;提取对应的符号doubletemp3;中间变量doubletemp4;doubletemp5;//%时的中间量doubletemp6;//%时的中间量doublems;//ms中储存当前框内的数字charch;intnomber;//用来表示小数点后第几位intzhuan;//用于编著进制转换的性质public:afx_msgvoidOnBnClickedKexue();弹出科学性计算器afx_msgvoidOnBnClickedBiaozhun();标准型afx_msgvoidOnBnClickedSize();四则运算afx_msgvoidOnBnClickedNum1();对应的数字按钮0~9afx_msgvoidOnBnClickedNum2();afx_msgvoidOnBnClickedNum3();afx_msgvoidOnBnClickedNum4();afx_msgvoidOnBnClickedNum5();afx_msgvoidOnBnClickedNum6();afx_msgvoidOnBnClickedNum7();afx_msgvoidOnBnClickedNum8();afx_msgvoidOnBnClickedNum9();afx_msgvoidOnBnClickedNum0();afx_msgvoidOnBnClickedDian();doublenumcount(doublea,doubleb,doublec);用于计算afx_msgvoidOnBnClickedQufan();按钮,取反afx_msgvoidOnBnClickedJia();加号afx_msgvoidOnBnClickedClear();清零voidyusuanclear(void);部分清零afx_msgvoidOnBnClickedJian();减号afx_msgvoidOnBnClickedCheng();乘号afx_msgvoidOnBnClickedChu();除号afx_msgvoidOnBnClickedDengyu();等于号afx_msgvoidOnBnClickedPingfang();开方afx_msgvoidOnBnClickedDaoshu();倒数afx_msgvoidOnBnClickedMs();保存结果afx_msgvoidOnBnClickedMc();清除afx_msgvoidOnBnClickedMr();afx_msgvoidOnBnClickedMm();结果加保存数afx_msgvoidOnBnClickedMj();结果减保存数afx_msgvoidOnBnClickedQuyu();%的算法afx_msgvoidOnBnClickedYu();逻辑与afx_msgvoidOnBnClickedHuo();逻辑或afx_msgvoidOnBnClickedFei();逻辑非afx_msgvoidOnBnClickedYihuo();逻辑异或afx_msgvoidOnBnClickedShi();进制10afx_msgvoidOnBnClickedEr();进制2afx_msgvoidOnBnClickedBa();进制8afx_msgvoidOnBnClickedShiliu();进制16doubleendd;对话框,显示CStringendc;CStringendc2;CStringendc3;voidjinzhizh(intnjin);进制转换【Cxlk02Dlg.H】:public://声明相关变量,并在xlk0624.cpp中的固定函数中初始化doublenum23;intnum3;//标志,表示上一步的操作,用-1,~9,···分别表示相关项目intpoint3;//标志,如果小数点被按下,point为,否则为,其他运算符也同样类似的标记doubletemp03;//用来存放中间变量,此处专门存放小数点后面的数值doubletemp23;//只存放整数的值doubleqf3;doublejiafa3;doublejianfa3;doublechengfa3;doublechufa3;doublefuhao3;doubletemp33;doubletemp43;intdu;度inthudu;弧度charch3;intnomber3;//用来表示小数点后第几位public:doubleend3;afx_msgvoidOnBnClickedNum21();数字0~9afx_msgvoidOnBnClickedNum22();afx_msgvoidOnBnClickedNum23();afx_msgvoidOnBnClickedNum24();afx_msgvoidOnBnClickedNum25();afx_msgvoidOnBnClickedNum26();afx_msgvoidOnBnClickedNum27();afx_msgvoidOnBnClickedNum28();afx_msgvoidOnBnClickedNum29();afx_msgvoidOnBnClickedNum20();afx_msgvoidOnBnClickedNum214();afx_msgvoidOnBnClickedNum215();afx_msgvoidOnBnClickedNum210();afx_msgvoidOnBnClickedNum211();afx_msgvoidOnBnClickedNum212();afx_msgvoidOnBnClickedNum213();afx_msgvoidOnBnClickedNum216();afx_msgvoidOnBnClickedNum217();afx_msgvoidOnBnClickedNum218();afx_msgvoidOnBnClickedNum219();afx_msgvoidOnBnClickedNum220();对应的按钮afx_msgvoidOnBnClickedNum221();afx_msgvoidOnBnClickedNum222();afx_msgvoidOnBnClickedNum223();afx_msgvoidOnBnClickedNum224();afx_msgvoidOnBnClickedNum225();afx_msgvoidOnBnClickedNum226();afx_msgvoidOnBnClickedNum227();voidyunsuanclear2(void);部分清零CStringend4;对话框显示afx_msgvoidOnBnClickedDushu();读数doubleend5;afx_msgvoidOnBnClickedHudu();弧度转换afx_msgvoidOnBnClickedKexue2();计算器转换afx_msgvoidOnBnClickedBiaozhun2();afx_msgvoidOnBnClickedSize2();【Cxlk03Dlg.H】public:DWORDtext1;doubletext2;/*intpoint;*//*chartextt[2048];*/inttype;//标注当前操作的类型doubleshuzi;//用于存放取出的数字intpoint;//用来判定四则运算中的同一个数下是否有多个小数点inthj;charfuhao;charcifabaocuo;boolout;afx_msgvoidOnBnClickedSize();afx_msgvoidOnBnClickedJisuan();CStringtext3;CStringtest22;afx_msgvoidOnBnClickedKexue();afx_msgvoidOnBnClickedBiaozhun();boolcifafenxi(void);boolcifafenxi(charp[2048],inth);doubleE(charp[2048],inth);doubleT(charp[2048],inth);doubleF(charp[2048],inth);doubleyufafenxi(charp[2048]);3,流程图4,主要程序样例1),数字按钮:点击数字按钮,经过判断函数,显示相应结果;voidCxlk0624Dlg::OnBnClickedNum1(){//TODO:在此添加控件通知处理程序代码UpdateData(1);if(point==0){temp2=numresult(1,num,temp2);//整数}elseif(point==1){nomber=nomber+1;//小数点后的位数多一位temp=numpoint(1.0,num,nomber,temp);}end2=temp2+temp;UpdateData(FALSE);}2)运算符按钮,经过符号判断按钮,分别取符号两边的数字进行相应计算;voidCxlk0624Dlg::OnBnClickedJia(){//TODO:在此添加控件通知处理程序代码UpdateData(1);jiafa=1;//点击加法按钮if(fuha
本文标题:mfc基于wince的计算器
链接地址:https://www.777doc.com/doc-7243507 .html