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

1 文本格式

/// <summary>
/// 车站信息类 class
/// </summary>
public class Station
{
    /// <summary>
    /// 编号
    /// </summary>
    public int Id { get; set; } = 0;
    /// <summary>
    /// 车站名
    /// </summary>
    public string Name { get; set; } = string.Empty;

    public Station(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }
}
 

// 列表的初值
List<Station> stations = new List<Station>() {
    new Station(1,"北京"),
    new Station(2,"石家庄"),
    new Station(3,"香河"),
    new Station(4,"唐山"),
    new Station(5,"北戴河"),
    new Station(6,"秦皇岛"),
    new Station(7,"廊坊"),
    new Station(8,"天津"),
};

/// <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>
/// 车站信息类 class
/// </summary>
public class Station
{
    /// <summary>
    /// 编号
    /// </summary>
    public int Id { get; set; } = 0;
    /// <summary>
    /// 车站名
    /// </summary>
    public string Name { get; set; } = string.Empty;

    public Station(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }
}

// 列表的初值
List<Station> stations = new List<Station>() {
    new Station(1,"北京"),
    new Station(2,"石家庄"),
    new Station(3,"香河"),
    new Station(4,"唐山"),
    new Station(5,"北戴河"),
    new Station(6,"秦皇岛"),
    new Station(7,"廊坊"),
    new Station(8,"天津"),
};


/// <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();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

系列五、Java操作RocketMQ简单消息之同步消息

一、概述 同步消息的特征是消息发出后会有一个返回值&#xff0c;即RocketMQ服务器收到消息后的一个确认&#xff0c;这种方式非常安全&#xff0c;但是性能上却没有那么高&#xff0c;而且在集群模式下&#xff0c;也是要等到所有的从机都复制了消息以后才会返回&#xff0c;适…

QT(8.30)常用类与组件,实现登录界面

1.作业&#xff1a; 完成一个登录界面(图片未附带): 头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include <QLineEdit>//行编辑器#include<QIcon>//图标#include<QLabel>//标签#include<QPushButton>//按钮#include<QIc…

GA遗传算法

储备知识 GA算法主要解决数学模型中最优化的搜索算法&#xff0c;是进化算法中的一种&#xff0c;基因算法借鉴了自然界基因的遗传的主要现象&#xff0c;分别为遗传&#xff0c;变异&#xff0c;自然选择&#xff0c;杂交等。 GA算法参数 GA算法的参数如下所示。 种群规模…

JAVA 求最小公因数

JAVA 求最小公因数 文章目录 JAVA 求最小公因数方法一&#xff1a;枚举法的第一种方法一&#xff1a;枚举法的第二种方法二&#xff1a;展转相除法(欧几里德算法)方法三&#xff1a;递归拓展 求最小公倍数公式为综合 辗转相除法递归 求n个数的最大公约数和最小公倍数 题目&…

一百六十九、Hadoop——Hadoop退出NameNode安全模式与查看磁盘空间详情(踩坑,附截图)

一、目的 在海豚跑定时跑kettle的从Kafka到HDFS的任务时&#xff0c;由于Linux服务器的某个文件磁盘空间满了&#xff0c;导致Hadoop的NodeName进入安全模式&#xff0c;此时光执行hdfs dfsadmin -safemode leave命令语句没有效果&#xff08;虽然显示Safe mode is OFF&#x…

EFLK日志平台(filebeat-->kafka-->logstash-->es-->kiabana)

ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 安装顺序 1.安装es 7.17.12 2.安装kibana 7.17.12 3.安装x-pack 保证以上调试成功后开始下面…

C语言:动态内存(一篇拿捏动态内存!)

目录 学习目标&#xff1a; 为什么存在动态内存分配 动态内存函数&#xff1a; 1. malloc 和 free 2. calloc 3. realloc 常见的动态内存错误&#xff1a; 1. 对NULL指针的解引用操作 2. 对动态开辟空间的越界访问 3. 对非动态开辟内存使用free释放 4. 使用free释…

汽车自适应巡航系统控制策略研究

目 录 第一章 绪论 .............................................................................................................................. 1 1.1 研究背景及意义 ..........................................................................................…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

【Locomotor运动模块】瞬移

文章目录 一、原理二、两种类型1、Instant(立刻)2、Dash&#xff08;猛冲&#xff09; 三、瞬移区域、瞬移点1、瞬移区域2、瞬移点 一、原理 抛物线指针选择好目标位置&#xff0c;然后告诉瞬移预设体&#xff1a;你想法把游戏区域弄到目标位置来 解释&#xff1a;抛物线指针选…

uniapp 微信小程序仿抖音评论区功能,支持展开收起

最近需要写一个评论区功能&#xff0c;所以打算仿照抖音做一个评论功能&#xff0c;支持展开和收起&#xff0c; 首先我们需要对功能做一个拆解&#xff0c;评论区功能&#xff0c;两个模块&#xff0c;一个是发表评论模块&#xff0c;一个是评论展示区。接下来对这两个模块进行…

最新ChatGPT程序源码+AI系统+详细图文部署教程/支持GPT4.0/支持Midjourney绘画/Prompt知识库

一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01;SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…

Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 systemctl stop fi…

数据结构|栈和队列以及实现

栈和队列 一、栈1.1栈的概念及结构1.2栈的实现 二、队列2.1队列的概念及结构2.2队列的实现 一、栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和数据删除的一端称为栈顶&#xff0c;另一端称为栈…

深度学习入门(Python)学习笔记1

第1章 Python入门 1.1python是什么 Python是一个简单、易读、易记的编程语言&#xff0c;而且是开源的&#xff0c;可以免费地自由使用。 使用Python不仅可以写出可读性高的代码&#xff0c;还可以写出性能高&#xff08;处理速度快&#xff09;的代码。 再者&#xff0c;在…

7.2 项目2 学生通讯录管理:文本文件增删改查(C 版本)(自顶向下设计+断点调试) (A)

C自学精简教程 目录(必读) 该作业是 作业 学生通讯录管理&#xff1a;文本文件增删改查&#xff08;C版本&#xff09; 的C 语言版本。 具体的作业题目描述&#xff0c;要求&#xff0c;可以参考 学生通讯录管理&#xff1a;文本文件增删改查&#xff08;C版本&#xff09;。…

Windows下Redis的安装和配置

文章目录 一,Redis介绍二,Redis下载三,Redis安装-解压四,Redis配置五,Redis启动和关闭(通过terminal操作)六,Redis连接七,Redis使用 一,Redis介绍 远程字典服务,一个开源的,键值对形式的在线服务框架,值支持多数据结构,本文介绍windows下Redis的安装,配置相关,官网默认下载的是…

iTOP-RK3588开发板Android12 设置系统默认不休眠

修改文件&#xff1a; device/rockchip/rk3588/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults. xml 文件&#xff0c;如下图所示&#xff1a; - <integer name"def_screen_off_timeout">60000</integer> <integer name&q…

卡特兰数和算法

在组合数学中&#xff0c;卡特兰数是一系列自然数&#xff0c;出现在各种组合计数问题中&#xff0c;通常涉及递归定义的对象。它们以比利时数学家尤金查尔斯卡特兰&#xff08;Eugne Charles Catalan&#xff09;的名字命名。 卡特兰数序列是1, 1, 2, 5, 14, 42......&#xf…