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;
}
}
/*
-
该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();
}
}
/*
-
该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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
线程、数据库、算法、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)]