C++语言毕业课程设计报告正文计算器的实现Word格式.docx
- 文档编号:13655516
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:22
- 大小:104.30KB
C++语言毕业课程设计报告正文计算器的实现Word格式.docx
《C++语言毕业课程设计报告正文计算器的实现Word格式.docx》由会员分享,可在线阅读,更多相关《C++语言毕业课程设计报告正文计算器的实现Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
(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.1所示。
图3.1系统流程图
开始
调用输入函数init_stack();
N
Y
printf("
can'
tformthedevice,pressanykeytoleave!
..."
);
调用左窗口函数menu();
再调用计算器构成函数calculator();
结束
3.2查询函数流程图
4详细设计
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();
/*窗口按键*/
out_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(tx<
32)tx++;
/*backspace时X不能小于32*/
put_char(tx,ty,'
'
}当按“〈-”或:
”backspace”时光标随tx减小而减小。
再就是计算器运算的主程序:
put_string()/*计算机运算函数*/
floatresult;
tx=32;
switch(tag)/*根据运算符号计算*/
{
case'
+'
:
result=v1+v2;
break;
/*做加法*/
-'
result=v1-v2;
/*做减法*/
case'
*'
result=v1*v2;
/*做乘法*/
/'
result=v1/v2;
/*做除法*/
default:
result=v1;
/*若不计算输出0*/
}
sprintf(stack.s,"
%.3f"
result);
/*输出结果保留小数点后三位*/
通过switch来实现相应的计算,输出保留三位小数的结果。
最后mian()函数:
main()
init_stack();
vid_mem=(charfar*)0xb;
if(!
form_win())
printf("
getch();
exit();
menu();
calculator();
}
通过调用上面定义的函数实现了计算器整个功能。
4.2具体代码实现
源程序代码:
#include"
dos.h"
conio.h"
string.h"
stdio.h"
#definenormbut_bor0x80
#definepresbut_but0xb8
#definenormnum_but0x8e
#definepresnum_but0xb9
#definespebut_char0x2c
#definewin_color0xf2
#definewin_char0xfb
intsx,sy,ex,ey;
init_stack()/*初始化栈*/
stack.tos=0;
stack.top=0;
stack.s[stack.tos]='
\0'
;
push(charch)/*入栈*/
stack.s[stack.tos++]=ch;
pop()/*取栈数据通过*/
if(stack.tos>
0)
stack.s[--stack.tos]='
clear_stack()/*清空栈*/
textbackground(WHITE);
window_xy(32,3);
/*计算结果窗口*/
inti;
charfar*t;
char*s="
Thisisasimplecalculator!
"
/*顶端边框输出的字符*/
draw_border(win_color);
/*边框的位置和颜色*/
i=(79-30-strlen(s))/2+30;
t=vid_mem+i*2;
for(;
*s;
*t++=*s++;
*t++=win_color;
/*顶端字体颜色*/
charfar*t,far*v;
t=vid_mem;
for(i=sx+1;
i<
ex;
i++)
v=t+sy*160+i*2;
*v++=196;
/*每一行上画线确定为直线*/
*v=attrib;
v=t+ey*160+i*2;
/*每一行下画线确定为直线*/
for(i=sy+1;
ey;
v=t+i*160+sx*2;
*v++=179;
/*每一列左画线确定为直线*/
v=t+i*160+ex*2;
/*每一列由画线确定为直线*/
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(intx,inty,charch,intattrib)/*字符输入函数*/
charfar*v;
v=vid_mem;
v+=x*2+160*y;
*v++=ch;
active_button()/*图表按钮设定函数*/
make_button(,"
1"
/*每个键对应的位置和数值*/
2"
3"
+"
-"
make_button(4,"
4"
5"
6"
*"
/"
/*“/”的位置*/
make_button(17,"
7"
8"
9"
="
<
make_button(20,"
0"
/*“0”的位置*/
End"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言 毕业 课程设计 报告 正文 计算器 实现