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 代码格式

cs 复制代码
/// <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();
}
相关推荐
机器学习之心3 分钟前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
I_Am_Me_13 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
yyt_cdeyyds14 分钟前
FIFO和LRU算法实现操作系统中主存管理
算法
重生之我是数学王子23 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Ai 编码助手25 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z29 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹37 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE38 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
alphaTao40 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode
kitesxian1 小时前
Leetcode448. 找到所有数组中消失的数字(HOT100)+Leetcode139. 单词拆分(HOT100)
数据结构·算法·leetcode