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)WINDOWS2000XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计3.1系统流程图如图3.1所示。 图3.1 系统流程图开始调用输入函数init_st
3、ack(); 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 *17; *图表按键数*char far *vid_mem;static int tx=32,ty=3; *静态变量*float v1=0.0,v2=0.0;用输入函数input()来输入按键放在s_
4、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(32,3); *计算结果窗口*draw_win() *边框画线窗口* draw_b
5、order(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() 把小键盘数字键和运算键的键值通过“get_data(bx,by);send1()”和计算器界面按键连接起来,
6、使得通过小键盘相应的键就能获得计算器相应的值。下面就定义了文本光标函数: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(); *窗口画线* active_button(); *窗口按键* out_text_win(); *输出文本窗口*
7、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; *顶端字体颜色* draw_border(int sx,int sy,int ex,int ey,int attrib) *边界线函数* char far
8、 *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; v=t+i*160+ex*2; *v+=179; *每一列由画线确定为直线* *v=attrib; write_char(sx,sy,218,attrib); wr
9、ite_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()*图表按钮设定函数* int i; make_button(,1);*每个键对应的位置和数值* make_button(,2); make_button(,3); make_but
10、ton(,+); 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_button(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.(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; butt
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1