《绘制函数曲线-c语言-课程设计-报告(共10页).doc》由会员分享,可在线阅读,更多相关《绘制函数曲线-c语言-课程设计-报告(共10页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上沈 阳 航 空 工 业 学 院课程设计学 号: 9班 级: 姓 名:王穷杰指导教师: 刘成2007年 9 月 17 日专心-专注-专业沈阳航空工业学院课程设计任务书院系:电子工程系 专业:电子信息工程 班级:班学号:2006 课程设计题目:绘制函数曲线一、课程设计工作自2007年9月10日起至2007年9月14日止二、课程设计内容:用C语言编写软件完成以下任务:在图形模式下,绘制一元二次函数ax2+bx+c.其中系数a,b,c,以及X的取值范围,均由用户从键盘输入。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界
2、面中的菜单至少应包括“选择菜单”、“输入X区间”、“开始绘制”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩:六、教师评语: 目录:7程序设计题目:绘制函数曲线。具体要求如下:在图形模式下,绘制一元二次函数ax+bx+c。其中系数a,b,c,以及x 的取值范围,均由用户从键盘输入。用户界面中的菜单至少应包括“输入系数”“输入x的曲间”“开始绘制”“退出”题目分析:经过对程序设计题目的分析可知,整个程序的设计实现
3、大致分为:绘制坐标,绘制图形。在绘制坐标中,关键步骤是将笛卡儿坐标转化成屏幕坐标。总体设计:图1整体框架图:开始输出目录选项结束输入系数a,b,c输入xmin,xmax输出绘图模块设计图2坐标转换:fun3 initgraph(&graphdriver,&graphmode,)max_x=getmaxx();max_y=getmaxy()绘制坐标x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmin*coe_x+c)*coe_ymoveto(int)x1,(int)y1)for(x=xmin*coe_x;x=xmax*c
4、oe_x;x+)x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y; lineto(int)x2,(int)y2);关键技术分析显示器设定:int graphdriver=DETECT,graphmode图形初始化:initgraph(&graphdriver,&graphmode,)求出屏幕的最大横,纵坐标大小:max_x=getmaxx(); max_y=getmaxy()绘制坐标轴:line(0,240,640,240); 画直线 line(320,0,320,480); line(640,240,635,235); line(640,240,635,
5、245); line(320,0,315,5); line(320,0,325,5); outtextxy(320,240,(0,0); 在固定点输出字符串 outtextxy(620,240,x); outtextxy(320,10,y);坐标之间的转换:x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmin*coe_x+c)*coe_y; moveto(int)x1,(int)y1); for(x=xmin*coe_x;x=xmax*coe_x;x+) x2=max_x/2+x,y2=max_y/2-(a*x*x+b
6、*x+c)*coe_y; lineto(int)x2,(int)y2)目录选择功能的实现:switch(n) case 1:fun1();break; case 2:fun2();break; case 3:fun3();break; case 4:exit(0); default:printf(n error n)图3数据的输入完整的源程序#include#includefloat a,b,c,xmin,xmax,max; /*定义全局变量*/void menu()printf(n*WELCOME*n); printf(n 1.input coefficient); printf(n 2.i
7、nput extent);printf(n 3.draw function curve); printf(n 4.quit); printf(n*n);fun1() printf(input a,b,cn); scanf(%f,%f,%f,&a,&b,&c); /*输入系数a,b,c*/fun2() /*输入x范围*/ printf(input xmin,xmaxn); scanf(%f,%f,&xmin,&xmax);funmax() /*求出x轴最大范围*/ float m,n; if(xmin0) m=-xmin; else m=xmin; if(xmax=n) max=m; else
8、max=n;float funx(float max_x) /*求出x轴对应系数*/ return(max_x/2/max);float funy(float max_y) /*求出y轴对应系数*/ float d; d=max_y/2/(a*max*max+b*max+c); if(d0.6) d=0.6; if(d0.0026) d=0.0026; return(d);fun3() int max_x,max_y; int graphdriver=DETECT,graphmode; float x1,y1,x2,y2,x,coe_x,coe_y; initgraph(&graphdrive
9、r,&graphmode,); /*图形初始化*/ cleardevice(); /*清屏*/ max_x=getmaxx(); /*求出屏幕最大横坐标*/ max_y=getmaxy(); /*求出屏幕最大横坐标*/ funmax(); coe_x=funx(max_x); coe_y=funy(max_y); line(0,240,640,240); /*画直线*/ line(320,0,320,480); line(640,240,635,235); line(640,240,635,245); line(320,0,315,5); line(320,0,325,5); outtextx
10、y(320,240,(0,0); /*在固定点输出字符串*/ outtextxy(620,240,x); outtextxy(320,10,y);x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmn*coe_x+c)*coe_y; moveto(int)x1,(int)y1); for(x=xmin*coe_x;x=xmax*coe_x;x+) x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y; lineto(int)x2,(int)y2); getch(); closegraph(
11、); /*关闭图形函数*/main() int n; menu(); while(1) scanf(%d,&n); switch(n) case 1:fun1();break; case 2:fun2();break; case 3:fun3();break; case 4:exit(0); default:printf(n error n); 总结: 这次课程设计,加强了我对c语言的了解。课程设计所面临的问题都是一些实际问题,在完成的过程中,解决实际问题的能力就很重要,还有一些是以前在课堂上没有学过的知识,这就要求我们去查一些资料,并学习。虽然个人的程序不同,但还需要与别人的合作,因为我还有些不明白的知识,尤其是自学的知识,运用还不熟练,特别需要虚心的请教老师。因此,老师在这次实践过程中给了我很大的帮助。 总之,这次课程设计带给我的不仅仅是完成后的喜悦,而是对我以后学习起到了很大的帮助。今后的学习中,还会遇到很多没学过的知识,就要求我们去自主学习,去了解,去充实自己的知识,作一个有学识的人!