公交路线查询系统

简介: 公交路线查询系统

一:目标一:类的定义+构造方法 +set和get方法:

class Route{
    //成员变量体现封装性
    private String name;
    private String[] stations;
    private String startStation;
    private String endStation;
    private double fare;
    private double distance;
    //不带参数的构造方法
    public Route() {
    }
    //带参数的构造方法
    public Route(String name, String[] stations, String startStation, String endStation) {
        this.name = name;
        this.stations = stations;
        this.startStation = startStation;
        this.endStation = endStation;
    }
    //set和get方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getStations() {
        return stations;
    }
    public void setStations(String[] stations) {
        this.stations = stations;
    }
    public String getStartStation() {
        return startStation;
    }
    public void setStartStation(String startStation) {
        this.startStation = startStation;
    }
    public String getEndStation() {
        return endStation;
    }
    public void setEndStation(String endStation) {
        this.endStation = endStation;
    }
    public void setFare(double fare) {
        this.fare = fare;
    }
    public void setDistance(double distance) {
        this.distance = distance;
    }
    //查询路线的方法
    public void queryStations() {
        System.out.println(getName() + "的站点有:");
        for (String station : stations) {
            System.out.print(station+" ");
        }
        System.out.println();
    }
    public double getDistance() {
        // 计算距离的逻辑
        return stations.length * 10;
    }
    public double getFare() {
        // 计算费用的逻辑
        return stations.length * 1;
    }
}
public class Test {
    public static void main(String[] args) {
        //创建对象
       Route route1=new Route("101",new String[]{"S1","S2","S3","S4","S5"},"S1","S5");
       Route route2=new Route("102",new String[]{"S2","S3","S4","S5","S6"},"S2","S6");
       route1.queryStations();
       System.out.println("路程为:"+route1.getDistance()+"  "+"费用为"+route1.getFare());
       route2.queryStations();
    }


目标二:静态属性 +静态方法 +toString方法:

mport java.util.Arrays;
class Route{
    //静态成员变量
    public static double fare;
    public static double distance;
    private String name;
    private String[] stations;
    private String startStation;
    private String endStation;
    //不带参数的构造方法
    public Route() {
    }
    //带参数的构造方法
    public Route(String name, String[] stations, String startStation, String endStation) {
        this.name = name;
        this.stations = stations;
        this.startStation = startStation;
        this.endStation = endStation;
    }
    //set和get方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getStations() {
        return stations;
    }
    public void setStations(String[] stations) {
        this.stations = stations;
    }
    public String getStartStation() {
        return startStation;
    }
    public void setStartStation(String startStation) {
        this.startStation = startStation;
    }
    public String getEndStation() {
        return endStation;
    }
    public void setEndStation(String endStation) {
        this.endStation = endStation;
    }
    public void setFare(double fare) {
        this.fare = fare;
    }
    public void setDistance(double distance) {
        this.distance = distance;
    }
    //查询路线的方法
    public void queryStations() {
        System.out.println("查询的信息为:");
        System.out.println(toString());
    }
    @Override
    public String toString() {
        return "Route{" +
                "name='" + name + '\'' +
                ", stations=" + Arrays.toString(stations) +
                ", startStation='" + startStation + '\'' +
                ", endStation='" + endStation + '\'' +
                '}';
    }
}
public class Test {
    //静态成员方法
    public static void print(){
        System.out.println("欢迎下次查询");
    }
    public static void main(String[] args) {
        Route.fare=5.0;
        Route.distance=10.0;
        Route route1=new Route("101",new String[]{"S1","S2","S3","S4","S5"},"S1","S5");
        route1.queryStations();
        System.out.println("路程为:"+ Route.fare+"  "+"费用为"+Route.distance);
        print();
    }
}


目标三:抽象类的定义 +抽象方法 + 实际应用:abstract class AbstractRoute{

    //抽象类AbstractRoute,3个抽象方法getFare(),getDistance(),queryStations()
    public abstract double getFare();
    public abstract double getDistance();
   public abstract void queryStations();
}
class SpecificRoute extends AbstractRoute{
    //子类SpecificRoute继承父类AbstractRoute
    private String name;
    private String[] stations;
    private String startStation;
    private String endStation;
    public SpecificRoute() {
    }
    public SpecificRoute(String name, String[] stations, String startStation, String endStation) {
        this.name = name;
        this.stations = stations;
        this.startStation = startStation;
        this.endStation = endStation;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getStations() {
        return stations;
    }
    public void setStations(String[] stations) {
        this.stations = stations;
    }
    public String getStartStation() {
        return startStation;
    }
    public void setStartStation(String startStation) {
        this.startStation = startStation;
    }
    public String getEndStation() {
        return endStation;
    }
    public void setEndStation(String endStation) {
        this.endStation = endStation;
    }
    //重写父类的抽象方法
    @Override
    public double getFare() {
        return this.stations.length*1;
    }
    @Override
    public double getDistance() {
        return this.stations.length*2;
    }
    @Override
    public void queryStations() {
        System.out.println(getName()+"的站点有:");
        for (String station: stations) {
            System.out.print(station+" ");
        }
        System.out.println();
    }
}
public class Test{
    public static void main(String[] args) {
        AbstractRoute abstractRoute=new SpecificRoute("101",new String[]{"S1","S2","S3","S4","S5"},
                "S1","S5");
        abstractRoute.queryStations();
        System.out.println("路程为:"+ abstractRoute.getDistance()+"公里"+"  "+"费用为"+abstractRoute.getFare()+"元");
    }
}


目标四:接口的定义+实现接口类的定义+实际应用

import java.util.Arrays;
//定义了一个接口Route
interface Route {
    //接口中的抽象方法
    public abstract double getFare();
    double getDistance();
    void addStation(String station);
    void removeStation(String station);
    void updateStation(String oldStation,String newStation);
    void queryStations();
}
abstract class AbstractRoute implements Route{
    private String name;
    public  String[] stations;
    private String startStation;
    private String endStation;
    public AbstractRoute(String name, String[] stations, String startStation, String endStation) {
        this.name = name;
        this.stations = stations;
        this.startStation = startStation;
        this.endStation = endStation;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getStations() {
        return stations;
    }
    public void setStations(String[] stations) {
        this.stations = stations;
    }
    public String getStartStation() {
        return startStation;
    }
    public void setStartStation(String startStation) {
        this.startStation = startStation;
    }
    public String getEndStation() {
        return endStation;
    }
    public void setEndStation(String endStation) {
        this.endStation = endStation;
    }
}
class SpecificRoute extends AbstractRoute{
    public SpecificRoute(String name, String[] stations, String startStation, String endStation) {
        super(name, stations, startStation, endStation);
    }
    @Override
    public double getFare() {
        return stations.length*1;
    }
    @Override
    public double getDistance() {
        return stations.length*2;
    }
    //增加数据信息
    @Override
    public void addStation(String station){
        System.out.println("要增加的站点信息为:"+station);
        int index=0;
        while ((index<stations.length)){
            index++;
        }
        if(index<stations.length){
            stations[index]=station;
        }
        else{
            stations= Arrays.copyOf(stations,stations.length+1);
            stations[index]=station;
        }
    }
    //删除数据信息
    @Override
    public void removeStation(String station) {
        System.out.println("要删除的站点为:"+station);
        boolean find=false;
        for(int i=0;i<stations.length;i++){
            if(stations[i].equals(station)){
                find = true;
                int j=i;
                for (; j < stations.length-1; j++) {
                    stations[j]=stations[j+1];
                }
            }
        }
        if(find){
            stations=Arrays.copyOf(stations,stations.length-1);
        }
    }
    //更改数据信息
    @Override
    public void updateStation(String oldStation, String newStation) {
        System.out.println("要更改的站点信息为:"+oldStation+"->"+newStation);
        for (int i = 0; i < stations.length; i++) {
            if(stations[i].equals(oldStation)){
                stations[i]=newStation;
                break;
            }
        }
    }
    //查找公交站点信息
    @Override
    public void queryStations() {
        System.out.println(getName() + "的站点有:");
        for (int i = 0; i < stations.length; i++) {
            System.out.print(stations[i]+" ");
        }
        System.out.println();
    }
}
public class Test {
    public static void main(String[] args) {
        AbstractRoute abstractRoute=new SpecificRoute("101",new String[]{"S1","S2","S3","S4","S5"},
                "S1","S5");
        abstractRoute.queryStations();
        abstractRoute.addStation("S6");
        abstractRoute.queryStations();
       abstractRoute.removeStation("S2");
        abstractRoute.queryStations();
        abstractRoute.updateStation("S3","S7");
        abstractRoute.queryStations();
        System.out.println("路程为:"+ abstractRoute.getDistance()+"公里"+"  "+"费用为"+abstractRoute.getFare()+"元");
    }
}

终极目标:集合泛型定义+集合添加元素 +集合显示内容:

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
interface Route {
//接口
    double getDistance();
    double getFare();
    void addStation(String station);
    void removeStation(String station);
    void updateStation(String oldStation, String newStation);
    void queryStations();
}
abstract class AbstractRoute implements Route {
    //抽象类 AbstractRoute 实现接口 Route
    protected String name;
    //泛型
    protected List<String> stations;
    public AbstractRoute(String name, List<String> stations) {
        this.name = name;
        this.stations =stations;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getStations() {
        return stations;
    }
    public void setStations(List<String> stations) {
        this.stations = stations;
    }
    public double getDistance() {
        // 计算距离的逻辑
        return 0;
    }
    @Override
    public double getFare() {
        // 计算费用的逻辑
        return 0;
    }
    //向集合中添加数据信息
    @Override
    public void addStation(String station) {
        System.out.println("要增加的站点信息为:"+station);
        stations.add(station);
    }
    //删除集合中的数据信息
    @Override
    public void removeStation(String station) {
        System.out.println("要删除的站点信息为:"+station);
        stations.remove(station);
    }
    //更改结合中的数据信息
    @Override
    public void updateStation(String oldStation, String newStation) {
        System.out.println("要更改的站点信息为:"+oldStation+"->"+newStation);
        int index = stations.indexOf(oldStation);
        if (index != -1) {
            stations.set(index, newStation);
        }
    }
    //查看集合中的数据信息
    @Override
    public void queryStations() {
        System.out.println(getName() + "的站点有:");
        for (String station : stations) {
            System.out.println(station);
        }
    }
}
class SpecificRoute extends AbstractRoute {
    //SpecificRoute 继承抽象类 AbstractRoute
    public String startStation;
    public String endStation;
    public SpecificRoute(String name, List<String> stations, String startStation, String endStation) {
        super(name, stations);
        this.startStation = startStation;
        this.endStation = endStation;
    }
    @Override
    public double getDistance() {
        return stations.size() * 2;
    }
    @Override
    public double getFare() {
        return stations.size() * 1;
    }
    @Override
    public void queryStations() {
        System.out.println(getName() + "的站点有:");
        for (String station : stations) {
            System.out.print(station+" ");
        }
        System.out.println();
    }
}
public class TestRouteSystem {
    public static void main(String[] args) {
        Route route = new SpecificRoute("Route 1", new ArrayList<>(Arrays.asList("S1", "S2", "S3",
                "S4", "S5")),"S1", "S5");
        route.addStation("S6");
        route.removeStation("S2");
        route.updateStation("S3", "S7");
        route.queryStations();
        System.out.println("距离:" + route.getDistance() + ",费用:" + route.getFare());
    }
}
目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理
一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理
一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理
|
4月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
5月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
322 60
|
10月前
|
边缘计算 运维 安全
出海浪头之上,共探CDN进化新支力
出海浪头之上,共探CDN进化新支力
193 0
|
监控 测试技术 数据库
Python自动化测试之异常处理机制
总体而言,妥善设计的异常处理策略让自动化测试更加稳定和可靠,同时也使得测试结果更加清晰、易于理解和维护。在设计自动化测试脚本时,务必考虑到异常处理机制的实现,以保证测试过程中遇到意外情况时的鲁棒性和信息的有效传达。
291 2
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
1371 6
|
运维 前端开发 JavaScript
SpringBoot+Vue打造公司货物订单管理系统
SpringBoot+Vue打造公司货物订单管理系统
647 0
SpringBoot+Vue打造公司货物订单管理系统
MicroPython 玩转硬件系列7:OLED显示
MicroPython 玩转硬件系列7:OLED显示
|
Java 测试技术 BI
研发管理者如何7步规范管理企业代码资产?
本教程向您展示如何在云效上设置代码仓库模板,如何设置研发协作规范,如何启动代码检测,以及如何设置保护分支与合并卡点、如何实现研发工作与需求的自动化消息通知、如何度量代码数据?
41640 15