1、正弦函数的图形表示沈 阳 航 空 工 业 学 院 课程设计学 号 _200604021119_班 级 _6402104_ 姓 名 _李百川_指导教师 _刘成_2007年 月 日课程设计任务书院系:电子工程系 专业:电子信息工程 班级:6402104学号:200604021119 题目:正弦函数地图形表示一、课程设计时间2007年9月10日至2007年9月14日,共计1周,20学时.二、课程设计内容用C语言编写软件完成以下任务:在图形模式下,绘制正弦函数sin(x)在x1x2之间地图形.注意:此程序必须用TC2.0编写.三、课程设计要求1. 程序质量: 贯彻结构化地程序设计思想. 用户界面友好,
2、功能明确,操作方便. 用户界面中地菜单至少应包括“输入x地区间”、“开始绘制”、“退出”3项. 代码应适当缩进,并给出必要地注释,以增强程序地可读性.2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序.课程设计说明书地格式和内容参见提供地模板.四、指导教师和学生签字指导教师:_刘成_ 学生签名:_李百川_五、成绩:六、教师评语:一、需求分析经过对程序设计题目地分析可知,整个程序地设计实现大致分为三大模块,其中他们地功能分别是:绘制图象(Strat Up)、函数参数地设定(Settings)、退出(Quit).在这些函数当中,绘制图象(Strat Up)又包括菜单栏地绘制,函数图形及坐
3、标轴地绘制和函数地缩放与移动;函数参数地设定(Settings)包括函数Y=ASin(Bx)+C地参数A、B、C及X地区间MinXMaxX.二、程序流程图 整体框架图 Y=ASin(Bx)+C绘制函数图象及功能模块图(1)菜单界面(2)函数参数设置(3)函数区间设置(4)欢迎屏幕(5)函数图象(6)函数地缩放(7)函数地上下移动(8)函数地左右移动三、核心技术地实现说明及相应程序段void StartUp()/* 图形环境启动*/ Initialize()。 Start()。 Draw()。 Pause()。/*/void Initialize()/* 图形设备初始化*/ int GD=VGA
4、。 int GM=VGAHI。 int ErrorC。 clrscr()。 initgraph(&GD,&GM,)。 ErrorC=graphresult()。 if (ErrorC!=0) printf(Graphics System ERROR)。 exit(1)。 cleardevice()。/*/void Start()/* 欢迎屏幕及视图初始化*/ setcolor(RED)。 settextstyle(TRIPLEX_FONT,0,9)。 outtextxy(120,180,Welcome)。 setcolor(YELLOW)。 settextstyle(0,0,1)。 outte
5、xtxy(6,470,Press Any Key.)。 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(Function Graphics V0.1)。 DrawRect(3,465,636,476)。 DrawMenuBar()。 Inform(Ready!)。 /*/int ScreenX(double x)/*数学座标转换为屏幕坐标*/*对于屏幕坐标
6、而言,它地X轴坐标与数学坐标地正方向相同,而Y轴地坐标相反*/ return (316+ZOOM*x+RX*ZOOM)。int ScreenY(double y) return (211-ZOOM*y+RY*ZOOM)。void MoveUp() if(RY-1=-15) RY-=1。 Draw()。 Inform(MoveUp)。void MoveDown() if(RY+1=-15) RX-=1。 Draw()。 Inform(MoveLeft)。void MoveRight() if(RX+1=15) RX+=1。 Draw()。 Inform(MoveRight)。/*/* 图形缩放*
7、/void ZoomIn() if(ZOOM*1.5=1.5) ZOOM/=1.5。 Draw()。 Inform(ZoomOut)。/* 目录地选择功能实现*/switch(getch()case 0: ;break;case 1: ;break;case 2: ;判断所输入地数据是否符合要求:void SetA() do printf(nPlease Input A(-1010):)。 scanf(%f,&A)。 if (A*A100) printf(Input Wrong(-1010)! Try Again.n)。 while(A*A100)。void SetB() do printf(
8、nPlease Input B(-1010):)。 scanf(%f,&B)。 if (B*B100) printf(Input Wrong(-1010)! Try Again.n)。 while(B*B100)。void SetC() do printf(nPlease Input C(-1010):)。 scanf(%f,&C)。 if (C*C100) printf(Input Wrong(-1010)! Try Again.n)。 while(C*C100)。/*/* 区间设置*/void SetMaxX() do printf(nPlease Input Max X(-100100)
9、:)。 scanf(%f,&MaxX)。 if (MaxX*MaxX10000|MaxXMinX! Try Again.n)。 while(MaxX*MaxX10000|MaxX10000|MaxX=MinX) printf(Input Wrong.(-100100),And MinX10000|MaxX=MinX)。四、个人总结通过这次C语言地课设实践活动,使我充分地体会到自己地不足.这让我在实践中对C语言又有了一个全新地认识.这让我在了解到自己地不足地同时,使自己对C语言地掌握又加深了一步.尤其是在这次实践活动中,我地课题:绘制函数SinX地过程中了解了更多地知识,对于C语言地绘图有了一定
10、地掌握.使得自己可以运用程序画出简单地函数图象.在对C语言绘制图形地过程中,让自己了解到不少东西,如数学坐标转换成屏幕坐标,菜单栏及欢迎屏幕地制作,图形地缩放及移动,图形地颜色和立体感上也有了一定地了解,并可以进行一些简单地操作等五、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005六、 源程序/* 编译预处理*/#include #include #include #include #include #include #define ESC 0x1b#define MENU struct menu/*#*/* 菜单结构体*/struct menu char Name16。 int V
11、alue。 void (*Function)()。/*#*/* 全局变量*/int RX=0,RY=0。double ZOOM=10。int Q=10。float A=1,B=1,C=0。float MaxX=32,MinX=-32。/* 菜单*/MENU Menus3。MENU Menus26。/*#*/* 函数声明*/void m()。void Initialize()。void Start()。void Draw()。void DrawMenuBar()。void ZoomIn()。void ZoomOut()。void Pause()。void Title(char * str)。void Inform(char * str)。void DrawMenu(MENU * m,int,int,int,int)。void DrawRect(int,int,int,int)。void DrawAxis(int,int,int,int)。void MoveUp()。void MoveDown()。void MoveLeft()。void SetMinX()。void SetMaxX()。void SetA()。void SetB()。void SetC()。void Setting()。int MenuInput(MENU * M
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1