Cpp大作业

发布 2020-02-25 07:41:28 阅读 5148

目录。一、 课题介绍,小组任务分工情况介绍。。。

1.1课题介绍。

1.2、小组分工。

二、任务需求分析报告。

2.1、任务概述。

2.2、目标。

2.3、用户。

三、程序算法与关键技术。

3.1、算法思想。

3.2、关键技术。

3.3、文件操作。

四、程序功能设计说明。

五、程序**。

六、程序运行和调试记录分析。

七、项目工作情况总结。

八、参考资料。

一、 课题介绍,小组分工情况。

1.1课题介绍:

经过小组讨论,我们决定做一个与学习生活比较贴切的easyx程序,使其具有一定的实际意义。最初的设想是做出太阳系中行星围绕太阳作椭圆轨迹运动,在之后的设计过程中,加上了月球绕地球的椭圆轨迹运动,之后又加上了闪烁的星空背景,最后将由easyx画出的太阳、行星和月球用上找到的太阳、行星和月球**替换,得到了最终的太阳系行星运动模型。总之,我们从实际出发,通过查阅相关书籍、资料及小组成员详尽讨论,解决了一系列问题,在这一过程中培养了我们团结协作意识,提高了我们观察并解决实际问题的能力。

1.2、小组分工:

课题的选择经过了小组成员的认真讨论,我们经过仔细的思考与讨论确定了明确的方向与设计思路,最初的设计思路是在我们小组三人的共同努力下完成并在之后的编程过程中完善的。

xxx:主要负责收集相关行星运动资料并实现行星围绕太阳的椭圆轨迹运动,添加卫星并修正各函数。

xxx:在程序中添加闪烁星空背景,实现程序调试并修正各函数,进行总结、交流经验,完善文档。

xxx:推导行星轨道方程,建立数学模型,收集并适当修改太阳和行星、月球的**,用**替换之前用easyx画出的**,修正各函数。

二、任务需求分析报告。

2.1、任务概述:

完成课程设计,并使其有一定的使用价值。在最初确定的思路引导下,小组成员各司其职,完成各自的任务,确保课程设计在规定的时间内完成。完成程序的调试与测试工作,尽量保证程序不存在逻辑错误。

后期主要完善程序与美化程序,改善程序不太符合实际用处的地方。最终,使课程设计在小组成员总能力范围之内做到最好。

2.2、目标:

尽量保证程序不存在逻辑错误,确保模型的正确展现,尽可能做到模拟实际。程序界面美观清晰,具有一定的用户友好性。

2.3、用户:

由于从实际的学习生活出发,该项课程设计所面向的用户是全体初中高中学生及老师,有利于使学生在学习物理天体运动章节时对天体运有更为直观的认识。程序简单实用,便于掌握,有一定的使用价值。

三、程序算法与关键技术。

3.1、算法思想:

该程序为了实现行星围绕太阳的椭圆轨迹运动,各个函数(除了美化界面函数)都为了实现这一目的而设置。

3.2、关键技术:

这一部分主要分三个部分:

其一:我们知道,行星在近日点运动快,在远日点运动慢。因此定义了类class solar来说明太阳系中各行星的各个与运动轨迹有关的数据,用数组float a[8];float e[8];float t[8];float r[8];float x[8];float y[8];来分别说明公转轨道的半长轴、偏心率、周期、行星半径、在某处时的横纵坐标,定义了void sun()函数来画太阳,在for(inti=0;i<8;i++)循环中实现沿椭圆轨迹画行星,且行星中心坐标是与时间有关的函数(a=2*pi*c/t[j]+pi*j/63;m=a[j]*(1-e[j]*e[j]);n=1+e[j]*cos(a);x[j]=m*cos(a)/n;y[j]=m*sin(a)/n;)。

这样就实现了在远地点慢而在近地点快的运动特点。

其二:实现闪烁的星空背景。我们先用#define maxstar 20000定义了星星总数,并定义了star star[maxstar]和void initstar(inti)函数来初始化星星,定义void movestar(inti)来确定星星的亮度,并使用对称的方法来画星星,同时用坐标(加一或减一)实现将星星变大,使用srand((unsigned)time(null))随机产生星星。

其三:插入太阳及各行星、月球**。先将**存入e盘或固定在文件夹中,然后调用如loadimage(&img, "e:

\\x\\"x[j]-=9;y[j]-=8;的语句实现**的插入。

3.3、文件操作:对从收集的**进行修改在这里就不做说明了。

四、程序功能设计说明。

本程序设计简单,主要目的是将太阳系中行星绕椭圆轨道运动直观地表现出来,便于老师讲解或者学生理解。

五、程序**。

#include<>

#include<>

#include<>

#include<>

#define pi 3.14159

#define maxstar 20000 //星星总数。

#pragma comment( lib, "

struct star

double x;

int y;

double step;

int color;

star star[maxstar];

void initstar(inti)//初始化星星。

star[i].x = 0;

star[i].y =rand() 800;

star[i].step =(rand() 5000) /1000.0 + 1)*100000000;

star[i].color = int)(star[i].step * 255 / 6.0 +10);

star[i].color = rgb(star[i].color, star[i].color, star[i].color);

voidmovestar(inti)

if (star[i].x > 1360) initstar(i);

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i+1)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x+1,pow(-1,i)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x+1,pow(-1,i+1)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i)*star[i].y+1, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i+1)*star[i].y+1, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x-1,pow(-1,i)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x-1,pow(-1,i+1)*star[i].y, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i)*star[i].y-1, star[i].color);/画新星星。

putpixel(pow(-1,i)*(int)star[i].x,pow(-1,i+1)*star[i].y-1, star[i].color);/画新星星。

class solar

void sun()

void xx()

srand((unsigned)time(null));随机种子。

int n=0;

floatm,n,a,c,x[2],y[2];

beginbatchdraw();

for(int c=0;c {

sun();

for(int j=0;j<8;j++)

a=2*pi*c/t[j]+pi*j/60;

switch(j){

case 0:c=a+3;break;

case 1:c=a+5;break;

case 2:c=a+2;break;

case 3:c=a+3;break;

case 4:c=a+2.5;break;

case 5:c=a+0;break;

case 6:c=a-0.5;break;

case 7:c=a+0;break;

m=a[j]*(1-e[j]*e[j]);

n=1+e[j]*cos(c);

x[j]=m*cos(c)/n;

y[j]=m*sin(c)/n;

image img;

工厂供电 大作业 大作业

某机械厂为三班工作制。本厂通过一条长8km的lj 95型叫架空线从地区变电所获得电源,电压为10kv。本厂东南方向6km处还有一条10kv电缆线路可供使用。低压侧有一220 380v低压联络线可供使用。本地区冬天北风,夏天南风,年平均气温 室内28 室外30 安装时环境温度按30 考虑,本厂有部分二...

大作业1 线性规划大作业

大作业1 线性规划问题大作业要求。分组要求 自拟题目,分组撰写,原则上5 6人一组,在 内标明任务分工。内容要求 一 编写线性规划实际问题案例。二 分析案例背景及用线性规划模型解决实际问题的必要性。三 建立线性规划模型。四 简述你所运用的线性规划模型方法的算法步骤。五 用excel软件求解该实际问题...

电大作业作业

非试点课程作业通知。本通知涵盖各年级 各专业 从本学期开始,所有年级 所有专业的所有非试点课程的作业,取消纸质形式,一律改为网络形式提交作业。所有作业一律2011年12月11号前将作业上传完成,过期视为无效作业。具体操作方法 1 学生以自己注册的用户名和密码登陆电大 如果忘记,可以点击 忘记密码 通...