1、绘制余弦曲线和直线 课程设计学 号 _200704021120班 级 _7402104_ 姓 名 _ _指导教师 _ _2008年 9月 12日 课程设计任务书电子信息工程学院 电子信息工程专业 7402104班 学号200704021120一、课程设计题目:绘制余弦曲线和直线二、课程设计工作自2008年9月8日起至2008年9月12日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:在图形模式下,在屏幕上显示0360度的y=cos(x)曲线与直线x=45(y-1)+31的叠加图形。其中cos(x)的图形用“*”表示,x用“+”表示,在两个图形交点处用x图形的符号。四、课
2、程设计要求:程序质量: 贯彻结构化程序设计思想。 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 用户界面中的菜单至少应包括“开始”、“显示”、“退出”3项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下: 封面 课程设计任务书 目录 需求分析(分析题目的要求) 程序流程图(总体流程图和主要功能模块流程图) 核心技术的实现说明及相应程序段 个人总结 参考资料 源程序及适当的注释指导教师: 学生签名:五、成绩:六、教师评语:目录一、需求分析 1二、程序流程图 1三、核心技术的实现说明及相应程序段 5
3、四、个人总结 5五、参考文献 6六、源程序 7一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现。在屏幕上显示0360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。分析: 在TC下启动图形系统进行绘图,能将笛卡尔坐标转换成屏幕坐标,能判断输入x是否正确,并能正确绘图,菜单功能要全面。 图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。二、程序流程图1、程序总体结构图
4、图1程序总体结构图 2、一次函数模块图 N Y 图2一次函数模块图3、余弦函数模块图 Y N 图3余弦函数模块图三、核心技术的实现说明及相应程序段这个程序在图形模式下显示图象,因此需要在图形系统下建立图形窗口,画线框。图形窗口建立程序段:int gdriver = DETECT, gmode; /*规定自动搜索显示类型和显示模型*/ dx=(xmax-xmin)/50; initgraph(&gdriver,&gmode, );/*初始化图形系统*/ cleardevice(); setcolor(12); setviewport(100,100,600,450,1);/*建立图形窗口*/ s
5、etlinestyle(0,0,3); rectangle(0,0,500,350);/*画线框*/ line(0,175,500,175); line(250,0,250,350);目录的选择功能实现:switch(c) case 1:entdata();break; case 2:plot();break; case 3:exit(0); 四、个人总结C语言我们已经学习了一个学期了,但它所包含的内容是我们短短一学期所无法学精的,再经过这一周的课设我更是深有体会。特别的我这次的题目是用链表处理实际问题,链表是难点但在学习中不是重点,我并没有太重视,甚至有些忽略。现在我是非常的后悔,这几天下来
6、我经过查阅各种资料,并且在课余时间向高年级的学长请教,几天下来我感觉对于链表问题有了大概的印象,但还不过深入,答辩就能很好的说明,对于我这次答辩的失败我感到非常后悔。我在今后的学习过程中一定要更加专心仔细,对于细节不怕麻烦深入研究。总之经过这一周的课设的学习我不只是学到C程序设计的方法,而是学习到了更多的东西,让我明白今后无论做什么事情,只要自己用心,认真的去对待,用正确的态度去面对,就没有办不到的事情。还有,这对我今后生活处理各种问题也有很大的帮助,很感谢能有这次机会让我能力得到较大的提高,让我更好的认清自己。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序
7、设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include #include #include #include void menu();void entdata();void plot();double xmin,xmax;void entdata() printf(Please enter min x,max x:n); scanf(%lf,%lf,&xmin,&xmax); puts(Press 2 to draw.);double fun1(double x) return cos(x);double fun2(double x) return(45*(x-1)+31
8、);void menu() clrscr();printf(* Welcome *n);printf(1. Enter datan);printf(2. Draw the plotn);printf(3. Endn);void plot() double x=xmin,y; double dx; int gdriver = DETECT, gmode; /*规定自动搜索显示类型和显示模型*/ dx=(xmax-xmin)/50; initgraph(&gdriver,&gmode, );/*初始化图形系统*/ cleardevice(); setcolor(12); setviewport(1
9、00,100,600,450,1);/*建立图形窗口*/ setlinestyle(0,0,3); rectangle(0,0,500,350);/*画线框*/ line(0,175,500,175); line(250,0,250,350); moveto(250+x*50,175-50*fun1(x); for(;x=xmax;x=x+dx) /*余弦曲线作图*/ setcolor(10); setlinestyle(0,0,1); lineto(250+x*50,175-50*fun1(x); moveto(250+50*fun2(xmin),175-xmin); for(;xmin=xmax;xmin+=dx) /*一次函数作图*/ setcolor(4); setlinestyle(0,0,3); lineto(250+50*fun2(xmin),175-50*xmin); getch(); closegraph();/*结束画图系统*/void main() char c; menu(); c=getch(); while(1) switch(c) case 1:entdata();break; case 2:plot();break; case 3:exit(0); menu(); c=getch();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1