正弦函数的图形表示.doc_第1页
正弦函数的图形表示.doc_第2页
正弦函数的图形表示.doc_第3页
正弦函数的图形表示.doc_第4页
正弦函数的图形表示.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 工 业 学 院 课程设计学 号 _200604021119_班 级 _6402104_ 姓 名 _李百川_指导教师 _刘成_2007年 月 日课程设计任务书院系:电子工程系 专业:电子信息工程 班级:6402104学号:200604021119题目:正弦函数的图形表示一、课程设计时间2007年9月10日至2007年9月14日,共计1周,20学时。二、课程设计内容用c语言编写软件完成以下任务:在图形模式下,绘制正弦函数sin(x)在x1x2之间的图形。注意:此程序必须用tc2.0编写。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“输入x的区间”、“开始绘制”、“退出”3项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_刘成_ 学生签名:_李百川_五、成绩:六、教师评语: 沈 阳 航 院 设 计 用 纸目录一、需求分析二、程序流程图三、核心技术的实现说明及相应程序段四、个人总结五、参考文献六、源程序i沈 阳 航 院 设 计 用 纸一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为三大模块,其中他们的功能分别是:绘制图象(strat up)、函数参数的设定(settings)、退出(quit)。在这些函数当中,绘制图象(strat up)又包括菜单栏的绘制,函数图形及坐标轴的绘制和函数的缩放与移动;函数参数的设定(settings)包括函数y=asin(bx)+c的参数a、b、c及x的区间minxmaxx.二、程序流程图 整体框架图 y=asin(bx)+c开 始输入目录选项start now(绘图) settings (参数设定)quit(退出)0.set a (参数a的设定)1.set b (参数b的设定)2.set c (参数c的设定)3.set minx (x的最小值)4.set maxx (x的最大值)5.back (返回)输入函数y=asin(bx)+c的各项参数a、b、c及x的区间范围minxmaxx的值void startup() initialize(); start(); draw();pause();void initialize()int gd=vga; 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); outtextxy(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)/*数学座标转换为屏幕坐标*/ return (316+zoom*x+rx*zoom);int screeny(double y) return (211-zoom*y+ry*zoom);绘制函数图象及功能模块图void drawaxis(int maxx,int maxy,int minx,int miny) int i; setcolor(green); line(screenx(minx),screeny(0),screenx(maxx),screeny(0); line(screenx(0),screeny(miny),screenx(0),screeny(maxy); for(i=minx;i=maxx;i+) if(i%10=0) line(screenx(i),screeny(-1),screenx(i),screeny(1); for(i=miny;i=maxy;i+) if(i%10=0) line(screenx(-1),screeny(i),screenx(1),screeny(i); void draw() double x,y,y2; int maxy,miny; drawrect(3,37,636,460); setviewport(4,38,635,459,1); setfillstyle(1,7); bar(0,0,640,480); maxy=211/zoom; miny=-211/zoom; drawaxis(maxx,maxy,minx,miny); setcolor(red); setlinestyle(0,0,1); for(x=minx;x=maxx;x+=1.0/q) y=function(x); y2=function(x+1.0/q); line(screenx(x),screeny(y),screenx(x+1.0/q),screeny(y2); int screenx(double x) return (316+zoom*x+rx*zoom);int screeny(double y) return (211-zoom*y+ry*zoom);double function(double x) return (a*sin(b*x)+c);void zoomin() if(zoom*1.5=1.5) zoom/=1.5; draw(); inform(zoomout);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) 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);/*/* 图形缩放*/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(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):); 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语言的绘图有了一定的掌握。使得自己可以运用程序画出简单的函数图象。在对c语言绘制图形的过程中,让自己了解到不少东西,如数学坐标转换成屏幕坐标,菜单栏及欢迎屏幕的制作,图形的缩放及移动,图形的颜色和立体感上也有了一定的了解,并可以进行一些简单的操作等五、参考文献1 谭浩强c程序设计北京:清华大学出版社,2005六、源程序/* 编译预处理*/#include #include #include #include #include #include #define esc 0x1b#define menu struct menu/*#*/* 菜单结构体*/struct menu char name16; int value; 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,int);void showmenu(menu * m,int);void quit();void moveright();void configure();void startup();int screenx(double);int screeny(double);double function(double);/*#*/* 程序开始*/*/main()/* 主函数*/ /*菜单资源初始化*/ strcpy(menus0.name,start now) ;menus0.value=0 ;menus0.function=&startup; strcpy(menus1.name,settings) ;menus1.value=1 ;menus1.function=&setting; strcpy(menus2.name,quit) ;menus2.value=2 ;menus2.function=null; strcpy(menus20.name,set a) ;menus20.value=0 ;menus20.function=&seta; strcpy(menus21.name,set b) ;menus21.value=1 ;menus21.function=&setb; strcpy(menus22.name,set c) ;menus22.value=2 ;menus22.function=&setc; strcpy(menus23.name,set minx) ;menus23.value=3 ;menus23.function=&setminx; strcpy(menus24.name,set maxx) ;menus24.value=4 ;menus24.function=&setmaxx; strcpy(menus25.name,back) ;menus25.value=5 ;menus25.function=null;configure();/* 进入程序*/*/void startup()/* 图形环境启动*/ initialize(); start(); draw(); pause();/*/void initialize()/* 图形设备初始化*/ int gd=vga; int gm=vgahi; int errorc; clrscr(); initgraph(&gd,&gm,); errorc=graphresult(); if (errorc!=0) printf(graphics system error); exit(1); cleardevice();/*/void configure()/* 字符环境主菜单*/ do clrscr(); printf(#n); printf(# #n); printf(# welcome #n); printf(# #n); printf(#n); showmenu(menus,3); while(menuinput(menus,3)!=1); quit();/*/int menuinput(menu *ms,int n)/*菜单输入*/ int i,a=0; char c; do c=getch(); for(i=0;in;i+) if(c=(0+msi.value) if (msi.function=null) a=1;break;break; else msi.function(); break;break; while(i=n); return a;/*/void showmenu(menu *ms,int n)/* 显示菜单*/ int i; for(i=0;in;i+) printf( %d-%s n,msi.value,msi.name); printf(select:);/*/void start()/* 欢迎屏幕及视图初始化*/ setcolor(red); settextstyle(triplex_font,0,9); outtextxy(120,180,welcome); setcolor(yellow); settextstyle(0,0,1); outtextxy(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)/*数学座标转换为屏幕坐标*/ return (316+zoom*x+rx*zoom);int screeny(double y) return (211-zoom*y+ry*zoom);/*/void setting()/* 字符界面参数设置菜单*/ do clrscr(); printf(#n); printf(# #n); printf(# settings #n); printf(# y=asin(b*x)+c #n); printf(# #n); printf(#n); showmenu(menus2,6); while(menuinput(menus2,6)!=1);/*/void draw()/* 绘制函数图像*/ double x,y,y2; int maxy,miny; drawrect(3,37,636,460); setviewport(4,38,635,459,1); setfillstyle(1,7); bar(0,0,640,480); /*maxx=316/zoom;*/ maxy=211/zoom; /*minx=-316/zoom;*/ miny=-211/zoom; drawaxis(maxx,maxy,minx,miny); setcolor(red); setlinestyle(0,0,1); for(x=minx;x=maxx;x+=1.0/q) y=function(x); y2=function(x+1.0/q); line(screenx(x),screeny(y),screenx(x+1.0/q),screeny(y2); /*/void drawmenubar()/* 绘制菜单条*/ setlinestyle(0,0,1); setcolor(darkgray); line(1,13,638,13); line(1,27,638,27); setcolor(white); line(1,14,638,14); line(1,28,638,28); setcolor(black); settextstyle(default_font,0,1);/*/* 绘制坐标轴*/void drawaxis(int maxx,int maxy,int minx,int miny) int i; setcolor(green); line(screenx(minx),screeny(0),screenx(maxx),screeny(0); line(screenx(0),screeny(miny),screenx(0),screeny(maxy); for(i=minx;i=maxx;i+) if(i%10=0) line(screenx(i),screeny(-1),screenx(i),screeny(1); for(i=miny;i=-15) ry-=1; draw(); inform(moveup);void movedown() if(ry+1=-15

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论