绘制函数曲线c语言课程设计报告文档格式.docx
《绘制函数曲线c语言课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《绘制函数曲线c语言课程设计报告文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
绘制函数曲线
一、课程设计工作自2007年9月10日起至2007年9月14日止
二、课程设计内容:
用C语言编写软件完成以下任务:
在图形模式下,绘制一元二次函数ax2+bx+c.其中系数a,b,c,以及X的取值范围,均由用户从键盘输入。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“选择菜单”、“输入X区间”、“开始绘制”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩:
六、教师评语:
总结:
7
程序设计题目:
绘制函数曲线。
具体要求如下:
在图形模式下,绘制一元二次函数ax2+bx+c。
其中系数a,b,c,以及x的取值范围,均由用户从键盘输入。
用户界面中的菜单至少应包括“输入系数”“输入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_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);
关键技术分析
显示器设定:
intgraphdriver=DETECT,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,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;
{
x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y;
lineto((int)x2,(int)y2)
目录选择功能的实现:
switch(n)
case1:
fun1();
break;
case2:
fun2();
case3:
fun3();
case4:
exit(0);
default:
printf("
\nerror\n"
图3数据的输入
完整的源程序
#include<
stdio.h>
graphics.h>
floata,b,c,xmin,xmax,max;
/*定义全局变量*/
voidmenu()
{printf("
\n************************************WELCOME***********
**************************\n"
printf("
\n1.inputcoefficient"
\n2.inputextent"
\n3.drawfunctioncurve"
\n4.quit"
\n***************************************************
*****************************\n"
}
fun1()
inputa,b,c\n"
scanf("
%f,%f,%f"
&
a,&
b,&
c);
/*输入系数a,b,c*/
fun2()/*输入x范围*/
{
inputxmin,xmax\n"
%f,%f"
xmin,&
xmax);
funmax()/*求出x轴最大范围*/
floatm,n;
if(xmin<
0)
m=-xmin;
else
m=xmin;
if(xmax<
n=-xmax;
n=xmax;
if(m>
=n)
max=m;
max=n;
floatfunx(floatmax_x)/*求出x轴对应系数*/
return(max_x/2/max);
floatfuny(floatmax_y)/*求出y轴对应系数*/
floatd;
d=max_y/2/(a*max*max+b*max+c);
if(d>
0.6)
d=0.6;
if(d<
0.0026)
d=0.0026;
return(d);
fun3()
intmax_x,max_y;
intgraphdriver=DETECT,graphmode;
floatx1,y1,x2,y2,x,coe_x,coe_y;
initgraph(&
/*图形初始化*/
cleardevice();
/*清屏*/
max_x=getmaxx();
/*求出屏幕最大横坐标*/
max_y=getmaxy();
funmax();
coe_x=funx(max_x);
coe_y=funy(max_y);
line(0,240,640,240);
/*画直线*/
/*在固定点输出字符串*/
x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xm
n*coe_x+c)*coe_y;
}
getch();
closegraph();
/*关闭图形函数*/
main()
intn;
menu();
while
(1)
%d"
n);
switch(n)
{case1:
这次课程设计,加强了我对c语言的了解。
课程设计所面临的问题都是一些实际问题,在完成的过程中,解决实际问题的能力就很重要,还有一些是以前在课堂上没有学过的知识,这就要求我们去查一些资料,并学习。
虽然个人的程序不同,但还需要与别人的合作,因为我还有些不明白的知识,尤其是自学的知识,运用还不熟练,特别需要虚心的请教老师。
因此,老师在这次实践过程中给了我很大的帮助。
总之,这次课程设计带给我的不仅仅是完成后的喜悦,而是对我以后学习起到了很大的帮助。
今后的学习中,还会遇到很多没学过的知识,就要求我们去自主学习,去了解,去充实自己的知识,作一个有学识的人!