停车场管理系统java项目 jsp web项目
主要用于实现停车场相关信息管理,基本功能包括:系统信息管理模块、车位信息管理模块、IC卡信息管理模块、固定车主停车管理模块、临时车辆信息管理模块、系统功能操模块等。
本系统结构如下:
(1)系统信息管理模块:角色的增加、删除、修改和查询;用户的增加、删除、修改和查询。
(2)车位信息管理模块:车位信息的增加、删除、修改和查询。
(3)IC卡信息管理模块:IC卡信息的增加、删除、修改和查询。
(4)固定车主停车管理模块:对固定车主的停车信息进行增加、删除、修改和查询
(5)临时车辆信息管理模块:对临时车辆的停车信息进行增加、删除、修改、查询和打印
(6)系统功能操模块:退出登陆、修改密码。
文章目录
基于 Java 和 JSP 的停车场管理系统的 Web 项目代码。该项目使用了 Servlet 和 JSP 技术,结合 MySQL 数据库实现一个简单的停车场管理系统。该系统支持车辆的进入、离开、查询停车记录以及计算停车费用等功能。
项目结构
ParkingManagementSystem/
├── src/ # Java 源代码目录
│ ├── com.example.controller/ # Servlet 控制器
│ ├── com.example.dao/ # 数据访问层
│ ├── com.example.model/ # 数据模型
│ └── com.example.util/ # 工具类(如数据库连接)
├── WebContent/ # Web 资源目录
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript 文件
│ ├── images/ # 图片资源
│ ├── WEB-INF/ # 配置文件和受保护资源
│ │ ├── web.xml # Web 应用配置文件
│ │ └── lib/ # 依赖库(如 JDBC 驱动)
│ ├── index.jsp # 主页
│ ├── addVehicle.jsp # 添加车辆页面
│ ├── exitVehicle.jsp # 车辆离开页面
│ └── viewRecords.jsp # 查看停车记录页面
└── build/ # 编译后的文件
数据库设计
在 MySQL 中创建一个名为 parking_management
的数据库,并运行以下 SQL 脚本:
CREATE DATABASE parking_management;
USE parking_management;
CREATE TABLE parking_records (
id INT AUTO_INCREMENT PRIMARY KEY,
vehicle_number VARCHAR(20) NOT NULL, -- 车牌号
entry_time DATETIME NOT NULL, -- 进入时间
exit_time DATETIME DEFAULT NULL, -- 离开时间
parking_fee DECIMAL(10, 2) DEFAULT 0.00 -- 停车费用
);
代码实现
1. 数据库工具类 (com.example.util.DBUtil
)
package com.example.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/parking_management?useSSL=false&serverTimezone=UTC";
private static final String USER = "root"; // 修改为你的数据库用户名
private static final String PASSWORD = "password"; // 修改为你的数据库密码
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
2. 数据模型类 (com.example.model.ParkingRecord
)
package com.example.model;
import java.sql.Timestamp;
public class ParkingRecord {
private int id;
private String vehicleNumber;
private Timestamp entryTime;
private Timestamp exitTime;
private double parkingFee;
// Getters and Setters
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getVehicleNumber() { return vehicleNumber; }
public void setVehicleNumber(String vehicleNumber) { this.vehicleNumber = vehicleNumber; }
public Timestamp getEntryTime() { return entryTime; }
public void setEntryTime(Timestamp entryTime) { this.entryTime = entryTime; }
public Timestamp getExitTime() { return exitTime; }
public void setExitTime(Timestamp exitTime) { this.exitTime = exitTime; }
public double getParkingFee() { return parkingFee; }
public void setParkingFee(double parkingFee) { this.parkingFee = parkingFee; }
}
3. 数据访问层 (com.example.dao.ParkingDAO
)
package com.example.dao;
import com.example.model.ParkingRecord;
import com.example.util.DBUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class ParkingDAO {
// 添加车辆记录
public void addVehicle(ParkingRecord record) throws SQLException {
String sql = "INSERT INTO parking_records (vehicle_number, entry_time) VALUES (?, ?)";
try (Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, record.getVehicleNumber());
stmt.setTimestamp(2, new Timestamp(System.currentTimeMillis()));
stmt.executeUpdate();
}
}
// 更新车辆离开时间和费用
public void updateExitTimeAndFee(String vehicleNumber, double fee) throws SQLException {
String sql = "UPDATE parking_records SET exit_time = ?, parking_fee = ? WHERE vehicle_number = ?";
try (Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
stmt.setDouble(2, fee);
stmt.setString(3, vehicleNumber);
stmt.executeUpdate();
}
}
// 查询所有记录
public List<ParkingRecord> getAllRecords() throws SQLException {
List<ParkingRecord> records = new ArrayList<>();
String sql = "SELECT * FROM parking_records";
try (Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
ParkingRecord record = new ParkingRecord();
record.setId(rs.getInt("id"));
record.setVehicleNumber(rs.getString("vehicle_number"));
record.setEntryTime(rs.getTimestamp("entry_time"));
record.setExitTime(rs.getTimestamp("exit_time"));
record.setParkingFee(rs.getDouble("parking_fee"));
records.add(record);
}
}
return records;
}
}
4. Servlet 控制器 (com.example.controller.ParkingController
)
package com.example.controller;
import com.example.dao.ParkingDAO;
import com.example.model.ParkingRecord;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
@WebServlet("/parking")
public class ParkingController extends HttpServlet {
private ParkingDAO parkingDAO = new ParkingDAO();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
if ("add".equals(action)) {
String vehicleNumber = req.getParameter("vehicleNumber");
ParkingRecord record = new ParkingRecord();
record.setVehicleNumber(vehicleNumber);
try {
parkingDAO.addVehicle(record);
resp.sendRedirect("index.jsp?msg=Vehicle added successfully!");
} catch (SQLException e) {
e.printStackTrace();
resp.sendRedirect("index.jsp?msg=Error adding vehicle.");
}
}
}
}
5. JSP 页面示例 (index.jsp
)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Parking Management System</title>
</head>
<body>
<h1>Welcome to Parking Management System</h1>
<form action="parking?action=add" method="post">
<label for="vehicleNumber">Vehicle Number:</label>
<input type="text" id="vehicleNumber" name="vehicleNumber" required>
<button type="submit">Add Vehicle</button>
</form>
<p style="color: green;"><%= request.getParameter("msg") != null ? request.getParameter("msg") : "" %></p>
</body>
</html>
功能说明
- 添加车辆:用户输入车牌号,点击按钮将车辆信息存入数据库。
- 查看记录:从数据库中读取所有停车记录并显示。
- 计算费用:根据停车时长计算费用(可扩展)。
注意事项
-
依赖库:
- 下载 MySQL JDBC 驱动(如
mysql-connector-java-8.x.x.jar
),并放入WEB-INF/lib
目录。
- 下载 MySQL JDBC 驱动(如
-
部署环境:
- 使用 Apache Tomcat 或其他支持 JSP 的服务器运行项目。
-
扩展功能:
- 增加用户登录模块。
- 实现分页查询和报表导出功能。