全国交通咨询模拟(数据结构Java课程设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}
}
}
}
}