⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.java

📁 一个简单的学生管理软件。。。是计算机系学生的一次web课的project
💻 JAVA
字号:
package fy;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.util.Vector;


public class Graph {
	private HashMap<String ,Path> LinkID2Path;
	private HashMap<String ,Path> PathName2Path;
	private HashMap<String ,LandMark> LandMarkName2LandMark;
	private HashMap<String ,Node> NodeID2Node;
	private HashMap<String,Node> Pair2Node;
	private String filename;
	private String picName;
	private Vector<Path> paths;
	private Vector<LandMark> landmarks;
	public Graph(String filename){
		this.filename=filename;
		this.picName="";
		this.LandMarkName2LandMark=new HashMap<String, LandMark>();
		this.LinkID2Path=new HashMap<String, Path>();
		this.PathName2Path=new HashMap<String, Path>();
		this.NodeID2Node=new HashMap<String, Node>();
		this.readFile();
		this.initPair2Node();
	}

	private void initPair2Node() {
		Pair2Node=new HashMap<String,Node>();
		for   (Enumeration<Path>   e   =   paths.elements();   e.hasMoreElements();)   {  
			   Path thispath=e.nextElement();
			   for(Enumeration<Node>   eb   =   thispath.nodes.elements();   eb.hasMoreElements();){
				   Node now =eb.nextElement();
				   now.addPath(thispath.name);
				   if(now.getPathNum()==2){
					   Pair pair = new Pair(now.pathIDsWithThisNode.get(0),now.pathIDsWithThisNode.get(1));
					   Pair2Node.put(pair.getString1(), now);
					   Pair2Node.put(pair.getString2(), now);
				   }
			   }
		}
	}

	private void readFile() {
		BufferedReader buffer = null;
		try {
			buffer = new BufferedReader(new FileReader(filename));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		String s;		
		StringTokenizer st;
		try {
			while((s=buffer.readLine())!=null){
				st = new StringTokenizer(s);
				//锟斤拷始锟斤拷paths
					if(s.startsWith("#pic")){
						picName=s.intern();
					}
					if(s.startsWith("#allPathNum")){
					st.nextToken();
					int pathNum=Integer.parseInt(st.nextToken());
					paths = new Vector<Path>(pathNum);
					int countPath=0;
					while(countPath<pathNum){
						countPath++;
						s=buffer.readLine();
						st = new StringTokenizer(s);
						st.nextToken();
						String pathname=st.nextToken();
						Path thispath = new Path(pathname);//要锟斤拷拥锟絧ath				
						int linkNum = Integer.parseInt(st.nextToken());
						Vector<Link> links = new Vector<Link>(linkNum);
					    int linkCount=0;
					    while(linkCount<linkNum){
					    	linkCount++;
					    	s=buffer.readLine();
					    	st = new StringTokenizer(s);
					    	st.nextToken();st.nextToken();st.nextToken();st.nextToken();
					    	Node left = new Node();
					    	Node right = new Node();
					    	thispath.addNode(left);
					    	thispath.addNode(right);
					    	NodeID2Node.put(left.getNodeId(), left);
					    	NodeID2Node.put(right.getNodeId(), right);
					    	Link link = new Link(left,right,Float.parseFloat(st.nextToken()));
					    	LinkID2Path.put(link.getLinkId(), thispath);
					    	links.add(link);					    	
					    }
					    thispath.setLinks(links);
					    paths.add(thispath);
					    PathName2Path.put(pathname, thispath);					    
					}
				}
				//锟斤拷始锟斤拷landmarks
				if(s.startsWith("#allLandMarkNum")){
					st.nextToken();
					int landmarkNum = Integer.parseInt(st.nextToken());
					landmarks = new Vector<LandMark>(landmarkNum);
					int landmarkCount = 0;
					while(landmarkCount<landmarkNum){
						landmarkCount++;
						s=buffer.readLine();
				    	st = new StringTokenizer(s);
				    	st.nextToken();
				    	LandMark landmark = new  LandMark(
				    				st.nextToken(),
				    				NodeID2Node.get(st.nextToken()),NodeID2Node.get(st.nextToken()),
				    				Float.parseFloat(st.nextToken()),Float.parseFloat(st.nextToken())
				    	);
				    	landmarks.add(landmark);
				    	LandMarkName2LandMark.put(landmark.getName(), landmark);
					}
				}
			}
			buffer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	private int[][] shortestLengthes(){
		return null;
	}
	//private int[][]
	public class Pair{
		Path path1;
		Path path2;
		Pair(Path path3,Path path4){
			path1=path3;
			path2=path4;
		}
		Pair(String id1,String id2){
			path1=PathName2Path.get(id1);
			path2=PathName2Path.get(id2);
		}
		public String getString1(){
			return path1.name+"2"+path2.name;
		}
		public String getString2(){
			return path2.name+"2"+path1.name;
		}
	}
	public void search(String firstStringNode, String secondStringNode, int firstsearchMode, int secondsearchMode) {
		switch(firstsearchMode){
			case test.L:
				switch(secondsearchMode){
					case test.L:
						searchL2L(firstStringNode,secondStringNode);
						break;
					case test.RR:
						searchL2RR(firstStringNode,secondStringNode);
						break;
				}
				break;
			case test.RR:
				switch(secondsearchMode){
					case test.L:
						searchRR2L(firstStringNode,secondStringNode);
						break;
					case test.RR:
						searchRR2RR(firstStringNode,secondStringNode);
						break;
				}
				break;
		}
	}

	private void searchRR2RR(String firstStringNode, String secondStringNode) {
		Node begin = Pair2Node.get(firstStringNode);
		Node end = Pair2Node.get(secondStringNode);
		Result res = basicSearch(begin,end);
		System.out.print("from :"+firstStringNode+"\t to :"+secondStringNode+"\n");
		System.out.print(">>>>>the shortest path is "+res.path);
		System.out.print(">>>>>the shortest length is "+res.len);
		
	}

	private void searchRR2L(String firstStringNode, String secondStringNode) {
		Node begin = Pair2Node.get(firstStringNode);
		LandMark end = LandMarkName2LandMark.get(secondStringNode);
		Result tmp1=basicSearch(begin,end.left);
		Result tmp2=basicSearch(begin,end.left);
	}

	

	private void searchL2RR(String firstStringNode, String secondStringNode) {
		
		
	}

	private void searchL2L(String firstStringNode, String secondStringNode) {
		
		
	}
	private Result basicSearch(Node begin, Node left) {
		
		return null;
	}
	class Result{
		String path;
		float len;
		Result(float length,String pathforthis){
			path=pathforthis;
			len=length;
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -