Java+Swing+Mysql实现停车场管理系统

protected static String dbClassName = “com.mysql.cj.jdbc.Driver”;//数据库连接驱动类

protected static String dbUrl = “jdbc:mysql://localhost:3306/swing_parking?serverTimezone=UTC”;//数据库连接URL

protected static String dbUser = “root”; //数据库用户名

protected static String dbPwd = “admin”; //数据库密码

private static Connection conn = null; //数据库连接对象

private DBUtil() { //默认构造函数

try {

if (conn == null) { //如果连接对象为空

Class.forName(dbClassName); //加载驱动类

conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);//获得连接对象

}

} catch (Exception ee) {

ee.printStackTrace();

}

}

private static ResultSet executeQuery(String sql) { //查询方法

try {

if(conn==null) new DBUtil(); //如果连接对象为空,则重新调用构造方法

return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//执行查询

} catch (SQLException e) {

e.printStackTrace();

return null; //返回null值

} finally {

}

}

private static int executeUpdate(String sql) { //更新方法

try {

if(conn==null) new DBUtil(); //如果连接对象为空,则重新调用构造方法

return conn.createStatement().executeUpdate(sql);//执行更新

} catch (SQLException e) {

e.printStackTrace();

return -1;

} finally {

}

}

public static void close() {//关闭方法

try {

conn.close();//关闭连接对象

} catch (SQLException e) {

e.printStackTrace();

}finally{

conn = null; //设置连接对象为null值

}

}

/*

  • 登录方法

*/

public static Users check(String name, String password) {

Users user=new Users();//操作员信息对象

String sql = “select * from users where name= '” + name+ “’ and password='” + password+“'”;//查询字符串

ResultSet rs = DBUtil.executeQuery(sql);//执行查询

try {

while(rs.next()) {//如果查询到了记录

user.setCardid(rs.getInt(“cardid”));

user.setName(rs.getString(“name”)) ;

user.setUserstype(rs.getString(“userstype”)) ;

user.setPassword(rs.getString(“password”));

user.setCardtype(rs.getString(“cardtype”));

user.setCarid(rs.getInt(“carid”));

user.setOverage(rs.getInt(“overage”));

user.setTel(rs.getInt(“tel”));

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close(); //关闭连接对象

return user;//返回操作员信息对象

}

/*

*查询计费标准

  • */

public static Charger searchcharge(String sql){

Charger charger = new Charger();//计费标准对象

ResultSet rs = DBUtil.executeQuery(sql);//执行查询

try {

while(rs.next()) {//如果查询到了

charger.setCardtype(rs.getString(“cardtype”));//设置计费标准卡的类型

charger.setCharge(rs.getInt(“charge”));//设置计费标准单价

charger.setStationtype(rs.getString(“stationtype”));//设置计费标准车位类型

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close(); //关闭连接对象

return charger;//返回计费标准对象

}

/*

  • 查询用户个人信息

  • */

public static Users searchcominfo(String sql){

Users user = new Users();//用户对象

ResultSet rs = DBUtil.executeQuery(sql);

try {

while(rs.next()) {

user.setCardid(rs.getInt(“cardid”));

user.setName(rs.getString(“name”)) ;

user.setUserstype(rs.getString(“userstype”)) ;

user.setPassword(rs.getString(“password”));

user.setCardtype(rs.getString(“cardtype”));

user.setCarid(rs.getInt(“carid”));

user.setOverage(rs.getInt(“overage”));

user.setTel(rs.getInt(“tel”));

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close();

return user;

}

/*

  • 实现出入场查询

  • */

public static int count(String sql){

int i = 0;

ResultSet rs = DBUtil.executeQuery(sql);//执行查询

try {

while(rs.next()) {//如果查询到了

i = rs.getInt(1);//得到count

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close(); //关闭连接对象

return i ; //返回i

}

/*

  • 实现普通用户注册

  • */

public static int comzhuce(int cardid,String name,String password,String cardtype,int overage,int tel,int carid){

int i=0;

try{

String sql=“insert users(cardid,name,password,cardtype,overage,tel,carid,userstype) values(”+cardid+“,'”+name+“‘,’”+password+“‘,’”+cardtype+“',”+overage+“,”+tel+“,”+carid+“,‘普通用户’)”;//将用户信息插入数据库中

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

return i;

}

/*

  • 实现管理员注册

  • */

public static int manzhuce(int cardid,String name,String password){

int i=0;

try{

String sql=“insert users(cardid,name,password,userstype) values(”+cardid+“,'”+name+“‘,’”+password+“',”+“‘管理员’)”;//将管理员信息插入到数据库中

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

return i;

}

/*

  • 收费标准修改

  • */

public static void gaicharge(String sql){

try{

DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

return ;

}

/*

  • 充值

  • */

public static void chongzhi(String sql){

try{

DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

return ;

}

/*

  • 车位查询

  • */

public static Sitinfor chewei(String sql){

Sitinfor sit = new Sitinfor();//车位信息对象

ResultSet rs = DBUtil.executeQuery(sql);//执行查询

try {

while(rs.next()) {//如果查询到了

sit.setStationid(rs.getInt(“stationid”));

sit.setStationtype(rs.getString(“stationtype”));

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close(); //关闭连接对象

return sit;

}

/*

  • 当前可用车位信息

  • */

public static List nowstation(){

List list=new ArrayList();

String sql= “select stationid,stationtype from station where stationid not in (select distinct stationid from park where endpark is null)”;//查询当前可用车位的信息

ResultSet rs=DBUtil.executeQuery(sql);

try {

while(rs.next()){

Sitinfor sit = new Sitinfor();//车位信息对象

sit.setStationid(rs.getInt(“stationid”));//设定车位信息的车位号

sit.setStationtype(rs.getString(“stationtype”));//设定车位信息的车位类型

list.add(sit);//将查询得到的车位信息加入到ArrayList()中

}

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

return list;

}

/*

  • 车辆入场

*/

public static int parkin(int cardid,int stationid,String stationtype,String startpark){

int i=0;

try{

String sql=“insert into park(cardid,stationid,stationtype,startpark) values(”+cardid+“,”+stationid+“,'”+stationtype+“‘,’”+startpark+“')”;//将入场车辆信息插入到数据库中

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

System.out.print(1);

}

return i;

}

/*

  • 更改密码

  • */

public static int Updatepass(String password,String name){

int i=0;

try{

String sql=“update users set password='”+password+“’ where name='”+name+“'”;//更新数据库中的用户密码

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

DBUtil.close();

return i;

}

/*

  • 出场

  • */

public static void Updatepark(String endpark,int fee,int sumpark,int cardid,String startpark){

try{

String sql = “update park set endpark = '”+endpark+“’ ,sumpark = “+sumpark +”,fee =”+ fee +" where cardid =“+ cardid+” and startpark =‘" +startpark+"’";

DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

DBUtil.close();

}

//在出场时,用于更新用户的余额

public static void Updateoverage(int cardid,int overage){

try{

String sql = "update users set overage = “+overage +” where cardid = "+cardid;

DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

DBUtil.close();

}

/*

  • 用户出场

  • */

public static Park parkout(String sql){

Park park = new Park();

ResultSet rs = DBUtil.executeQuery(sql);//执行查询

try {

while(rs.next()) {//如果查询到了

park.setStartpark(rs.getString(“startpark”));

park.setCardid(rs.getInt(“cardid”));

park.setEndpark(rs.getString(“endpark”));

park.setFee(rs.getInt(“fee”));

park.setStationid(rs.getInt(“stationid”));

park.setSumpark(rs.getInt(“sumpark”));

}

} catch (SQLException e){

e.printStackTrace();

}

DBUtil.close(); //关闭连接对象

return park;

}

/*

  • 根据cardid查询历史记录

  • */

public static List selectcardid(int cardid){

List list=new ArrayList();

String sql= “select * from park where cardid =”+ cardid+" and sumpark is not null";

ResultSet rs=DBUtil.executeQuery(sql);

try {

while(rs.next()){

Park park = new Park();

park.setCardid(rs.getInt(“cardid”));

park.setStationid(rs.getInt(“stationid”));

park.setStartpark(rs.getString(“startpark”));

park.setEndpark(rs.getString(“endpark”));

park.setSumpark(rs.getInt(“sumpark”));

park.setFee(rs.getInt(“fee”));

list.add(park);

}

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

return list;

}

/*

  • 查询当前在场信息

  • */

public static List now(){

List list=new ArrayList();

String sql= “select * from park where endpark is null”;

ResultSet rs=DBUtil.executeQuery(sql);

try {

while(rs.next()){

Park park = new Park();

park.setCardid(rs.getInt(“cardid”));

park.setStationid(rs.getInt(“stationid”));

park.setStartpark(rs.getString(“startpark”));

list.add(park);

}

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

return list;

}

/*

  • 更改用户信息

  • */

public static int updateuser(int cardid,String name,String password,String cardtype,int overage,int tel,int carid){

int i=0;

try{

String sql= “update users set name = '”+name+“',password = '”+password +“',cardtype = '”+cardtype +“',overage = “+overage+”,tel = “+tel+”,carid = “+carid+” where cardid =”+ cardid;

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

return i;

}

/*

  • 查询所有成员

  • */

public static List selectuser(){

List list=new ArrayList();

String sql= “select * from users where userstype = ‘普通用户’”;

ResultSet rs=DBUtil.executeQuery(sql);

try {

while(rs.next()){

Users user = new Users();

user.setCardid(rs.getInt(“cardid”));

user.setName(rs.getString(“name”)) ;//设置操作员用户名

user.setUserstype(rs.getString(“userstype”)) ;

user.setPassword(rs.getString(“password”));//设置管理员密

user.setCardtype(rs.getString(“cardtype”));

user.setCarid(rs.getInt(“carid”));

user.setOverage(rs.getInt(“overage”));

user.setTel(rs.getInt(“tel”));

list.add(user);

}

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

return list;

}

/*

  • 删除用户

  • */

public static int Deluser(int cardid){

int i=0;

try{

String sql = “delete from users where cardid =”+ cardid;

i=DBUtil.executeUpdate(sql);

}catch(Exception e){

e.printStackTrace();

}

DBUtil.close();

return i;

}

}

LoginFrame.java


/*

  • 该ui类用于显示登录窗口

  • */

package whsdu.se.view;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.SwingConstants;

import javax.swing.border.EmptyBorder;

import whsdu.se.util.DBUtil;

import whsdu.se.view.*;

import whsdu.se.vo.Users;

public class LoginFrame extends JFrame {

private JPasswordField password;

private JTextField username;

private JButton login;

private JButton reset;

private static Users user;

//这样写的目的是为了操作数据库,老师写的虽然好,但是对于操作数据库并不方便

public LoginFrame() {

super();

final BorderLayout borderLayout = new BorderLayout(); //创建布局管理器

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭按钮处理事件

borderLayout.setVgap(10); //设置组件之间垂直距离

getContentPane().setLayout(borderLayout); //使用布局管理器

setTitle(“停车场管理系统”); //设置窗体标题

setSize(300, 180);//设置窗体大小

this.setLocationRelativeTo(null);

final JPanel mainPanel = new JPanel(); //创建主面板

mainPanel.setLayout(new BorderLayout()); //设置边框布局

mainPanel.setBorder(new EmptyBorder(1, 1, 10, 10)); //设置边框为0

getContentPane().add(mainPanel); //在窗体中加入主面板

final JPanel centerPanel = new JPanel(); //添加一个中心面板

final GridLayout gridLayout = new GridLayout(3, 2); //创建网格布局管理器

centerPanel.setLayout(gridLayout); //使用布局管理器

mainPanel.add(centerPanel);//添加到主面板

JLabel zhanwei1 = new JLabel(); //创建卡号标签

centerPanel.add(zhanwei1); //添加到中心面板

JLabel zhanwei2 = new JLabel(); //创建卡号标签

centerPanel.add(zhanwei2); //添加到中心面板

final JLabel userNamelabel = new JLabel(); //创建一个标签

userNamelabel.setHorizontalAlignment(SwingConstants.CENTER);//设置对齐方式

userNamelabel.setPreferredSize(new Dimension(0, 0)); //设置组件大小

userNamelabel.setMinimumSize(new Dimension(0, 0)); //设置组件最小的大小

centerPanel.add(userNamelabel); //添加到中心面板

userNamelabel.setText(“账号:”); //设置标签文本

username = new JTextField(20); //创建文本框

//username.setColumns(20);

username.setPreferredSize(new Dimension(0, 0)); //设置组件大小

centerPanel.add(username); //添加到中心面板

final JLabel passwordLabel = new JLabel(); //创建一个标签

passwordLabel.setHorizontalAlignment(SwingConstants.CENTER);//设置对齐方式

centerPanel.add(passwordLabel); //添加到中心面板

passwordLabel.setText(“密码:”); //设置标签文本

password = new JPasswordField(20); //创建密码框

//password.setDocument(new MyDocument(6)); //设置密码长度为6

password.setEchoChar(‘*’); //设置密码框的回显字符

centerPanel.add(password); //添加到中心面板

final JPanel southPanel = new JPanel();//新增一个底部面板

southPanel.setBorder(new EmptyBorder(5, 5, 5, 5));

mainPanel.add(southPanel, BorderLayout.SOUTH); //添加到主面板中

login = new JButton();

login.addActionListener(new LoginAction()); //添加监听器

login.setText(“登录”); //设置按钮文本

southPanel.add(login); //把按钮添加到底部面板

reset = new JButton();

reset.addActionListener(new ResetAction()); //添加监听器

reset.setText(“重置”); //设置按钮文本

southPanel.add(reset); //把按钮添加到底部面板

setVisible(true); //设置创建可见

setResizable(false); //设置窗体不可改变大小

}

class ResetAction implements ActionListener {//实现重置按钮的监听

public void actionPerformed(final ActionEvent e){

password.setText(“”);//设置密码输入框为空

username.setText(“”);//设置用户名输入框为空

}

}

class LoginAction implements ActionListener {//实现登陆按钮的监听

public void actionPerformed(final ActionEvent e) {

user = DBUtil.check(username.getText(),new String(password.getText()));

if(user.getName()!=null) {

if(user.getUserstype().equals(“管理员”)) {

MdiFrame frame1 = new MdiFrame();//创建一个主窗体

//frame1.setEnabled(true);//设置其可见

LoginFrame.this.setVisible(false);//设置登录窗体为不显示

}

else {//判断用户名是否为null

MdiFrame frame = new MdiFrame();//创建一个主窗体

frame.disMenu();

//frame.setEnabled(true);//设置其可见

LoginFrame.this.setVisible(false);//设置登录窗体为不显示

}

}

else {

JOptionPane.showMessageDialog(null,“请输入正确的用户名和密码!”);//弹出提示框

username.setText(“”);//设置用户名输入框为空

password.setText(“”);//设置密码输入框为空

}

}

}

//这里的作用是因为在更改口令时需要登陆时的用户名

public static Users getUser() {

return user;

}

public static void setUser(Users user) {

LoginFrame.user = user;

}

public static void main(String[] args) {

new LoginFrame();

}

}

MdiFrame.java


/*

  • 该ui类是主窗口

  • */

package whsdu.se.view;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.SystemColor;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ComponentAdapter;

import java.awt.event.ComponentEvent;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.border.LineBorder;

import whsdu.se.common.*;

import whsdu.se.view.*;

import whsdu.se.vo.*;

public class MdiFrame extends JFrame implements ActionListener {

//关键!MDIDesktopPane(该类实际继承了 JDesktopPane) 用来容纳子窗体

//即使子窗体最大化也仅仅限制在该容器的范围之内

private MDIDesktopPane desktop = new MDIDesktopPane();

//菜单条

private JMenuBar menuBar = new JMenuBar();

//菜单

private JMenu mnuPark = new JMenu(“车场管理”);

private JMenu mnuQuery = new JMenu(“信息查询”);

private JMenu mnuSever = new JMenu(“信息维护”);

private JMenu mnuManSes = new JMenu(“系统管理”);

//菜单项

private JMenuItem munParkIn = new JMenuItem(“车辆入场”);

private JMenuItem mnuParkOut = new JMenuItem(“车辆出场”);

private JMenuItem munCharge = new JMenuItem(“计费标准”);

private JMenuItem mnuNowInfo = new JMenuItem(“当前在场信息”);

private JMenuItem mnuHistory = new JMenuItem(“用户历史信息”);

private JMenuItem mnuComUsersInfo = new JMenuItem(“用户个人信息”);

private JMenuItem mnuInOut = new JMenuItem(“出入场信息”);

private JMenuItem mnuComZhuCe = new JMenuItem(“用户注册”);

private JMenuItem mnuComIdentity = new JMenuItem(“用户修改”);

private JMenuItem mnuManZhuCe = new JMenuItem(“管理员注册”);

private JMenuItem mnuManIdentity = new JMenuItem(“口令修改”);

private JMenuItem mnuManCharge = new JMenuItem(“计费标准管理”);

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

MenuItem(“计费标准”);

private JMenuItem mnuNowInfo = new JMenuItem(“当前在场信息”);

private JMenuItem mnuHistory = new JMenuItem(“用户历史信息”);

private JMenuItem mnuComUsersInfo = new JMenuItem(“用户个人信息”);

private JMenuItem mnuInOut = new JMenuItem(“出入场信息”);

private JMenuItem mnuComZhuCe = new JMenuItem(“用户注册”);

private JMenuItem mnuComIdentity = new JMenuItem(“用户修改”);

private JMenuItem mnuManZhuCe = new JMenuItem(“管理员注册”);

private JMenuItem mnuManIdentity = new JMenuItem(“口令修改”);

private JMenuItem mnuManCharge = new JMenuItem(“计费标准管理”);

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-EghWrJzF-1710692126017)]
[外链图片转存中…(img-QVvbdrQF-1710692126018)]
[外链图片转存中…(img-auHvuquR-1710692126018)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-ifFCGB3t-1710692126019)]

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

[外链图片转存中…(img-8ma8WZZ5-1710692126020)]

一线互联网P7面试集锦+各种大厂面试集锦

[外链图片转存中…(img-i9jiBbzT-1710692126020)]

学习笔记以及面试真题解析

[外链图片转存中…(img-1V6mBX2d-1710692126021)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Swing是一个Java语言的图像用户界面(GUI)工具箱,它提供了丰富的组件和布局管理器,可以很方便快速地开发桌面应用程序。MySQL是一个开源的关系型数据库管理系统,它具有安全性高、性能好、易于使用等特点,常用于管理数据。停车场管理系统是指通过计算机、网络等技术手段对停车场业务的管理和控制,其中包含了车位的分配、计费、过车记录的管理等功能。 使用Java SwingMySQL可以轻松实现一个停车场管理系统。可以设计一个简洁、易用的图形界面,包括车位分布图、停车记录、计费设置等信息,并通过MySQL进行数据存储与管理。具体实现步骤可以包括以下几个方面: 1. 设计数据库表结构,包括停车场、车位、用户、停车记录等表,并进行适当的字段设计。 2. 使用Java Swing实现图形界面,包括登录、停车、取车、计费等模块,并与数据库进行交互。 3. 完成停车场车位的动态显示,实现空余车位数量的实时更新,方便用户选择车位。 4. 实现停车记录的查询功能,便于管理人员进行查询、审核等操作。 5. 引入计费公式、收费标准等设置,确保计费准确、合理。 通过以上的设计与实现,利用Java SwingMySQL开发出的停车场管理系统可以有效地支持停车场业务的管理与控制,提升车主、管理人员的使用体验,降低停车场管理成本,提高停车场利润。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值