> 文章列表 > JSP-JDBC-设计一个简单的网上名片管理系统

JSP-JDBC-设计一个简单的网上名片管理系统

JSP-JDBC-设计一个简单的网上名片管理系统

需求:

1.设计一个简单的网上名片管理系统,实现名片的增、删、改、查等操作。该名片管理系统包括如下功能:

1)用户登录与注册

用户登录:在登录时,如果用户名和密码正确,进入系统页面。

用户注册:新用户应该先注册,然后再登录该系统。

2)名片管理

增加名片:以仿真形式(按常用的名片格式)增加名片信息。

修改名片:以仿真形式(按常用的名片格式)修改名片信息。

查询名片:以模糊查询方式查询名片。

删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。

3)回收站管理

还原:把回收站中的名片还原回收。

彻底删除:把名片彻底从回收站删除。

浏览/查询:可以模糊查询、浏览回收站中的名片。

实现步骤:

  1. 数据库设计

首先,需要设计数据库表的结构。根据需求,我们可以设计出如下的表结构: 

  • 用户表:user

  • 名片表:card

  • 回收站表:trash

 其中,user表、card表和trash表之间的关系是一对多的关系。

2.用户登录与注册

接下来,需要实现用户的登录和注册功能。可以通过如下方式来实现:

  • 用户登录

首先,创建一个login.jsp页面用于用户登录,其中包括用户名和密码的输入表单,以及登录按钮。在用户输入用户名和密码后,通过JDBC连接数据库,查询用户表中是否存在该用户名和密码。如果存在,则将用户信息保存到session中,并重定向到系统主页面;如果不存在,则返回错误信息。

下面是login.jsp的示例代码:

 

<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>用户登录 - 网上名片管理系统</title>
</head>
<body><%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("<p>用户名或密码错误,请重试。</p>");}rs.close();stmt.close();conn.close();}%><form method="post" action="login.jsp"><table><tr><td>用户名:</td><td><input type="text" name="username" value="<%=request.getParameter("username")%>"></td></tr><tr><td>密码:</td><td><input type="password" name="password"></td></tr><tr><td colspan="2"><input type="submit" value="登录"></td></tr></table></form>
</body>
</html>
  • 用户注册

创建一个register.jsp页面用于用户注册,其中包括用户名和密码的输入表单,以及注册按钮。在用户输入用户名和密码后,通过JDBC连接数据库,插入新用户信息到用户表中,并重定向到用户登录页面。

下面是register.jsp的示例代码:

<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>用户注册 - 网上名片管理系统</title>
</head>
<body><%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("<p>该用户名已经被注册,请更换用户名再重试。</p>");} 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("<p>注册失败,请稍后再试。</p>");
}
}rs.close();stmt.close();conn.close();
}
%>
<form method="post" action="register.jsp">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value="<%=request.getParameter("username")%>"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="注册"></td>
</tr>
</table>
</form>
</body>
</html>

3. 名片管理功能

完成用户登录和注册功能后,接下来需要实现名片的增加、编辑、删除和查询等功能。

- 名片增加 创建一个add_card.jsp页面用于添加新名片,其中包括姓名、公司名、职位名称、公司电话、手机号码、邮箱、办公地址和备注等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,插入新名片信息到名片表中,并重定向到系统主页面。

下面是add_card.jsp的示例代码:


<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>添加新名片 - 网上名片管理系统</title>
</head>
<body><%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("<p>添加名片失败,请稍后再试。</p>");}stmt.close();conn.close();}%><h2>添加新名片</h2><form method="post" action="add_card.jsp"><table><tr><td>姓名:</td><td><input type="text" name="name"></td></tr><tr><td>公司名:</td><td><input type="text" name="company"></td></tr><tr><td>职位名称:</td><td><input type="text" name="title"></td></tr><tr><td>公司电话:</td><td><input type="text" name="phone"></td></tr><tr><td>手机号码:</td><td><input type="text" name="mobile"></td></tr><tr><td>邮箱:</td><td><input type="text" name="email"></td></tr><tr><td>办公地址:</td><td><input type="text" name="address"></td></tr><tr><td>备注:</td><td><textarea name="note"></textarea></td></tr><tr><td colspan="2"><input type="submit" value="提交"></td></tr></table></form>
</body>
</html>
  • 名片编辑

创建一个edit_card.jsp页面用于编辑已有名片,其中包括姓名、公司名、职位名称、公司电话、手机号码、邮箱、办公地址和备注等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,更新名片表中对应的名片信息,并重定向到系统主页面。

下面是edit_card.jsp的示例代码:

<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>编辑名片 - 网上名片管理系统</title>
</head>
<body><%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("<p>编辑名片失败,请稍后再试。</p>");}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("<h2>编辑名片</h2>");out.println("<form method=\\"post\\" action=\\"edit_card.jsp?id=" + cardId + "\\">");out.println("<table>");out.println("<tr><td>姓名:</td><td><input type=\\"text\\" name=\\"name\\" value=\\"" + cardName + "\\"></td></tr>");out.println("<tr><td>公司名:</td><td><input type=\\"text\\" name=\\"company\\" value=\\"" + cardCompany + "\\"></td></tr>");out.println("<tr><td>职位名称:</td><td><input type=\\"text\\" name=\\"title\\" value=\\"" + cardTitle + "\\"></td></tr>");out.println("<tr><td>公司电话:</td><td><input type=\\"text\\" name=\\"phone\\" value=\\"" + cardPhone + "\\"></td></tr>");out.println("<tr><td>手机号码:</td><td><input type=\\"text\\" name=\\"mobile\\" value=\\"" + cardMobile + "\\"></td></tr>");out.println("<tr><td>邮箱:</td><td><input type=\\"text\\" name=\\"email\\" value=\\"" + cardEmail + "\\"></td></tr>");out.println("<tr><td>办公地址:</td><td><input type=\\"text\\" name=\\"address\\" value=\\"" + cardAddress + "\\"></td></tr>");out.println("<tr><td>备注:</td><td><textarea name=\\"note\\">" + cardNote + "</textarea></td></tr>");out.println("<tr><td colspan=\\"2\\"><input type=\\"submit\\" value=\\"提交\\"></td></tr>");out.println("</table>");out.println("</form>");} else {out.println("<p>该名片不存在。</p>");}rs.close();stmt.close();conn.close();}%>
</body>
</html>
  • 名片删除

创建一个delete_card.jsp页面用于删除已有名片,其中包括确认信息和提交按钮。在用户提交表单后,通过JDBC连接数据库,将对应的名片信息移动到回收站表中,并重定向到系统主页面。

下面是delete_card.jsp的示例代码:

<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>删除名片 - 网上名片管理系统</title>
</head>
<body><%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("<p>删除名片失败,请稍后再试。</p>");}stmt.close();conn.close();} else {out.println("<h2>确定要删除名片吗?</h2>");out.println("<form method=\\"post\\" action=\\"delete_card.jsp?id=" + cardId + "\\">");out.println("<input type=\\"hidden\\" name=\\"confirm\\" value=\\"yes\\">");out.println("<input type=\\"submit\\" value=\\"确认\\">");out.println("</form>");out.println("<p><a href=\\"main.jsp\\">取消</a></p>");}
  • 名片查询

创建一个search_card.jsp页面用于查询名片,其中包括姓名、公司名、职位名称、手机号码和邮箱等输入表单,以及提交按钮。在用户提交表单后,通过JDBC连接数据库,查询符合条件的名片信息,并将结果显示到页面上。

下面是search_card.jsp的示例代码:

<%@ page language="java" %>
<%@ page import="java.sql.*" %><html>
<head><title>查询名片 - 网上名片管理系统</title>
</head>
<body><%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("<h2>查询名片</h2>");out.println("<form method=\\"get\\" action=\\"search_card.jsp\\">");out.println("<table>");out.println("<tr><td>姓名:</td><td><input type=\\"text\\" name=\\"name\\" value=\\"" + name + "\\"></td></tr>");out.println("<tr><td>公司名:</td><td><input type=\\"text\\" name=\\"company\\" value=\\"" + company + "\\"></td></tr>");out.println("<tr><td>职位名称:</td><td><input type=\\"text\\" name=\\"title\\" value=\\"" + title + "\\"></td></tr>");out.println("<tr><td>手机号码:</td><td><input type=\\"text\\" name=\\"mobile\\" value=\\"" + mobile + "\\"></td></tr>");out.println("<tr><td>邮箱:</td><td><input type=\\"text\\" name=\\"email\\" value=\\"" + email + "\\"></td></tr>");out.println("<tr><td colspan=\\"2\\"><input type=\\"submit\\" value=\\"查询\\"></td></tr>");out.println("</table>");out.println("</form>");if (!rs.next()) {out.println("<p>没有符合条件的名片。</p>");} else {out.println("<table>");out.println("<tr><th>姓名</th><th>公司名</th><th>职位名称</th><th>手机号码</th><th>邮箱</th><th>操作</th></tr>");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("<tr>");out.println("<td>" + cardName + "</td>");out.println("<td>" + cardCompany + "</td>");out.println("<td>" + cardTitle + "</td>");out.println("<td>" + cardMobile + "</td>");out.println("<td>" + cardEmail + "</td>");out.println("<td><a href=\\"view_card.jsp?id=" + cardId + "\\">查看</a> | <a href=\\"edit_card.jsp?id=" + cardId + "\\">编辑</a> | <a href=\\"delete_card.jsp?id=" + cardId + "\\">删除</a></td>");out.println("</tr>");} while (rs.next());out.println("</table>");}rs.close();stmt.close();conn.close();%>
</body>
</html>

以上就是名片管理系统的主要功能模块,可以依照这些代码进行开发和实现。当然,这只是一个简单的示例,你可以按照自己的需求进行扩展和改进。

对于名片管理系统的开发,以上代码提供了主要的功能模块,但具体实现需要结合你的具体需求进行开发和完善。以下是一些可能需要考虑的优化点:

  • 对输入的参数进行过滤和校验,防止SQL注入等漏洞。
  • 在查询名片时,使用分页功能,以减轻服务器压力和提高用户体验。
  • 在编辑和添加名片时,需要对输入的数据进行校验,例如,手机号码和邮箱地址的格式等,防止用户输入非法的数据。
  • 用户登录和注册功能,以及安全机制的设计和实现,例如,加密存储用户密码等。
  • 后台管理功能,例如,管理员可以对名片进行批量管理、查看统计信息等。

需要注意的是,以上优化点只是参考,具体还需要根据实际需求进行改进和完善。