C语言毕业课程设计报告计算器.docx
- 文档编号:7900244
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:31
- 大小:21.38KB
C语言毕业课程设计报告计算器.docx
《C语言毕业课程设计报告计算器.docx》由会员分享,可在线阅读,更多相关《C语言毕业课程设计报告计算器.docx(31页珍藏版)》请在冰豆网上搜索。
C语言毕业课程设计报告计算器
(此文档为word格式,下载后您可任意编辑修改!
)
C语言课程设计报告
——计算器
题目:
设计一个计算器的程序,功能上尽量模仿windows内的计算器
目录
()cal.c
{
各种宏定义;
欢迎界面;
图像的初始化;
do{
接受键盘和鼠标输入的命令;
处理命令;
}while(“命令”=“结束”)
}
鼠标调用的界面模块mouse..c
voidinitialmouse(void);*初始化鼠标函数*
doublechar_to_float(char*p);*字符转换成浮点数*
voidwelcome();*欢迎界面*
(2)、鼠标头文件mouse.c
voidmouse();接受鼠标的按键信息
intrmouse(void)初始化鼠标图像图标,并且返回是否成功的信息
showmouse()利用不断复制和粘贴图像的方法来动态显示鼠标光标
.c主控文件
*******************************************************
#include charch='0'; charemp[80],sum[80],*e,*s; doubleyuan=0.; select() { if(where_chu)key=47; elseif(where_cheng)key=42; elseif(where_jian)key=45; elseif(where_jia)key=43; elseif(where_num1)key=49; elseif(where_num2)key=50; elseif(where_num3)key=51; elseif(where_enter)key=ENTER; elseif(where_num4)key=52; elseif(where_num5)key=53; elseif(where_num6)key=54; elseif(where_dot)key=46; elseif(where_num7)key=55; elseif(where_num8)key=56; elseif(where_num9)key=57; elseif(where_num0)key=48; elseif(where_kai)key=32; elseif(where_guan)key=EXCAPE; elseif(where_fuhao)key=MINUS; elseif(where_zhishu)key=EXP; elsekey=0; } voidwelcome()*欢迎界面* { char*Info="\n\n\n\ \n\Welcometousethiscalculator! \ \n\ \n\ \n\ Inthiscalculator,bothkeyboardandmousecanbeused.\n\n\ KEYS: \n\ ThankstoMyBOBO,\ I\ Butitwasreallyanefforformetomakethosethingsclear.\n\ I\n\ \n\ \n\n\ GOODLUCK! \0"; while(*Info++! ='\0'&&bioskey (1)==0) { sound(300); nosound(); printf("%c",*(Info-1)); delay(10000); } } voidmain() { voidinitialmouse(void);*初始化鼠标* doublechar_to_float(char*p);*浮点数转换成浮点数* inti,flag=0;*输入结果标记* doublet; intinput(); intgd=DETECT,gm; initgraph(&gd,&gm,"");*初始化屏幕为图形模式* rmouse();*初始化鼠标* Area(); e=emp; s=sum; welcome(); initialmouse(); x=120;*结果输出位置* y=1; while (1)*始终记录用户的命令和操作* { reg_b=0; do{ showmouse();*显示鼠标的光标* if(reg_b)select();*检测鼠标的左键按钮* }while(reg_b==0&&bioskey (1)==0); if(bioskey (1)! =0)key=input(); switch(key)*各种操作功能选择* { caseEXCAPE: bar(guan); delay(8000); initialmouse(); exit(0); case47: *³ý·¨* bar(chu); delay(8000); initialmouse(); if(ch! ='0') { switch(ch) { case'': { if(char_to_float(emp)==0.0) { ch='0'; flag=0; dian=0; emp[0]='\0'; sum[0]='\0'; e=emp; s=sum; outtextxy(x+30,y+40,"error! ! ! ! ! "); break; } yuan=char_to_float(sum)char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+38,y+40,sum); break; } case'*': *³Ë·¨* { yuan=char_to_float(sum)*char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); break; } case'+': *¼Ó·¨* { yuan=char_to_float(sum)+char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); break; } case'-': *¼õ·¨* { if(char_to_float(sum)>=char_to_float(emp)) { yuan=char_to_float(sum)-char_to_float(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=char_to_float(emp)-char_to_float(sum); sprintf(sum,"-%0.10f",yuan); } outtextxy(x+30,y+40,sum); emp[0]='\0'; } } } else{ if(flag==0) { outtextxy(x+30,y+40,emp); stpcpy(sum,emp); } elseouttextxy(x+30,y+40,sum); } ch=''; flag=0; emp[0]='\0'; e=emp; dian=0; break; case42: *°´ÏÂ*ºÅ* { bar(cheng); delay(8000); initialmouse(); if(ch! ='0') { switch(ch) { case'': yuan=char_to_float(sum)char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'*': yuan=char_to_float(sum)*char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'+': yuan=char_to_float(sum)+char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'-': if(char_to_float(sum)>=char_to_float(emp)) { yuan=char_to_float(sum)-char_to_float(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=char_to_float(emp)-char_to_float(sum); sprintf(sum,"-%0.10f",yuan); } outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else { if(flag==0) { outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else } outtextxy(x+30,y+40,sum); ch='*'; flag=0; dian=0; break; } case45: *°´ÏÂ-ºÅ* bar(jian); delay(8000); initialmouse(); if(ch! ='0') { switch(ch){ case'': yuan=char_to_float(sum)char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'*': yuan=char_to_float(sum)*char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'+': yuan=char_to_float(sum)+char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'-': if(char_to_float(sum)>=char_to_float(emp)){ yuan=char_to_float(sum)-char_to_float(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=char_to_float(emp)-char_to_float(sum); sprintf(sum,"-%0.10f",yuan); } outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if(flag==0) { outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else outtextxy(x+30,y+40,sum); } ch='-'; flag=0; dian=0; break; case43: bar(jia); delay(8000); initialmouse(); if(ch! ='0'){ switch(ch){ case'': yuan=char_to_float(sum)char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'*': yuan=char_to_float(sum)*char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'+': yuan=char_to_float(sum)+char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'-': if(char_to_float(sum)>=char_to_float(emp)){ yuan=char_to_float(sum)-char_to_float(emp); sprintf(sum,"%0.10f",yuan); } else{ yuan=char_to_float(emp)-char_to_float(sum); sprintf(sum,"-%0.10f",yuan); } outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; } } else{ if(flag==0) { outtextxy(x+30,y+40,emp); stpcpy(sum,emp); e=emp; } else outtextxy(x+30,y+40,sum); } ch='+'; flag=0; dian=0; break; case'm': bar(fuhao); delay(8000); initialmouse(); for(i=0;i<=79;i++) { if(emp[i]=='\0') break; } if(flag==0){ *e='-';e++;*e='\0'; outtextxy(x+30,y+40,emp); } elseouttextxy(x+30,y+40,sum); break; case49: *°´ÏÂ1* bar(num1); delay(8000); initialmouse(); for(i=0;i<=79;i++) { if(emp[i]=='\0') break; } if(flag==0){ *e='1';e++;*e='\0'; outtextxy(x+30,y+40,emp); } elseouttextxy(x+30,y+40,sum); break; case50: bar(num2); delay(8000); initialmouse(); for(i=0;i<=79;i++) { if(emp[i]=='\0') break; } if(flag==0){ *e='2';e++;*e='\0'; outtextxy(x+30,y+40,emp); } elseouttextxy(x+30,y+40,sum); break; case51: bar(num3); delay(8000); initialmouse(); for(i=0;i<=79;i++) { if(emp[i]=='\0') break; } if(flag==0){ *e='3';e++;*e='\0'; outtextxy(x+30,y+40,emp); } elseouttextxy(x+30,y+40,sum); break; caseEXP: *×ÔÈ»¶ÔÊý* bar(zhishu); delay(8000); initialmouse(); if(flag==1&&ch=='0')yuan=exp(char_to_float(sum)); elseyuan=exp(char_to_float(emp)); sprintf(emp,"%0.10f",yuan); outtextxy(x+30,y+40,emp); flag=0; dian=0; break; caseENTER: bar(enter); delay(8000); initialmouse(); if(ch! ='0') { switch(ch) { case'': yuan=char_to_float(sum)char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'*': yuan=char_to_float(sum)*char_to_float(emp); sprintf(sum,"%0.10f",yuan); outtextxy(x+30,y+40,sum); emp[0]='\0'; e=emp; break; case'+': yuan=c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 毕业 课程设计 报告 计算器