/*数据结构课程设计——GPS导航系统
20073001232
主要实现查找任意两地点间最短路径并获得其长度,添加地点,删除地点,添加路线,删除路线操作
该系统带有模拟地图的加权无向图,直观的表现各地点间的关系及所做操作的响应结果
可通过鼠标操作或文本输入的形式输入相关信息
该系统还可获取当前时间,帮助信息,菜单栏选项设有热键
获得最短路径的主要思想:贪婪算法
数据结构: 二维数组存储加权无向图
ArrayList存储地点,路径的相关信息
*/
package gps;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.border.TitledBorder;
//类Gps
//GUI的设置,及button的响应
public class Gps extends JFrame implements ActionListener{
public static final int WIDTH = 800;
public static final int HEIGHT = 650;
Graph g = new Graph();
List l = new List();
Path p = new Path();
ArrayList<Place> a = new ArrayList<Place>();
//文本区
private JTextField sf;
private JTextField ef;
private JTextField text;
private JTextField dis;
private JTextField add;
private JTextField als;
private JTextField ale;
private JTextField weight;
private JTextField delete;
private JTextField dls;
private JTextField dle;
private DrawPanel dPanel;
public Gps(){
setTitle("GPS系统");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(screenSize.width / 2 - (WIDTH / 2), screenSize.height / 2 - (HEIGHT / 2),WIDTH, HEIGHT);//设置窗口于屏幕中央显示
Container content = getContentPane();
setSize(WIDTH,HEIGHT);
setVisible(true);
content.setLayout(new BorderLayout());
JPanel f = new JPanel();
content.add(f,BorderLayout.CENTER);
f.setLayout(new BorderLayout());
JMenuBar menubar = new JMenuBar();//菜单栏
f.add(menubar,BorderLayout.NORTH);
JMenu help=new JMenu("帮助(H)");
JMenu system=new JMenu("系统(S)");
menubar.add(help);
menubar.add(system);
help.setMnemonic(KeyEvent.VK_H);//添加热键
system.setMnemonic(KeyEvent.VK_S);
JMenuItem time =new JMenuItem("系统时间");
system.add(time);
JMenuItem h1 =new JMenuItem("最优路线查询?");
JMenuItem h2 =new JMenuItem("删除地点?");
JMenuItem h3=new JMenuItem("添加地点?");
JMenuItem h4 =new JMenuItem("删除路线?");
JMenuItem h5 =new JMenuItem("添加路线?");
help.add(h1);
help.add(h2);
help.add(h3);
help.add(h4);
help.add(h5);
JPanel bPanel = new JPanel();
JPanel panel = new JPanel();
f.add(panel,BorderLayout.CENTER);
f.add(bPanel,BorderLayout.EAST);
panel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
panel.setLayout(new BorderLayout());
dPanel = new DrawPanel();
JPanel tpanel = new JPanel();
panel.add(dPanel,BorderLayout.CENTER);
panel.add(tpanel,BorderLayout.SOUTH);
//设置边框
dPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"地图",TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.BOLD,18),Color.BLUE));
tpanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"最优路线",TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION,new Font("宋体",Font.BOLD,15),Color.BLACK));
tpanel.setLayout(new GridLayout(2,1));
JPanel panelt1= new JPanel();
JPanel panelt2 = new JPanel();
tpanel.add(panelt1);
tpanel.add(panelt2);
text = new JTextField(30);
dis = new JTextField(30);
JLabel z = new JLabel("最优路线");
JLabel l = new JLabel("路线长度(km)");
JLabel k = new JLabel(" ");
panelt1.add(z);
panelt1.add(k);
panelt1.add(text);
panelt2.add(l);
panelt2.add(dis);
bPanel.setPreferredSize(new Dimension(200,650));
bPanel.setLayout(new GridLayout(4,1));
JPanel panel1 = new JPanel();
bPanel.add(panel1);
panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"最优路线查询"));
panel1.setLayout(new GridLayout(4,1));
JPanel panel11 = new JPanel();
JPanel panel12 = new JPanel();
JPanel panel13= new JPanel();
JPanel panel14 = new JPanel();
panel1.add(panel11);
panel1.add(panel12);
panel1.add(panel13);
panel1.add(panel14);
JLabel s = new JLabel("起始");
JLabel e= new JLabel("终止");
JLabel j= new JLabel(" ↓");
JLabel empty= new JLabel(" ");
sf = new JTextField(10);
ef = new JTextField(10);
JButton q = new JButton("确定");
q.setPreferredSize(new Dimension(60,23));
panel11.add(s);
panel11.add(sf);
panel12.add(j);
panel13.add(e);
panel13.add(ef);
panel14.add(empty);
panel14.add(q);
JPanel panel4=new JPanel();
bPanel.add(panel4);
panel4.setLayout(new GridLayout(2,1));
JPanel panel5=new JPanel();
panel4.add(panel5);
panel5.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"删除地点"));
panel5.setLayout(new GridLayout(2,1));
JPanel panel51 = new JPanel();
JPanel panel52 = new JPanel();
panel5.add(panel51);
panel5.add(panel52);
JLabel d = new JLabel("地名");
delete= new JTextField(10);
JButton dc = new JButton("删除");
dc.setPreferredSize(new Dimension(60,20));
JLabel empty2 = new JLabel(" ");
panel51.add(d);
panel51.add(delete);
panel52.add(empty2);
panel52.add(dc);
JPanel panel6=new JPanel();
panel4.add(panel6);
panel6.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"添加地点"));
panel6.setLayout(new GridLayout(2,1));
JPanel panel61 = new JPanel();
JPanel panel62 = new JPanel();
panel6.add(panel61);
panel6.add(panel62);
JLabel a = new JLabel("地名");
add= new JTextField(10);
JButton ac = new JButton("添加");
JButton nac = new JButton("取消");
ac.setPreferredSize(new Dimension(60,20));
nac.setPreferredSize(new Dimension(60,20));
JLabel empty3 = new JLabel(" ");
panel61.add(a);
panel61.add(add);
panel62.add(empty3);
panel62.add(ac);
panel62.add(nac);
JPanel panel3=new JPanel();
bPanel.add(panel3);
panel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"删除路线"));
panel3.setLayout(new GridLayout(4,1));
JPanel panel31 = new JPanel();
JPanel panel32 = new JPanel();
JPanel panel33= new JPanel();
JPanel panel34 = new JPanel();
panel3.add(panel31);
panel3.add(panel32);
panel3.add(panel33);
panel3.add(panel34);
JLabel ds = new JLabel("起始");
JLabel de= new JLabel("终止");
JLabel dj= new JLabel(" ↓");
JLabel empty1= new JLabel(" ");
dls = new JTextField(10);
dle = new JTextField(10);
JButton dl = new JButton("删除路线");
dl.setPreferredSize(new Dimension(110,20));
panel31.add(ds);
panel31.add(dls);
panel32.add(dj);
panel33.add(de);
panel33.add(dle);
panel34.add(empty1);
panel34.add(dl);
JPanel panel2=new JPanel();
bPanel.add(panel2);
panel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),"添加路线"));
panel2.setLayout(new GridLayout(5,1));
JPanel panel21 = new JPanel();
JPanel panel22 = new JPanel();
JPanel panel23= new JPanel();
JPanel panel24 = new JPanel();
JPanel panel25 = new JPanel();
panel2.add(panel21);
panel2.add(panel22);
panel2.add(panel23);
panel2.add(panel24);
panel2.add(panel25);
JLabel as = new JLabel("起始");
JLabel ae= new JLabel("终止");
JLabel aj= new JLabel(" ↓");
JLabel aw= new JLabel("路长(km)");
als = new JTextField(10);
ale = new JTextField(10);
weight = new JTextField(7);
JButton al = new JButton("添加路线");
JLabel temp = new JLabel(" ");
al.setPreferredSize(new Dimension(120,20));
panel21.add(as);
panel21.add(als);
panel22.add(aj);
panel23.add(ae);
panel23.add(ale);
panel24.add(aw);
panel24.ad
- 1
- 2
- 3
- 4
前往页