用Java开发一个简单的网上花店销售系统

网上花店销售系统是一种基于网络的电子商务系统,旨在为消费者提供方便快捷的在线购买花卉的服务。本文将结合Java语言,介绍如何开发一个简单的网上花店销售系统,并附上相应的代码。

一、基本设计

1.技术选型

为了快速实现网上花店销售系统,我们选用了Java EE技术,包括Java Servlet和JSP(JavaServer Pages)技术。其中,Servlet技术用于处理网络请求和响应,JSP技术用于构建页面。

2.功能设计

本网上花店销售系统的功能包括:

  • 用户注册和登录:用户可以通过邮箱地址、密码和用户名进行注册和登录。
  • 商品展示:用户可以浏览网上花店中的商品列表,并查看商品的详细信息。
  • 购物车功能:用户可以将想要购买的商品添加到购物车中。
  • 订单功能:用户可以查看已经购买的商品,并提交订单完成购买。
  • 管理员功能:管理员可以添加商品和查看订单信息。

二、具体实现

1.数据库设计

使用Java EE的标准技术JDBC(Java Database Connectivity)实现数据库的连接和操作。我们需要设计两个表,用户表和花卉商品表,如下所示:

  • 用户表包含用户ID、用户名、密码和邮箱地址等信息。
  • 花卉商品表包含商品ID、商品名、商品描述、商品价格和商品库存等信息。

2.用户注册和登录功能

用户需要提供自己的邮箱地址、用户名和密码等信息进行注册。管理员可以在后台管理系统中查看已注册的用户列表。

public class UserDao {
    public boolean addUser(User user) {
        String sql = "INSERT INTO user (username, password, email) VALUES (?, ?, ?)";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql)) {
            psmt.setString(1, user.getUsername());
            psmt.setString(2, user.getPassword());
            psmt.setString(3, user.getEmail());
            return psmt.executeUpdate() > 0;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
    public User getUserByEmailAndPassword(String email, String password) {
        String sql = "SELECT * FROM user WHERE email = ? AND password = ?";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql)) {
            psmt.setString(1, email);
            psmt.setString(2, password);
            try (ResultSet rs = psmt.executeQuery()) {
                if (rs.next()) {
                    String username = rs.getString("username");
                    return new User(username, password, email);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}


3.商品展示功能

根据数据库中的花卉商品信息,展示在前端的页面上。用户可以通过浏览页面查看商品信息。

public class FlowerDao {
    public List<Flower> getAllFlowers() {
        List<Flower> flowers = new ArrayList<>();
        String sql = "SELECT * FROM flower";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql);
             ResultSet rs = psmt.executeQuery()) {
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String description = rs.getString("description");
                double price = rs.getDouble("price");
                int stock = rs.getInt("stock");
                String image = rs.getString("image");
                Flower flower = new Flower(id, name, description, price, stock, image);
                flowers.add(flower);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flowers;
    }
}


4.购物车和订单功能

在前端页面上,用户可以将想要购买的商品添加到购物车。在订单界面,用户可以查看已经购买的商品信息,并提交订单进行购买。

public class CartDao {
    public boolean addCartItem(int userId, int flowerId) {
        String sql = "INSERT INTO cart (user_id, flower_id, quantity) VALUES (?, ?, ?)";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql)) {
            psmt.setInt(1, userId);
            psmt.setInt(2, flowerId);
            psmt.setInt(3, 1);
            return psmt.executeUpdate() > 0;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
    public List<CartItem> getCartItemsByUserId(int userId) {
        List<CartItem> cartItems = new ArrayList<>();
        String sql = "SELECT flower.id, flower.name, flower.price, cart.quantity " +
                     "FROM flower, cart " +
                     "WHERE flower.id = cart.flower_id AND cart.user_id = ?";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql)) {
            psmt.setInt(1, userId);
            try (ResultSet rs = psmt.executeQuery()) {
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    double price = rs.getDouble("price");
                    int quantity = rs.getInt("quantity");
                    CartItem cartItem = new CartItem(id, name, price, quantity);
                    cartItems.add(cartItem);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return cartItems;
    }
}


5.后台管理功能

管理员可以通过后台管理系统,添加新的商品到店铺,或者查看订单信息。

public class AdminDao {
    public boolean addFlower(Flower flower) {
        String sql = "INSERT INTO flower (name, description, price, stock, image) VALUES (?, ?, ?, ?, ?)";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql)) {
            psmt.setString(1, flower.getName());
            psmt.setString(2, flower.getDescription());
            psmt.setDouble(3, flower.getPrice());
            psmt.setInt(4, flower.getStock());
            psmt.setString(5, flower.getImage());
            return psmt.executeUpdate() > 0;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }
    public List<Order> getAllOrders() {
        List<Order> orders = new ArrayList<>();
        String sql = "SELECT user.username, flower.name, order_item.quantity, order_item.order_time " +
                     "FROM user, flower, order_item " +
                     "WHERE user.id = order_item.user_id AND flower.id = order_item.flower_id";
        try (Connection conn = JdbcUtil.getConnection();
             PreparedStatement psmt = conn.prepareStatement(sql);
             ResultSet rs = psmt.executeQuery()) {
            while (rs.next()) {
                String username = rs.getString("username");
                String flowerName = rs.getString("name");
                int quantity = rs.getInt("quantity");
                Timestamp orderTime = rs.getTimestamp("order_time");
                Order order = new Order(username, flowerName, quantity, orderTime);
                orders.add(order);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return orders;
    }
}

三、总结

本文介绍了一个简单的网上花店销售系统的设计和实现思路,涵盖了用户、商品、购物车、订单和管理员等功能。使用Java EE技术,我们通过JDBC实现了数据库的连接和操作,使用Servlet和JSP实现了前台和后台的交互。在实现过程中,需要充分考虑代码的可读性、可扩展性和可维护性,推荐使用MVC(Model-View-Controller)设计模式,将业务逻辑和数据持久化等代码分离,提高代码的可复用性。相应教学奉上:【Java项目实战】手把手教你从零开始搭建Javaweb网上花店系统,新手也能跟得上(附源码),网上花店系统毕业设计_哔哩哔哩_bilibili

猜你喜欢

转载自blog.csdn.net/2301_76720304/article/details/130849722
今日推荐