十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
数据结构在这终于可以用上了
成都创新互联专注于瑞金网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供瑞金营销型网站建设,瑞金网站制作、瑞金网页设计、瑞金网站官网定制、重庆小程序开发服务,打造瑞金网络公司原创品牌,更为您提供瑞金网站排名全网营销落地服务。
这个路线绘制是一个问题
就是不会
这个你看 那里的,有的地方的公交公司有webserver接口,你直接调用查询
可以!你定义一个BUS类,一个BUSSTOP类。再建立他们之间关系的表,这个表中的主键由上面两个表的外键组成,其余的自己写好属性。在读数据的时候,存放到相应的对象中。在程序运行前,用HIBERNATE配置好对应的数据库设置。这样就可以不用涉及到底层的东西了。
但是我觉得,一般都是先建表,在往表里填数据的。建表不难的。找到实体,画ER图。之后,表自然就出来了。。。
//写了两个小时啊,兄弟,要采纳我啊
//Site(站点类)
package transit;
import java.util.ArrayList;
import java.util.List;
public class Site
{
private Integer id; // 给每个站点分配一个ID
private String name; // 站点的名字
private ListRoute list; // 经过该站点的线路
public Site()
{
super();
}
public Site(Integer id, String name)
{
super();
this.id = id;
this.name = name;
this.list = new ArrayListRoute();
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ListRoute getList()
{
return list;
}
public void setList(ListRoute list)
{
this.list = list;
}
// 添加线路
public boolean addRoute(Route route)
{
return this.getList().add(route);
}
// 删除线路
public boolean removeRoute(Route route)
{
return this.getList().remove(route);
}
@Override
public String toString()
{
return name;
}
@Override
public boolean equals(Object obj)
{
if (obj instanceof Site)
{
Site s = (Site) obj;
return this.id == s.getId() this.name.equals(s.getName());
}
return false;
}
}
//线路类
package transit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Route
{
private Integer id; // 给每个线路分配一个ID
private String name; // 线路名称
private ListSite list; // 线路所包含的站点
private Date startDate; // 发班时间,从首站点算起
private Date endDate; // 收班时间,从首站点算起
public Route()
{
super();
}
public Route(Integer id, String name, Date startDate, Date endDate)
{
super();
this.id = id;
this.name = name;
this.startDate = startDate;
this.endDate = endDate;
this.list = new ArrayListSite();
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ListSite getList()
{
return list;
}
public void setList(ListSite list)
{
this.list = list;
}
public Date getStartDate()
{
return startDate;
}
public void setStartDate(Date startDate)
{
this.startDate = startDate;
}
public Date getEndDate()
{
return endDate;
}
public void setEndDate(Date endDate)
{
this.endDate = endDate;
}
public boolean isHasThisSite(Site site)
{
for (Site l_site : this.getList())
{
if (l_site.equals(site))
{
return true;
}
}
return false;
}
// 添加站点,成功返回true
public boolean addSite(Site site)
{
return this.getList().add(site);
}
// 移除站点,成功返回true
public boolean removeSite(Site site)
{
return this.getList().remove(site);
}
@Override
public String toString()
{
return name;
}
}
//公交系统类
package transit;
import java.util.ArrayList;
import java.util.List;
public class TransitSystem
{
/**
* 1)增加、修改、删除一个条公交线路信息。
* 2)增加、修改、删除公交站点信息。
* 3)按条件显示公交线路信息(条件有按线路名称、途经车站等)。
*/
private ListRoute routeList ; //系统所管理的线路
private ListSite siteList; //系统所管理的站点
public TransitSystem(){
routeList = new ArrayListRoute();
siteList = new ArrayListSite();
}
//增加一条线路
public void addRoute(Route route){
if(!routeList.add(route)){
throw new RuntimeException("系统中已存在该线路");
}
}
//修改一条线路
public void updateRoute(Route route){
//根据route 的id 获取已存在系统中的route
Route l_route = getRoute(route.getId());
if(l_route!=null){
//注入值
l_route.setName(route.getName());
l_route.setList(route.getList());
l_route.setStartDate(route.getStartDate());
l_route.setEndDate(route.getEndDate());
}else{
throw new RuntimeException("线路id不匹配,无法修改");
}
}
//获取该系统中的线路,根据id获取
public Route getRoute(Integer id){
Route route2 = null;
for (Route route : this.getRouteList())
{
if(route.getId().equals(id)){
route2 = route;
}
}
return route2;
}
//删除一条线路,根据对象删除
public void removeRoute(Route route){
if(!this.getRouteList().remove(route)){
throw new RuntimeException(route.getId()+"线路不存在");
}
}
//增加一条公交站点
public void addSite(Site site){
if(!this.siteList.add(site)){
throw new RuntimeException(site.getId()+"站点已存在");
}
}
//删除一条公交站点
public void removeSite(Site site){
if(!this.getSiteList().remove(site)){
throw new RuntimeException(site.getId()+"站点不存在");
}
}
//修改一条公交站点
public void updateSite(Site site){
//根据route 的id 获取已存在系统中的route
Site l_site = getSite(site.getId());
if(l_site!=null){
//注入值
l_site.setName(site.getName());
l_site.setList(site.getList());
}else{
throw new RuntimeException("站点id不匹配,无法修改");
}
}
//获取该系统中的公交站点,根据id获取
public Site getSite(Integer id){
Site site2 = null;
for (Site site : this.getSiteList())
{
if(site.getId().equals(id)){
site2 = site;
}
}
return site2;
}
//按线路名称查询公交线路信息
public Route getRouteByName(String name){
for (Route route : this.getRouteList())
{
if(route.getName().equals(name)){
return route;
}
}
return null;
}
//根据途经车站查询公交线路
public ListRoute getRouteBySite(Site site){
return site.getList();
}
public ListRoute getRouteList()
{
return routeList;
}
public void setRouteList(ListRoute routeList)
{
this.routeList = routeList;
}
public ListSite getSiteList()
{
return siteList;
}
public void setSiteList(ListSite siteList)
{
this.siteList = siteList;
}
}
//测试类
package transit;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class _Test
{
public static void main(String[] args) throws ParseException
{
TransitSystem system = new TransitSystem();
SimpleDateFormat format = new SimpleDateFormat("hh:MM");
Date startDate = format.parse("07:30");
Date endDate = format.parse("22:30");
// 向系统中添加10条线路,20个站点
for (int i = 0; i 20; i++)
{
if (i 10)
{
system.addRoute(new Route(i, "线路" + i, startDate, endDate));
}
system.addSite(new Site(i, "站点" + i));
}
ListSite siteList = system.getSiteList();
// 为系统中的站点添加线路
for (Route route : system.getRouteList())
{
// 每条线路 随机添加N个站点
int n = new Random().nextInt(siteList.size());
for (int i = 0; i n; i++)
{
// 每个站点也是随机,如重复,则添加失败
int x = new Random().nextInt(siteList.size());
if (!route.isHasThisSite(siteList.get(x)))
{
route.addSite(siteList.get(x));
// 同时该站点也添加该线路
siteList.get(x).addRoute(route);
}
}
}
// 查询所有的线路所包含的站点
for (Route route : system.getRouteList())
{
System.out
.println(route.getName() + " :对应的站点集合:" + route.getList());
}
// 查询所有的站点对应的线路
for (Site site : system.getSiteList())
{
System.out.println("站点" + site.getName() + " :对应的线路集合: "
+ site.getList());
}
}
}
先完成直达的吧.
两张表(一对多的关系):
表一:公交线路表
id, 线路(就是第几路车的意思)
表二:站点表或者路线表
id, 表一的id(就是外键),站点名,顺序
站站查询的时候, 查表二, group by 表一的id,就能确定线路, 再对照表一就能找到线路名了.
当然如果是交作业的话, 两张表够了; 想更专业点就用3张表(多对多);
在就是换乘了.
这个比较复杂, 会涉及到一些算法, 要看你的切入点是什么了.
比如总时间, 换乘次数, 总路程等等,都有不同的设计方法.
此为个人意见,仅供参考!
首先看你要做成客户端还是web形势
要是客户端你要根据你想应用的平台,比如s60或者mobile等,学习相应的知识。当然java(j2me)是通用的,所有支持java的手机都能用(基本上所有手机都支持)。
要是web呢,就要看看wap的相关知识,还要准备好空间和域名,租一个就行。
这个系统你要有公交的数据,这个数据不知道你怎么获得,但是必须要有才能做。常用的sql语句增删改查(select、insert、delete、update)就够了。
还有,你要做成地图的形式还是文本框查询的形式?地图的形式你还要弄到地图的数据……不是那么简单的事情。当然你可以看看Google和mapabc等提供没有相关接口,调用它们的接口你会省很多事。
这个系统说实话确实不是很容易做的,你要是有基础还好。先看J2ME吧,先做个简单的,再一步步完善,也可以看看有没有相关的书。