《C++语言课程设计报告范例(计算器的实现)》由会员分享,可在线阅读,更多相关《C++语言课程设计报告范例(计算器的实现)(27页珍藏版)》请在金锄头文库上搜索。
1、海南大学三亚学院C+面向对象程序设计课程设计报告选题名称: 系(院): 专 业: 班 级: 姓 名: 学 号: 1071308128 指导教师: 学年学期: 2009 2010 学年 第 2 学期2010年 7月 2 日目 录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 需求分析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开发工具
3、C语言3 概要设计3.1系统流程图如图3.1所示。 图3.1 系统流程图开始调用输入函数init_stack();if(!form_win() 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; /*图表按键数
4、*/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;用于数据的输入和存放。进而定义了表格窗口函数,窗口画线函数和边界线函数:int form_win() /*表格窗口初始化*/textbackground(WHITE); /*窗口背景颜色*/ clrscr(); /*清零*/ draw_win(); /*窗口画线
5、*/ active_button(); /*窗口按键*/ out_text_win(); /*输出文本窗口*/window_xy(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()”等一系列
6、的函数,使得计算器的整个外型呈现了出来。为了输入方便一些,就接着定义的小键盘的输入函数: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_win() /*表格窗口初始
7、化*/ textbackground(WHITE); /*窗口背景颜色*/ clrscr(); /*清零*/ draw_win(); /*窗口画线*/ 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(30,0,79,24,win_color); /*边框的位置和颜色*/ i=
8、(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 *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); writ