PHP 项目实战之简历管理系统
简历管理系统是一个用于管理个人简历信息的系统,它可以帮助用户创建、存储、编辑和搜索简历。在PHP语言中,我们可以利用MySQL数据库和PHP的Web开发框架来构建这样一个系统。本文将围绕简历管理系统的开发,介绍相关的技术栈和关键代码实现。
技术栈
- PHP:作为后端开发语言,负责处理业务逻辑和数据库交互。
- MySQL:作为数据库,存储简历信息。
- HTML/CSS/JavaScript:作为前端技术,负责用户界面展示和交互。
- Bootstrap:作为前端框架,提供响应式布局和组件。
- Composer:用于管理PHP项目的依赖。
系统设计
功能模块
1. 用户注册与登录
2. 简历创建与编辑
3. 简历搜索与筛选
4. 简历预览与导出
5. 简历删除与恢复
数据库设计
以下是简历管理系统的数据库设计,包括用户表和简历表:
sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `resumes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(100) NOT NULL,
`address` text NOT NULL,
`education` text NOT NULL,
`experience` text NOT NULL,
`skills` text NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
关键代码实现
用户注册与登录
用户注册
php
// 用户注册处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 检查用户名和邮箱是否已存在
$stmt = $conn->prepare("SELECT id FROM users WHERE username = ? OR email = ?");
$stmt->bind_param("ss", $username, $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 用户名或邮箱已存在
echo "Username or email already exists.";
} else {
// 插入新用户
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $password, $email);
if ($stmt->execute()) {
echo "Registration successful.";
} else {
echo "Registration failed.";
}
}
$stmt->close();
$conn->close();
}
用户登录
php
// 用户登录处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 检查用户名和密码
$stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$user = $result->fetch_assoc();
if (password_verify($password, $user['password'])) {
// 登录成功
session_start();
$_SESSION['user_id'] = $user['id'];
echo "Login successful.";
} else {
// 密码错误
echo "Incorrect password.";
}
} else {
// 用户名不存在
echo "Username does not exist.";
}
$stmt->close();
$conn->close();
}
简历创建与编辑
简历创建
php
// 简历创建处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$user_id = $_SESSION['user_id'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$address = $_POST['address'];
$education = $_POST['education'];
$experience = $_POST['experience'];
$skills = $_POST['skills'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 插入新简历
$stmt = $conn->prepare("INSERT INTO resumes (user_id, name, phone, email, address, education, experience, skills) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("isssssss", $user_id, $name, $phone, $email, $address, $education, $experience, $skills);
if ($stmt->execute()) {
echo "Resume created successfully.";
} else {
echo "Resume creation failed.";
}
$stmt->close();
$conn->close();
}
简历编辑
php
// 简历编辑处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$resume_id = $_POST['resume_id'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$address = $_POST['address'];
$education = $_POST['education'];
$experience = $_POST['experience'];
$skills = $_POST['skills'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 更新简历信息
$stmt = $conn->prepare("UPDATE resumes SET name = ?, phone = ?, email = ?, address = ?, education = ?, experience = ?, skills = ? WHERE id = ?");
$stmt->bind_param("sssssssi", $name, $phone, $email, $address, $education, $experience, $skills, $resume_id);
if ($stmt->execute()) {
echo "Resume updated successfully.";
} else {
echo "Resume update failed.";
}
$stmt->close();
$conn->close();
}
简历搜索与筛选
php
// 简历搜索与筛选处理
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$search = $_GET['search'];
$filter = $_GET['filter'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 搜索和筛选简历
$stmt = $conn->prepare("SELECT FROM resumes WHERE name LIKE ? OR phone LIKE ? OR email LIKE ? OR address LIKE ? OR education LIKE ? OR experience LIKE ? OR skills LIKE ?");
$stmt->bind_param("sssssss", $search, $search, $search, $search, $search, $search, $search);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// 输出搜索结果
echo "<div>";
echo "Name: " . $row['name'] . "<br>";
echo "Phone: " . $row['phone'] . "<br>";
echo "Email: " . $row['email'] . "<br>";
echo "Address: " . $row['address'] . "<br>";
echo "Education: " . $row['education'] . "<br>";
echo "Experience: " . $row['experience'] . "<br>";
echo "Skills: " . $row['skills'] . "<br>";
echo "</div>";
}
$stmt->close();
$conn->close();
}
简历预览与导出
php
// 简历预览与导出处理
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$resume_id = $_GET['resume_id'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 获取简历信息
$stmt = $conn->prepare("SELECT FROM resumes WHERE id = ?");
$stmt->bind_param("i", $resume_id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
// 输出简历信息
echo "<h1>Resume Preview</h1>";
echo "Name: " . $row['name'] . "<br>";
echo "Phone: " . $row['phone'] . "<br>";
echo "Email: " . $row['email'] . "<br>";
echo "Address: " . $row['address'] . "<br>";
echo "Education: " . $row['education'] . "<br>";
echo "Experience: " . $row['experience'] . "<br>";
echo "Skills: " . $row['skills'] . "<br>";
// 导出简历为PDF
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Resume');
$pdf->Ln();
$pdf->SetFont('Arial', '', 12);
$pdf->MultiCell(0, 10, "Name: " . $row['name'] . "Phone: " . $row['phone'] . "Email: " . $row['email'] . "Address: " . $row['address'] . "Education: " . $row['education'] . "Experience: " . $row['experience'] . "Skills: " . $row['skills']);
$pdf->Output('F', 'resume.pdf');
$stmt->close();
$conn->close();
}
简历删除与恢复
php
// 简历删除与恢复处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$action = $_POST['action'];
$resume_id = $_POST['resume_id'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'resume_system');
// 删除或恢复简历
if ($action === 'delete') {
$stmt = $conn->prepare("DELETE FROM resumes WHERE id = ?");
$stmt->bind_param("i", $resume_id);
if ($stmt->execute()) {
echo "Resume deleted successfully.";
} else {
echo "Resume deletion failed.";
}
} elseif ($action === 'restore') {
$stmt = $conn->prepare("UPDATE resumes SET deleted_at = NULL WHERE id = ?");
$stmt->bind_param("i", $resume_id);
if ($stmt->execute()) {
echo "Resume restored successfully.";
} else {
echo "Resume restoration failed.";
}
}
$stmt->close();
$conn->close();
}
总结
本文介绍了如何使用PHP语言和MySQL数据库构建一个简历管理系统。通过实现用户注册与登录、简历创建与编辑、简历搜索与筛选、简历预览与导出、简历删除与恢复等功能,我们构建了一个完整的简历管理系统。在实际开发中,还需要考虑安全性、性能优化和用户体验等方面。希望本文能对PHP项目实战有所帮助。
Comments NOTHING