正弦函数的图形表示.docx

上传人:b****3 文档编号:10271539 上传时间:2023-05-24 格式:DOCX 页数:31 大小:180.70KB
下载 相关 举报
正弦函数的图形表示.docx_第1页
第1页 / 共31页
正弦函数的图形表示.docx_第2页
第2页 / 共31页
正弦函数的图形表示.docx_第3页
第3页 / 共31页
正弦函数的图形表示.docx_第4页
第4页 / 共31页
正弦函数的图形表示.docx_第5页
第5页 / 共31页
正弦函数的图形表示.docx_第6页
第6页 / 共31页
正弦函数的图形表示.docx_第7页
第7页 / 共31页
正弦函数的图形表示.docx_第8页
第8页 / 共31页
正弦函数的图形表示.docx_第9页
第9页 / 共31页
正弦函数的图形表示.docx_第10页
第10页 / 共31页
正弦函数的图形表示.docx_第11页
第11页 / 共31页
正弦函数的图形表示.docx_第12页
第12页 / 共31页
正弦函数的图形表示.docx_第13页
第13页 / 共31页
正弦函数的图形表示.docx_第14页
第14页 / 共31页
正弦函数的图形表示.docx_第15页
第15页 / 共31页
正弦函数的图形表示.docx_第16页
第16页 / 共31页
正弦函数的图形表示.docx_第17页
第17页 / 共31页
正弦函数的图形表示.docx_第18页
第18页 / 共31页
正弦函数的图形表示.docx_第19页
第19页 / 共31页
正弦函数的图形表示.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

正弦函数的图形表示.docx

《正弦函数的图形表示.docx》由会员分享,可在线阅读,更多相关《正弦函数的图形表示.docx(31页珍藏版)》请在冰点文库上搜索。

正弦函数的图形表示.docx

正弦函数的图形表示

课程设计

学号

班级

姓名

指导教师

2007年月日

课程设计任务书

题目:

正弦函数的图形表示

一、课程设计时间

2007年9月10日至2007年9月14日,共计1周,20学时。

二、课程设计内容

用C语言编写软件完成以下任务:

在图形模式下,绘制正弦函数sin(x)在x1~x2之间的图形。

注意:

此程序必须用TC2.0编写。

三、课程设计要求

1.程序质量:

✧贯彻结构化的程序设计思想。

✧用户界面友好,功能明确,操作方便。

✧用户界面中的菜单至少应包括“输入x的区间”、“开始绘制”、、“退出”3项。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

2.课程设计说明书:

课程结束后,上交课程设计说明书和源程序。

课程设计说明书的格式和内容参见提供的模板。

四、指导教师和学生签字

指导教师:

_______学生签名:

________

五、成绩:

六、教师评语:

 

目录

一、需求分析Ⅰ

二、程序流程图Ⅱ

三、核心技术的实现说明及相应程序段Ⅹ

四、个人总结ⅩⅣ

五、参考文献ⅩⅣ

六、源程序ⅩⅤ

 

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为三大模块,其中他们的功能分别是:

绘制图象(StratUp)、函数参数的设定(Settings)、退出(Quit)。

在这些函数当中,绘制图象(StratUp)又包括菜单栏的绘制,函数图形及坐标轴的绘制和函数的缩放与移动;函数参数的设定(Settings)包括函数Y=ASin(Bx)+C的参数A、B、C及X的区间MinX~MaxX.

二、程序流程图

整体框架图

Y=ASin(Bx)+C

 

绘制函数图象及功能模块图

 

(1)菜单界面

(2)函数参数设置

(3)函数区间设置

(4)欢迎屏幕

(5)函数图象

(6)函数的缩放

(7)函数的上下移动

(8)函数的左右移动

三、核心技术的实现说明及相应程序段

voidStartUp()/*图形环境启动*/

{

Initialize();

Start();

Draw();

Pause();

}

/****************************************/

voidInitialize()/*图形设备初始化*/

{

intGD=VGA;

intGM=VGAHI;

intErrorC;

clrscr();

initgraph(&GD,&GM,"");

ErrorC=graphresult();

if(ErrorC!

=0)

{

printf("GraphicsSystemERROR");

exit

(1);

}

cleardevice();

/****************************************/

voidStart()/*欢迎屏幕及视图初始化*/

{

setcolor(RED);

settextstyle(TRIPLEX_FONT,0,9);

outtextxy(120,180,"Welcome");

setcolor(YELLOW);

settextstyle(0,0,1);

outtextxy(6,470,"PressAnyKey...");

getch();

cleardevice();

setfillstyle(SOLID_FILL,7);

setlinestyle(0,0,1);

bar(0,0,639,479);

setfillstyle(SOLID_FILL,BLUE);

bar(1,1,638,12);

Title("FunctionGraphicsV0.1");

DrawRect(3,465,636,476);

DrawMenuBar();

Inform("Ready!

");

}

/****************************************/

intScreenX(doublex)/*数学座标转换为屏幕坐标*/

/*对于屏幕坐标而言,它的X轴坐标与数学坐标的正方向相同,而Y轴的坐标相反*/

{

return(316+ZOOM*x+RX*ZOOM);

}

intScreenY(doubley)

{

return(211-ZOOM*y+RY*ZOOM);

}

voidMoveUp()

{

if(RY-1>=-15)RY-=1;

Draw();

Inform("MoveUp");

}

voidMoveDown()

{if(RY+1<=15)RY+=1;

Draw();

Inform("MoveDown");

}

voidMoveLeft()

{

if(RX-1>=-15)RX-=1;

Draw();

Inform("MoveLeft");

}

voidMoveRight()

{

if(RX+1<=15)RX+=1;

Draw();

Inform("MoveRight");

}

/****************************************/

/*图形缩放*/

voidZoomIn()

{

if(ZOOM*1.5<=80)ZOOM*=1.5;

Draw();

Inform("ZoomIn");

}

voidZoomOut()

{

if(ZOOM/1.5>=1.5)ZOOM/=1.5;

Draw();

Inform("ZoomOut");

}

/*目录的选择功能实现*/

switch(getch())

case‘0’:

;break;

case‘1’:

;break;

case‘2’:

判断所输入的数据是否符合要求:

voidSetA()

{

do

{

printf("\nPleaseInputA(-10~10):

");

scanf("%f",&A);

if(A*A>100)printf("InputWrong(-10~10)!

TryAgain.\n");

}while(A*A>100);

}

voidSetB()

{

do

{

printf("\nPleaseInputB(-10~10):

");

scanf("%f",&B);

if(B*B>100)printf("InputWrong(-10~10)!

TryAgain.\n");

}while(B*B>100);

}

voidSetC()

{

do

{

printf("\nPleaseInputC(-10~10):

");

scanf("%f",&C);

if(C*C>100)printf("InputWrong(-10~10)!

TryAgain.\n");

}while(C*C>100);

}

/****************************************/

/*区间设置*/

voidSetMaxX()

{

do

{

printf("\nPleaseInputMaxX(-100~100):

");

scanf("%f",&MaxX);

if(MaxX*MaxX>10000||MaxX<=MinX)printf("InputWrong.(-100~100),AndMaxX>MinX!

TryAgain.\n");

}while(MaxX*MaxX>10000||MaxX<=MinX);

}

voidSetMinX()

{

do

{

printf("\nPleaseInputMinX(-100~100):

");

scanf("%f",&MinX);

if(MinX*MinX>10000||MaxX<=MinX)printf("InputWrong.(-100~100),AndMinX

TryAgain.\n");

}while(MinX*MinX>10000||MaxX<=MinX);

 

四、个人总结

通过这次C语言的课设实践活动,使我充分的体会到自己的不足。

这让我在实践中对C语言又有了一个全新的认识。

这让我在了解到自己的不足的同时,使自己对C语言的掌握又加深了一步。

尤其是在这次实践活动中,我的课题:

绘制函数SinX的过程中了解了更多的知识,对于C语言的绘图有了一定的掌握。

使得自己可以运用程序画出简单的函数图象。

在对C语言绘制图形的过程中,让自己了解到不少东西,如数学坐标转换成屏幕坐标,菜单栏及欢迎屏幕的制作,图形的缩放及移动,图形的颜色和立体感上也有了一定的了解,并可以进行一些简单的操作等

五、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

六、源程序

/*编译预处理*/

#include

#include

#include

#include

#include

#include

#defineESC0x1b

#defineMENUstructmenu

/*#############################################*/

/*菜单结构体*/

structmenu

{

charName[16];

intValue;

void(*Function)();

};

/*#############################################*/

/*全局变量*/

intRX=0,RY=0;

doubleZOOM=10;

intQ=10;

floatA=1,B=1,C=0;

floatMaxX=32,MinX=-32;

/*菜单*/

MENUMenus[3];

MENUMenus2[6];

/*#############################################*/

/*函数声明*/

voidm();

voidInitialize();

voidStart();

voidDraw();

voidDrawMenuBar();

voidZoomIn();

voidZoomOut();

voidPause();

voidTitle(char*str);

voidInform(char*str);

voidDrawMenu(MENU*m,int,int,int,int);

voidDrawRect(int,int,int,int);

voidDrawAxis(int,int,int,int);

voidMoveUp();

voidMoveDown();

voidMoveLeft();

voidSetMinX();

voidSetMaxX();

voidSetA();

voidSetB();

voidSetC();

voidSetting();

intMenuInput(MENU*M,int);

voidShowMenu(MENU*M,int);

voidQuit();

voidMoveRight();

voidConfigure();

voidStartUp();

intScreenX(double);

intScreenY(double);

doubleFunction(double);

/*######################################*/

/*程序开始*/

/****************************************/

main()/*主函数*/

{/*菜单资源初始化*/

strcpy(Menus[0].Name,"StartNow");Menus[0].Value=0;Menus[0].Function=&StartUp;

strcpy(Menus[1].Name,"Settings");Menus[1].Value=1;Menus[1].Function=&Setting;

strcpy(Menus[2].Name,"Quit");Menus[2].Value=2;Menus[2].Function=NULL;

strcpy(Menus2[0].Name,"SetA");Menus2[0].Value=0;Menus2[0].Function=&SetA;

strcpy(Menus2[1].Name,"SetB");Menus2[1].Value=1;Menus2[1].Function=&SetB;

strcpy(Menus2[2].Name,"SetC");Menus2[2].Value=2;Menus2[2].Function=&SetC;

strcpy(Menus2[3].Name,"SetMinX");Menus2[3].Value=3;Menus2[3].Function=&SetMinX;

strcpy(Menus2[4].Name,"SetMaxX");Menus2[4].Value=4;Menus2[4].Function=&SetMaxX;

strcpy(Menus2[5].Name,"Back");Menus2[5].Value=5;Menus2[5].Function=NULL;

Configure();/*进入程序*/

}

/****************************************/

voidStartUp()/*图形环境启动*/

{

Initialize();

Start();

Draw();

Pause();

}

/****************************************/

voidInitialize()/*图形设备初始化*/

{

intGD=VGA;

intGM=VGAHI;

intErrorC;

clrscr();

initgraph(&GD,&GM,"");

ErrorC=graphresult();

if(ErrorC!

=0)

{

printf("GraphicsSystemERROR");

exit

(1);

}

cleardevice();

}

/****************************************/

voidConfigure()/*字符环境主菜单*/

{

do

{

clrscr();

printf("#######################################\n");

printf("##\n");

printf("#Welcome#\n");

printf("##\n");

printf("#######################################\n");

ShowMenu(Menus,3);

}while(MenuInput(Menus,3)!

=1);

Quit();

}

/****************************************/

intMenuInput(MENU*ms,intn)/*菜单输入*/

{

inti,a=0;

charc;

do

{

c=getch();

for(i=0;i

{

if(c==('0'+ms[i].Value))

{

if(ms[i].Function==NULL){a=1;break;break;}

else{ms[i].Function();break;break;}

}

}

}while(i==n);

returna;

}

/****************************************/

voidShowMenu(MENU*ms,intn)/*显示菜单*/

{

inti;

for(i=0;i

{

printf("[%d]--%s\n",ms[i].Value,ms[i].Name);

}

printf("Select:

");

}

/****************************************/

voidStart()/*欢迎屏幕及视图初始化*/

{

setcolor(RED);

settextstyle(TRIPLEX_FONT,0,9);

outtextxy(120,180,"Welcome");

setcolor(YELLOW);

settextstyle(0,0,1);

outtextxy(6,470,"PressAnyKey...");

getch();

cleardevice();

setfillstyle(SOLID_FILL,7);

setlinestyle(0,0,1);

bar(0,0,639,479);

setfillstyle(SOLID_FILL,BLUE);

bar(1,1,638,12);

Title("FunctionGraphicsV0.1");

DrawRect(3,465,636,476);

DrawMenuBar();

Inform("Ready!

");

}

 

/****************************************/

intScreenX(doublex)/*数学座标转换为屏幕坐标*/

{

return(316+ZOOM*x+RX*ZOOM);

}

intScreenY(doubley)

{

return(211-ZOOM*y+RY*ZOOM);

}

/****************************************/

voidSetting()/*字符界面参数设置菜单*/

{

do

{

clrscr();

printf("#######################################\n");

printf("##\n");

printf("#Settings#\n");

printf("#y=Asin(B*x)+C#\n");

printf("##\n");

printf("#######################################\n");

ShowMenu(Menus2,6);

}while(MenuInput(Menus2,6)!

=1);

 

}

/****************************************/

voidDraw()/*绘制函数图像*/

{

doublex,y,y2;

intMaxY,MinY;

DrawRect(3,37,636,460);

setviewport(4,38,635,459,1);

setfillstyle(1,7);

bar(0,0,640,480);

/*MaxX=316/ZOOM;*/

MaxY=211/ZOOM;

/*MinX=-316/ZOOM;*/

MinY=-211/ZOOM;

DrawAxis(MaxX,MaxY,MinX,MinY);

setcolor(RED);

setlinestyle(0,0,1);

for(x=MinX;x<=MaxX;x+=1.0/Q)

{

y=Function(x);

y2=Function(x+1.0/Q);

line(ScreenX(x),ScreenY(y),ScreenX(x+1.0/Q),ScreenY(y2));

}

}

/****************************************/

voidDrawMenuBar()/*绘制菜单条*/

{

setlinestyle(0,0,1);

setcolor(DARKGRAY);

line(1,13,638,13);

line(1,27,638,27);

setcolor(WHITE);

line(1,14,638,14);

line(1,28,638,28);

setcolor(BLACK);

settextstyle(DEFAULT_FONT,0,1);

}

/****************************************/

/*绘制坐标轴*/

voidDrawAxis(intmaxx,intmaxy,intminx,intminy)

{

inti;

setcolor(GREEN);

line(ScreenX(minx),ScreenY(0),ScreenX(maxx),ScreenY(0));

line(ScreenX(0),ScreenY(miny),ScreenX(0),ScreenY(maxy));

for(i=minx;i<=maxx;i++)

{

if(i%10==0)

{

line(ScreenX(i),ScreenY(-1),ScreenX(i),ScreenY

(1));

}

}

for(i=miny;i<=maxy;i++)

{

if(i%10==0)

{

line(ScreenX(-1),ScreenY(i),ScreenX

(1),ScreenY(i));

}

}

}

/****************************************/

voidInform(char*str)/*状态栏输出*/

{

setviewport(4,466,635,475,1);

setfillstyle(1,7);

bar(0,0,640,100);

setcolor(BLUE);

settextstyle(DEFAULT_FONT,0,1);

outtextxy(2,1,str);

setviewport(0,0,639,479,1);

}

/****************************************/

voidPause()/*程序暂停等待用户输入*/

{

intExitFlag=0;

do

{

switch(getch())

{

case72:

MoveUp();break;

case80:

MoveDown();br

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2