您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C++语言课程设计报告正文(计算器的实现)
1目录1前言...............................................................................................................22需求分析.......................................................................................................22.1要求......................................................................................................22.2任务......................................................................................................22.3运行环境..............................................................................................22.4开发工具..............................................................................................23概要设计.......................................................................................................23.1系统流程图..........................................................................................33.2查询函数流程图..................................................................................44详细设计.......................................................................................................84.1分析和设计..........................................................................................84.2具体代码实现......................................................................................95课程设计总结.............................................................................................25参考文献.........................................................................................................25致谢.............................................................................................................2621前言编写一个程序来实现算术计算器。通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。2需求分析2.1要求(1)用C语言实现程序设计;(2)利用结构体、共用体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释。2.2任务(1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中;(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3概要设计3.1系统流程图3如图3.1所示。图3.1系统流程图开始NYprintf(can'tformthedevice,pressanykeytoleave!...);调用左窗口函数menu();结束3.2查询函数流程图调用输入函数init_stack();再调用计算器构成函数calculator();if(!form_win())456784详细设计4.1分析和设计在程序的开头部分定义了结构替类型,用来存放按钮信息structs_button/*按键的结构体*/{intsx,sy,ex,ey;char*head;intpress;}button[17];/*图表按键数*/charfar*vid_mem;staticinttx=32,ty=3;/*静态变量*/floatv1=0.0,v2=0.0;用输入函数input()来输入按键放在s_button数组中。再定义结构体栈:structstack/*结构体栈*/{chars[20];inttos,top;}stack;chartag;用于数据的输入和存放。进而定义了表格窗口函数,窗口画线函数和边界线函数:intform_win()/*表格窗口初始化*/{textbackground(WHITE);/*窗口背景颜色*/clrscr();/*清零*/draw_win();/*窗口画线*/active_button();/*窗口按键*/9out_text_win();/*输出文本窗口*/window_xy(32,3);/*计算结果窗口*draw_win()/*边框画线窗口*/………draw_border(intsx,intsy,intex,intey,intattrib)/*边界线函数*/………通过这些为形成整个界面提供了大的前提。接着通过“write_char()”,“active_button()”,“write_top()”,“make_button()”,“out_text_win()”,“get_key()”,“window_xy()”等一系列的函数,使得计算器的整个外型呈现了出来。为了输入方便一些,就接着定义的小键盘的输入函数:key_choice()把小键盘数字键和运算键的键值通过“get_data(bx,by);send1()”和计算器界面按键连接起来,使得通过小键盘相应的键就能获得计算器相应的值。下面就定义了文本光标函数:text_clo()/*文本光标*/{tx--;/*光标向左移*/if(tx32)tx++;/*backspace时X不能小于32*/put_char(tx,ty,'');}当按“〈-”或:”backspace”时光标随tx减小而减小。再就是计算器运算的主程序:put_string()/*计算机运算函数*/{floatresult;tx=32;switch(tag)/*根据运算符号计算*/{case'+':result=v1+v2;break;/*做加法*/case'-':result=v1-v2;break;/*做减法*/case'*':result=v1*v2;break;/*做乘法*/case'/':result=v1/v2;break;/*做除法*/default:result=v1;/*若不计算输出0*/10}sprintf(stack.s,%.3f,result);/*输出结果保留小数点后三位*/通过switch来实现相应的计算,输出保留三位小数的结果。………最后mian()函数:main(){init_stack();vid_mem=(charfar*)0xb8000000;if(!form_win()){printf(can'tformthedevice,pressanykeytoleave!...);getch();exit();}menu();calculator();}通过调用上面定义的函数实现了计算器整个功能。4.2具体代码实现源程序代码:#includedos.h#includeconio.h#includestring.h#includestdio.h#definenormbut_bor0x80#definepresbut_but0xb811#definenormnum_but0x8e#definepresnum_but0xb9#definespebut_char0x2c#definewin_color0xf2#definewin_char0xfbstructs_button/*按键的结构体*/{intsx,sy,ex,ey;char*head;intpress;}button[17];/*图表按键数*/charfar*vid_mem;staticinttx=32,ty=3;/*静态变量*/floatv1=0.0,v2=0.0;structstack/*结构体栈*/{chars[20];inttos,top;}stack;chartag;init_stack()/*初始化栈*/{stack.tos=0;stack.top=0;stack.s[stack.tos]='\0';}12push(charch)/*入栈*/{stack.s[stack.tos++]=ch;stack.s[stack.tos]='\0';}pop()/*取栈数据通过*/{if(stack.tos0)stack.s[--stack.tos]='\0';}clear_stack()/*清空栈*/{stack.tos=0;stack.top=0;stack.s[stack.tos]='\0';}intform_win()/*表格窗口初始化*/{textbackground(WHITE);/*窗口背景颜色*/clrscr();/*清零*/draw_win();/*窗口画线*/active_button();/*窗口按键*/out_text_win();/*输出文本窗口*/window_xy(32,3);/*计算结果窗口*/}draw_win()/*边框画线窗口*/{inti;charfar*t;13char*s=Thisisasimplecalculator!;/*顶端边框输出的字符*/draw_border(30,0,79,24,win_color);/*边框的位置和颜色*/i=(79-30-strlen(s))/2+30;t=vid_mem+i*2;for(;*s;){*t++=*s++;*t++=win_color;/*顶端字体颜色*/}}draw_border(intsx,intsy,intex,intey,intattrib)/*边界线函数*/{charfar*t,far*v;inti;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;14*v++=179;/*每一列左画线确定为直线*/*v=attrib;v=t+i*160+ex*2;*v++=179;/*每一列由画线确定为直线*/*v=attrib;}wri
本文标题:C++语言课程设计报告正文(计算器的实现)
链接地址:https://www.777doc.com/doc-6108152 .html