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