欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)戰(zhàn)之網(wǎng)上書店管理系統(tǒng)的實(shí)現(xiàn)

 更新時(shí)間:2022年06月07日 16:15:40   作者:橙子!  
本文將利用Java語言實(shí)現(xiàn)網(wǎng)上書店管理系統(tǒng)。其功能一般包括:圖書信息管理、用戶信息管理、圖書購買、圖書訂單查看、圖書添加、圖書維護(hù)等等,感興趣的可以了解一下

1.效果展示

2.需求功能

用戶可以進(jìn)行注冊(cè)登陸系統(tǒng),在用戶的界面上,其可以進(jìn)行查看網(wǎng)上書店里的圖書類別和所在類別下的圖書,根據(jù)自己的需求可在訂單項(xiàng)目里添加訂單購買自己喜歡的圖書;

管理員可以通過自己的賬號(hào)登錄到管理員系統(tǒng)對(duì)書店進(jìn)行管理,其可實(shí)現(xiàn)對(duì)圖書的添加,修改,查詢,和刪除功能,可以查看用戶的訂單,修改和維護(hù)訂單。添家客戶的信息用以統(tǒng)計(jì)數(shù)據(jù)。

在構(gòu)造系統(tǒng)時(shí),首先從需求出發(fā)構(gòu)造數(shù)據(jù)庫,然后再由數(shù)據(jù)庫表結(jié)合需求劃分系統(tǒng)功能模塊。這樣,就把一個(gè)大的系統(tǒng)解成了幾個(gè)小系統(tǒng)。這里把系統(tǒng)劃分為了三個(gè)模塊:用戶登錄模塊,管理員模塊,用戶購買模塊。模塊分別能夠?qū)崿F(xiàn)以下功能:

  • 登錄模塊:實(shí)現(xiàn)登錄,注冊(cè)功能。
  • 管理員模塊:實(shí)現(xiàn)對(duì)圖書的添加修改和刪除以及對(duì)訂單的添加修改和刪除功能。
  • 用戶購買模塊:實(shí)現(xiàn)對(duì)圖書的查找以及對(duì)所需圖書的下單功能。

3.系統(tǒng)總體設(shè)計(jì)及部分代碼

3.1登錄模塊設(shè)計(jì)

用戶正確輸入用戶名和密碼,連接到數(shù)據(jù)庫,登錄成功!

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, "用戶名或者密碼錯(cuò)誤!");
			}
 		
		} catch (Exception e) {
			// TODO 自動(dòng)生成的 catch 塊
			e.printStackTrace();
		}

3.2新用戶的注冊(cè)

此模塊的核心是創(chuàng)建實(shí)例化對(duì)象。

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, "注冊(cè)成功!");
				resetValue();
			}else{
				JOptionPane.showMessageDialog(null, "注冊(cè)失??!");
			}

		}catch(Exception e) {

		}finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO 自動(dòng)生成的 catch 塊
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "注冊(cè)失??!");
			}
		}
	}

3.3圖書添加模塊

管理員在此界面上可對(duì)系統(tǒng)里的圖書進(jìn)行查詢修改和刪除。

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圖書添加事件

此界面主要實(shí)現(xiàn)圖書的添加功能。

/**
*圖書添加事件
*/
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, "圖書價(jià)格不能為空!");
			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買家信息維護(hù)

此模塊主要用于對(duì)買家信息的查找和維護(hù)。

	/**
	 * 買家信息搜索事件處理
	 */
	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); // 設(shè)置成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 自動(dòng)生成的 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, "請(qǐng)選擇要修改的記錄");
			return;
		}
		if(StringUtil.isEmpty(consumerName)){
			JOptionPane.showMessageDialog(null, "購書者名稱不能為空");
			return;
		}
		if(StringUtil.isEmpty(age)){
			JOptionPane.showMessageDialog(null, "年齡不能為空");
			return;
		}
		if(StringUtil.isEmpty(number)){
			JOptionPane.showMessageDialog(null, "聯(lián)系方式不能為空");
			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 自動(dòng)生成的 catch 塊
				e.printStackTrace();

			}
		}
	}

3.6訂單管理模塊

此模塊用于圖書訂單管理,查找,修改,刪除等功能的實(shí)現(xiàn)。

     /**
	 * 訂單修改事件
	 */
	protected void orderUpdateActionPerformed(ActionEvent evt) {
		String id=this.idTxt.getText();
		if(StringUtil.isEmpty(id)){
			JOptionPane.showMessageDialog(null, "請(qǐng)選擇要修改的記錄");
			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, "購買數(shù)量不能為空!");
			return;
		}

		if(StringUtil.isEmpty(deliveryMent)){
			JOptionPane.showMessageDialog(null, "運(yùn)送方式不能為空!");
			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 自動(dòng)生成的 catch 塊
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "訂單添加失?。?);
			}
		}
	}

4.數(shù)據(jù)庫設(shè)計(jì)

4.1系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)

使用sql語句查詢項(xiàng)目存儲(chǔ)數(shù)據(jù)用到的數(shù)據(jù)庫表格:

1.管理員信息表

列名數(shù)據(jù)類型長(zhǎng)度主鍵非空自增
IdInt11
usenamevarchar20   
passwordvarchar20   

2.圖書類型信息表

列名數(shù)據(jù)類型長(zhǎng)度主鍵非空自增
idInt11
BookTypeNameVarchar20   
bookTypeDesVarchar20   

3.圖書信息表

列名數(shù)據(jù)類型長(zhǎng)度主鍵非空自增
BooknameInt11
AuthorVarchar20   
SexVarchar10   
PriceFloat10   
bookTypeIdInt11   
bookDescVarchar1000   

4.訂單信息表

列名數(shù)據(jù)類型長(zhǎng)度主鍵非空自增
BuyidInt11
NameVarchar20   
SexVarchar20   
BuybooknamtelVarchar20   
WayVarchar20   
AddressVarchar20   

5.買家信息表

列名數(shù)據(jù)類型長(zhǎng)度主鍵非空自增
IdInt11
ConsumernameVarchar50   
SexVarchar50   
AgeVarchar50   
NumberVarchar50   
BooknameVarchar50   

4.2系統(tǒng)E-R圖設(shè)計(jì)

5.JDBC連接數(shù)據(jù)庫

一定要安裝數(shù)據(jù)庫jdbc驅(qū)動(dòng)包!

代碼展示:

package com.util;

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

/**
 * 數(shù)據(jù)庫工具類
 */
public class DbUtil {

	private String jdbcName="com.mysql.cj.jdbc.Driver";      // 驅(qū)動(dòng)名稱
	數(shù)據(jù)庫連接地址   由于數(shù)據(jù)庫為最新版本  導(dǎo)致驅(qū)動(dòng)名稱已改為com.mysql.cj.jdbc.Driver
	//由于時(shí)區(qū)錯(cuò)亂  執(zhí)行命令給MySQL服務(wù)器設(shè)置時(shí)區(qū)為東八區(qū)    serverTimezone=GMT%2B8
	private String dbUrl="jdbc:mysql://localhost:3306/db_book?serverTimezone=GMT%2B8";// 數(shù)據(jù)庫連接地址
	private String dbuserName = "root";                         // 用戶名
	private String dbpassWord = "abc123";                         // 密碼


	/**
	 * 獲取數(shù)據(jù)庫連接
	 */
	public Connection getCon()throws Exception{
		Class.forName(jdbcName);
		Connection con=DriverManager.getConnection(dbUrl, dbuserName, dbpassWord);
		return con;
	}

	/**
	 * 關(guān)閉數(shù)據(jù)庫連接
	 */
	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("數(shù)據(jù)庫連接成功!");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("數(shù)據(jù)庫連接失敗");
		}
	}
}

以上就是Java實(shí)戰(zhàn)之網(wǎng)上書店管理系統(tǒng)的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Java書店管理系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JAVA8如何妙用Optional解決NPE問題詳解

    JAVA8如何妙用Optional解決NPE問題詳解

    在Java中,null代表一個(gè)不存在的對(duì)象,如果對(duì)它進(jìn)行操作就會(huì)拋出java.lang.NullPointerException異常,下面這篇文章主要給大家介紹了關(guān)于JAVA8如何妙用Optional解決NPE問題的相關(guān)資料,需要的朋友可以參考下
    2018-06-06
  • Java反射(JDK)與動(dòng)態(tài)代理(CGLIB)詳解

    Java反射(JDK)與動(dòng)態(tài)代理(CGLIB)詳解

    下面小編就為大家?guī)硪黄獪\談Java反射與動(dòng)態(tài)代理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-08-08
  • Java實(shí)現(xiàn)直接插入排序與折半插入排序的示例詳解

    Java實(shí)現(xiàn)直接插入排序與折半插入排序的示例詳解

    這篇文章主要為大家詳細(xì)介紹了插入排序中兩個(gè)常見的排序:直接插入排序與折半插入排序。本文用Java語言實(shí)現(xiàn)了這兩個(gè)排序算法,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解

    Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解

    下面小編就為大家?guī)硪黄猄pring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

    這篇文章主要介紹了Spring框架花式創(chuàng)建Bean的n種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • macbook中springboot的jmeter壓測(cè)示例

    macbook中springboot的jmeter壓測(cè)示例

    這篇文章主要介紹了macbook中springboot的jmeter壓測(cè)示例詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • spring boot springjpa 支持多個(gè)數(shù)據(jù)源的實(shí)例代碼

    spring boot springjpa 支持多個(gè)數(shù)據(jù)源的實(shí)例代碼

    這篇文章主要介紹了spring boot springjpa 支持多個(gè)數(shù)據(jù)源的實(shí)例代碼,需要的朋友可以參考下
    2018-04-04
  • java讀取csv文件內(nèi)容示例代碼

    java讀取csv文件內(nèi)容示例代碼

    這篇文章主要介紹了java讀取csv文件內(nèi)容的示例,大家參考使用
    2013-12-12
  • MyBatis CodeHelperPro激活方法詳細(xì)教程

    MyBatis CodeHelperPro激活方法詳細(xì)教程

    MyBatisCodeHelper-Pro是IDEA下的一個(gè)插件,功能類似mybatis plugin,今天小編給大家分享MyBatis CodeHelperPro激活方法,需要的朋友跟隨小編一起看看吧
    2021-07-07
  • 詳解Java如何實(shí)現(xiàn)圖像灰度化

    詳解Java如何實(shí)現(xiàn)圖像灰度化

    這篇文章主要介紹了灰度化的幾種方法,以及如何使用Java實(shí)現(xiàn)灰度化。同時(shí)分析了網(wǎng)上一種常見卻并不妥當(dāng)?shù)腏ava灰度化實(shí)現(xiàn),以及證明了opencv的灰度化是使用“加權(quán)灰度化”法,下面一起來看看。
    2016-08-08

最新評(píng)論