最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

管理員可以通過自己的賬號登錄到管理員系統(tǒng)對書店進(jìn)行管理,其可實(shí)現(xiàn)對圖書的添加,修改,查詢,和刪除功能,可以查看用戶的訂單,修改和維護(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)登錄,注冊功能。
  • 管理員模塊:實(shí)現(xiàn)對圖書的添加修改和刪除以及對訂單的添加修改和刪除功能。
  • 用戶購買模塊:實(shí)現(xiàn)對圖書的查找以及對所需圖書的下單功能。

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新用戶的注冊

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

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 自動(dòng)生成的 catch 塊
				e.printStackTrace();
				JOptionPane.showMessageDialog(null, "注冊失??!");
			}
		}
	}

3.3圖書添加模塊

管理員在此界面上可對系統(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ù)

此模塊主要用于對買家信息的查找和維護(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, "請選擇要修改的記錄");
			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, "請選擇要修改的記錄");
			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ù)類型長度主鍵非空自增
IdInt11
usenamevarchar20   
passwordvarchar20   

2.圖書類型信息表

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

3.圖書信息表

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

4.訂單信息表

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

5.買家信息表

列名數(shù)據(jù)類型長度主鍵非空自增
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)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺析java中的取整(/)和求余(%)

    淺析java中的取整(/)和求余(%)

    這篇文章主要介紹了淺析java中的取整(/)和求余(%),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • idea編寫java程序詳細(xì)圖文步驟

    idea編寫java程序詳細(xì)圖文步驟

    這篇文章主要給大家介紹了關(guān)于idea編寫java程序的詳細(xì)圖文步驟,IDEA是用于Java語言開發(fā)的集成環(huán)境,它是業(yè)界公認(rèn)的目前用于Java程序開發(fā)最好的工具,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Springboot項(xiàng)目全局異常統(tǒng)一處理案例代碼

    Springboot項(xiàng)目全局異常統(tǒng)一處理案例代碼

    最近在做項(xiàng)目時(shí)需要對異常進(jìn)行全局統(tǒng)一處理,主要是一些分類入庫以及記錄日志等,因?yàn)轫?xiàng)目是基于Springboot的,所以去網(wǎng)絡(luò)上找了一些博客文檔,然后再結(jié)合項(xiàng)目本身的一些特殊需求做了些許改造,現(xiàn)在記錄下來便于以后查看
    2023-01-01
  • 深入解析Java的線程同步以及線程間通信

    深入解析Java的線程同步以及線程間通信

    這篇文章主要介紹了Java的線程同步以及線程間通信,多線程編程是Java學(xué)習(xí)中的重點(diǎn)和難點(diǎn),需要的朋友可以參考下
    2015-09-09
  • java UDP通信客戶端與服務(wù)器端實(shí)例分析

    java UDP通信客戶端與服務(wù)器端實(shí)例分析

    這篇文章主要介紹了java UDP通信客戶端與服務(wù)器端,結(jié)合實(shí)例形式分析了java基于UDP通信的客戶端與服務(wù)器端具體實(shí)現(xiàn)技巧及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • 一文搞懂Java的ThreadPoolExecutor原理

    一文搞懂Java的ThreadPoolExecutor原理

    都說經(jīng)典的就是好的,這句話放在Java的ThreadPoolExecutor上那是一點(diǎn)都沒錯(cuò),像現(xiàn)在數(shù)據(jù)庫連接的池化實(shí)現(xiàn),或者像Tomcat這種WEB服務(wù)器的線程管理,處處都有著ThreadPoolExecutor的影子,本篇文章將結(jié)合源碼實(shí)現(xiàn),對ThreadPoolExecutor的原理進(jìn)行一個(gè)深入學(xué)習(xí)
    2023-06-06
  • Java調(diào)用WebService服務(wù)的三種方式總結(jié)

    Java調(diào)用WebService服務(wù)的三種方式總結(jié)

    雖然WebService這個(gè)框架已經(jīng)過時(shí),但是有些公司還在使用,在調(diào)用他們的服務(wù)的時(shí)候就不得不面對各種問題,本篇文章總結(jié)了最近我調(diào)用?WebService的心路歷程,3種方式可以分別嘗試,需要的朋友可以參考下
    2023-08-08
  • SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下
    2023-09-09
  • 深入理解java異常處理機(jī)制的原理和開發(fā)應(yīng)用

    深入理解java異常處理機(jī)制的原理和開發(fā)應(yīng)用

     Java異常處理機(jī)制在日常開發(fā)中應(yīng)用頻繁,本篇文章主要在基礎(chǔ)的使用方法上,更進(jìn)一步的,如何更加合理的使用異常機(jī)制,希望可以對各位朋友能有所幫助。
    2017-04-04
  • JavaWeb文件上傳與下載功能解析

    JavaWeb文件上傳與下載功能解析

    這篇文章主要為大家詳細(xì)介紹了JavaWeb文件上傳與下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評論

布尔津县| 鹿邑县| 灌阳县| 兴隆县| 沙坪坝区| 海门市| 苗栗县| 崇文区| 会泽县| 宿松县| 天等县| 木里| 澄城县| 中宁县| 恩平市| 通榆县| 北碚区| 墨竹工卡县| 沛县| 策勒县| 望都县| 新闻| 屏东市| 远安县| 明溪县| 扬州市| 广灵县| 台东市| 隆德县| 井陉县| 山阳县| 德庆县| 改则县| 炎陵县| 兴城市| 新河县| 民乐县| 夏河县| 临城县| 宁强县| 上饶县|