亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1.效果展示

2.需求功能

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

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

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

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

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

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

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

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圖書(shū)添加模塊

管理員在此界面上可對(duì)系統(tǒng)里的圖書(shū)進(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ū)添加事件

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

/**
*圖書(shū)添加事件
*/
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, "圖書(shū)名稱不能為空!");
			return;
		}

		if(StringUtil.isEmpty(author)){
			JOptionPane.showMessageDialog(null, "圖書(shū)作者不能為空!");
			return;
		}

		if(StringUtil.isEmpty(price)){
			JOptionPane.showMessageDialog(null, "圖書(shū)價(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, "圖書(shū)添加成功!");
				resetValue();
			}else{
				JOptionPane.showMessageDialog(null, "圖書(shū)添加失敗!");
			}
		}catch(Exception e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "圖書(shū)添加失敗!");
		}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);
		}
	}

	/**
	 * 初始化圖書(shū)類別下拉框
	 */
	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, "購(gòu)書(shū)者名稱不能為空");
			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, "圖書(shū)名稱不能為空");
			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ū)訂單管理,查找,修改,刪除等功能的實(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, "購(gòu)買數(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ù)庫(kù)設(shè)計(jì)

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

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

1.管理員信息表

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

2.圖書(shū)類型信息表

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

3.圖書(shū)信息表

列名數(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ù)庫(kù)

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

代碼展示:

package com.util;

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

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

	private String jdbcName="com.mysql.cj.jdbc.Driver";      // 驅(qū)動(dòng)名稱
	數(shù)據(jù)庫(kù)連接地址   由于數(shù)據(jù)庫(kù)為最新版本  導(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ù)庫(kù)連接地址
	private String dbuserName = "root";                         // 用戶名
	private String dbpassWord = "abc123";                         // 密碼


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

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

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

相關(guān)文章

  • JAVA8如何妙用Optional解決NPE問(wèn)題詳解

    JAVA8如何妙用Optional解決NPE問(wèn)題詳解

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了插入排序中兩個(gè)常見(jiàn)的排序:直接插入排序與折半插入排序。本文用Java語(yǔ)言實(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ī)?lái)一篇Spring整合多數(shù)據(jù)源實(shí)現(xiàn)動(dòng)態(tài)切換的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Spring框架花式創(chuàng)建Bean的n種方法(小結(jié))

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

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

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

    這篇文章主要介紹了macbook中springboot的jmeter壓測(cè)示例詳解,本文通過(guò)實(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)上一種常見(jiàn)卻并不妥當(dāng)?shù)腏ava灰度化實(shí)現(xiàn),以及證明了opencv的灰度化是使用“加權(quán)灰度化”法,下面一起來(lái)看看。
    2016-08-08

最新評(píng)論