C++语言课程设计报告范例Word文件下载.docx

上传人:b****6 文档编号:21454486 上传时间:2023-01-30 格式:DOCX 页数:18 大小:21.88KB
下载 相关 举报
C++语言课程设计报告范例Word文件下载.docx_第1页
第1页 / 共18页
C++语言课程设计报告范例Word文件下载.docx_第2页
第2页 / 共18页
C++语言课程设计报告范例Word文件下载.docx_第3页
第3页 / 共18页
C++语言课程设计报告范例Word文件下载.docx_第4页
第4页 / 共18页
C++语言课程设计报告范例Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C++语言课程设计报告范例Word文件下载.docx

《C++语言课程设计报告范例Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++语言课程设计报告范例Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

C++语言课程设计报告范例Word文件下载.docx

(1)WINDOWS2000/X系统

(2)TurboC2.0编译环境

2.4开发工具

C语言

3概要设计

3.1系统流程图

如图3.1所示

图3.1系统流程图

3.2查询函数流程图

 

Cl)边界画线函数流程图

dravf.border(intsx,intsy)(边界划线函数)

(2)图标技钮设置函数

active_button(图标按钮设置國数)

(3)小据盘的输入函数

犍盘的输入画数)

¥

〔4)毬药移动和对应数信关系函埶

getdata(intx.iniy〕(犍的移劫和对应数值关茶(8数)

intunra:

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*)0xb8000000;

if(!

form_win())

printf("

can'

tformthedevice,pressanykeytoleave!

..."

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

structs_button/*按键的结构体*/

structstack/*结构体栈*/

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()/*清空栈*/

intform_win()/*表格窗口初始化*/

/*窗口背景颜色*/

clrscr();

窗口按键*/输出文本窗口*/计算结果窗口*/

/*out_text_win();

/*window_xy(32,3);

/*

inti;

charfar*t;

char*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;

/*顶端字体颜色*/

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;

/*每一行下画线确定为直线*/*v=attrib;

for(i=sy+1;

ey;

v=t+i*160+sx*2;

v=t+i*160+ex*2;

*v++=179;

/*每一列由画线确定为直线*/*v=attrib;

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(0,32,9,38,11,"

1"

/*每个键对应的位置和数值*/make_button(1,42,9,48,11,"

2"

make_button(2,52,9,58,11,"

3"

make_button(3,62,9,67,11,"

+"

make_button(4,71,9,76,11,"

-"

make_button(5,32,12,38,14,"

4"

make_button(6,42,12,48,14,"

5"

make_button(7,52,12,58,14,"

6"

make_button(8,62,12,67,14,"

*"

make_button(9,71,12,76,14,"

/"

/*“/”的位置*/

make_button(10,32,15,38,17,"

7"

make_button(11,42,15,48,17,"

8"

make_button(12,52,15,58,17,"

9"

make_button(13,62,15,67,17,"

="

make_button(14,71,15,76,17,"

<

make_button(15,32,18,38,20,"

0"

/*“0”的位置*/

make_button(16,71,18,76,20,"

End"

for(i=0;

17;

draw_border(button[i].sx,button[i].sy,button[i].ex,button[i].ey,normbut_bor);

write_top(button[i].sx+1,button[i].sy+1,button[i].ex-1,button[i].head,normnum_but);

write_top(intx1,inty,intx2,char*s,intattrib)

charfar*v,far*t;

for(i=x1;

=x2;

t=v+y*160+i*2;

*t++='

'

*t=attrib;

i=(x2-x1-strlen(s)+1)/2+x1;

t=v+160*y+i*2;

*t++=attrib;

make_button(intnum,intsx,intsy,intex,intey,char*top){

button[num].sx=sx;

button[num].sy=sy;

button[num].ex=ex;

button[num].ey=ey;

button[num].head=top;

button[num].press=0;

out_text_win()/*结果输出窗口*/

draw_border(31,2,75,4,0x7f);

write_top(32,3,74,"

"

0xff);

get_key()/*得到按键值*/

charch[2];

}c;

c.i=bioskey(0);

return(c.i);

window_xy(intx,inty)

unionREGSr;

/*定义联合体*/

r.h.ah=2;

/*初始化*/

r.h.dh=y;

r.h.dl=x;

r.h.bh=0;

int86(0x10,&

r,&

r);

key_choice()/*小键盘键的输入函数*/

intch,bx=0,by=0;

/*起始停留键的位置*/

do

ch=get_key();

switch(ch)

case0x4f31:

res_but(bx,by);

bx=0;

by=0;

get_data(bx,by);

/*图表键和小键盘的键对应,此处为1*/

case

0x5032:

bx=1;

/*2*/

0x5133:

bx=2;

/*3*/

0x4b34:

by=1;

/*4*/case

0x4c35:

/*5*/case

0x4d36:

/*6*/case

0x4737:

by=2;

/*7*/case

0x4838:

/*8*/case

0x4939:

/*9*/case

0x5230:

by=3;

/*0*/

0x4e2b:

bx=3;

send1();

/*加*/

0x4a2d:

bx=4;

/*减*/

0x372a:

/*乘*/

0x352f:

/*除*/

case0x0d3d:

send2();

out_text_win();

put_string();

/*等于号*/

case0x1c0d:

by=4;

/*回车键(相当与等于号)*/

case0x0e08:

pop();

text_clo();

/*退格(backspace)*/

case0x3920:

ba_space(bx,by);

break;

/*空格*/

End)*/

case0x4800:

by--;

/*上*/

case0x4b00:

bx--;

/*左*/

case0x5000:

by++;

/*下*/

case0x4d00:

bx++;

/*右*/

if(bx<

O)bx=O;

/*只能在X0到4和Y在0到4选择按键*/

if(by<

0)by=0;

if(by>

4)by=4;

if(bx>

4)bx=4;

select_but(bx,by);

}while

(1);

ba_space(intx,inty)

intnum;

charch;

if(y>

2)

if(x<

2)num=15;

elsenum=16;

elsenum=x+5*y;

switch(num)

case3:

case13:

case4:

case8:

case9:

case16:

exit

(1);

/*图表对应的结束键*/

case14:

/*“〈—”对应功能*/default:

text_clo()/*文本光标*/

switch(tag)/*根据运算符号计算*/{

/*做乘法*/case'

/*若不计算输出0*/}

/*输出结果保留小数点后三位*/while(stack.s[stack.top])

{put_char(tx,ty,stack.s[stack.top++]);

tx++;

send1()/*向服务器发送请求*/{

sscanf(stack.s,"

%f"

&

v1);

/*输入并储存在V1中*/

clear_stack();

/*清除栈*/

send2()/*向服务器发送信息*/

清除栈*/

键的移动和对应数值关系*/

v2);

get_data(intx,inty)/*

/*elsenum=x+5*y;

使得第3行只能取的0键和End键*/

其余各键坐标和原来设定的值的关系*/

switch(num)/*

使得图表面键和实际键一致*/

case0:

ch='

1'

/*图表面1键和实际1一致*/

case1:

2'

case2:

3'

case3:

case4:

case5:

4'

case6:

5'

case7:

6'

case10:

7'

case11:

8'

case12:

9'

='

case15:

0'

/*图表面0键和实际0一致*/

default:

ch=1;

if(ch!

=1)

{put_char(tx,ty,ch);

&

ch!

push(ch);

elsetag=ch;

tx++;

select_but(intx,inty)/*选择按钮*/

draw_border(button[num].sx,button[

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1