用Java编写城市公交查询系统

城市公交查询系统是一个实用的应用程序,可以帮助用户在城市中查找公交车路线、站点和到达时间。在这个回答中,我将用Java编写一个城市公交查询系统,包括代码和说明。

一、系统架构和功能

该城市公交查询系统将采用MVC架构,包括以下几个部分:

  • 模型 (Model): 表示数据和业务逻辑层,封装了公交车路线、站点和到达时间等信息,提供了对外的数据操作接口。
  • 视图 (View): 视图层将数据呈现给用户,在这个系统中,视图将向用户展示公交线路、站点和到达时间的查询结果。
  • 控制器 (Controller): 控制器负责连接模型和视图,响应用户请求,调用模型中的相关方法完成具体的任务,最终将结果返回给视图。
  • 该系统具有以下功能:
  • 查询公交车路线:用户输入起点和终点站点,系统将返回符合条件的公交线路。
  • 查询公交车站点:用户输入公交线路,系统将返回该公交路线的所有站点。
  • 查询公交到站时间:用户输入公交线路和站点,系统将返回该站点的公交车到站时间。

二、系统代码实现

下面是使用Java编写的城市公交查询系统的代码实现。在编写时我使用了Spring和MyBatis框架。
Model层

我们将定义两个JavaBean类,Station和BusLine来保存数据。

public class Station {

  private String id;
  private String name;
  private String busLineIds;

  // getters and setters
}

public class BusLine {

  private String id;
  private String name;
  private String stations;

  // getters and setters
}

同时,为了对数据库中的表进行操作,我们还需要定义数据访问对象(Data Access Object,DAO)。下面分别是对Station和BusLine的DAO实现。

@Repository
public class StationDAO {

  @Autowired
  private SqlSessionFactory sqlSessionFactory;

  public List<Station> findByName(String name) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    List<Station> list = sqlSession.selectList("com.example.busquery.dao.StationDAO.findByName", name);
    sqlSession.close();
    return list;
  }

}

@Repository
public class BusLineDAO {

  @Autowired
  private SqlSessionFactory sqlSessionFactory;

  public List<BusLine> findByName(String name) {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    List<BusLine> list = sqlSession.selectList("com.example.busquery.dao.BusLineDAO.findByName", name);
    sqlSession.close();
    return list;
  }

}

View层

在视图层,我们可以用JavaFX或Swing等框架实现GUI。在这里,为了简化示例,我们使用命令行的方式展示查询结果。

public class ConsoleQueryView implements QueryView {

  @Override
  public void showLines(List<BusLine> lines) {
    System.out.println("线路查询结果:");
    for (BusLine line : lines) {
      System.out.println(line.getName());
    }
  }

  @Override
  public void showStations(List<Station> stations) {
    System.out.println("站点查询结果:" );
    for (Station station : stations) {
      System.out.println(station.getName());
    }
  }

  @Override
  public void showArrivalTime(ArrivalTime time) {
    System.out.println("到站时间查询结果:");
    System.out.println("车牌号:" + time.getBusNumber());
    System.out.println("预计到达时间:" + time.getArrivalTime());
  }

}

Controller层
在控制器层,我们将根据用户请求,调用相应的操作和数据对象,然后将结果传递给视图。这里我们定义了一个公交查询服务BusQueryService来完成具体的查询任务。

@Service
public class BusQueryServiceImpl implements BusQueryService {

  @Autowired
  private BusLineDAO busLineDAO;

  @Autowired
  private StationDAO stationDAO;

  @Override
  public List<BusLine> queryBusLine(String from, String to) {
    // TODO: query bus line...
  }

  @Override
  public List<Station> queryBusStations(String busLineName) {
    // TODO: query bus stations...
  }

  @Override
  public ArrivalTime queryBusArrivalTime(String busLineName, String stationName) {
    // TODO: query bus arrival time...
  }

}


三、系统演示

现在,我们可以编写一个简单的main方法演示这个城市公交查询系统的功能。在这个系统中,我们将从命令行获取输入,完成查询任务,并将结果返回给控制台。

public class Main {

  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    ConsoleQueryView view = new ConsoleQueryView();
    BusQueryService service = new BusQueryServiceImpl();

    while (true) {
      System.out.println("请输入查询类型:\n1. 查询公交线路\n2. 查询公交站点\n3. 查询公交到站时间");

      String line = scanner.nextLine();

      switch (line) {
        case "1":
          System.out.println("请输入起点站和终点站:");
          String from = scanner.nextLine();
          String to = scanner.nextLine();

          List<BusLine> lines = service.queryBusLine(from, to);
          view.showLines(lines);
          break;

        case "2":
          System.out.println("请输入公交路线名称:");
          String busLineName = scanner.nextLine();

          List<Station> stations = service.queryBusStations(busLineName);
          view.showStations(stations);
          break;

        case "3":
          System.out.println("请输入公交路线名称和站点名称:");
          String busLineName2 = scanner.nextLine();
          String stationName = scanner.nextLine();

          ArrivalTime time = service.queryBusArrivalTime(busLineName2, stationName);
          view.showArrivalTime(time);
          break;

        default:
          System.out.println("无效的输入...");
          break;
      }
    }
  }

}


总结

在本文中,我们使用Java编写了一个城市公交查询系统,该系统采用了MVC架构,并使用Spring和MyBatis框架。该系统可以查询公交车路线、站点和到达时间等信息,并且可以通过命令行展示查询结果。通过阅读这篇文章,相信读者已经掌握了Java编写实际应用程序的基本思路和操作方法,可以根据自己的需求和情况定制和扩展这个城市公交查询系统。相应教学放在最后:

http://【【Java项目】JavaWeb城市公交查询系统(附源码)_java实战项目(白嫖)】 https://www.bilibili.com/video/BV1nm4y1h7Wr/?share_source=copy_web&vd_source=4259e055dd4179982d1858b91cbe2728

猜你喜欢

转载自blog.csdn.net/2301_76720304/article/details/130579292