公交路线查询系统

news2024/11/30 12:32:46

公交路线查询系统

  • 一:目标一:类的定义+构造方法 +set和get方法:
  • 目标二:静态属性 +静态方法 +toString方法:
  • 目标三:抽象类的定义 +抽象方法 + 实际应用:abstract class AbstractRoute{
  • 目标四:接口的定义+实现接口类的定义+实际应用
  • 终极目标:集合泛型定义+集合添加元素 +集合显示内容:

一:目标一:类的定义+构造方法 +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());
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在项目中集成marsUI

拷贝文件夹到目标项目 集成 安装相关依赖 npm i --save ant-design-vue4.x npm i less npm i nprogress npm i consola npm i echarts npm i vue-color-kit npm i icon-park/svg npm i vite-plugin-style-import 配置Vite文件 使用 效果

MySQL的基础知识

目录 关系型数据库 SQL通用语法 数据类型 数值类型 字符串类型 日期类型 SQL分类 DDL 数据库操作 表操作 DML 添加数据 修改数据 删除数据 DQL 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 DCL 管理用户 权限控制 函数 字符串…

基于YOLOv5的视频计数 — 汽车计数实现

在视频中计数对象可能看起来有挑战性&#xff0c;但借助Python和OpenCV的强大功能&#xff0c;变得令人意外地易于实现。在本文中&#xff0c;我们将探讨如何使用YOLO&#xff08;You Only Look Once&#xff09;目标检测模型在视频流或文件中计数对象。我们将该过程分解为简单…

手摸手Element-ui组件化开发

前端环境准备 编码工具: VSCode 依赖管理:NPM 项目构建: Vuecli NPM的全称是Node Package Manager&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块&#xff08;包&#xff09;的标准。2020年3月17日&#xff0c;Github宣布收购npm&am…

Node.js入门指南(四)

目录 express框架 express介绍 express使用 express路由 express 响应设置 中间件 路由模块化 EJS 模板引擎 express-generator hello&#xff0c;大家好&#xff01;上一篇文章我们介绍了Node.js的模块化以及包管理工具等知识&#xff0c;这篇文章主要给大家分享Nod…

【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码

程序名称&#xff1a;基于VMD&#xff08;变分模态分解&#xff09;-SSA&#xff08;麻雀搜索算法优化&#xff09;-LSTM的光伏功率预测模型 实现平台&#xff1a;matlab 代码简介&#xff1a;提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…

佳易王各行业收银管理系统软件,企业ERP管理软件,企业或个体定制开发软件以及软件教程资源下载总目录,持续更新,可关注收藏查阅

系统简介 1、佳易王软件功能实用、操作简单、软件绿色免安装&#xff0c;解压即可使用&#xff0c;软件已经内置数据库&#xff0c;不需再安装其他数据库文件。 2、佳易王软件&#xff0c;已经形成系列&#xff0c;上百款管理系统软件涵盖多个行业。 3、已为多个企业个体定制…

CSS特效019:图标图片悬浮旋转一周

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

Android WiFi的断开分析

1.wifi断开大体流程&#xff1a; 1.wifi断开 wlan-driver最先知道。 2.wlan-driver在与路由器连接的时候(未断开时), 会有周期性的beacon帧来维持连接&#xff0c;AP端一旦遇到突发事情&#xff0c;会立刻通过802.11协议的 deauth 帧/ reject 帧等 通知到 driver。 3. wlan-…

计算器的模拟实现

计算器的模拟实现 一、实验题目&#xff1a;计算器二&#xff1a;实验目的&#xff1a;三&#xff1a;实验内容与实现1&#xff1a;【实验内容】2&#xff1a;【实验实现】1.计算器界面的实现&#xff0c;如下图所示&#xff1a;2&#xff1a;各项功能的实现&#xff0c;如下图…

canvas版放大镜

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>放大镜</title><st…

C++ vector迭代器失效

STL中vector迭代器失效常见错误写法示例 最近在看STL容器失效的例子&#xff0c;涉及到vector数组迭代器失效的问题&#xff0c;如果不注意使用&#xff0c;很容易出现问题&#xff0c;我们先来看一下一个简单的示例程序&#xff0c;在数组nums中删除大于50的元素&#xff0c;…

运维高级-day01

shell回顾 1、快速生成版权控制信息&#xff0c;具体的内容自己替换 [root scripts]# cat ~/.vimrc autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" func SetTitle() if expand("%:e") sh call setline(1,"#!/bin/bash")…

【数据库篇】关系模式的表示——(2)规范化

范式&#xff1a;范式是符合某一种级别的关系模式的集合 规范化&#xff1a;是指一个低一级的范式的关系模式&#xff0c;通过模式的分解转换为若干个高一级范式的关系模式的集合。 1NF 每个分量必须是不可分开的数据项&#xff0c;满足这个条件的关系模式就是1NF。 2NF 若…

代码随想录算法训练营第四十六天【动态规划part08】 | 139.单词拆分、背包总结

139.单词拆分 题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路&#xff1a; 单词是物品&#xff0c;字符串s是背包&#xff0c;单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。 动规五部曲 确定dp数…

②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 目录 ②⑩① 【MySQL】什么是分库分表&#xf…

定时器/计数器的应用

前言 对近期学习定时器进行简单的记录 参考链接 LED数码管的静态显示与动态显示&#xff08;KeilProteus&#xff09;-CSDN博客 外中断的应用-CSDN博客 【mcuclub】定时器/计数器_定时器/计数器的内部结构和工作方式-CSDN博客 5.图解定时器/计数器 - 知乎 (zhihu.com) 5…

CPU、GPU、TPU内存子系统架构

文章目录 CPU、GPU、TPU内存子系统架构概要CPUGPUTPU共同点和差异&#xff1a; CPU、GPU、TPU内存子系统架构 概要 Memory Subsystem Architecture&#xff0c;图源自TVM CPU CPU&#xff08;中央处理器&#xff09;的内存子系统&#xff1a;隐式管理 主内存&#xff08;…

VMware如何导出和导入镜像OVF虚拟机(以unbuntu为例)

前言&#xff1a;我下载了一个unbuntu的系统镜像&#xff0c;基于这个镜像创建了一个unbuntu的虚拟机&#xff0c;辛辛苦苦配置需要的开发环境&#xff0c;如&#xff1a;安装了mysql&#xff0c;安装了jdk等&#xff0c;此时&#xff0c;我的同事可能需要也是同一套类似环境&a…

视觉CV-AIGC一周最新技术精选(2023-11)

PG-Video-LLaVA: Pixel Grounding Large Video-Language Models https://github.com/mbzuai-oryx/Video-LLaVA将基于图像的大型多模态模型&#xff08;LMM&#xff09;扩展到视频领域是具有挑战性的。最近将基于图像的LMM扩展到视频的方法要么缺乏grounding定位能力&#xff08…