0805060228 周琼瑶 集装箱优化设计之代码设计1.docx
《0805060228 周琼瑶 集装箱优化设计之代码设计1.docx》由会员分享,可在线阅读,更多相关《0805060228 周琼瑶 集装箱优化设计之代码设计1.docx(12页珍藏版)》请在冰豆网上搜索。
0805060228周琼瑶集装箱优化设计之代码设计1
武汉工程大学
计算机科学与工程学院
《集装箱优化设计之代码设计》实验报告
专业班级
08计算计双特色02
实验地点
503
学生学号
0805060228
指导教师
王庆春
学生姓名
周琼瑶
实验时间
11.26
实验项目
集装箱优化设计需求分析报告
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
1、了解集装箱优化设计的模型。
2、编写集装箱优化设计的代码,实现集装箱的优化。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
30分
程序代码
比较规范、基本正确
功能达到实验要求
30分
实验报告
及时递交、填写规范
内容完整、体现收获
40分
说明:
评阅教师:
日期:
2008年月日
实验内容
一、设计方案
1.以下是集装箱装载货物的三种模型:
对应输入的数据分别表示描述货物形状的参数。
具体如下图一所示:
图一
2.装载方案一的装载示意图,如图二所示:
图二
由图可知,装载方案一是根据用户输入的数据,依次进行如图所示的装箱过程,即:
1、从第一列开始,将两个直角三角形拼凑成为一个矩形沿着集装箱的底部(集装箱的宽)进行存放,如果不能继续存放三角形,则转到下一列,开始摆放长方形。
2、类似三角形的摆放过程,沿着集装箱的宽,依次摆放长方形,如果不能继续摆放长方形,则转到下一列,开始摆放正方形。
3、类似上面的摆放过程,沿着集装箱的宽,依次摆放正方形,如果不能继续摆放正方形,则转到下一列。
如此循环执行摆放过程,直至集装箱不能继续装载货物为止。
3.装载方案二的装载示意图,如图三所示:
图三
由图示可知,装载方案二是在装载方案一的基础上,将三角形的摆放由装载方案一中的竖放,调整为横放。
4.装载方案三的装载示意图,如图四所示:
图四
由图示可知,装载方案三是在装载方案二的基础上,将长方形的摆放由装载方案二中的横放,调整为竖放。
5.装载方案的不足
在上述的三种装在方案中,存在一个很大的缺陷。
这一缺陷可能会造成较大的空间浪费。
如下图五所示:
图五
由图示可知,当沿着集装箱的某一列摆放某种货物时,如果不能继续摆放该货物的,但它存在较大的空间,足以存放其他货物,(如图五中,虚线框所示),而在上述上中装载方案中,均没有考虑到这种情形,所以当遇到这种情况是,集装箱的装载量受到限制,严重影响了集装箱的装载量,造成了极大的浪费。
二、设计代码
#include
#include
usingnamespacestd;
voidDoTriangle(float,float);
voidDoRectangle(float,float);
voidDoSquare(float);
floatMax(float,float);
voidCompare(float,float,float);
floata=0.03;
floatLength=40;
floatWidth=20;
intTriangle=0,Rectangle=0,Square=0;
voidmain()
{
floatx1,y1,x2,y2,x;
floatAreaSum1,AreaSum2,AreaSum3,t1,t2;
cout<<"***声明:
本程序中只考虑三角形为直角三角形的情况!
***"<cout<cout<<"*******货物形状基本信息*******"<Cout<<"集装箱的体积为:
"<cout<cout<<"请输入直角三角形的底:
";
cin>>x1;
cout<<"请输入直角三角形的高:
";
cin>>y1;
cout<<"输入长方形的长:
";
cin>>x2;
cout<<"输入长方形的宽:
";
cin>>y2;
cout<<"输入正方形的边长:
";
cin>>x;
cout<<"******************************"<cout<cout<floatAreaTri=x1*y1/2;
floatAreaRec=x2*y2;
floatAreaSqu=x*x;
cout<<"************方案一************"<cout<while(Length>=x1+a||Length>=x2+a||Length>=x+a)
{
DoTriangle(x1,y1);
DoRectangle(x2,y2);
DoSquare(x);
}
cout<<"三角形的个数:
"<cout<<"长方形的个数:
"<cout<<"正方形的个数:
"<AreaSum1=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square;
cout<cout<<"方案一装载货物总面积为:
"<cout<<"******************************"<cout<cout<cout<<"************方案二************"<cout<Length=40;
Width=20;
Triangle=0;
Rectangle=0;
Square=0;//重新初始化
t1=x1;
x1=y1;
y1=t1;
while(Length>=x1+a||Length>=x2+a||Length>=x+a)
{
DoTriangle(x1,y1);
DoRectangle(x2,y2);
DoSquare(x);
}
cout<<"三角形的个数:
"<cout<<"长方形的个数:
"<cout<<"正方形的个数:
"<AreaSum2=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square;
cout<cout<<"方案二装载货物总面积为:
"<cout<<"******************************"<cout<cout<cout<<"************方案三************"<cout<Length=40;
Width=20;
Triangle=0,Rectangle=0,Square=0;//重新初始化
t2=x2;
x2=y2;
y2=t2;
while(Length>=x1+a||Length>=x2+a||Length>=x+a)
{
DoTriangle(x1,y1);
DoRectangle(x2,y2);
DoSquare(x);
}
cout<<"三角形的个数:
"<cout<<"长方形的个数:
"<cout<<"正方形的个数:
"<AreaSum3=AreaTri*Triangle+AreaRec*Rectangle+AreaSqu*Square;
cout<cout<<"方案三装载货物总面积为:
"<cout<<"******************************"<cout<cout</**********比较各种方案**********/
cout<<"*********比较各种方案*********"<cout<Compare(AreaSum1,AreaSum2,AreaSum3);
cout<<"******************************"<cout<}
voidDoTriangle(floatx,floaty)//x,y分别表示三角形的底和高
{
floatm,n;
m=x+a;
n=y+a;
if((Length>=m)&&(Width>=n))
{
while(n<=Width)
{
Triangle+=2;
n+=y+a;
}
Length=Length-x-a;
}
}
voidDoRectangle(floatx,floaty)//x,y分别表示长方形的长和宽
{
floatm=x+a;
floatn=y+a;
if((Length>=m)&&(Width>=n))
{
while(n<=Width)
{
Rectangle++;
n+=y+a;
}
Length=Length-x-a;
}
}
voidDoSquare(floatx)//x表示正方形的边长
{
floatm=x+a;
if(Length>=m)
{
while(m<=Width)
{
Square++;
m+=(x+a);
}
Length=Length-x-a;
}
}
voidCompare(floatm,floatn,floato)
{
floatt,Option;
t=Max(m,n);
Option=Max(t,o);
if(Option==m)
cout<<"最佳装载方案为:
方案一"<else
{
if(Option==n)
cout<<"最佳装载方案为:
方案二"<else
cout<<"最佳装载方案为:
方案三"<}
}
floatMax(floatx,floaty)
{
returnx>y?
x:
y;
}
三、代码运行结果
1.根据提示信息输入货物的一些基本信息,输出结果如图
(一)所示:
图
(一)
2.根据上述的设计方案,输出设计方案一得设计结果,即输出所装的不同形状货物的个数如图
(二)所示:
图
(二)
3.根据设计方案,输出设计方案三的结果,如图(三)所示:
4.根据设计方案以及输出的基本信息,方案三的结果如图(四)所示:
5.根据设计方案以及货物形状的基本信息,比较这三种方案的结果如图(五)所示:
4、参考文献
1.张海藩..软件工程导论(第3版).北京:
清华大学出版社,1998
2.李伟波,刘永祥,王庆春..软件工程..武汉:
武汉大学出版社,2006
3.张敬,宋广军等..软件工程教程..北京:
北京航空航天大学出版社,2003
4.李芷,窦万峰等..软件工程方法与实践..北京:
电子工业出版社,2004
五、实验总结
通过本次实验,更多的了解了软件工程项目开发的相关过程,对软件工程专业有了一个相对较全面的认识。
我明白了软件工程设计是一个复杂的过程,其中的每一个环节必不可少,然而,我们需要更广博的知识来作为设计的基础。
这次集装箱优化设计过程中利用了有关集装箱的知识,因此,我们必须掌握相关集装箱的必备知识。
此外,这次代码设计给我们提供了一个既动手又动脑、自学、独立实践的机会,使我们养成了勤翻阅查找各种相关资料,了解各方面的知识。
将书本上的理论知识和实际有机结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际、实践编写能力,为今后学习和实践打下了良好的基础。