Java实战之网上书店管理系统的实现

目录
  • 1.效果展示
  • 2.需求功能
  • 3.系统总体设计及部分代码
    • 3.1登录模块设计
    • 3.2新用户的注册
    • 3.3图书添加模块
    • 3.4图书添加事件
    • 3.5买家信息维护
    • 3.6订单管理模块
  • 4.数据库设计
    • 4.1系统数据库设计
    • 4.2系统E-R图设计
  • 5.JDBC连接数据库

1.效果展示

2.需求功能

用户可以进行注册登陆系统,在用户的界面上,其可以进行查看网上书店里的图书类别和所在类别下的图书,根据自己的需求可在订单项目里添加订单购买自己喜欢的图书;

管理员可以通过自己的账号登录到管理员系统对书店进行管理,其可实现对图书的添加,修改,查询,和删除功能,可以查看用户的订单,修改和维护订单。添家客户的信息用以统计数据。

在构造系统时,首先从需求出发构造数据库,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统解成了几个小系统。这里把系统划分为了三个模块:用户登录模块,管理员模块,用户购买模块。模块分别能够实现以下功能:

  • 登录模块:实现登录,注册功能。
  • 管理员模块:实现对图书的添加修改和删除以及对订单的添加修改和删除功能。
  • 用户购买模块:实现对图书的查找以及对所需图书的下单功能。

3.系统总体设计及部分代码

3.1登录模块设计

用户正确输入用户名和密码,连接到数据库,登录成功!

private void loginActionPerformed(ActionEvent evt) {
    	 String userName=this.userNameTxt.getText();
 		String password=new String(this.passwordTxt.getPassword());
 		if(StringUtil.isEmpty(userName)){
 			JOptionPane.showMessageDialog(null, "用户名不能为空!");
 			return;
 		}
 		if(StringUtil.isEmpty(password)){
 			JOptionPane.showMessageDialog(null, "密码不能为空!");
 			return;
 		}
 		CUser cuser=new CUser(userName,password);
 		Connection con=null;
 		try {
 			con=dbUtil.getCon();
 			CUser currentCUser =cuserDao.login(con,cuser);
 			if(currentCUser!=null){
				dispose();
				new CMainFrm().setVisible(true);
			}else{
				JOptionPane.showMessageDialog(null, "用户名或者密码错误!");
			}

		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

3.2新用户的注册

此模块的核心是创建实例化对象。

private void registrationActionPerformed(ActionEvent evt) {
		String userName=this.userNameTxt.getText();
		String password=this.passwordTxt.getText();
		if(StringUtil.isEmpty(userName)){
			JOptionPane.showMessageDialog(null, "用户名不能为空!");
			return;
		}
		if(StringUtil.isEmpty(password)){
			JOptionPane.showMessageDialog(null, "密码不能为空!");
			return;
		}
		Registration registration= new Registration(userName,password);

		Connection con= null;
		try {
			con=dbUtil.getCon();
			int n= registrationDao.add(con, registration);
			if(n==1){
				JOptionPane.showMessageDialog(null, "注册成功!");
				resetValue();
			}else{
				JOptionPane.showMessageDialog(null, "注册失败!");
			}

		}catch(Exception e) {

		}finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "注册失败!");
			}
		}
	}

3.3图书添加模块

管理员在此界面上可对系统里的图书进行查询修改和删除。

public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BookAddInterFrm frame = new BookAddInterFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

3.4图书添加事件

此界面主要实现图书的添加功能。

/**
*图书添加事件
*/
private void bookAddActionPerformed(ActionEvent evt) {
		String bookName=this.bookNameTxt.getText();
		String author=this.authorTxt.getText();
		String price=this.priceTxt.getText();
		String bookDesc=this.bookDescTxt.getText();

		if(StringUtil.isEmpty(bookName)){
			JOptionPane.showMessageDialog(null, "图书名称不能为空!");
			return;
		}

		if(StringUtil.isEmpty(author)){
			JOptionPane.showMessageDialog(null, "图书作者不能为空!");
			return;
		}

		if(StringUtil.isEmpty(price)){
			JOptionPane.showMessageDialog(null, "图书价格不能为空!");
			return;
		}

		String sex="";
		if(manJrb.isSelected()){
			sex="男";
		}else if(femaleJrb.isSelected()){
			sex="女";
		}

		BookType bookType=(BookType) bookTypeJcb.getSelectedItem();
		int bookTypeId=bookType.getId();

		Book book=new Book(bookName,author, sex, Float.parseFloat(price) , bookTypeId,  bookDesc);

		Connection con=null;
		try{
			con=dbUtil.getCon();
			int addNum=bookDao.add(con, book);
			if(addNum==1){
				JOptionPane.showMessageDialog(null, "图书添加成功!");
				resetValue();
			}else{
				JOptionPane.showMessageDialog(null, "图书添加失败!");
			}
		}catch(Exception e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "图书添加失败!");
		}finally{
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	/**
	 * 重置表单
	 */
	private void resetValue(){
		this.bookNameTxt.setText("");
		this.authorTxt.setText("");
		this.priceTxt.setText("");
		this.manJrb.setSelected(true);
		this.bookDescTxt.setText("");
		if(this.bookTypeJcb.getItemCount()>0){
			this.bookTypeJcb.setSelectedIndex(0);
		}
	}

	/**
	 * 初始化图书类别下拉框
	 */
	private void fillBookType(){
		Connection con=null;
		BookType bookType=null;
		try{
			con=dbUtil.getCon();
			ResultSet rs=bookTypeDao.list(con, new BookType());
			while(rs.next()){
				bookType=new BookType();
				bookType.setId(rs.getInt("id"));
				bookType.setBookTypeName(rs.getString("bookTypeName"));
				this.bookTypeJcb.addItem(bookType);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{

		}
	}
}

3.5买家信息维护

此模块主要用于对买家信息的查找和维护。

	/**
	 * 买家信息搜索事件处理
	 */
	protected void consumerSerachActionPerformed(ActionEvent evt) {
		String s_consumerName= this.s_consumerNameTxt.getText();
		Consumer consumer=new Consumer();
		consumer.setConsumerName(s_consumerName);
		this.fillTable(consumer);
	}

	private void fillTable(Consumer consumer){
		DefaultTableModel dtm=(DefaultTableModel) consumerTable.getModel();
		dtm.setRowCount(0); // 设置成0行
		Connection con=null;
		try{
			con=dbUtil.getCon();
			ResultSet rs=consumerDao.list(con, consumer);
			while(rs.next()){
				Vector v=new Vector();
				v.add(rs.getString("id"));
				v.add(rs.getString("consumerName"));
				v.add(rs.getString("sex"));
				v.add(rs.getString("age"));
				v.add(rs.getString("number"));
				v.add(rs.getString("bookName"));
				dtm.addRow(v);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
	}
	/**
	 * 买家信息修改
	 */
	private void consumerUpdateActionEvet(ActionEvent evt) {
		String id=idTxt.getText();
		String consumerName=consumerNameTxt.getText();
		String sex=sexTxt.getText();
		String age=ageTxt.getText();
		String number=numberTxt.getText();
		String bookName=bookNameTxt.getText();
		if(StringUtil.isEmpty(id)){
			JOptionPane.showMessageDialog(null, "请选择要修改的记录");
			return;
		}
		if(StringUtil.isEmpty(consumerName)){
			JOptionPane.showMessageDialog(null, "购书者名称不能为空");
			return;
		}
		if(StringUtil.isEmpty(age)){
			JOptionPane.showMessageDialog(null, "年龄不能为空");
			return;
		}
		if(StringUtil.isEmpty(number)){
			JOptionPane.showMessageDialog(null, "联系方式不能为空");
			return;
		}
		if(StringUtil.isEmpty(bookName)){
			JOptionPane.showMessageDialog(null, "图书名称不能为空");
			return;
		}
		if(StringUtil.isEmpty(sex)){
			JOptionPane.showMessageDialog(null, "性别不能为空");
			return;
		}
		Consumer consumer=new Consumer(Integer.parseInt(id),consumerName,sex,age,number,bookName);
		Connection con=null;
		try {
			con=dbUtil.getCon();
			con=dbUtil.getCon();
			int modifyNum=consumerDao.update(con, consumer);
			if(modifyNum==1){
				JOptionPane.showMessageDialog(null, "修改成功");
				this.resetValue();
				this.fillTable(new Consumer());
			}else{
				JOptionPane.showMessageDialog(null, "修改失败");
			}

		}catch(Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "修改失败");
		}finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();

			}
		}
	}

3.6订单管理模块

此模块用于图书订单管理,查找,修改,删除等功能的实现。

     /**
	 * 订单修改事件
	 */
	protected void orderUpdateActionPerformed(ActionEvent evt) {
		String id=this.idTxt.getText();
		if(StringUtil.isEmpty(id)){
			JOptionPane.showMessageDialog(null, "请选择要修改的记录");
			return;
		}

		String addressee=this.addresseeTxt.getText();
		String number=this.numberTxt.getText();
		String deliveryMent=this.deliveryMentTxt.getText();
		String paymentMethod=this.paymentMethodTxt.getText();
		String shippingAddress=this.shippingAddressTxt.getText();

		if(StringUtil.isEmpty(addressee)){
			JOptionPane.showMessageDialog(null, "收件人不能为空!");
			return;
		}

		if(StringUtil.isEmpty(number)){
			JOptionPane.showMessageDialog(null, "购买数量不能为空!");
			return;
		}

		if(StringUtil.isEmpty(deliveryMent)){
			JOptionPane.showMessageDialog(null, "运送方式不能为空!");
			return;
		}
		if(StringUtil.isEmpty(paymentMethod)){
			JOptionPane.showMessageDialog(null, "支付方式不能为空!");
			return;
		}
		if(StringUtil.isEmpty(paymentMethod)){
			JOptionPane.showMessageDialog(null, "收件地址不能为空!");
			return;
		}

		Book book=(Book) this.bookNameJcb.getSelectedItem();
		int bookId=book.getId();

		Order order =new Order(Integer.parseInt(id), addressee, number, deliveryMent, paymentMethod, shippingAddress,
				bookId);
		Connection con =null;
		try {
			con=dbUtil.getCon();
			int addNum=orderDao.update(con, order);
			if(addNum==1) {
				JOptionPane.showMessageDialog(null, "订单修改成功!");
				resetValue();
				this.fillTable(new Order());
			}else {
				JOptionPane.showMessageDialog(null, "订单修改失败!");
			}
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "订单添加失败!");
			}
		}
	}

4.数据库设计

4.1系统数据库设计

使用sql语句查询项目存储数据用到的数据库表格:

1.管理员信息表

列名 数据类型 长度 主键 非空 自增
Id Int 11
usename varchar 20      
password varchar 20      

2.图书类型信息表

列名 数据类型 长度 主键 非空 自增
id Int 11
BookTypeName Varchar 20      
bookTypeDes Varchar 20      

3.图书信息表

列名 数据类型 长度 主键 非空 自增
Bookname Int 11
Author Varchar 20      
Sex Varchar 10      
Price Float 10      
bookTypeId Int 11      
bookDesc Varchar 1000      

4.订单信息表

列名 数据类型 长度 主键 非空 自增
Buyid Int 11
Name Varchar 20      
Sex Varchar 20      
Buybooknamtel Varchar 20      
Way Varchar 20      
Address Varchar 20      

5.买家信息表

列名 数据类型 长度 主键 非空 自增
Id Int 11
Consumername Varchar 50      
Sex Varchar 50      
Age Varchar 50      
Number Varchar 50      
Bookname Varchar 50      

4.2系统E-R图设计

5.JDBC连接数据库

一定要安装数据库jdbc驱动包!

代码展示:

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;

/**
 * 数据库工具类
 */
public class DbUtil {

	private String jdbcName="com.mysql.cj.jdbc.Driver";      // 驱动名称
	数据库连接地址   由于数据库为最新版本  导致驱动名称已改为com.mysql.cj.jdbc.Driver
	//由于时区错乱  执行命令给MySQL服务器设置时区为东八区    serverTimezone=GMT%2B8
	private String dbUrl="jdbc:mysql://localhost:3306/db_book?serverTimezone=GMT%2B8";// 数据库连接地址
	private String dbuserName = "root";                         // 用户名
	private String dbpassWord = "abc123";                         // 密码

	/**
	 * 获取数据库连接
	 */
	public Connection getCon()throws Exception{
		Class.forName(jdbcName);
		Connection con=DriverManager.getConnection(dbUrl, dbuserName, dbpassWord);
		return con;
	}

	/**
	 * 关闭数据库连接
	 */
	public void closeCon(Connection con)throws Exception{
		if(con!=null){
			con.close();
		}
	}

	public static void main(String[] args) {
		DbUtil dbUtil=new DbUtil();
		try {
			dbUtil.getCon();
			System.out.println("数据库连接成功!");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("数据库连接失败");
		}
	}
}

以上就是Java实战之网上书店管理系统的实现的详细内容,更多关于Java书店管理系统的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java设计模块系列之书店管理系统单机版(一)

    书店管理系统: 项目练习目标 : 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理的Java应用程序包结构 6.综合应用JSE所学习的知识 7.在应用中合理使用集合框架 8.在应用中综合使用swing的常用组件 9.基本的表现层的实现机制 10.IO流和文件的基本操作 11.培养良好的Java编程习惯 12.培养调试Java程序的能力,培养改错的能力 项目功能需求 : 1.能进行操作用户的注册,修改基本信息

  • Java设计模块系列之书店管理系统单机版(三)

    介绍 今天对系列二的一个添加用户的输入小bug进行了解决, 增加了用户模块的,删除用户,和修改用户模块. 下面的代码是相对于系列二来说进行了修改或者是增加的类. 先看AddPanel类的修改: 在收集参数的时候进行防范就可防止那个bug了. cn.hncu.bookStore.user.ui; AddPanel类:(添加用户模块) /* * AddPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.u

  • Java设计模块系列之书店管理系统单机版(二)

    Java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): http://www.jb51.net/article/91004.htm 介绍 小提示:上面一点有一个目录,可以快速定位到自己需要看的类. 今天对前面的代码有了小小的修改,让代码更加完善了一点. 至于用户唯一标识码uuid,会在以后修改成程序内部生成的, 现在的uuid还是由用户自己设置. 今天对这个程序,添加了用户界面的表现层的一部分,增加了公共类 枚举, 下面贴出目前我写的这个程序的全部代码:我会逐渐的写完这个程序的,请大

  • Java实战之医院管理系统的实现

    目录 项目介绍 环境需要 技术栈 使用说明 效果图展示 核心代码 用户管理控制层 医生管理控制层 病房管理控制层 项目介绍 医院管理系统,分为管理员.医生.病人三种角色: 管理员主要功能包括: 首页.系统管理:医生管理.患者管理.药品管理:预约管理:病史管理:住院信息管理:管理员用户管理: 医生主要功能包括:首页.就医/查看病史: 病人主要功能包括:首页.病史.住院信息.挂号: 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. 2.IDE环境

  • Java实战之药品管理系统的实现

    目录 项目介绍 环境需要 技术栈 使用说明 效果图展示 实现核心代码 用户相关的controller控制层 药品相关的controller 供应商相关的controller 项目介绍 本项目属于前后端分离的项目,分为两个角色药品管理员和取药处人员 药品管理员: 登录.退出.药品信息录入.药厂信息录入.采购员信息录入.药品信息浏览.药厂信息浏览.采购人员信息浏览.药品信息查询入库修改删除.药厂信息入库修改删除.采购员信息入库修改删除.入库记录浏览.出库记录浏览.系统帮助 取药处人员: 登录.退出.

  • Java实战之网上书店管理系统的实现

    目录 1.效果展示 2.需求功能 3.系统总体设计及部分代码 3.1登录模块设计 3.2新用户的注册 3.3图书添加模块 3.4图书添加事件 3.5买家信息维护 3.6订单管理模块 4.数据库设计 4.1系统数据库设计 4.2系统E-R图设计 5.JDBC连接数据库 1.效果展示 2.需求功能 用户可以进行注册登陆系统,在用户的界面上,其可以进行查看网上书店里的图书类别和所在类别下的图书,根据自己的需求可在订单项目里添加订单购买自己喜欢的图书: 管理员可以通过自己的账号登录到管理员系统对书店进行

  • Java实战之客户信息管理系统

    一.软件设计结构 对于初学者来说,弄清框架显得尤为重要 首先该软件有以下三种模块组成 二.MVC设计模式 模型层:Customer处理数据 控制层:CustomerList处理业务逻辑 视图层:CustomerView显示数据 以下三点建议结合代码理解 1.Customer为实体对象,用于封装客户信息 2.CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加.修改.删除和遍历的方法,供CustomerView调用 3.Customer

  • JAVA实战练习之图书管理系统实现流程

    目录 前言 项目说明: 项目功能如下: 项目分析: (-)用户管理模块 (二)基本信息维护模块 读者管理模块 前言 长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐.在借书时,读者首先将要借的书和借阅证交给工作人员,然后工作人员将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息.在还书时,读者首先将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息.太过于繁琐了!所以,我们需求设计一个图书管理

  • Java 实战范例之员工管理系统的实现

    一.项目简述 本系统功能包括:分为前端翻后端部分,包括用户,区分晋通用户以及誉里员用户,包括首页展示,部门管理,人事管理,员工管理三个模块等等. 二.项目运行 环境配置: Jdkl . 8 + Tomcats . 5 + Mysql + HBuilderX ( Webstorm 也行)+ Eclispe ( IntelliJ IDEA,Eclispe , MyEclispe , Sts 都支持). 项目技术: html + css +js + vue + v 一 charts + electro

  • Java 实战项目之仓库管理系统的实现流程

    一.项目简述 功能包括: 仓库管理,出入库管理,仓库人员管理,基本信息管理, 供应商信息,系统管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等. 客户信息管理

  • Java 实战项目之毕业设计管理系统的实现流程

    一.项目简述 功能包括: 该系统不错分为学生,教师,管理员,教导主任四种角 色,包括学生管理,教师管理,学生选题,教师选题,主 任审核,管理员审核,开题报告,中期检查,论文提交, 文件管理等等非常不错. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + Ja

  • Java 实战项目之教材管理系统的实现流程

    一.项目简述 功能包括: 管理员可以增删改查教材.教材商.入库教材.用户(用 户包括学生和教师)可以对教材商.教材进行.Excel的导入 导出操作.教师以领取入库的教材,可以退还教材.学生只能在对应的教师那里领取教材,并且可以退还教材. 查询自己已经领取的教材.并且对已领教材付款等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spr

  • Java实战之酒店人事管理系统的实现

    目录 一.项目运行 二.效果图 三.核心代码 用户管理注册登录控制层 房间管理控制层 订单管理控制层 角色管理控制层 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax 等等 二.效果图 三.核心代码 用户管理

  • Java实战之课程信息管理系统的实现

    目录 一.项目运行 二.效果图展示 三.核心代码 用户管理控制层 排课控制层 公告控制层 角色控制层 一.项目运行 环境配置: Jdk1.8 + Tomcat8.0 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: Springboot + SpringMVC + MyBatis + FreeMarker + JavaScript + JQuery + Ajax + maven等等. 二.效果图展示 三.核心代码 用户

  • Java 实战项目锤炼之网上图书馆管理系统的实现流程

    一.项目简述 功能: 区分为管理员用户和普通用户,普通用户:用户登录,个 人信息修改,图书查询,用户借阅,用户归还,管理员用 户:图书馆里,归还管理,借阅信息查询,图书维护,分 类管理,读者管理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP + Servlert + html+ css + JavaScript + JQuery

随机推荐