Ios 我如何制定一个计划来决定下一班公共汽车的发车时间?

Ios 我如何制定一个计划来决定下一班公共汽车的发车时间?,ios,algorithm,pseudocode,Ios,Algorithm,Pseudocode,我正在寻找一个iOS应用程序,显示多久,直到巴士离开终端。用户可以选择在1到5条总线之间进行检查。例如,假设有5辆公交车,所有这些公交车都可能在不同的时间离开终点站(例如,它们并非都在:30离开终点站)。除此之外,一周中的每一天都会改变公交车的发车时间。此外,有些公共汽车在某些日子不运行。所以基本上总结一下 -根据一周中的哪一天,公共汽车有不同的发车时间 -并不是所有的公共汽车一周都有7天在行驶 我有点不知所措,不知该如何着手,如何组织这个项目。我最初的想法是为5辆公共汽车中的每一辆上一节课。我

我正在寻找一个iOS应用程序,显示多久,直到巴士离开终端。用户可以选择在1到5条总线之间进行检查。例如,假设有5辆公交车,所有这些公交车都可能在不同的时间离开终点站(例如,它们并非都在:30离开终点站)。除此之外,一周中的每一天都会改变公交车的发车时间。此外,有些公共汽车在某些日子不运行。所以基本上总结一下

-根据一周中的哪一天,公共汽车有不同的发车时间 -并不是所有的公共汽车一周都有7天在行驶

我有点不知所措,不知该如何着手,如何组织这个项目。我最初的想法是为5辆公共汽车中的每一辆上一节课。我将确定用户是否已选择检查公交车的下一次发车时间。例如,如果用户愿意,可以检查所有5辆公交车的发车时间。如果用户勾选了所有5辆公交车,应用程序将显示所有5辆公交车的下一次发车时间。如果用户只想显示其中一辆公交车的下一次发车时间,他们只会检查这一辆公交车

因此,就启动逻辑而言,我认为首先要检查公共汽车是否被检查过:

if(总线1检查开关) //

如果(总线2检查开关) //

如果(总线3检查开关) //

如果(总线4检查开关) //

if(总线5CHECKEDOFF) //

从那里开始,我需要下一次出发。我想每天写一节课,把5辆公交车的所有信息都存储在里面。星期一,星期二,星期三,星期四,星期五,星期六,星期天上课

然后,我会在用户的iOS设备上找出日期和时间,并根据日期,转到该类,过滤一系列时间,然后返回最接近的时间(确保它还没有过去)

if(总线1检查开关) { 如果(星期一) //

否则,如果(isTuesday) //

如果有的话(星期三) //

否则如果(星期四) //

如果有的话(星期五) //

否则,如果(周六) //

如有其他情况(星期日) // }

如果(总线2检查开关) //

如果(总线3检查开关) //

如果(总线4检查开关) //

if(总线5CHECKEDOFF) //


我是漫无目的的,总之,我只是在寻找一个有效的结构来编写这个应用程序。有什么建议吗?

不要为每辆公交车和每个工作日创建一个类。类的思想是封装公共行为,以便单个实例可以使用它。特别是,如果您的代码有许多类似于上面建议的行,那么可能需要重新考虑数据结构

我将创建一个
Bus
类(其中Bus实际上意味着公交服务),其中包含行号、目的地和时间表列表,以及返回特定日期时间表的方法。它还需要知道是否在应用程序中进行了检查。然后,您可以拥有从终端开始的(任意数量,而不仅仅是五个)总线服务的列表,您可以检查它们是否应该在循环中考虑

我还将编写一个系统来对天数进行分类。当然,有七周工作日,但也有更广泛的类别,如工作日、周末和公共假日。该系统具有层次结构:大类别的优先级较低,特殊日期的优先级较高

然后您需要确定如何存储时间表。最简单的方法是有一张日分类图和时间列表

class Bus
    public
        String destination
        String service
        bool checked

        Time[] timetable(Day):
            if day in times:
                return times[day]
            if holiday(day) and "Holiday" in times:
                return times["Holiday"]
            if weekday(day) in times:
                return times[weekday(day)]
            if "Everyday" in times:
                return times["Everyday"]
            return []

        void add(Day, Time[])

    private
        Time[][Day] times

Bus bus[] = []

Bus b1("1", "Forest View")
b1.add(Weekend, [0845, 1045, 1245, 1540])
b1.add(Workday, [0845, 0945, 1045, 1145, 1245,
    1420, 1520, 1620, 1820, 2020, 2220])
b1.add("Dec 25", [1300])
bus.add(b1)

Bus b5("5", "Mountain View")
b5.add(Everyday, [0800, 0900, 0930, 1000, 1030, 1100, 1130,
    1200, 1300, 1400, 1430, 1530, 1600, 1630, 1700, 1800,
    1900, 2000, 2200, 2230])
b5.add(Sunday, [1000, 1200, 1600, 1800])
bus.add(b5)

Bus gc("Grand Circuit", "via Ocean View")
gc.add(Everyday, [0835, 1035, 1235, 1635])
bus.add(gc)
你可以在一个环路中找到所有公共汽车的发车时间。将它们添加到时间和服务的元组列表中,并按出发时间对该列表进行排序:

# helper class to relate times and bus services
public class Departure
    Time time
    Bus bus

Departure dep[] = []
day = "Mar 23"
foreach b in bus:
    if b.checked():
        tt = timetable(day)
        foreach t in tt:
            dep.add(Departure(t, b))

dep.sort()      # sort by time

for d in dep:
    print d.time, d.bus.service, d.bus.destination
瞧!这应该给你

08:35    Grand Circuit - via Ocean View
08:45    1 - Forest View
10:00    5 - Mountain View
10:35    Grand Circuit - via Ocean View
10:45    1 - Forest View
12:00    5 - Mountain View
12:35    Grand Circuit - via Ocean View
12:45    1 - Forest View
15:40    1 - Forest View
16:00    5 - Mountain View
16:35    Grand Circuit - via Ocean View
18:00    5 - Mountain View