程序设计1.doc_第1页
程序设计1.doc_第2页
程序设计1.doc_第3页
程序设计1.doc_第4页
程序设计1.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

计算机程序训练设计报告目的: 计算机程序设计训练是学习完计算机程序设计课程后进行的一次全面的综合性上机实验。其目的在于为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。内容和要求:用C语言作为工具制作一个小型系统(具体内容详见附件上的题目)。所设计的系统应包含输入输出、查询等基本功能。根据课程设计1周时间的安排选择适当大小的设计课题,根据题目的基本需求,画出流程图,编写程序,并写出详细的设计说明书。最后上机调试通过,并进行验收,交上机报告和程序的原代码。实验报告包含内容一.题目:编制曲线轨迹动画程序画一圆的外摆线,使一个小五角星在曲线轨迹上移动。 a,b,t由键盘输入,输入的数据送文件保存,按回车键程序结束。(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制外摆线)二.问题描述:本程序中要求画一个动态小五角星,其运动是沿着圆的外摆线完成的,运动路径的长短由键盘输入的a,b,t控制。本系统完成以下几方面的功能:(1) 画出五角星;(2) 从键盘里输入外摆线公式参数a,b,t;(3) 显示小五角星沿着外摆线的路径运动;(4) 存盘,将信息写入文件;(5) 再次从文件中读出程序,显示小五角星沿着外摆线的路径运动。三.系统设计说明系统用到的数据类型1程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。主要包括如下:#include/*说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动子程序的各种颜色值,及函数用到的一些特殊结构*/#include /* 插入数学头文件 */#include /* 基本输入输出函数 */#include /* 通过控制台进行数据输入和数据输出*/#include /* 标准库函数 */#define PI 3.1415926 /* 宏定义 PI */float th=PI/180; /* 定义全局变量 th */struct canshuint a;int b;int t;canshu;2、main()主函数程序采用模块化设计,主函数程序的入口,各模块独立,可分块调试,均由主函数控制调用。控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单得到的返回值(head),根据该值,调用相应得各功能函数。3、printf()输出函数直接利用输出函数printf输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项。4、save()文件写入函数 前面讲到的数据输入和输出是以中端为对象的,当程序关闭后,数据也丢失了,所以为了能随时调出数据,必须将数据输出到磁盘文件上保存起来,使用时再从磁盘中读入到内存中,这就用到了磁盘文件的读写操作。5、*fp()从文件中读取记录 数据一旦输入保存到磁盘文件后,文件按rb方式打开,输入目标文件名,然后利用文件格式读写函数将源文件中的信息写到目标文件中。四流程图输入drawb(300,200,300,12)和drawstar(posx0)while kbhit()a=getch()a=13是否结束图形文件a=0是否b=75b=77是否是否drawstar(posxarg,posyarg,0,15,0);arge-=step;结束图形文件drawstar(posxarg,posyarg,0,15,0);arge+=step;结束图形文件argcount-1是否是否arg=count-1;drawb0(12);drawstar(posxarg,posyarg,0,15,14);结束图形文件arg=0;drawb0(12); drawstar(posxarg,posyarg,0,15,14);结束图形文件pi=atan(1)*4/180;pic=pi*c;setcolor(color);x1 = x + r * cos(pi * 90 - pic);y1 = y - r * sin(pi * 90 - pic);x2 = x + r * cos(pi * 18 - pic);y2 = y - r * sin(pi * 18 - pic);x3 = x + r * cos(pi * 54 + pic);y3 = y + r * sin(pi * 54 + pic);x4 = x - r * cos(pi * 54 - pic);y4 = y + r * sin(pi * 54 - pic);x5 = x - r * cos(pi * 18 + pic);y5 = y - r * sin(pi * 18 + pic);t=0;px = (a+b)*cos(t)-b*cos(a+b)*t/b+300;py = (a+b)*sin(t)-b*sin(a+b)*t/b+100;putpixel(px, py, color);posxcount = px;posycount = py;count+;t=t+0.003直到tp;五文字描述开始main()函数定义数据,基本输入,输出,将变量值赋予结构体变量中将图形驱动软件放入内存中,使屏显适配器设置位图形模式调用save()函数,将其保存在文件中star ()函数通过使用star函数,利用数学函数功能编写程序,画出五角星,得到最终结果Save()函数创建D盘下的canshu_list文件,向文件内写入参考值,并将读取的数据存储到canshu_list文件中,将数据输出到磁盘上六算法设计在D盘内创建canshu_list文件,向文件内写入参数值,读取该字节的数据,存储到文件中,并将数据输出到磁盘中保存,最后关闭文件开始定义一个结构体,将变量值赋予结构体变量中,定义文件指针,键盘控制参数,将图形驱动软件装入内存,使屏显适配器设置位图形模式,基本输入,输出清屏:每次星星移动一下,将前一次图形清空设背景颜色:用setbkcolor设置绿色为背景颜色设当前景色:用setcolor设置边界颜色为黄色star函数:用该函数画图填充模式:用setfillstyle填充图形函数图形颜色:用floodfill填充五角星颜色为黄色取回车键:结束该程序定义一个数组,利用五角星函数功能在大小圆上得到五个点, 将相应的点用直线连接起来,组成五角星七参考文献C程序设计,计算机图形学八结束语通过这次实践,在编程中体会到了C语言使用范围广的优点,也在学习中感受到了乐趣,同时对C语言程序有了更多的了解,最主要的是增加了学习C语言的兴趣,希望会有更多的机会来学习和研究C语言为以后运用计算机做好铺垫 九程序源代码清单#include #include #include #include #include void drawstar(int x, int y, int c, int r, int color);void drawb0(int color);void drawb(int x, int y, int r, int color);int count = 0;int posx3500, posy3500;int main() int GraphDriver; int GraphMode; int arg = 0; int a, b; int step = 5; GraphDriver = DETECT; initgraph(&GraphDriver, &GraphMode, ); drawb(300, 200, 300, 12); drawstar(posx0, posy0, 0, 15, 14); while(1) /*无限循环,按回车键结束*/ while(kbhit() a = getch();/*重键盘读取一个字符*/ if (a = 13) closegraph();/*如果字符为回车就退出*/ return 0; if (a = 0) b = getch(); if (b = 75)/*Left*/ drawstar(posxarg, posyarg, 0, 15, 0); arg -= step; /*字符为左键就*/ if (arg count - 1) arg = 0; drawb0(12); drawstar(posxarg, posyarg, 0, 15, 14); void drawstar(int x, int y, int c, int r, int color) /*x,y为五角星中心位置*/ float x1, y1; float x2, y2; float x3, y3; float x4, y4; float x5, y5; const double pi = atan(1) * 4 / 180; const double pic = pi * c; setcolor(color); x1 = x + r * cos(pi * 90 - pic); y1 = y - r * sin(pi * 90 - pic); x2 = x + r * cos(pi * 18 - pic); y2 = y - r * sin(pi * 18 - pic); x3 = x + r * cos(pi * 54 + pic); y3 = y + r * sin(pi * 54 + pic); x4 = x - r * cos(pi * 54 - pic); y4 = y + r * sin(pi * 54 - pic); x5 = x - r * cos(pi * 18 + pic); y5 = y - r * sin(pi * 18 + pic); moveto(x1, y1); lineto(x3, y3); lineto(x5, y5); lineto(x2, y2); lineto(x4, y4); lineto(x1, y1);void drawb(int x, int y, int r, int color) const double p = 3.14159265; float r0, t1,t; float px, py; float a = 80; float b = 80; r /= 2; r -= 20; count = 0; for(t = 0; t = p; t+= 0.003) px = (a+b)*cos(t)-b*cos(a+b)*t/b+300; py

温馨提示

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

评论

0/150

提交评论