欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [IT计算机]全国交通咨询模拟数据结构Jaa课程设计.doc

    • 资源ID:4122844       资源大小:372.50KB        全文页数:46页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [IT计算机]全国交通咨询模拟数据结构Jaa课程设计.doc

    数据结构课程设计报告全国交通咨询模拟 学院(系): 计算机科学与工程学院 班 级: 学生姓名: 学号 指导教师: 时间: 从2011年12月19日 到2011年12月23日一、课程设计概述:使用语言: 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 intn; for (int i = 0; i < n; i+) moneyi = t.getMoney(c, t.city.get(i); si = 0; if (moneyi < maxMoney) pathi = c; else pathi = null; st.city.indexOf(c) = 1; for (int i = 0; i < n; i+) minMoney = maxMoney; for (int j = 0; j < n; j+) if (sj = 0 && moneyj < minMoney) u = j; minMoney = moneyj; if (minMoney = maxMoney) return; su = 1; City city = t.city.get(u); for (int j = 0; j < n; j+) if (sj = 0 && t.getMoney(city, t.city.get(j) < maxMoney && moneyu + t.getMoney(city, t.city.get(j) < moneyj) moneyj = moneyu + t.getMoney(city, t.city.get(j); pathj = city; - MoneyTest-package com.consel;import java.util.Iterator;import java.util.Stack;public class MoneyTest MoneyLeast ml = new MoneyLeast(); TrainGraph tg = new TrainGraph(); int money; City path; public Stack<Train> st = new Stack<Train>(); public MoneyTest() int n = tg.city.size(); money = new intn; path = new Cityn; for (int i = 0; i < n; i+) moneyi = tg.maxMoney; pathi = null; public Stack findMoneyLeast(City c1,City c2) throws Exception ml.leastMoney(tg, c1,money, path); Stack<City> s = new Stack(); s.add(c2); while (!c2.equals(c1) City c3 = pathtg.city.indexOf(c2); s.add(c3); TrainContral ct = new TrainContral(); ct.trainRead(); Iterator<Train> i = ct.train.iterator(); while(i.hasNext() Train temp = i.next(); if(temp.getStartCity().equals(c3) && temp.getEndCity().equals(c2) st.add(temp); c2 = c3; return s; - Train-/* * Train 序列化,存储列车的信息,包括ID,起始站,终点站,发车时间,到站时间,价格 */package com.consel;import java.util.*;import java.io.Serializable;public class Train implements Serializable private static final long serialVersionUID = 5612649006026227700L; private String trainID;/列车号 private City startCity;/起始站 private City endCity;/终点站 private Date startDate;/发车时间 private Date endDate;/到站时间 private int money;/价格 public Train(String trainID, City startCity, City endCity, Date startDate, Date endDate, int money) this.trainID = trainID; this.startCity = startCity; this.endCity = endCity; this.startDate = startDate; this.endDate = endDate; this.money = money; /* * return the trainID */ public String getTrainID() return trainID; /* * return the money */ public int getMoney() return money; /* * return the startCity */ public City getStartCity() return startCity; /* * return the endCity */ public City getEndCity() return endCity; /* * return the startDate */ public Date getStartDate() return startDate; /* * return the endDate */ public Date getEndDate() return endDate; - TrainContral-/* * TrainContral 从文件trainInformation.txt中读出各列车信息或将各列车信息写入到文件trainInformation.txt中 */package com.consel;import java.io.*;import java.util.*;public class TrainContral File filename = new File("config/trainInformation.txt"); ObjectInputStream ois; ObjectOutputStream oos; public List<Train> train = new ArrayList<Train>(); /* * 从trainInformation.txt读出所有列车的信息 * 并存储于链表train中 */ public void trainRead() try ois = new ObjectInputStream(new FileInputStream(filename);/文件输入流 train = (List<Train>) ois.readObject(); catch (FileNotFoundException ex) ex.printStackTrace(); catch (IOException ex) ex.printStackTrace(); catch (ClassNotFoundException ex) ex.printStackTrace(); finally try ois.close();/ 关闭文件输入流 catch (Exception exx) exx.printStackTrace(); /* * 将链表t中的所有火车信息写入到trainInformation.txt中 * param t */ public void trainWrite(List<Train> t) try oos = new ObjectOutputStream(new FileOutputStream(filename);/ 文件输出流 oos.writeObject(t); catch (FileNotFoundException ex) ex.printStackTrace(); catch (IOException ex) ex.printStackTrace(); finally try oos.flush();/关闭文件缓冲流 oos.close();/关闭文件流 catch (Exception exx) exx.printStackTrace(); - TrainGraph-/* * TrainGraph 表示所有列车的信息 * 查找以一个城市作为起点站,可以到达的另一个城市 */package com.consel;import java.util.*;public class TrainGraph final static int maxMoney = 10000; List<City> city = new ArrayList<City>(); TrainContral tc = new TrainContral(); int edges; public List<Train> train; Stack stack1 = new Stack(); public Stack<City> stack = new Stack();/*临时保存路径节点的栈*/ public ArrayList<Stack> sers = new ArrayList();/*存储路径的集合*/ public int getNumOfVer() return city.size(); public TrainGraph() /构造方法 tc.trainRead();/从文件中读出所有列车的信息 int n = tc.train.size(); train = tc.train; Iterator it = train.iterator(); /* * 存储交通路线中所有涉及到的城市 */ while (it.hasNext() Train t = (Train) it.next(); City c1 = t.getStartCity(); City c2 = t.getEndCity(); int x = city.indexOf(c1); int y = city.indexOf(c2); if (x < 0) city.add(c1); if (y < 0) city.add(c2); edges = new intcity.size()city.size(); for (int i = 0; i < city.size(); i+) for (int j = 0; j < city.size(); j+) edgesij = 0; it = tc.train.iterator(); while (it.hasNext() Train t = (Train) it.next(); City c1 = t.getStartCity(); City c2 = t.getEndCity(); int x = city.indexOf(c1); int y = city.indexOf(c2); edgesxy = 1; /以c为起始站的第一个终点站 public int getFirstNeighbor(City c) throws Exception int n = city.indexOf(c); if (n >= 0) return getFirstNeighbor(n); return - 1; /查找邻接的城市 private int getFirstNeighbor(int v) throws Exception if (v < 0 | v > city.size() throw new Exception("参数错误!"); for (int col = 0; col < city.size(); col+) if (edgesvcol > 0) return col; return -1; /查找下一个邻接城市 public int getNextNeighbor(City c1, City c2) throws Exception int m = city.indexOf(c1); int n = city.indexOf(c2); if (m >= 0 && n >= 0) return getNextNeighbor(m, n); return -1; /查找下一个邻接城市 private int getNextNeighbor(int v1, int v2) throws Exception if (v1 < 0 | v1 > city.size() | v2 < 0 | v2 > city.size() throw new Exception("参数错误!"); for (int col = v2 + 1; col < city.size(); col+) if (edgesv1col > 0) return col; return -1; /返回从c1到c2直达所花费的钱 public int getMoney(City c1, City c2) throws Exception int m = city.indexOf(c1); int n = city.indexOf(c2); if (m < 0 | n < 0) throw new Exception("城市C1或C2错误!"); else Iterator<Train> i = train.iterator(); Train temp = null; boolean flag = false; while (i.hasNext() temp = i.next(); if (temp.getStartCity().equals(c1) && temp.getEndCity().equals(c2) flag = true; break; if (flag) return temp.getMoney(); else return maxMoney; private boolean isCityInStack(City city) /判断节点是否在栈中 Iterator<City> it = stack.iterator(); while (it.hasNext() City node1 = it.next(); if (city.equals(node1) return true; return false; / 存储一条通路 private void savePath() Stack<City> temp = new Stack(); Iterator<City> i = stack.iterator(); while (i.hasNext() City c = i.next(); temp.add(c); sers.add(temp); /*转储*/ / 查找从startCity到endCity的所有路径 public void getPaths(City startCity, City endCity) throws Exception stack.push(startCity); int n = getFirstNeighbor(startCity); if (n >= 0) City c = city.get(n); getPaths(startCity, endCity, c, startCity); while (c != null) n = getNextNeighbor(startCity, c); if (n > 0) c = city.get(n); getPaths(startCity, endCity, c, startCity); else c = null; / 用递归的方法求startCity到endCity的路径currentCity是当前的城市,perCity是currentCity的上一个城市 private boolean getPaths(City startCity, City endCity, City currentCity, City perCity) throws Exception City nCity = null; if (currentCity != null && perCity != null && currentCity.equals(perCity) return false; if (currentCity != null) stack.push(currentCity); if (currentCity.equals(endCity) savePath(); stack.pop(); return true; else int n = getFirstNeighbor(currentCity); if (n >= 0) nCity = city.get(n); else nCity = null; while (nCity != null) if (perCity != null && (nCity.equals(startCity) | perCity.equals(nCity) | isCityInStack(nCity) n = getNextNeighbor(currentCity, nCity); if (n >= 0) nCity = city.get(n); else nCity = null; continue; if (getPaths(startCity, endCity, nCity, currentCity) if (!stack.isEmpty() stack.pop(); n = getNextNeighbor(currentCity, nCity); if (n >= 0) nCity = city.get(n); else nCity = null; if (!stack.isEmpty() stack.pop(); return false; else return false; - AdmFrame-/* * 管理员登陆界面 * 用户名为:Adm * 口令为:123456 */package com.de

    注意事项

    本文([IT计算机]全国交通咨询模拟数据结构Jaa课程设计.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开