ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:104.42KB ,
资源ID:3387883      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3387883.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C+语言毕业课程设计报告计算器的实现.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C+语言毕业课程设计报告计算器的实现.docx

1、C+语言毕业课程设计报告计算器的实现(此文档为word格式,下载后您可任意编辑修改!)目 录1 前言 22 需求分析 22.1要求 22.2任务 22.3运行环境 22.4开发工具 23 概要设计 23.1系统流程图 33.2查询函数流程图 44 详细设计 84.1分析和设计 84.2具体代码实现 95 课程设计总结 25参考文献 25致 谢 261 前言编写一个程序来实现算术计算器。通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、-、*、等运算符号),然后将其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。2 需求分析2.1要求(1)用C语言

2、实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。2.2任务(1)定义一个结构体类型数组,输入09及+、-、*等符号的信息,将其信息存入文件中;(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。 图3.1 系统流程图开始调用输入函数init_sta

3、ck(); N Yprintf(cant form the device,press any key to leave!.); 调用左窗口函数menu();再调用计算器构成函数 calculator();结束3.2查询函数流程图4 详细设计4.1分析和设计在程序的开头部分定义了结构替类型,用来存放按钮信息struct s_button /*按键的结构体*/int sx,sy,ex,ey; char *head; int press;button17; /*图表按键数*/char far *vid_mem;static int tx=32,ty=3; /*静态变量*/float v1=0.0,v

4、2=0.0;用输入函数input()来输入按键放在s_button数组中。再定义结构体栈:struct stack /*结构体栈*/ char s20; int tos,top;stack;char tag;用于数据的输入和存放。进而定义了表格窗口函数,窗口画线函数和边界线函数:int form_win() /*表格窗口初始化*/textbackground(WHITE); /*窗口背景颜色*/ clrscr(); /*清零*/ draw_win(); /*窗口画线*/ active_button(); /*窗口按键*/ out_text_win(); /*输出文本窗口*/window_xy(

5、32,3); /*计算结果窗口*draw_win() /*边框画线窗口*/ draw_border(int sx,int sy,int ex,int ey,int attrib) /*边界线函数*/ 通过这些为形成整个界面提供了大的前提。接着通过“write_char()”,“active_button()”,“ write_top()”,“make_button()”,“out_text_win()”, “get_key()” ,“window_xy()”等一系列的函数,使得计算器的整个外型呈现了出来。为了输入方便一些,就接着定义的小键盘的输入函数:key_choice() 把小键盘数字键和

6、运算键的键值通过“get_data(bx,by);send1()”和计算器界面按键连接起来,使得通过小键盘相应的键就能获得计算器相应的值。下面就定义了文本光标函数:text_clo() /*文本光标*/ tx-; /*光标向左移*/ if(tx0) stack.s-stack.tos=0;clear_stack() /*清空栈*/ stack.tos=0; stack.top=0; stack.sstack.tos=0;int form_win() /*表格窗口初始化*/ textbackground(WHITE); /*窗口背景颜色*/ clrscr(); /*清零*/ draw_win()

7、; /*窗口画线*/ active_button(); /*窗口按键*/ out_text_win(); /*输出文本窗口*/ window_xy(32,3); /*计算结果窗口*/draw_win() /*边框画线窗口*/ int i; char far *t; char *s=This is a simple calculator!; /*顶端边框输出的字符*/ draw_border(win_color); /*边框的位置和颜色*/ i=(79-30-strlen(s)/2+30; t=vid_mem+i*2; for(;*s;) *t+=*s+; *t+=win_color; /*顶端

8、字体颜色*/ draw_border(int sx,int sy,int ex,int ey,int attrib) /*边界线函数*/ char far *t,far *v; int i; t=vid_mem; for(i=sx+1;iex;i+) v=t+sy*160+i*2; *v+=196; /*每一行上画线确定为直线*/ *v=attrib; v=t+ey*160+i*2; *v+=196; /*每一行下画线确定为直线*/ *v=attrib; for(i=sy+1;iey;i+) v=t+i*160+sx*2; *v+=179; /*每一列左画线确定为直线*/ *v=attrib;

9、 v=t+i*160+ex*2; *v+=179; /*每一列由画线确定为直线*/ *v=attrib; write_char(sx,sy,218,attrib); write_char(ex,sy,191,attrib); write_char(sx,ey,192,attrib); write_char(ex,ey,217,attrib);write_char(int x,int y,char ch,int attrib) /*字符输入函数*/ char far *v; v=vid_mem; v+=x*2+160*y; *v+=ch; *v=attrib;active_button()/*图

10、表按钮设定函数*/ int i; make_button(,1);/*每个键对应的位置和数值*/ make_button(,2); make_button(,3); make_button(,+); make_button(,-); make_button(4,4); make_button(4,5); make_button(4,6); make_button(4,*); make_button(4,/);/*“/”的位置*/ make_button(17,7); make_button(17,8); make_button(17,9); make_button(17,=); make_bu

11、tton(17,-); make_button(20,0);/*“0”的位置*/ make_button(20,End); for(i=0;i17;i+) draw_border(buttoni.sx,buttoni.sy,buttoni.ex,buttoni.ey,normbut_bor); for(i=0;i17;i+) write_top(buttoni.sx+1,buttoni.sy+1,buttoni.ex-1,buttoni.head,normnum_but); write_top(int x1,int y,int x2,char *s,int attrib) char far *

12、v,far *t; int i; v=vid_mem; for(i=x1;i=x2;i+) t=v+y*160+i*2; *t+= ; *t=attrib; i=(x2-x1-strlen(s)+1)/2+x1; t=v+160*y+i*2; for(;*s;) *t+=*s+; *t+=attrib; make_button(int num,int sx,int sy,int ex,int ey,char *top) buttonnum.sx=sx; buttonnum.sy=sy; buttonnum.ex=ex; buttonnum.ey=ey; buttonnum.head=top;

13、buttonnum.press=0;out_text_win() /*结果输出窗口*/ draw_border(x7f); write_top( ,0xff);get_key() /*得到按键值*/ union inkey /*共用体*/ char ch2; int i; c; c.i=bioskey(0); return(c.i);window_xy(int x,int y) union REGS r; /*定义联合体*/ r.h.ah=2; /*初始化*/ r.h.dh=y; r.h.dl=x; r.h.bh=0; int86(0x10,&r,&r); key_choice() /*小键盘

14、键的输入函数*/ int ch,bx=0,by=0;/*起始停留键的位置*/ do ch=get_key(); switch(ch) case 0x4f31:res_but(bx,by);bx=0;by=0;get_data(bx,by);break;/*图表键和小键盘的键对应,此处为1*/ case 0x5032:res_but(bx,by);bx=1;by=0;get_data(bx,by);break;/*2*/ case 0x5133:res_but(bx,by);bx=2;by=0;get_data(bx,by);break;/*3*/ case 0x4b34:res_but(bx,

15、by);bx=0;by=1;get_data(bx,by);break;/*4*/ case 0x4c35:res_but(bx,by);bx=1;by=1;get_data(bx,by);break;/*5*/ case 0x4d36:res_but(bx,by);bx=2;by=1;get_data(bx,by);break;/*6*/ case 0x4737:res_but(bx,by);bx=0;by=2;get_data(bx,by);break;/*7*/ case 0x4838:res_but(bx,by);bx=1;by=2;get_data(bx,by);break;/*8*

16、/ case 0x4939:res_but(bx,by);bx=2;by=2;get_data(bx,by);break;/*9*/ case 0x5230:res_but(bx,by);bx=0;by=3;get_data(bx,by);break;/*0*/ case 0x4e2b :res_but(bx,by);bx=3;by=0;get_data(bx,by);send1();break;/*加*/ case 0x4a2d :res_but(bx,by);bx=4;by=0;get_data(bx,by);send1();break;/*减*/ case 0x372a :res_but

17、(bx,by);bx=3;by=1;get_data(bx,by);send1();break;/*乘*/ case 0x352f:res_but(bx,by);bx=4;by=1;get_data(bx,by);send1();break;/*除*/ case 0x0d3d:res_but(bx,by);bx=3;by=2;get_data(bx,by);send2(); out_text_win();put_string();break;/*等于号*/ case 0x1c0d:res_but(bx,by);bx=2;by=4;get_data(bx,by);send2(); out_tex

18、t_win();put_string();break;/* 回车键(相当与等于号) */ case 0x0e08:res_but(bx,by);bx=4;by=2;pop();text_clo();break; /*退格(backspace)*/ case 0x3920:res_but(bx,by);get_data(bx,by);ba_space(bx,by); break;/* 空格 */ case 0x4f00:res_but(bx,by);bx=4;by=3;exit(1);break;/*结束(End)*/ case 0x4800:res_but(bx,by);by-;break;/

19、* 上 */ case 0x4b00:res_but(bx,by);bx-;break;/* 左 */ case 0x5000:res_but(bx,by);by+;break;/* 下 */ case 0x4d00:res_but(bx,by);bx+;break;/* 右 */ if(bx0)bx=0; /* 只能在X0到4和Y在0到4内选择按键*/ if(by4)by=4; if(bx4)bx=4; /* 只能在X0到4和Y在0到4内选择按键*/ select_but(bx,by); while(1);ba_space(int x,int y) int num; char ch; if(

20、y2) if(x2)num=15; else num=16; else num=x+5*y; switch(num) case 3:send1();break; case 13:send2();out_text_win();put_string();break; case 4:send1();break; case 8:send1();break; case 9:send1();break; case 16:exit(1);break;/*图表对应的结束键*/ case 14:pop();text_clo();break;/*“”对应功能*/ default:; text_clo() /*文本光标*/ tx-; /*光标向左移*/ if(tx2) if(x2) if(x2)num=15; else num=16; else num=x+5*y; draw_border(buttonnum.sx,buttonnum.sy,buttonnum.ex,buttonnum.ey,presbut_but); write_top(buttonnum.sx+1,buttonnum.sy+1,buttonnum.ex-1,buttonnum.head,presnum_but);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1