1、绘制函数曲线 c语言 课程设计 报告沈 阳 航 空 工 业 学 院课程设计学 号: 200604021109班 级: 6402104姓 名:王穷杰指导教师: 刘成2007年 9 月 17 日沈阳航空工业学院课程设计任务书院系:电子工程系 专业:电子信息工程 班级:6402104班学号:2006 04021109 课程设计题目:绘制函数曲线一、课程设计工作自2007年9月10日起至2007年9月14日止二、课程设计内容:用C语言编写软件完成以下任务:在图形模式下,绘制一元二次函数ax2+bx+c.其中系数a,b,c,以及X的取值范围,均由用户从键盘输入。三、课程设计要求1. 程序质量: 贯彻结构
2、化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“选择菜单”、“输入X区间”、“开始绘制”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩:六、教师评语: 目录程序设计题目 1题目分析 1总体设计 1模块设计 2关键技术分析 2完整的源程序 3总结: 7程序设计题目:绘制函数曲线。具体要求如下:在图形模式下,绘制一元二次函数ax2+bx+c。其中系数a,b,c,以及x 的取值范围
3、,均由用户从键盘输入。用户界面中的菜单至少应包括“输入系数”“输入x的曲间”“开始绘制”“退出”题目分析:经过对程序设计题目的分析可知,整个程序的设计实现大致分为:绘制坐标,绘制图形。在绘制坐标中,关键步骤是将笛卡儿坐标转化成屏幕坐标。总体设计:图1整体框架图:模块设计图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_ymove
4、to(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);关键技术分析显示器设定:int graphdriver=DETECT,graphmode图形初始化:initgraph(&graphdriver,&graphmode,)求出屏幕的最大横,纵坐标大小:max_x=getmaxx(); max_y=getmaxy()绘制坐标轴:line(0,240,640,240); 画直线 line(320,0,320,480
5、); line(640,240,635,235); line(640,240,635,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
6、*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)目录选择功能的实现: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);
7、printf(n 1.input coefficient); printf(n 2.input 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=
8、-xmin; else m=xmin; if(xmax=n) max=m; else 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
9、,x2,y2,x,coe_x,coe_y; initgraph(&graphdriver,&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); lin
10、e(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*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; l
11、ineto(int)x2,(int)y2); getch(); closegraph(); /*关闭图形函数*/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语言的了解。课程设计所面临的问题都是一些实际问题,在完成的过程中,解决实际问题的能力就很重要,还有一些是以前在课堂上没有学过的知识,这就要求我们去查一些资料,并学习。虽然个人的程序不同,但还需要与别人的合作,因为我还有些不明白的知识,尤其是自学的知识,运用还不熟练,特别需要虚心的请教老师。因此,老师在这次实践过程中给了我很大的帮助。 总之,这次课程设计带给我的不仅仅是完成后的喜悦,而是对我以后学习起到了很大的帮助。今后的学习中,还会遇到很多没学过的知识,就要求我们去自主学习,去了解,去充实自己的知识,作一个有学识的人!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1