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