集装箱优化设计实验报告.docx
《集装箱优化设计实验报告.docx》由会员分享,可在线阅读,更多相关《集装箱优化设计实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
![集装箱优化设计实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/24/f2449fd4-d074-442c-89ee-7c91d93a9d79/f2449fd4-d074-442c-89ee-7c91d93a9d791.gif)
集装箱优化设计实验报告
武汉工程大学
计算机科学与工程学院
《软件工程》实验报告[2]
专业班级
实验地点
学生学号
指导教师
学生姓名
实验时间
实验项目
集装箱优化设计需求分析文档
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
目的:
1、集装箱优化设计的需求分析文档是软件工程课程重要内容之一。
2、通过此次设计了解需求文档设计的格式、方法和内容。
3、通过对集装箱的优化设计了解其设计模式,让集装箱在有限的空间能够存放最多的货物,从而使得节约资源最大化。
要求:
集装箱外部尺寸长40米,宽20米,能够存放长方形、正方形、三角形等不同形状的货物,要求装入两种或两种以上不同形状的货物,使集装箱所剩的空间越小越好。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
认真完成设计任务
30分
报告质量
操作规范、功能正确
填写完整、体现收获
70分
说明:
评阅教师:
日期:
20年月日
实验内容
集装箱优化设计需求分析文档
一.实验说明
本实验以在集装箱中放入正方形、长方形、三角形为例,分析如何存放才能使集装箱率达到最高。
实验中要用到正方形、长方形、三角形的一些数据,如:
装入的正方形、长方形、三角形它们的个数是多少,正方形、长方形、三角形的边、长、宽的数据。
所用的数据让用户自己输入。
方案
(一)
方案
(二)
方案(三)
二.实验代码
#include"stdafx.h"
#include
#include
usingnamespacestd;
constfloatDiffer=0.05;//thediffer;
constintsize=3;
constfloata=40;
constfloatb=20;
constchar*p[]={"Solution_One","Solution_Two","Solution_Three"};
floatHigh=a;
floatLength=b;
intTri_sum=0;//countthenumoftheshap;
intFou_sum=0;
intRec_sum=0;
voidDeal_Tri(float,float,constfloat);//dealthefri;
voidDeal_Fou(float,float,constfloat);//dealthefou;
voidDeal_Rec(float,constfloat);//dealtehrec;
voidDeal_backwarded(float,float,constfloat);
voidDeal_preferential(constfloat,constfloat,constfloat);
floatMIN(constfloat,constfloat,constfloat);//theminlength;
floatMIN(constfloatTri_size,constfloatFou_size,constfloatRec_length_size)
{
floattemp;
temp=Tri_sizeTri_size:
Fou_size;
temp=temptemp:
Rec_length_size;
cout<returntemp;
}
floatArea()//counttheareaofthecontianer;
{
returnHigh*Length;
}
voidDeal_Rec(floatHigh_size,constfloatRec_high,constfloatRec_length)//dealtherec;
{
if((High-High_size)>=0&&(Length-Rec_length)>=0)
{
for(;High_size<=High;High_size+=(Rec_high+Differ))
{
++Rec_sum;
if((High-High_size)<(Rec_high+Differ))
{
Length=Length-(Rec_length+Differ);//thelengthwillreduce"length+Differ";
break;
}
}
}
}
voidDeal_Fou(floatHigh_size,floatFou_size,constfloatlength)//dealtheFou;
{
if((High-High_size)>=0&&(Length-Fou_size)>=0)
{
for(;High_size<=High;High_size+=(length+Differ))
{
++Fou_sum;
if((High-High_size)<(length+Differ))
{
Length=Length-(length+Differ);//thelengthwillreduce"length+Differ";
break;
}
}
}
}
voidDeal_Tri(floatHigh_size,floatTri_size,constfloatlength)//DealtheTri;
{
if((High-High_size)>=0&&(Length-length-Differ)>=0)
{
for(;High_size<=High;High_size+=(Tri_size+Differ))
{
++Tri_sum;
if((High-High_size)<(length+Differ))
{
Length=Length-(length+Differ);//thelengthwillreduce"length+Differ";
break;
}
}
}
}
voidDeal_backwarded(floatHigh_size,floatTri_size,constfloatlength)//dealtheFri;
{
if((High-High_size)>=0&&(Length-length-Differ)>=0)
{
for(;High_size<=High;High_size+=(length+Differ))
{
++Tri_sum;
if((High-High_size)<(length+Differ))
{
Length=Length-(length+Differ);//thelengthwillreduce"length+Differ";
break;
}
High_size+=Differ;
}
}
}
voidDeal_preferential(constfloatSolution_One,constfloatSolution_Two,constfloatSolution_Three)
{
floatSolution[size],Copy[size];
inti,j,temp;
Solution[0]=Solution_One;
Solution[1]=Solution_Two;
Solution[2]=Solution_Three;
//****
for(i=0;i{
Copy[i]=Solution[i];
}
for(i=0;i{
for(j=i+1;j{
if(Solution[i]{
temp=Solution[i];
Solution[i]=Solution[j];
Solution[j]=temp;
}
}
}
temp=Solution[0];
for(i=0;i{
if(Copy[i]==temp)
{
cout<<"Thebestwayis:
"<
break;
}
}
}
intmain()//themainfunction;
{
floatTri_size,Fou_size,Rec_length_size,Rec_high_size,area;
floath,wide;
floatSolution_One,Solution_Two,Solution_Three;
floatSolution_One_total,Solution_Two_total,Solution_Three_total;
cout<<"Designthesizeoftheobjects:
\n";
cout<<"TheDifferis:
"<"<cout<<"PleasedesignthesizeoftheTri_size:
";
cin>>Tri_size;
cout<<"PleasedesignthesizeoftheFou_size:
";
cin>>Fou_size;
cout<<"PleasedesignthesizeoftheRec_length_size:
";
cin>>Rec_length_size;
cout<<"PleasedesignthesizeoftheRec_high_size:
";
cin>>Rec_high_size;
cout<cout<<"Theareaofthecontaineris:
";
area=Area();
cout<
cout<<"SolutionOne:
\n\n";
cout<<"TheobjectsareQuadrierungedinthebox:
\n";
while(Length>=Tri_size+Differ||Length>=Fou_size+Differ||Length>=Rec_length_size+Differ)
{
Deal_Tri(Tri_size+Differ,Tri_size+Differ,Tri_size);//
Deal_Fou(Fou_size+Differ,Fou_size+Differ,Fou_size);//
Deal_Rec(Rec_high_size+Differ,Rec_high_size,Rec_length_size);//Rec_length_size;
}
cout<<"Tri_sum="<cout<<"Fou_sum="<cout<<"Rec_sum="<Solution_One_total=Tri_sum+Fou_sum+Rec_sum;
cout<<"Thetotalis:
"<Solution_One=(area-Tri_sum*Tri_size*Tri_size/2.0-Fou_sum*Fou_size*Fou_size-Rec_sum*Rec_length_size*Rec_high_size);
cout<<"Therestareaofthecontaineris:
"<"<cout<<"SolutionTwo:
\n\n";
cout<<"Theobjectsarebackwardedinthebox:
\n";
//Initializationthedata;
Tri_sum=0;
Fou_sum=0;
Rec_sum=0;
High=a;
Length=b;
//*******
h=(Tri_size*Tri_size/2.0)/sqrt(pow(Tri_size,2)+pow(Tri_size,2));//thehigh;
wide=sqrt(pow(Tri_size,2)+pow(Tri_size,2));
while(Length>=wide+Differ||Length>=Fou_size+Differ||Length>=Rec_high_size+Differ)
{
Deal_Tri(h+Differ,h+Differ,wide);//
Deal_Fou(Fou_size+Differ,Fou_size+Differ,Fou_size);//
Deal_Rec(Rec_length_size+Differ,Rec_length_size,Rec_high_size);//Rec_length_size;
}
cout<<"Tri_sum="<cout<<"Fou_sum="<cout<<"Rec_sum="<Solution_Two_total=Tri_sum+Fou_sum+Rec_sum;
cout<<"Thetotalis:
"<Solution_Two=(area-Tri_sum*Tri_size*Tri_size/2.0-Fou_sum*Fou_size*Fou_size-Rec_sum*Rec_length_size*Rec_high_size);
cout<<"Therestareaofthecontaineris:
"<"<
cout<<"SolutionThree:
\n\n";
cout<<"TheobjectsarebackwardedorQuadrierungedinthebox:
\n";
//Initializationthedata;
Tri_sum=0;
Fou_sum=0;
Rec_sum=0;
High=a;
Length=b;
//************************
while(Length>=MIN(Tri_size,Fou_size,Rec_length_size))
{
Deal_backwarded(Tri_size+Differ,Differ,Tri_size);
Deal_Fou(Fou_size+Differ,Fou_size+Differ,Fou_size);//
Deal_Rec(Rec_length_size+Differ,Rec_length_size,Rec_high_size);//Rec_length_size;
}
cout<<"Tri_sum="<cout<<"Fou_sum="<cout<<"Rec_sum="<Solution_Three_total=Tri_sum+Fou_sum+Rec_sum;
cout<<"Thetotalis:
"<Solution_Three=(area-Tri_sum*Tri_size*Tri_size/2.0-Fou_sum*Fou_size*Fou_size-Rec_sum*Rec_length_size*Rec_high_size);
cout<<"Therestareaofthecontaineris:
"<"<cout<<"PleaseselectthepreferentialSolution:
\n";
Deal_preferential(Solution_One_total,Solution_Two_total,Solution_Three_total);
cout<<"FinishingselectingthepreferentialSolution;\n";
return0;
}
实验结果:
实验总结:
通过本次实验,了解如何运用C语言去做一个实用的软件,在做这个软件的时候遇到了一些困难,比如刚开始的时候不知道怎么去存放货物,通过在网上查找了一些之后,大概的了解了思路,然后在图纸上画出该集装箱的模型以及货物存放模型,从而很快地写出了代码,在这个过程中学习到如何利用网络帮助自己去解决一些问题,例如在思路无法打开的时候可以参考别人的想法,这样有利于帮助自己打开思路。
在今后的学习过程中要善于利用网络资源帮助自己解决一些问题,很大程度上能够让你少走弯路。
总之,此次系统设计给我们提供了一个既动手又动脑、自学、独立实践的机会,使我们养成了勤翻查找各种相关资料,了解各方面的知识。
将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际,实践编写的能力,为今后的学习和实践打下了良好的基础。
同时我也认识到做一件事之前做好相应准备工作的重要性:
不仅能够减少花费的时间,而且通过详细的分析对以后的工作的进行又很大帮助。
这是第一次编写需求分析报告,可定还有很多不足的地方,以后还会接触到这方面的工作,有了这一次的经验我想以后会越做越好的。
参考文献
肖军模.程序设计语言编译.大连:
大连理工大学出版社,2000
江开耀,张俊兰等.软件工程.西安:
西安电子科技大学出版社,2003
Stroustrup,Bjarne.TheDesignandEvolutionofC++.Reading,MA:
Addison-wesley,1994.
Booch,Grady.objectAnalysisandDesignSecondEditionReading,MA:
Addison-wesley,1993.