好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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书店管理系统的资料请关注其它相关文章!

原文链接:https://blog.csdn.net/zhangxia_/article/details/125122257

查看更多关于Java实战之网上书店管理系统的实现的详细内容...

  阅读:53次