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

📄 leasttimedialog.java

📁 一次数据结构的课程设计
💻 JAVA
字号:
package src;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.net.*;
class leastTimeDialog extends JFrame{
private Graph g;
private cityFile file;
	 public leastTimeDialog(){
	 setLayout(null);
	 g = new Graph();
	 file = new cityFile();
	 file.inputfromInfoFile(g);

	Toolkit kit = Toolkit.getDefaultToolkit();
	Image img = kit.getImage("images/icon.png");

	l1 = new JLabel("起点:");
	l1.reshape(50,40,30,20);
	l2 = new JLabel("终点:");
	l2.reshape(50,80,30,20);
	t1 = new JTextField(10);
	t1.reshape(90,40,90,20);
	t2 = new JTextField(10);
	t2.reshape(90,80,90,20);
	b1 = new JButton("确定");
	b1.reshape(40,130,60,20);
	b1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
	b2 = new JButton("取消");
	b2.reshape(140,130,60,20);
	b2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

	add(l1);
	add(t1);
	add(l2);
	add(t2);
	add(b1);
	b1.addActionListener(new
		ActionListener(){
			public void actionPerformed(ActionEvent event){
				if(t1.getText().equals("")||t2.getText().equals("")){
					JOptionPane.showMessageDialog(null,"起 点 或 终 点 不 能 为 空 !!");
					t1.grabFocus();
				}
				else{
				  int from = g.changetoNum(t1.getText());
				  int to   = g.changetoNum(t2.getText());
				  if(from<0||to<0)
				  	JOptionPane.showMessageDialog(null,"城 市 不 存 在!!");
				  else
				  {
					  int least = leastTime(from,to,g);
					  if(least == 99999)
					  	JOptionPane.showMessageDialog(null,"两 城 市 不 相 连 ");
					  else
					  	JOptionPane.showMessageDialog(null,"由"+t1.getText()+"到"+t2.getText()+"最少距离:"+least);
				  }
				}
			}
	});

	add(b2);
	b2.addActionListener(new
		ActionListener(){
		public void actionPerformed(ActionEvent event){
			setVisible(false);}
		});

	setIconImage(img);
	setTitle("最少距离");
	setResizable(false);
	setSize(250,230);
	setLocation(380,255);

}

	public int leastTime(int from,int to,Graph g)
	{
		int distance[]=new int[g.cityNum];
		int s[]=new int[g.cityNum];
		int i,j,u=0;
		int mindis,dis;

		for(i=0;i<g.cityNum;i++)
		{
			distance[i]=g.cityEdge[from][i].distant;
			s[i]=0;
		}


		s[from] = 1;

		for (i=1;i<g.cityNum ;i++ )
		{
			mindis = 99999;
			for (j=1;j<g.cityNum ;j++ )
			 if(s[j] ==0 && distance[j]<mindis)
			{
				u=j;
			    	mindis=distance[j];
			}
			s[u]=1;
			for(j=1;j<g.cityNum;j++)
			if(s[j] ==0)
			{
				dis =distance[u] + g.cityEdge[u][j].distant;
			    	distance[j]=(distance[j]<dis)?distance[j]:dis;
			}

		}
		return distance[to];//返回从from到to的最小值
	}
	private JLabel l1,l2;
	private JTextField t1,t2;
	private JButton b1,b2;
}

⌨️ 快捷键说明

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