程序设计思路报告快递运输路线优化系统

一、程序设计目的
通过调试典型例题或习题积累调试 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]=110
801+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语言的基本操作。

程序设计思路报告快递运输路线优化系统相关推荐

  1. 探索物流预测珠峰:苏宁智能运输路线技术设计

    本文作者为苏宁云商IT总部技术总监:俞恺.李盛强 责编:何永灿(heyc@csdn.net) 来自物流的挑战 近年来,随着电商增速的放缓,市场对电商企业提供的差异化服务提出更高要求,而物流则首当其冲, ...

  2. java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计BS模式快递运输平台2021源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  3. linux系统程序问题报告,Linux程序设计实验报告.docx

    Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...

  4. java学生考勤系统实验报告,程序设计实验报告学生考勤系统).doc

    程序设计实验报告学生考勤系统) C语言程序设计 课程报告 所在学院计算机科学学院所在班级计算机科学与技术1班 小组成员XX(组长) XXX(副组长) XXX(组员) XXX(组员) 指导老师XXX X ...

  5. c语言编程项目实践报告快递管理系统,学生成绩管理系统C语言程序设计实践报告.doc...

    学生成绩管理系统C语言程序设计实践报告 (此文档为word格式,下载后您可任意编辑修改!) 中南大学 C语言程序设计实践报告 题 目 学 生 成 绩 管 理 系 统 学生姓名 木雕小象 指导教师 × ...

  6. 计算器java程序设计报告总体设计,java程序设计实验报告-计算器

    <java程序设计实验报告-计算器>由会员分享,可在线阅读,更多相关<java程序设计实验报告-计算器(18页珍藏版)>请在金锄头文库上搜索. 1. Java 程序设计实验报告 ...

  7. 学号程序编辑 c语言,C语言程序设计实习报告 行编辑器 学生管理系统

    <C语言程序设计实习报告 行编辑器 学生管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计实习报告 行编辑器 学生管理系统(47页珍藏版)>请在人人文库网上搜索. 1. ...

  8. c语言程序设计添加修改删除,C语言程序设计实习报告,DOC

    <C语言程序设计实习报告,DOC>由会员分享,可在线阅读,更多相关<C语言程序设计实习报告,DOC(15页珍藏版)>请在人人文库网上搜索. 1.手机通讯录管理系统一.设计题目的 ...

  9. 组数游戏c语言程序报告,c语言组数游戏程序设计实习报告.docx

    c语言组数游戏程序设计实习报告 C程序设计实习报告题目:组数游戏学院:机电学院专业:机械设计制造及自动化姓名:张庆远班级学号:20091002559指导教师:薛思清目录第一章:题目要求1.1:要求1. ...

最新文章

  1. 大肆行贿!微软前员工爆料,在中东、非洲每年花2亿美元回扣送礼
  2. 15款最好的网站音乐播放器
  3. 【Spring】Bean的生命周期
  4. 我们是否能信任算法?不信任又能怎么办?
  5. Analysis by Its History Theorem 2.2 牛顿广义二项式公式
  6. NetScaler http 请求克隆复制
  7. iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
  8. mysql 内存太大被杀_数据库mysqld进程频繁被杀解决方案[终]
  9. 6.高性能MySQL --- 查询性能优化(2)
  10. 贝叶斯优化核极限学习机KELM用于回归预测
  11. Android混淆和加固详解
  12. Window10环境下安装VMware12
  13. 乐高机器人投篮编程_乐高机器人WeDo编程和EV3编程课能学到什么
  14. Matter over Wi-Fi: Raspberry Pi 4开发环境设置
  15. 人脸识别门禁应用方案
  16. 编程序,输入年份和月份,输出本月有多少天。合理选择分支语句完成设计任务。
  17. RAID5换硬盘重建记录
  18. 使用不同的TCP端口架设多个网站
  19. 1. PYNQ在ZCU102上的移植【PYNQ】
  20. 【转】 很美的句子,句句掉泪,不知道原创是谁,感谢

热门文章

  1. 循迹传感器(TCRT5000)的介绍以及使用(STM32)
  2. 安全漏洞——如何查找和修复它们
  3. (四)为深度伪造预处理数据集
  4. 使用.NET 5自动查找代码中的潜在错误
  5. openGauss 正式开源并成立开源社区
  6. python字典合并_Python中如何实现两个字典合并
  7. java 删除二进制内容_二进制搜索树节点删除不删除替换Java
  8. 前后端开发的心得体会_社招后端三面总结以及学习经验感言(操详细)
  9. manjaro设置java_manjaro 深度学习编程环境搭建
  10. python没有错误但是不显示结果_python运行不报错又无任何结果输出