Java课程设计:校园导游系统

内容目录:

1. 设计要求
2. 功能分析

设计要求

图形化界面(GUI),编写一个文本文件信息统计软件
(1)显示打开文件的基本信息(文件名、路径、文件大小、最后修改日期)
(2)显示文件内容统计信息(行、字/单词数)
(3)显示文件内容
(4)按照文件大小或最后修改时间排序
(5)按照文件名或者文件内容包含关键字模糊查询

功能模块分析

	1. 数据库设计
	2. gui设计
	3. 数据库连接
	4. 数据库相关功能实现

数据库设计

1. 有校园建筑表

校园建筑表 schooladd

CREATE TABLE `schooladd` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
 `sname` varchar(20) DEFAULT NULL,
 `x` int(100) DEFAULT NULL,
 `y` int(100) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
2. 有校园建筑信息表

校园建筑信息表

CREATE TABLE `message` (
 `id` int(10) NOT NULL,
 `name` varchar(255) DEFAULT NULL,
 `message` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

数据库连接

利用jdbc,util和资源文件来连接数据库

JdbcUtil.java如下

package com.datasource.utils;


import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtils {
    /**
     *  1. 定义成员变量DataSourse
     */
    private static DataSource ds;
    static {
        try {
            //1. 加载配置文件
            Properties pro = new Properties();
            pro.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //2.获取DataSource
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取资源
     * @return ds.getConnection()
     */
    public static Connection getConnection() throws SQLException{
        return ds.getConnection();
    }
    /**
     * 释放资源
     */
    public static void close(ResultSet rs, Statement stmt, Connection conn){
        if (rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 获取连接池方法
     * @return ds
     */
    public static DataSource getDataSource(){
        return ds;
    }
}

配置文件druid.properties如下:
使用的时mysql8.0数据库,

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///db5
username=root
password=1234
initialSize=5
maxActive=10
maxWait=3000

数据库功能的实现

通过JdbcTemplate和Jdbc来实现数据库相关功能

JdbcTemplate.java

package com.jdbcTemplate;

import com.datasource.utils.JdbcUtils;
import com.domain.SchoolAdd;

import java.util.List;
import java.util.Map;
import java.util.Scanner;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplateDemo {
	private static JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());
	/**
	 * 查询schooladd表中的所有的数据
	 */
	public static void selectDate1() {
		//2.定义sql
	    String sql = "select * from schooladd ";
	    //3.执行sql
	    List<SchoolAdd> list = template.query(sql,new BeanPropertyRowMapper<SchoolAdd>(SchoolAdd.class));
	    for (SchoolAdd emp:list){
	    	System.out.println(emp);
	    }
	}
	/**
	 * 按id差寻所有数据
	 */
	public static void selectDateId() {
		//定义sql语句
		String sql = "select * from schooladd where sname=?";
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("Enter the sname :");
		String sName = scanner.nextLine();
		Map<String, Object> map = template.queryForMap(sql,sName);
		System.out.println(map);
		scanner.close();
	}
	/**
	 * 查询建筑物的坐标
	 */
	public static double selectAdd(String sName1,String sName2) {
		String sql1 = "select x from schooladd where sname=?";
		String sql2 = "select y from schooladd where sname=?";
		
		int x1 = template.queryForObject(sql1,Integer.class,sName1);
		int y1 = template.queryForObject(sql2,Integer.class,sName1);
		int x2 = template.queryForObject(sql1,Integer.class,sName2);
		int y2 = template.queryForObject(sql2,Integer.class,sName2);
		
		return Math.sqrt((Math.pow((x1 - x2), 2)+Math.pow((y1-y2), 2)));
	}
	/**
	 * 查询简介
	 * @return 建筑简介
	 */
	public static String selectMessage(String name) {
		String sql = "select message from message where name=?";
		return template.queryForObject(sql, String.class,name);
	}
}

SchoolAdd.java

package com.domain;

public class SchoolAdd {
	private Integer id;
	private String sName;
	private Integer x;
	private Integer y;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getsName() {
		return sName;
	}
	public void setsName(String sName) {
		this.sName = sName;
	}
	public Integer getX() {
		return x;
	}
	public void setX(Integer x) {
		this.x = x;
	}
	public Integer getY() {
		return y;
	}
	public void setY(Integer y) {
		this.y = y;
	}
	@Override
	public String toString() {
		return "SchoolAdd [id=" + id + ", sName=" + sName + ", x=" + x + ", y=" + y + "]";
	}
	
}

gui的实现

Start.java

package com.gui;


import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


public class Start extends JMenuBar{   
   /**
	 *开始菜单 
	 */
	private static final long serialVersionUID = 1L;
	public Start() {
		// TODO Auto-generated constructor stub
		    add(createFileMenu());    //添加“文件”菜单
	        add(createEditMenu());    //添加“编辑”菜单
	        setVisible(true); 
	   }
   public static void main(String[] args) {
	     JFrame frame=new JFrame("菜单栏");
	     JLabel jlimage = new JLabel();
	     ImageIcon icon = new ImageIcon("./img/school.jpg");
	     icon.setImage(icon.getImage().getScaledInstance(540, 713, Image.SCALE_DEFAULT));
	     jlimage.setIcon(icon);
	     frame.add(jlimage);
	     frame.setSize(540,713);
	     frame.setJMenuBar(new Start());
	     frame.setVisible(true);
   }
	 //定义“简介”菜单
   private JMenu createFileMenu()
   {
       JMenu menu=new JMenu("简介(F)");
       menu.setMnemonic(KeyEvent.VK_F);    //设置快速访问符
       JMenuItem item=new JMenuItem("学校信息");
       item.addActionListener(new ActionListener() {
   		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SchoolMessage.runShowMessage("学校信息");
			}
       });
       menu.add(item);
       item=new JMenuItem("格致楼");
       item.addActionListener(new ActionListener() {
      		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SchoolMessage.runShowMessage("格致楼");
			}
       });
       menu.add(item);
       item=new JMenuItem("机电学院");
       item.addActionListener(new ActionListener() {
     		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SchoolMessage.runShowMessage("机电学院");
			}
       });
       menu.add(item);
       item=new JMenuItem("田径场");
       item.addActionListener(new ActionListener() {
     		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SchoolMessage.runShowMessage("田径场");
			}
       });
       menu.add(item);
       menu.addSeparator();
       item=new JMenuItem("退出");
       item.addActionListener(new ActionListener() {
		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
       });
       menu.add(item);
       return menu;
   }
   //定义“编辑”菜单
   private JMenu createEditMenu()
   {
       JMenu menu=new JMenu("查询(E)");
       menu.setMnemonic(KeyEvent.VK_E);
       JMenuItem item=new JMenuItem("查询建筑信息(U)",KeyEvent.VK_U);
       item.addActionListener(new ActionListener() {
     		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SelectMessage.runShowMessage();
			}
       });
       menu.add(item);
       menu.addSeparator();
       item=new JMenuItem("查询建筑之间的距离(U)",KeyEvent.VK_T);
       item.addActionListener(new ActionListener() {
      		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				SelectLength.runShowMessage();
			}
       });
       menu.add(item);
       return menu;
   }
}

SchoolMessage.java

package com.gui;



import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import com.jdbcTemplate.JdbcTemplateDemo;


public class SchoolMessage {
	private static void showMessage(String name) {
		
		JFrame frame = new JFrame("学校信息");
		String str = JdbcTemplateDemo.selectMessage(name);
		JLabel label = new JLabel(str);
		label.setFont(new Font("宋体",1,14));
		label.setHorizontalAlignment(SwingConstants.CENTER);
		label.setVerticalAlignment(SwingConstants.TOP);
		frame.add(label);
		frame.setSize(540,713);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);	
	}
	public static void runShowMessage(String name) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
            	showMessage(name);
            }
        });
	}
}

SelectLength.java
测量两地的距离

package com.gui;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.jdbcTemplate.JdbcTemplateDemo;

public class SelectLength {
	private static void showLength() {
		JFrame frame = new JFrame("查询建筑物之间的距离");
		JPanel panel = new JPanel();
		JTextField test3 = new JTextField(4);
		JTextField text1 = new JTextField(8);
		JTextField text2 = new JTextField(8);
		panel.add(new JLabel("建筑物A的名字:"));
		panel.add(text1);
		panel.add(new JLabel("建筑物b的名字:"));
		panel.add(text2);
		
		JButton button = new JButton("查询");
	    button.addActionListener(new ActionListener() {		
	    	@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String aString = ""+JdbcTemplateDemo.selectAdd(text1.getText(),text2.getText());
				test3.setText(aString);
				JOptionPane.showMessageDialog(null, test3);
	    	}
	    });
	    panel.add(button);	
	    frame.add(panel);
		frame.setSize(540,713);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
	}
	public static void runShowMessage() {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
            	showLength();
            }
        });
	}
}

SelectMessage.java
按地名查询地点信息

package com.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.jdbcTemplate.JdbcTemplateDemo;

public class SelectMessage {
	public static void showSelectMessage() {
		JFrame frame = new JFrame("查询景点信息");
		JPanel panel = new JPanel();
		panel.add(new JLabel("输入地点名称"));
		JTextField text = new JTextField(8);
		panel.add(text);
		JButton button = new JButton("查询");
	    button.addActionListener(new ActionListener() {		
	    	@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String aString = JdbcTemplateDemo.selectMessage(text.getText());
				JOptionPane.showMessageDialog(null, aString);
	    	}
	    });
		panel.add(button);
		frame.add(panel);
		frame.setSize(540,713);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
	}
	public static void runShowMessage() {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
            	SelectMessage.showSelectMessage();
            }
        });
	}
}

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌白羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值