程序设计思路报告快递运输路线优化系统
程序设计思路报告快递运输路线优化系统
一、程序设计目的
通过调试典型例题或习题积累调试 C 程序的经验,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
针对于本次程序设计,有以下几点目的:
1.程序的逻辑性较强,可以增强学生的罗辑思维;
2.提高学生对题目的理解能力,并能很好地分析题目,将题目转化为图像,从而进行程序的设计;
3.程序中使用了数组(数组的存入、遍历以及比较)、随机数的产生、逻辑判断等重要内容,设计程序的同时对这些重要内容进行复习;
4.学会利用流程图以及伪代码表示算法;
5.掌握书写程设计开发文档的能力(书写课程设计报告)。
二、设计报告正文
1.程序设计原题目
假设你为快递公司设计快递投递路线优化程序。
(1)每个市有个中转分发点,有些城市之间有直通路线,有些城市之间没有直通路线;
(2)城市与城市之间的运费计算公式为:距离*1;
(3)设投递包裹的尺寸、重量都一样,每条运输线路有个运力上限(即只能运输多少个包裹)。
要求:(1)随机产生当天的包裹投递需求;
(2)对所产生的包裹需求,生成运输路线策略。
拓展要求:根据随机测试结果,利用程序优化城市间包裹线路。
2.题目分析
此系统应实现如下功能:
1.设定城市数,道路运量,道路长度。
2.随机产生各城市对包裹的需求量,通过随机数的产生实现。
3.生成一条运输路线(优化城市间的运输路线去,达到最优)。分别对各个城市进行算法运算,最后进行比较以得出最优路线。
3.题目图像化
定义五个城市,分别为A,B,C,D,E,其中A为运输中心
设定道路长度为:
AB=100 AC=60 AD=50 CB=70
CD=50 BE=30 CE=40 ED=100
设定道路运载量:
AB=110 AC=130 AD=150 BE=30
CE=30 DE=20,BC=30 CD=30
4.程序整体思想(框图)
5.设计思路(伪代码)
#include<所需头文件>
Int main()
{定义五个城市的道路长度以及运力大小;
选择模式;
If(mood1){
生成4个城市的运量随机数;
}
If(mood2){
输入4个城市的运量;
}
对四个城市分别进行分析;
输出总费用;
}
6.代码设计
(1).analayseX函数
分析:逐个对城市进行分析,通过if判断语句,比较城市需求量与道路运力,来选择最优路径,例如(以城市B为例):
如果城市B的需求量小于AB之间道路的运力,则AB为最优路线;
如果城市B的需求量大于AB之间道路的运力且小于AB与BC之间运力的总和,则最优路线为AB+(AC+BC);
如果城市B无需求量,则记为运费=0;
其他情况的最优路线为(AB)+(AC+BC)+(AD+CD+BC)。
B城市的代码如下:
void analayseB(void){
if ( countB<powerAB)
{
a[0]=countBroadAB1;
printf(“到城市B最优路线为AB,费用为%d\n”,a[0]);
}
else if(countB>powerAB&& countB<(powerAB + powerBC) )
{
a[0]=110801+(countB-powerAB)(roadAC+roadBC);
printf(“到城市B最优路线为AB+(AC+BC),费用为%d\n”,a[0]);
}
else if(countB==0)
{
a[0]=0;
}
else
{
a[0]=110801+30(60+70)+(countB-powerAB-powerBC)*(roadAD+roadCD+roadBC);
printf(“到城市B最优路线为(AB)+(AC+BC)+(AD+CD+BC),费用为%d\n”,a[0]);
}
}
(2).mood函数
分析:使用者输入选择的模式。
具体代码如下:
int mood(void){
printf(“请选择模式(1 为手动输入各城市的运量;2 为随机生成个城市的运量)”);
scanf("%d",&number);
while(number!=1&&number!=2){ //防输入错误
printf(“输入出错,请重新输入”);
printf(“请选择模式(1 为手动输入各城市的运量;2 为随机生成各城市的运量)”);
scanf("%d",&number);
}
return number;
}
(3).主函数
分析:先定义各条道路的长度以及运力,然后定义一个数组(记录各个城市的最优方案所需运费);选择模式,让使用者输入需要选择的模式,通过一个if语句,来判断接下来的程序走向,同时使用while循环来防止错误输入。如果选择模式1,则通过printf、scanf以及while语句来实现四个城市的需求量输入,如果选择模式2,则通过srand((int )time(0)*10)函数来实现生成随机数由于道路运载量对城市需求量的限制,通过对随机数除余再加上某一值来实现,具体方法如下:countB = rand()%31+30; countC = rand()%31+30; countD = rand()%31+30; countE = rand()%(60-max)+40; 然后,分别对四个城市进行分析,将各个运费通过数组存储,算出总运费;最终询问是否重来。
部分程序如下:
int main()
{ while(end1){
int max;
printf(“已知道路长度如下:\n”);
printf(“AB=100,AC=60,AD=50,CB=70,CD=50,BE=30,CE=40,ED=100\n”);
printf(“已知道路运载量如下:\n”);
printf(“AB=110,AC=130,AD=150,BE=30,CE=30,DE=20,BC=30,CD=30\n”);
printf(" \n");
number=mood(); //选择模式
if(number1){
printf(“由于道路运载量有限定,B、C、D城市只能在0到60之间,E城市小于30\n”);
printf(“请输入B城市的运量\n”);
scanf("%d",&countB);
while(countB<0||countB>60){ //防输入错误
printf(“输入出错,请再输入范围内的值\n”);
printf(“请输入B城市的运量\n”);
scanf("%d",&countB);
}
printf(“请输入C城市的运量\n”);
scanf("%d",&countC);
printf(“请输入D城市的运量\n”);
scanf("%d",&countD);
printf(“请输入E城市的运量()\n”);
scanf("%d",&countE);
}
if(number==2){
srand((int)time(0)*10);
countB = rand()%31+30;
countC = rand()%31+30;
countD = rand()%31+30;
max=countB>countC?countB:countC;
max=max>countD?max:countD;
countE = rand()%(60-max)+40;
}
printf(" \n");
printf(“B城市的运量为 = %d\n”, countB);
printf(“C城市的运量为 = %d\n”, countC);
printf(“D城市的运量为 = %d\n”, countD);
printf(“E城市的运量为 = %d\n”, countE);
printf(" \n");
system(“pause”);
analayseB(); //对城市B
analayseC(); //对城市C
analayseD(); //对城市D
analayseE(); //城市E
printf(" \n");
int price;
price=a[0]+a[1]+a[2]+a[3];
printf("\n");
printf(“总费用为%d\n”,price);
system("pause");
printf(" \n");
printf("1 重新模拟一次;2 结束");
scanf("%d",&end);
printf(" \n");
}
return 0;
}
7.运行与检测报告
mood 1结果
Mood2结果
三、总结
程序整体上运行与题目要求吻合,算法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟悉了c语言的基本操作。
程序设计思路报告快递运输路线优化系统相关推荐
- 探索物流预测珠峰:苏宁智能运输路线技术设计
本文作者为苏宁云商IT总部技术总监:俞恺.李盛强 责编:何永灿(heyc@csdn.net) 来自物流的挑战 近年来,随着电商增速的放缓,市场对电商企业提供的差异化服务提出更高要求,而物流则首当其冲, ...
- java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署 本源码技 ...
- linux系统程序问题报告,Linux程序设计实验报告.docx
Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...
- java学生考勤系统实验报告,程序设计实验报告学生考勤系统).doc
程序设计实验报告学生考勤系统) C语言程序设计 课程报告 所在学院计算机科学学院所在班级计算机科学与技术1班 小组成员XX(组长) XXX(副组长) XXX(组员) XXX(组员) 指导老师XXX X ...
- c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...
学生成绩管理系统C语言程序设计实践报告 (此文档为word格式,下载后您可任意编辑修改!) 中南大学 C语言程序设计实践报告 题 目 学 生 成 绩 管 理 系 统 学生姓名 木雕小象 指导教师 × ...
- 计算器java程序设计报告总体设计,java程序设计实验报告-计算器
<java程序设计实验报告-计算器>由会员分享,可在线阅读,更多相关<java程序设计实验报告-计算器(18页珍藏版)>请在金锄头文库上搜索. 1. Java 程序设计实验报告 ...
- 学号程序编辑 c语言,C语言程序设计实习报告 行编辑器 学生管理系统
<C语言程序设计实习报告 行编辑器 学生管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计实习报告 行编辑器 学生管理系统(47页珍藏版)>请在人人文库网上搜索. 1. ...
- c语言程序设计添加修改删除,C语言程序设计实习报告,DOC
<C语言程序设计实习报告,DOC>由会员分享,可在线阅读,更多相关<C语言程序设计实习报告,DOC(15页珍藏版)>请在人人文库网上搜索. 1.手机通讯录管理系统一.设计题目的 ...
- 组数游戏c语言程序报告,c语言组数游戏程序设计实习报告.docx
c语言组数游戏程序设计实习报告 C程序设计实习报告题目:组数游戏学院:机电学院专业:机械设计制造及自动化姓名:张庆远班级学号:20091002559指导教师:薛思清目录第一章:题目要求1.1:要求1. ...
最新文章
- 大肆行贿!微软前员工爆料,在中东、非洲每年花2亿美元回扣送礼
- 15款最好的网站音乐播放器
- 【Spring】Bean的生命周期
- 我们是否能信任算法?不信任又能怎么办?
- Analysis by Its History Theorem 2.2 牛顿广义二项式公式
- NetScaler http 请求克隆复制
- iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
- mysql 内存太大被杀_数据库mysqld进程频繁被杀解决方案[终]
- 6.高性能MySQL --- 查询性能优化(2)
- 贝叶斯优化核极限学习机KELM用于回归预测
- Android混淆和加固详解
- Window10环境下安装VMware12
- 乐高机器人投篮编程_乐高机器人WeDo编程和EV3编程课能学到什么
- Matter over Wi-Fi: Raspberry Pi 4开发环境设置
- 人脸识别门禁应用方案
- 编程序,输入年份和月份,输出本月有多少天。合理选择分支语句完成设计任务。
- RAID5换硬盘重建记录
- 使用不同的TCP端口架设多个网站
- 1. PYNQ在ZCU102上的移植【PYNQ】
- 【转】 很美的句子,句句掉泪,不知道原创是谁,感谢
热门文章
- 循迹传感器(TCRT5000)的介绍以及使用(STM32)
- 安全漏洞——如何查找和修复它们
- (四)为深度伪造预处理数据集
- 使用.NET 5自动查找代码中的潜在错误
- openGauss 正式开源并成立开源社区
- python字典合并_Python中如何实现两个字典合并
- java 删除二进制内容_二进制搜索树节点删除不删除替换Java
- 前后端开发的心得体会_社招后端三面总结以及学习经验感言(操详细)
- manjaro设置java_manjaro 深度学习编程环境搭建
- python没有错误但是不显示结果_python运行不报错又无任何结果输出