公交路线查询系统

2023-11-27 07:44
文章标签 系统 查询 公交路线

本文主要是介绍公交路线查询系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公交路线查询系统

  • 一:目标一:类的定义+构造方法 +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());}@Overridepublic 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继承父类AbstractRouteprivate 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;}//重写父类的抽象方法@Overridepublic double getFare() {return this.stations.length*1;}@Overridepublic double getDistance() {return this.stations.length*2;}@Overridepublic 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);}@Overridepublic double getFare() {return stations.length*1;}@Overridepublic double getDistance() {return stations.length*2;}//增加数据信息@Overridepublic 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;}}//删除数据信息@Overridepublic 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);}}//更改数据信息@Overridepublic 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;}}}//查找公交站点信息@Overridepublic 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 实现接口 Routeprotected 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;}@Overridepublic double getFare() {// 计算费用的逻辑return 0;}//向集合中添加数据信息@Overridepublic void addStation(String station) {System.out.println("要增加的站点信息为:"+station);stations.add(station);}//删除集合中的数据信息@Overridepublic void removeStation(String station) {System.out.println("要删除的站点信息为:"+station);stations.remove(station);}//更改结合中的数据信息@Overridepublic void updateStation(String oldStation, String newStation) {System.out.println("要更改的站点信息为:"+oldStation+"->"+newStation);int index = stations.indexOf(oldStation);if (index != -1) {stations.set(index, newStation);}}//查看集合中的数据信息@Overridepublic void queryStations() {System.out.println(getName() + "的站点有:");for (String station : stations) {System.out.println(station);}}
}
class SpecificRoute extends AbstractRoute {//SpecificRoute 继承抽象类 AbstractRoutepublic 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;}@Overridepublic double getDistance() {return stations.size() * 2;}@Overridepublic double getFare() {return stations.size() * 1;}@Overridepublic 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.chinasem.cn/article/427303

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA