C#,《小白学程序》第八课:列表(List)应用之二“编制高铁列车时刻表”

news2025/1/23 9:14:42

1 文本格式


/// <summary>
/// 《小白学程序》第八课:列表(List)应用之二————编制高铁列车时刻表
/// 列车时刻表的每一行一般都是:车站 到达时间 出发时间
/// 两个车站之间的开行时间 time = distance / speed
/// 出发时间 = 到达时间 + 停靠时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
    // #1 创建列表(列车车次信息)
    List<Station> G103 = new List<Station>();

    // #2 添加节点(车站信息)
    G103.Add(stations[0]);
    G103.Add(stations[2]);
    G103.Add(stations[3]);
    G103.Add(stations[4]);
    G103.Add(stations[5]);

    // #3 时间相关的信息
    // 各车站之间的距离(公里)
    // 每个数据表示与前面一个车站的距离;起点站当然为0;
    double[] distance = new double[] { 0, 50, 100, 140, 20 };
    // 每个车站的停靠时间(分钟)
    // 每个数据表示停靠时间,起点站 与 终点站  不需要!
    double[] stop = new double[] { 0, 2, 2, 2, 0 };
    // 列车的平均时速(公里/小时,km/h)
    double speed = 160;

    StringBuilder sb = new StringBuilder();

    // #4 计算开始
    // 设定开行时间(10点01分)
    DateTime start = DateTime.Parse("10:01:00");
    for (int i = 0; i < 5; i++)
    {
        if (i == 0)
        {
            // 起点站;没有到达时间;只需要输出出发时间;
            sb.AppendLine(G103[i].Name + " " + start.ToString("HH:mm") + " 出发<br>");
        }
        else if (i == 4)
        {
            // 终点站;没有出发时间,只需要计算到达时间;
            // 算出的是列出运行时间(小时),后面一行转为 秒
            double t = distance[i] / speed;
            t = t * 60 * 60;
            // 到达时间 = 上一站出发时间 + 开行时间
            // 本函数统一(按秒计算)
            DateTime arrive = start.AddSeconds(t);
            sb.AppendLine(G103[i].Name + " " + arrive.ToString("HH:mm") + " 到达<br>");
        }
        else
        {
            // 其他车站;需要计算到达时间与出发时间
            double t = distance[i] / speed;
            t = t * 60 * 60;
            // 1 到达时间;
            DateTime arrive = start.AddSeconds(t);
            sb.AppendLine(G103[i].Name + " " + arrive.ToString("HH:mm") + " 到达 ");
            // 2 出发时间(分钟,转为秒)
            start = arrive.AddSeconds(stop[i] * 60);
            sb.AppendLine(start.ToString("HH:mm") + " 出发<br>");
        }
    }

    webBrowser1.DocumentText = sb.ToString();
}
 

2 代码格式


/// <summary>
/// 《小白学程序》第八课:列表(List)应用之二————编制高铁列车时刻表
/// 列车时刻表的每一行一般都是:车站 到达时间 出发时间
/// 两个车站之间的开行时间 time = distance / speed
/// 出发时间 = 到达时间 + 停靠时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
    // #1 创建列表(列车车次信息)
    List<Station> G103 = new List<Station>();

    // #2 添加节点(车站信息)
    G103.Add(stations[0]);
    G103.Add(stations[2]);
    G103.Add(stations[3]);
    G103.Add(stations[4]);
    G103.Add(stations[5]);

    // #3 时间相关的信息
    // 各车站之间的距离(公里)
    // 每个数据表示与前面一个车站的距离;起点站当然为0;
    double[] distance = new double[] { 0, 50, 100, 140, 20 };
    // 每个车站的停靠时间(分钟)
    // 每个数据表示停靠时间,起点站 与 终点站  不需要!
    double[] stop = new double[] { 0, 2, 2, 2, 0 };
    // 列车的平均时速(公里/小时,km/h)
    double speed = 160;

    StringBuilder sb = new StringBuilder();

    // #4 计算开始
    // 设定开行时间(10点01分)
    DateTime start = DateTime.Parse("10:01:00");
    for (int i = 0; i < 5; i++)
    {
        if (i == 0)
        {
            // 起点站;没有到达时间;只需要输出出发时间;
            sb.AppendLine(G103[i].Name + " " + start.ToString("HH:mm") + " 出发<br>");
        }
        else if (i == 4)
        {
            // 终点站;没有出发时间,只需要计算到达时间;
            // 算出的是列出运行时间(小时),后面一行转为 秒
            double t = distance[i] / speed;
            t = t * 60 * 60;
            // 到达时间 = 上一站出发时间 + 开行时间
            // 本函数统一(按秒计算)
            DateTime arrive = start.AddSeconds(t);
            sb.AppendLine(G103[i].Name + " " + arrive.ToString("HH:mm") + " 到达<br>");
        }
        else
        {
            // 其他车站;需要计算到达时间与出发时间
            double t = distance[i] / speed;
            t = t * 60 * 60;
            // 1 到达时间;
            DateTime arrive = start.AddSeconds(t);
            sb.AppendLine(G103[i].Name + " " + arrive.ToString("HH:mm") + " 到达 ");
            // 2 出发时间(分钟,转为秒)
            start = arrive.AddSeconds(stop[i] * 60);
            sb.AppendLine(start.ToString("HH:mm") + " 出发<br>");
        }
    }

    webBrowser1.DocumentText = sb.ToString();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/942723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python web GUI框架-NiceGUI 教程(二)

python web GUI框架-NiceGUI 教程&#xff08;二&#xff09; streamlit可以在一些简单的场景下仍然推荐使用&#xff0c;但是streamlit实在不灵活&#xff0c;受限于它的核心机制&#xff0c;NiceGUI是一个灵活的web框架&#xff0c;可以做web网站也可以打包成独立的exe。 基…

系列十一、AOP

一、概述 1.1、官网 AOP的中文名称是面向切面编程或者面向方面编程&#xff0c;利用AOP可以对业务逻辑的各个部分进行隔离&#xff0c;从而使得业务逻辑各部分之间的耦合度降低&#xff0c;提高程序的可重用性&#xff0c;同时提高了开发的效率。 1.2、通俗描述 不通过…

MySQL中的free链表,flush链表,LRU链表

一、free链表 1、概述 free链表是一个双向链表数据结构&#xff0c;这个free链表里&#xff0c;每个节点就是一个空闲的缓存页的描述数据块的地址&#xff0c;也就是说&#xff0c;只要你一个缓存页是空闲的&#xff0c;那么他的描述数据块就会被放入这个free链表中。 刚开始数…

PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)

一、实现功能&#xff0c;数据表前缀、alias、model、table、join方法实现 二、表前缀实现 1、config.php增加表前缀 DB_PEX>fa_,//数据库前缀 2、增加表前缀方法function.php function model($table){$modelnew ModelBase($table,config("DB_PEX"));return $m…

curl通过webdav操作alist

创建目录: url202320230828;curl -v -u "admin":"这里是密码" -X MKCOL "http://127.0.0.1:5244/dav/my189tianyi/${url2023}/" 上传文件: curl -v -u "admin":"这里是密码" -T /tmp/aa.json "http://127.0.0.1:52…

基于SSH的电影票预订系统

基于SSH的电影票预订系统 一、系统介绍二、功能展示1.其他系统实现五.获取源码 一、系统介绍 项目类型&#xff1a;Java web项目 项目名称&#xff1a;基于SSH的电影票预定系统 [dingpiao] 用户类型&#xff1a;有用户和管理员&#xff08;双角色&#xff09; 项目架构&…

C# 多线程交替按照指定顺序执行

1.关于AutoResetEvent和ManualResetEvent的区别解释如下&#xff1a; AutoResetEvent和ManualResetEvent是.NET中的两个线程同步类。它们之间的主要区别在于其释放信号的方式以及对等待线程的影响。 AutoResetEvent的作用是在等待的线程被信号唤醒后&#xff0c;将信号自动重…

Matlab图像处理-平移运算

几何运算 几何运算又称为几何变换&#xff0c;是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置&#xff0c;它不改变图像的像素值&#xff0c;只是改变像素所在的几何位置&#xff0c;使原始图像按照需要产生位置、形状和大小的变化。 图像几何运算的一般定义为&#…

Atcoder Beginner Contest 317

A - Potions (atcoder.jp) AC代码: #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #define endl \n //#define int long long using namespace std; typedef long long ll; const int N110; int a[N]; int n,h,x; void…

【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}

map和set的介绍和使用 一、关联式容器 关联式容器和序列式容器是C STL中的两种不同类型的容器。 关联式容器是基于键值对的容器&#xff0c;其中每个元素都有一个唯一的键值&#xff0c;可以通过键值来访问元素。关联式容器包括set、multiset、map和multimap。 序列式容器是…

从零做软件开发项目系列之七——用户培训

开展用户培训工作是确保软件项目成功的重要一环。以下是一个详细的步骤指南&#xff0c;用于规划和执行用户培训。 1. 确定培训目标和用户。 首先需要识别用户角色。确定项目中不同用户角色和职能&#xff0c;例如管理员、操作员、管理人员等。不同角色可能需要不同的培训内容…

14.工作式指针和数字时钟

源码 源码 <!doctype html> <html><head><meta charset="utf-8"><title>Clock</title><link rel="stylesheet" href="style.css"></head><body><div class="container">…

epoll 基于多线程的边沿非阻塞处理

往期文章推荐&#xff1a; epoll() 多路复用 和 两种工作模式_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/132523789?spm1001.2014.3001.5501 epoll_server.c #include <stdio.h> #include &l…

python venv 打包,更换路径后,仍然读取到旧路径 ,最好别换路径,采用docker封装起来

机械盘路径 /home/yeqiang/code/xxx 移动到 /opt/xxx 编辑/opt/xxx/venv/bin/activate VIRTUAL_ENV"/home/yeqiang/code/xxx/venv" 改为 VIRTUAL_ENV"/opt/xxx/venv" 下面还有这么多&#xff0c;参考&#xff1a; (venv) yeqiangyeqiang-MS-7B23:/…

Kubernetes入门 十一、网络之Service

目录 概述Service 原理Service 四种类型创建 Service代理 k8s 外部服务反向代理外部域名 概述 在 Kubernetes 中&#xff0c;Pod 是应用程序的载体&#xff0c;我们可以通过 Pod 的 IP 来访问应用程序&#xff0c;但是 Pod 的 IP 地址不是固定的&#xff0c;这就意味着不方便直…

MyBatisPlus实现多租户功能

前言&#xff1a;多租户是一种软件架构技术&#xff0c;在多用户的环境下&#xff0c;共有同一套系统&#xff0c;并且要注意数据之间的隔离性。 一、SaaS多租户简介 1.1、SaaS多租户 SaaS&#xff0c;是Software-as-a-Service的缩写名称&#xff0c;意思为软件即服务&#x…

【电源专题】读一读单节锂电池保护IC规格书

在文章【电源专题】单节锂离子电池的保护的基本原理 中我们了解了电池包的过充、过放、过流、短路等保护功能。那么这些功能都会在电池保护IC规格书中体现吗?体现在哪些地方?哪些参数是我们应关注的呢? 对于手册中的电压检测,如放电过流、充电过流和负载短路等检测电压都代…

开源软件的国际化和本地化

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

centos7删除乱码文件

centos7删除乱码文件1. 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.解释 当文件名为乱码的时候&#xff0c;无法通过键盘输入文件名&#xff0c;所以在终端下就不能直接利用rm&#xff0c;mv等命令管理文件了。 但是每个文件都有一个i节点号&#xff0c;可以通过…