全国交通咨询模拟(数据结构Java课程设计)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、课程设计概述:

使用语言:java

编译环境:java虚拟机

二、课程设计题目一

[实验内容]

全国交通咨询模拟

[问题描述]

1、管理员可以添加、修改、删除各交通路线信息。

2、用户查询从某一地点到另一地点的信息,提供查询转车次数最少、花费最少、所用

时间最少的相关信息。

[需求分析]

1、管理员和用户拥有不同的操作界面。管理员从键盘输入个交通路线并保存在

trainInformation.txt中。

2、对文件trainInformation.txt中的数据进行处理,要求具有如下功能:

①、城市信息进行编辑。

②、对列车时刻表进行编辑(增设或删除)的功能。

③、提供三种最优决策:最省钱到达,转车最少。

④、提供各列车详细信息。

3、界面美观

[概要设计]

class MoneyLeast{}

//求出两站点花费最少的路径

class TrainContral{}

//从文件中读出列车的所有信息或者将列车的信息写入到文件

class TrainGraph{}

//列车航线交通图

class AdmFrame{}

//管理员登陆界面

class SearchInFrame{}

//用户查询信息和显示信息界面

[存储结构]

class City{//城市存储

private String cityName;

}

class Train {//列车存储

private String trainID;

private City startCity;

private City endCity;

private Date startDate;

private Date endDate;

private int money;

}

[详细设计]

---City----

/**

* 城市的对象

* 城市有城市名

* 实现序列化

* 重写equals方法和toString方法

*/

package com.consel;

import java.io.Serializable;//实现序列化的接口

public class City implements Serializable {

private static final long serialVersionUID = 5612649006026227701L;

private String cityName;

public City(String cityName) {

this.cityName = cityName;

}

public String getCityName() {

return cityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

@Override

public String toString() {

return cityName;

}

@Override

public boolean equals(Object obj) {

if (obj instanceof City) {

City temp = (City) obj;

if (this.cityName.equals(temp.cityName)) {

return true;

}

}

return false;

}

}

----MoneyLeast-----

/**

* MoneyLeast 查找从花费最少的路径,及乘车路径

* 使用的是普里姆算法

*/

package com.consel;

public class MoneyLeast {

final static int maxMoney = 10000;

int n;

int[] s;//s用来存储n个节点的标记

int minMoney, u = 0;

//t为列车信息图,c为起始城市,数组money是用来存储最少花费的路径,path是用来存储节点的上一节点

public void leastMoney(TrainGraph t, City c, int[] money, City[] path) throws Exception {

n = t.getNumOfVer();

s = new int[n];

for (int i = 0; i < n; i++) {

money[i] = t.getMoney(c, t.city.get(i));

s[i] = 0;

if (money[i] < maxMoney) {

path[i] = c;

} else {

path[i] = null;

}

}

s[t.city.indexOf(c)] = 1;

for (int i = 0; i < n; i++) {

minMoney = maxMoney;

for (int j = 0; j < n; j++) {

if (s[j] == 0 && money[j] < minMoney) {

u = j;

minMoney = money[j];

}

}

if (minMoney == maxMoney) {

return;

}

s[u] = 1;

City city = t.city.get(u);

for (int j = 0; j < n; j++) {

if (s[j] == 0 && t.getMoney(city, t.city.get(j)) < maxMoney &&

money[u] + t.getMoney(city, t.city.get(j)) < money[j]) {

money[j] = money[u] + t.getMoney(city, t.city.get(j));

path[j] = city;

}

}

}

}

}

相关文档
最新文档