1.设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。该名片管理系统包括如下功能:
(1)用户登录与注册
用户登录:在登录时,如果用户名和密码正确,进入系统页面。
用户注册:新用户应该先注册,然后再登录该系统。
(2)名片管理
增加名片:以仿真形式(按常用的名片格式)增加名片信息。
修改名片:以仿真形式(按常用的名片格式)修改名片信息。
查询名片:以模糊查询方式查询名片。
删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。
(3)回收站管理
还原:把回收站中的名片还原回收。
彻底删除:把名片彻底从回收站删除。
浏览/查询:可以模糊查询、浏览回收站中的名片。
首先,需要设计数据库表的结构。根据需求,我们可以设计出如下的表结构:
其中,user表、card表和trash表之间的关系是一对多的关系。
接下来,需要实现用户的登录和注册功能。可以通过如下方式来实现:
首先,创建一个login.jsp页面用于用户登录,其中包括用户名和密码的输入表单,以及登录按钮。在用户输入用户名和密码后,通过JDBC连接数据库,查询用户表中是否存在该用户名和密码。如果存在,则将用户信息保存到session中,并重定向到系统主页面;如果不存在,则返回错误信息。
下面是login.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
用户登录 - 网上名片管理系统
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username != null && password != null) {
// 检查用户是否存在
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user WHERE username='" + username + "' AND password='" + password + "'");
if (rs.next()) {
// 登录成功,保存用户信息到session并跳转到主页面
int userId = rs.getInt("id");
String createTime = rs.getString("create_time");
session.setAttribute("userId", userId);
session.setAttribute("username", username);
session.setAttribute("createTime", createTime);
response.sendRedirect("main.jsp");
} else {
// 用户名或密码错误,返回错误信息
out.println("用户名或密码错误,请重试。
");
}
rs.close();
stmt.close();
conn.close();
}
%>
创建一个register.jsp页面用于用户注册,其中包括用户名和密码的输入表单,以及注册按钮。在用户输入用户名和密码后,通过JDBC连接数据库,插入新用户信息到用户表中,并重定向到用户登录页面。
下面是register.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
用户注册 - 网上名片管理系统
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username != null && password != null) {
// 检查用户名是否已经被注册
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user WHERE username='" + username + "'");
if (rs.next()) {
// 用户名已经被注册,返回错误信息
out.println("该用户名已经被注册,请更换用户名再重试。
");
} else {
// 插入新用户信息到用户表中
int rows = stmt.executeUpdate("INSERT INTO user (username, password, create_time) VALUES ('" +
username + "', '" + password + "', NOW())");
if (rows == 1) {
// 注册成功,重定向到登录页面
response.sendRedirect("login.jsp");
} else {
// 注册失败,返回错误信息
out.println("注册失败,请稍后再试。
");
}
}
rs.close();
stmt.close();
conn.close();
}
%>
完成用户登录和注册功能后,接下来需要实现名片的增加、编辑、删除和查询等功能。
- 名片增加 创建一个add_card.jsp页面用于添加新名片,其中包括姓名、公司名、职位名称、公司电话、手机号码、邮箱、办公地址和备注等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,插入新名片信息到名片表中,并重定向到系统主页面。
下面是add_card.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
添加新名片 - 网上名片管理系统
<%
int userId = (int) session.getAttribute("userId");
String name = request.getParameter("name");
String company = request.getParameter("company");
String title = request.getParameter("title");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String email = request.getParameter("email");
String address = request.getParameter("address");
String note = request.getParameter("note");
if (name != null && company != null && title != null && phone != null && mobile != null && email != null && address != null) {
// 插入新名片信息到名片表中
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("INSERT INTO card (user_id, name, company, title, phone, mobile, email, address, note, discard, create_time, update_time) VALUES (" +
userId + ", '" + name + "', '" + company + "', '" + title + "', '" + phone + "', '" + mobile + "', '" + email + "', '" + address + "', '" + note + "', 0, NOW(), NOW())");
if (rows == 1) {
// 添加名片成功,重定向到主页面
response.sendRedirect("main.jsp");
} else {
// 添加名片失败,返回错误信息
out.println("添加名片失败,请稍后再试。
");
}
stmt.close();
conn.close();
}
%>
添加新名片
创建一个edit_card.jsp页面用于编辑已有名片,其中包括姓名、公司名、职位名称、公司电话、手机号码、邮箱、办公地址和备注等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,更新名片表中对应的名片信息,并重定向到系统主页面。
下面是edit_card.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
编辑名片 - 网上名片管理系统
<%
int userId = (int) session.getAttribute("userId");
int cardId = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String company = request.getParameter("company");
String title = request.getParameter("title");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String email = request.getParameter("email");
String address = request.getParameter("address");
String note = request.getParameter("note");
if (name != null && company != null && title != null && phone != null && mobile != null && email != null && address != null) {
// 更新名片信息到名片表中
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("UPDATE card SET name='" + name + "', company='" + company + "', title='" + title + "', phone='" +
phone + "', mobile='" + mobile + "', email='" + email + "', address='" + address + "', note='" + note + "', update_time=NOW() WHERE id=" +
cardId + " AND user_id=" + userId);
if (rows == 1) {
// 编辑名片成功,重定向到主页面
response.sendRedirect("main.jsp");
} else {
// 编辑名片失败,返回错误信息
out.println("编辑名片失败,请稍后再试。
");
}
stmt.close();
conn.close();
} else {
// 查询名片信息并显示到表单中
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM card WHERE id=" + cardId + " AND user_id=" + userId);
if (rs.next()) {
String cardName = rs.getString("name");
String cardCompany = rs.getString("company");
String cardTitle = rs.getString("title");
String cardPhone = rs.getString("phone");
String cardMobile = rs.getString("mobile");
String cardEmail = rs.getString("email");
String cardAddress = rs.getString("address");
String cardNote = rs.getString("note");
out.println("编辑名片
");
out.println("");
} else {
out.println("该名片不存在。
");
}
rs.close();
stmt.close();
conn.close();
}
%>
创建一个delete_card.jsp页面用于删除已有名片,其中包括确认信息和提交按钮。在用户提交表单后,通过JDBC连接数据库,将对应的名片信息移动到回收站表中,并重定向到系统主页面。
下面是delete_card.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
删除名片 - 网上名片管理系统
<%
int userId = (int) session.getAttribute("userId");
int cardId = Integer.parseInt(request.getParameter("id"));
String confirm = request.getParameter("confirm");
if (confirm != null && confirm.equals("yes")) {
// 将名片信息移动到回收站表中
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("UPDATE card SET discard=1 WHERE id=" + cardId + " AND user_id=" + userId);
if (rows == 1) {
// 删除名片成功,重定向到主页面
response.sendRedirect("main.jsp");
} else {
// 删除名片失败,返回错误信息
out.println("删除名片失败,请稍后再试。
");
}
stmt.close();
conn.close();
} else {
out.println("确定要删除名片吗?
");
out.println("");
out.println("");
}
创建一个search_card.jsp页面用于查询名片,其中包括姓名、公司名、职位名称、手机号码和邮箱等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,查询符合条件的名片信息,并将结果显示到页面上。
下面是search_card.jsp的示例代码:
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
查询名片 - 网上名片管理系统
<%
int userId = (int) session.getAttribute("userId");
String name = request.getParameter("name");
String company = request.getParameter("company");
String title = request.getParameter("title");
String mobile = request.getParameter("mobile");
String email = request.getParameter("email");
String sql = "SELECT * FROM card WHERE user_id=" + userId + " AND discard=0";
if (name != null && !name.isEmpty()) {
sql += " AND name like '%" + name + "%'";
}
if (company != null && !company.isEmpty()) {
sql += " AND company like '%" + company + "%'";
}
if (title != null && !title.isEmpty()) {
sql += " AND title like '%" + title + "%'";
}
if (mobile != null && !mobile.isEmpty()) {
sql += " AND mobile like '%" + mobile + "%'";
}
if (email != null && !email.isEmpty()) {
sql += " AND email like '%" + email + "%'";
}
String url = "jdbc:mysql://localhost:3306/cards?useSSL=false";
String user = "root";
String pass = "password";
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
out.println("查询名片
");
out.println("");
if (!rs.next()) {
out.println("没有符合条件的名片。
");
} else {
out.println("");
out.println("姓名 公司名 职位名称 手机号码 邮箱 操作 ");
do {
int cardId = rs.getInt("id");
String cardName = rs.getString("name");
String cardCompany = rs.getString("company");
String cardTitle = rs.getString("title");
String cardMobile = rs.getString("mobile");
String cardEmail = rs.getString("email");
out.println("");
out.println("" + cardName + " ");
out.println("" + cardCompany + " ");
out.println("" + cardTitle + " ");
out.println("" + cardMobile + " ");
out.println("" + cardEmail + " ");
out.println("查看 | 编辑 | 删除 ");
out.println(" ");
} while (rs.next());
out.println("
");
}
rs.close();
stmt.close();
conn.close();
%>
以上就是名片管理系统的主要功能模块,可以依照这些代码进行开发和实现。当然,这只是一个简单的示例,你可以按照自己的需求进行扩展和改进。
对于名片管理系统的开发,以上代码提供了主要的功能模块,但具体实现需要结合你的具体需求进行开发和完善。以下是一些可能需要考虑的优化点:
需要注意的是,以上优化点只是参考,具体还需要根据实际需求进行改进和完善。