简单图形处理 高质量C语言程序

简单图形处理   高质量C语言程序
简单图形处理   高质量C语言程序

1.课程设计总体要求

2.设计任务与分析

3.设计方案

4.程序调试

5.总结与心得

6.参考文献

1.课程设计总体要求

采用模块儿化程序设计;

鼓励可视化编程;

源程序中有足够的注释;

学生可自行增加新功能模块儿;

必须上机调试通过;

注重算法运用,优化存储效率与运算效率;

需提交源程序及相关文件;

2.设计任务与分析

a)设计题目

简单图形处理

b)主要内容

只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c=0的三个系数a,b,c;对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。

c)任务分析

这个系统主要需要实现对求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线。我们可以先构建一个主函数,然后一次插入不同的功能函数。在实现功能函数的过程中又通过菜单函数进行各功能函数的调用。在运用图形处理函数的时候要用到图形文件。

3.设计方案

a)模块

(1)输入两点,求出之间的距离。

(2)输入圆心和半径输出一般的圆。

(3)输入两直线表达式X,Y的系数,求出两直线的交点。

(4)输入两点,输出通过该两点的直线。

(5)退出。

b)流程图

c)主要函数

1.pointjl() (求两点之间的距离)

2.linejd();(求两直线的交点)

3.yuan();(已知圆心和半径形成圆)

4.line1();(已知两点形成直线)

5.choice();(功能选择)

d)负责的模块设计

在这个程序中我做了以下模块

(1)输入两点,求出之间的距离。

(2)输入圆心和半径输出一般的圆。

(3)菜单模块

#include

#include "stdio.h"

#include "math.h"

#include "stdlib.h"

#include "conio.h"

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=%f\n",x1,y1,x2,y2,jl);

getchar();

}

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:\\caic\\bgi");

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" );

}

4.程序调试

程序刚进入时画面

进入到程序系统菜单时

输入数字1进入求两点之间的距离(1,2)和(3,4)

输入数字3进入输出圆的程序

输出的图形

5.总结与心得

在本次的课程设计当中,我受益匪浅,就简单的图形的输入输出系统这个课题,我实现了图形的输入和输出,能够直接通过写的程序进行简单操作。在做程序的过程遇到了很多问题,但是在组员和其他同学帮助下都一一解决了。

6.参考文献

[1] 谭浩强. C语言程序设计[M].北京:清华大学出版社.2006

[2] 张高煜. C语言程序设计实训.北京:中国水利出版社.2001

[3] 王晓东. C语言设计简明教程.北京:中国水利出版社.2006

附:源代码:

#include

#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+c1=0 的系数a1,b1,c1 和直线 2 a2x+b2y+c2=0 的系数a2,b2,c1:\n");

printf("*************************************************************** **********************************************\n");

scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&c1,&a2,&b2,&c2);

x=(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=%f\n",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:\\caic\\bgi");

setbkcolor(BLUE);/*设定背景颜色为蓝色*/

cleardevice();

setcolor(GREEN);

setlinestyle(0, 0, 3);

setcolor(2);

setcolor(WHITE);

setlinestyle(4, 0xaaaa, 1);

line(x1, y1, x2, y2);

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:\\caic\\bgi");

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:\\caic\\bgi");

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;

}

相关主题
相关文档
最新文档