欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    正弦函数的图形表示.doc

    • 资源ID:2887510       资源大小:110.50KB        全文页数:28页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    正弦函数的图形表示.doc

    沈 阳 航 空 工 业 学 院 课程设计学 号 _200604021119_班 级 _6402104_ 姓 名 _李百川_指导教师 _刘成_2007年 月 日课程设计任务书院系:电子工程系 专业:电子信息工程 班级:6402104学号:200604021119题目:正弦函数的图形表示一、课程设计时间2007年9月10日至2007年9月14日,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:在图形模式下,绘制正弦函数sin(x)在x1x2之间的图形。注意:此程序必须用TC2.0编写。三、课程设计要求1. 程序质量:² 贯彻结构化的程序设计思想。² 用户界面友好,功能明确,操作方便。² 用户界面中的菜单至少应包括“输入x的区间”、“开始绘制”、“退出”3项。² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_刘成_ 学生签名:_李百川_五、成绩:六、教师评语: 目录一、需求分析二、程序流程图三、核心技术的实现说明及相应程序段四、个人总结五、参考文献六、源程序一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为三大模块,其中他们的功能分别是:绘制图象(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<=80) ZOOM*=1.5; Draw(); Inform("ZoomIn");void ZoomOut() 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) RY+=1; Draw(); Inform("MoveDown");void MoveLeft() if(RX-1>=-15) RX-=1; Draw(); Inform("MoveLeft");void MoveRight() if(RX+1<=15) RX+=1; Draw(); Inform("MoveRight");(1)菜单界面(2)函数参数设置(3)函数区间设置(4)欢迎屏幕(5)函数图象(6)函数的缩放(7)函数的上下移动(8)函数的左右移动三、核心技术的实现说明及相应程序段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)/*数学座标转换为屏幕坐标*/*对于屏幕坐标而言,它的X轴坐标与数学坐标的正方向相同,而Y轴的坐标相反*/ return (316+ZOOM*x+RX*ZOOM);int ScreenY(double y) return (211-ZOOM*y+RY*ZOOM);void MoveUp() if(RY-1>=-15) RY-=1; Draw(); Inform("MoveUp");void MoveDown() if(RY+1<=15) RY+=1; Draw(); Inform("MoveDown");void MoveLeft() if(RX-1>=-15) RX-=1; Draw(); Inform("MoveLeft");void MoveRight() if(RX+1<=15) RX+=1; Draw(); Inform("MoveRight");/*/* 图形缩放*/void ZoomIn() if(ZOOM*1.5<=80) ZOOM*=1.5; Draw(); Inform("ZoomIn");void ZoomOut() 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*A>100) printf("Input Wrong(-1010)! Try Again.n"); while(A*A>100);void SetB() do printf("nPlease Input B(-1010):"); scanf("%f",&B); if (B*B>100) printf("Input Wrong(-1010)! Try Again.n"); while(B*B>100);void SetC() do printf("nPlease Input C(-1010):"); scanf("%f",&C); if (C*C>100) printf("Input Wrong(-1010)! Try Again.n"); while(C*C>100);/*/* 区间设置*/void SetMaxX() do printf("nPlease Input Max X(-100100):"); scanf("%f",&MaxX); if (MaxX*MaxX>10000|MaxX<=MinX) printf("Input Wrong.(-100100),And MaxX>MinX! Try Again.n"); while(MaxX*MaxX>10000|MaxX<=MinX);void SetMinX() do printf("nPlease Input Min X(-100100):"); scanf("%f",&MinX); if (MinX*MinX>10000|MaxX<=MinX) printf("Input Wrong.(-100100),And MinX<MaxX! Try Again.n"); while(MinX*MinX>10000|MaxX<=MinX);四、个人总结通过这次C语言的课设实践活动,使我充分的体会到自己的不足。这让我在实践中对C语言又有了一个全新的认识。这让我在了解到自己的不足的同时,使自己对C语言的掌握又加深了一步。尤其是在这次实践活动中,我的课题:绘制函数SinX的过程中了解了更多的知识,对于C语言的绘图有了一定的掌握。使得自己可以运用程序画出简单的函数图象。在对C语言绘制图形的过程中,让自己了解到不少东西,如数学坐标转换成屏幕坐标,菜单栏及欢迎屏幕的制作,图形的缩放及移动,图形的颜色和立体感上也有了一定的了解,并可以进行一些简单的操作等五、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005六、源程序/* 编译预处理*/#include <graphics.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <dos.h>#include <string.h>#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;i<n;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;i<n;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<=maxy;i+) if(i%10=0) line(ScreenX(-1),ScreenY(i),ScreenX(1),ScreenY(i); /*/void Inform(char * str)/* 状态栏输出*/ setviewport(4,466,635,475,1); setfillstyle(1,7); bar(0,0,640,100); setcolor(BLUE); settextstyle(DEFAULT_FONT,0,1); outtextxy(2,1,str); setviewport(0,0,639,479,1);/*/void Pause()/* 程序暂停等待用户输入*/ int ExitFlag=0; do switch(getch() case 72: MoveUp(); break; case 80: MoveDown(); break; case 75: MoveLeft(); break; case 77: MoveRight(); break; case 0x3d:ZoomIn(); break; case 0x2d:ZoomOut(); break; case ESC: ExitFlag=1; default: break; while(ExitFlag=0); closegraph();/*/* 绘制立体感边框*/void DrawRect(int x1,int y1,int x2,int y2) setcolor(DARKGRAY); setlinestyle(0,0,1); line(x1,y1,x1,y2); line(x1,y1,x2,y1); setcolor(WHITE); line(x2,y1,x2,y2); line(x1,y2,x2,y2);/*/void Title(char * str)/* 标题栏输出*/ setcolor(WHITE); settextstyle(DEFAULT_FONT,0,1); outtextxy(16,3,str);/*/* 图形移动*/void MoveUp() if(RY-1>=-15) RY-=1; Draw(); Inform("MoveUp");void MoveDown() if(RY+1<=15) RY+=1; Draw(); Inform("MoveDown");void MoveLeft() if(RX-1>=-15) RX-=1; Draw(); Inform("MoveLeft");void MoveRight() if(RX+1<=15) RX+=1; Draw(); Inform("MoveRight");/*/* 图形缩放*/void ZoomIn() if(ZOOM*1.5<=80) ZOOM*=1.5; Draw(); Inform("ZoomIn");void ZoomOut() if(ZOOM/1.5>=1.5) ZOOM/

    注意事项

    本文(正弦函数的图形表示.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开