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

    C语言课程设计简单图形处理.doc

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

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

    C语言课程设计简单图形处理.doc

    1.课程设计总体要求22.设计任务与分析22.1设计题目22.2主要内容22.3任务分析23.设计方案23.1模块23.2流程图33.3主要函数33.4负责的模块设计34.程序调试65.总结与心得126.参考文献131. 课程设计总体要求采用模块儿化程序设计; 鼓励可视化编程; 源程序中有足够的注释; 学生可自行增加新功能模块儿; 必须上机调试通过; 注重算法运用,优化存储效率与运算效率; 需提交源程序及相关文件;2. 设计任务与分析2.1设计题目 简单图形处理2.2主要内容 只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0的三个系数a,b,c;对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。2.3任务分析这个系统主要需要实现对求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线。我们可以先构建一个主函数,然后一次插入不同的功能函数。在实现功能函数的过程中又通过菜单函数进行各功能函数的调用。在运用图形处理函数的时候要用到图形文件。3. 设计方案3.1模块(1)输入两点,求出之间的距离。(2)输入圆心和半径输出一般的圆。(3)输入两直线表达式X,Y的系数,求出两直线的交点。(4)输入两点,输出通过该两点的直线。(5)退出。3.2流程图进入选择菜单输入数字040退出系统开始1两点之间的距离退出系统4形成直线2两直线的交点退出系统3形成圆3.3主要函数1.pointjl() (求两点之间的距离)2.linejd();(求两直线的交点)3.yuan();(已知圆心和半径形成圆)4.line1();(已知两点形成直线)5.choice();(功能选择)3.4负责的模块设计我所负责的模块:(1) 输入两直线表达式X,Y的系数,求出两直线的交点。 void linejd()/*求两直线交点*/float a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf("*n");printf("请输入直线1 a1x+b1y+c10 的系数 a1,b1,c1 和直线2 a2x+b2y+c20 的系数 a2,b2,c1:n"); printf("*n");scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&c1,&a2,&b2,&c2);if(a1*b2=b1*a2)if(b1*c2=c1*b2)printf("两直线重合,有无数个交点。n");elseprintf("两直线平行,无交点。n");elsex=(c2/b2-c1/b1)/(a1/b1-a2/b2); y=(c2/a2-c1/a1)/(b1/a1-b2/a2); printf("两直线交点是 x=%f,y=%f.n",x,y);getchar();(2) 输入两点,输出通过该两点的直线。void line1() /*输出输入已知数据的直线*/int x1,y1,x2,y2;int gdriver, gmode, i;printf("*n");printf("请输入两点 ,x1,y1,x2,y2:n");printf("*n");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);gdriver=DETECT;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(BLUE);/*设定背景颜色为蓝色*/cleardevice();setcolor(GREEN);setlinestyle(0, 0, 3);setcolor(2);setcolor(WHITE);setlinestyle(4, 0xaaaa, 1);line(x1+320, y1+240, x2+320, y2+240);getch();closegraph();(3) 选择函数的设计int choice ()/*选择函数的定义*/char c;int k=1;menu();c=getchar();while(k)switch(c) case '1':pointjl() ;k=0;break; case '2':linejd() ;k=0;break; /*求已知两直线之间的交点函数*/ case '3':yuan();k=0;break; case '4':line1();k=0;break; case '0':k=0;break; printf("*n");printf("欢迎使用该系统n");printf("*n");return 1;4. 程序调试下面是进入时出现的一个示例图片。通过查找资料并以此图来调试我们知道画面中心的坐标是(320,240),我们就在程序中每个输入的横坐标加上320,纵坐标加上240,以防输入坐标偏离中心太远导致显示不理想。同时该圆的半径是98,这样我们就对数字代表的长度有了一个大概的了解。下面是对输出直线功能的调试。输入数据:0,0,200,200;显示出的图形如下图所示。我们可以看出,X轴正方向向左,Y轴正方向向下。为了进一步验证Y轴正方向向下,我做了第二次输入。如下图,此次输入的数据为:0,0,0,-200;由此可以断定,Y轴的正方向向下。接下来是对求两直线交点的调试。由下图可以看出当输入数据为1,2,3,3,2,1时得出交点为(1,-2)。对于直线x+2y+3=0与直线3x+2y+1=0,我们直接将x=1,y=-2带入,发现均成立,于是所求交点是正确的,程序没有问题。但是当我们输入两条重合或者平行直线时,程序给出了以下结果:可以发现给出的结果为1.#INF00的字样,这表示超出机器浮点类型所表示的范围。于是我认为程序还需改进。改进后调试结果如下:改进成功!下面是对选择功能的调试。输入1,结果如下:没有问题。输入2,结果如下:没有问题。输入3,结果如下:没有问题。输入4,结果如下:没有问题。至此,调试完毕!5. 总结与心得每一个简单的功能的实现实际上背后都有一个繁重的工程。尽管这是一个很简单的图形的输出、处理系统,但是每一个函数的设计、每一个功能的实现都来之不易。尤其是当每一个模块的程序编写好后的试运行,一个个error的寻找、改正花费了数倍于编写的时间。尽管编写的过程漫长、枯燥,甚至痛苦,但是当最后程序成功运行时,兴奋的心情还是立刻充斥心间,最后的成功就是对前面付出的最好回报。通过这次实践我也学到了很多。C语言的知识更加扎实、丰富,做事更加细心、耐心,还学会了如何与人合作来更快、更高效地完成任务。总之,这次实践中我收获了许多,希望以后可以继续与他人合作完成更多的任务!6. 参考文献 1 谭浩强. C语言程序设计M.北京:清华大学出版社.20062 张高煜. C语言程序设计实训.北京:中国水利出版社.20013 王晓东. C语言设计简明教程.北京:中国水利出版社.2006附:源代码: #include <graphics.h>#include "stdio.h"#include "math.h"#include "stdlib.h"#include "conio.h"void linejd()/*求两直线交点*/float a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf("*n");printf("请输入直线1 a1x+b1y+c10 的系数 a1,b1,c1 和直线2 a2x+b2y+c20 的系数 a2,b2,c1:n"); printf("*n"); scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&c1,&a2,&b2,&c2);if(a1*b2=b1*a2)if(b1*c2=c1*b2)printf("两直线重合,有无数个交点。n");elseprintf("两直线平行,无交点。n");elsex=(c2/b2-c1/b1)/(a1/b1-a2/b2); y=(c2/a2-c1/a1)/(b1/a1-b2/a2); printf("两直线交点是 x=%f,y=%f.n",x,y);getchar();void pointjl() /*求两点之间的距离*/int x1,y1,x2,y2; float jl;printf("*n");printf("请输入两点,x1,y1,x2,y2:n");printf("*n");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);jl=sqrt(pow(x1-x2,2)+pow(y1-y2,2);printf("这是两点 x1=%d , y1=%d 和 x2=%d , y2=%d 之间的距离是n jl=%fn",x1,y1,x2,y2,jl); getchar();void line1() /*输出输入已知数据的直线*/int x1,y1,x2,y2;int gdriver, gmode, i;printf("*n");printf("请输入两点 ,x1,y1,x2,y2:n");printf("*n");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);gdriver=DETECT;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(BLUE);/*设定背景颜色为蓝色*/cleardevice();setcolor(GREEN);setlinestyle(0, 0, 3);setcolor(2);setcolor(WHITE);setlinestyle(4, 0xaaaa, 1);line(x1+320, y1+240, x2+320, y2+240);getch();closegraph();void yuan() /*输出输入了已知数据的圆*/int x1,y1,r;int gdriver, gmode, i;printf("*n");printf("请输入圆心 x1,y1 圆的半径 r:n");printf("*n");scanf("%d,%d,%d",&x1,&y1,&r);gdriver=DETECT;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(x1+320, y1+240, r);setlinestyle(0, 0, 3);setcolor(2);setcolor(WHITE);setlinestyle(4, 0xaaaa, 1);getch();closegraph();void menu() /*菜单函数*/printf("*n");printf("欢迎进入简单的图形处理系统!n");printf("*n");printf("*n");printf("请输入 1,2,3,4:n");/*请输入数字1,2,3,4*/printf("1.两点之间的距离n");/*两点之间的距离*/printf("2.两直线的交点 n");/*两直线的交点*/ printf("3.已知点和半径形成圆n");/*已知点和半径形成圆*/ printf("4.已知两点形成直线 n");/*已知两点形成直线*/printf("*n");int choice ()/*选择函数的定义*/char c;int k=1;menu();c=getchar();while(k)switch(c) case '1':pointjl() ;k=0;break; case '2':linejd() ;k=0;break; /*求已知两直线之间的交点函数*/ case '3':yuan();k=0;break; case '4':line1();k=0;break; case '0':k=0;break; printf("*n");printf("欢迎使用该系统n");printf("*n");return 1;int main()int gdriver, gmode, i;/*在进入主菜单之前先形成一个已知图形*/gdriver=DETECT;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320, 240, 98);setlinestyle(0, 0, 3); setcolor(2);rectangle(220, 140, 420, 340);setcolor(WHITE);setlinestyle(4, 0xaaaa, 1);line(220, 240, 420, 240);line(320, 140, 320, 340);getch();closegraph();choice();getchar();return 1;

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开