1、 目 录 1 前言 . 2 2 需求分析 . 2 2.1 要求 2 2.2 任务 2 2.3 运行环境 . 2 2.4 开发工具 . 2 3 概要设计 . 2 3.1 系统流程图 . 3 3.2 查询函数流程图 4 4 详细设计 . 8 4.1 分析和设计 . 8 4.2 具体代码实现 . 9 5 课程设计总结 .25 参考文献 25 致 谢 26 1 前言 编写一个程序来实现算术计算器。 通过结构体数组和共用体数组来存放输入的每 一数字或运算符号的记录(包括 1、2、3 等数字,+、-、*、等运算符号) ,然后将 其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。 2 需求分析 2.
2、1 要求 (1)用C语言实现程序设计; (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、程图 如图3.1所示。 图 3.1 系统流程图 开始开始 N N Y Y printf(“cant form the device,press any key to leave!.“);printf(“cant form the device,press any key to leave!.“); 调用左窗口函数调用左窗口函数menu()menu(); 结束结束 3.2 查询函数流程图 调用输入函数调用输入函数 init_stack()init_stack(); 再调用计算器构成函数再调用计算器构成函数 calculator()calculator(); ; 4 详细设计 4.1 分析和设计
4、在程序的开头部分定义了结构替类型,用来存放按钮信息 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,v2=0.0; 用输入函数 input()来输入按键放在 s_button 数组中。 再定义结构体栈:struct stack /*结构体栈*/ char s20; int tos,top; stack; char tag; 用于数据的输入和存放
5、。 进而定义了表格窗口函数,窗口画线函数和边界线函数: int form_win() /*表格窗口初始化*/ textbackground(WHITE); /*窗口背景颜色*/ clrscr(); /*清零*/ draw_win(); /*窗口画线*/ active_button(); /*窗口按键*/ out_text_win(); /*输出文本窗口*/ window_xy(32,3); /*计算结果窗口* draw_win() /*边框画线窗口*/ draw_border(int sx,int sy,int ex,int ey,int attrib) /*边界线函数*/ 通过这些为形成整个
6、界面提供了大的前提。 接着通过“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(tx0) stack.s-stack.tos=0; clear_stack() /*清空栈*/ stack.tos=0; stack.top=0; stack.sstack.tos=0; int form_w