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

需求:

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

1)用户登录与注册

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

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

2)名片管理

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

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

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

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

3)回收站管理

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

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

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

实现步骤:

  1. 数据库设计

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

  • 用户表:user

JSP-JDBC-设计一个简单的网上名片管理系统_第1张图片

  • 名片表:card

JSP-JDBC-设计一个简单的网上名片管理系统_第2张图片

  • 回收站表:trash

JSP-JDBC-设计一个简单的网上名片管理系统_第3张图片

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

2.用户登录与注册

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

  • 用户登录

首先,创建一个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(); } %>
用户名: ">
密码:

3. 名片管理功能

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

- 名片增加 创建一个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("
"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); 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(""); 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("
"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); 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(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); } while (rs.next()); out.println("
姓名公司名职位名称手机号码邮箱操作
" + cardName + "" + cardCompany + "" + cardTitle + "" + cardMobile + "" + cardEmail + "查看 | 编辑 | 删除
"); } rs.close(); stmt.close(); conn.close(); %>

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

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

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

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

你可能感兴趣的:(Javaweb网站练习,java,开发语言,数据库)