程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java-單機版的書店管理系統(系列 一 )

Java-單機版的書店管理系統(系列 一 )

編輯:JAVA綜合教程

Java-單機版的書店管理系統(系列 一 )


書店管理系統:

項目練習目標 :
1、Java應用程序基本分析
2、培養面向對象編程的基本思想
3、Java基本設計模式綜合應用
4、掌握分層和接口的基本設計
5、構建合理的Java應用程序包結構
6、綜合應用JSE所學習的知識
7、在應用中合理使用集合框架
8、在應用中綜合使用swing的常用組件
9、基本的表現層的實現機制
10、IO流和文件的基本操作
11、培養良好的Java編程習慣
12、培養調試Java程序的能力,培養改錯的能力

項目功能需求 :
1、能進行操作用戶的注冊,修改基本信息,刪除和查詢。
2、能對圖書的基本信息進行增加、刪除、修改和查詢操作。
3、能填寫進貨單,一張進貨單帶有多條具體的進貨信息,進貨的書籍必須是圖書管理裡面已經有的;進貨的同時修改庫存對應書籍的存貨量。
4、能填寫銷售單,一張銷售單帶有多條具體的銷售信息,銷售的書籍必須是圖書管理裡面已經有的,而且銷售的數量不能超過當前庫存的數量;銷售的同時修改庫存對應書籍的存貨量。
5、可以查看庫存的明細,可以按照條件進行查找具體的圖書的庫存值。
6、權限方面進行簡化,做固定的權限控制。把用戶按照模塊分成不同操作權限的人員,特設一個admin的用戶,可以操作全部的功能。

項目基本設計 :
★ 架構設計
整體框架、模塊劃分
模塊劃分:用戶、圖書、進貨、銷售和庫存5個模塊

★ 系統功能結構設計
每個功能模塊的具體功能子模塊

★ 數據庫設計
項目框架實現:分模塊、分層、分包、構建應用程序

1、用戶管理(User.txt)
\
說明:其中的type為int類型,用來表示操作用戶的類型。
1——表示為admin,可以進行全部操作
2——表示為能操作圖書模塊的人員
3——表示為能操作進貨模塊的人員
4——表示為能操作銷售模塊的人員
5——表示為能操作庫存模塊的人員

2、圖書管理(Book.txt)

3、進貨管理(InMain.txt)

4、進貨明細管理(InDetail.txt)

5、銷售管理(OutMain.txt)

6、銷售明細管理(OutDetail.txt)

7、庫存管理(Stock.txt)

項目分包

第一層:按照模塊分
用戶模塊(user)、
圖書(book)、
進貨(in)、
銷售(out)、
庫存(store)

第二層:按照三層模式分
表現層(ui)、邏輯層(business) 和 數據層(dao)
通常還要增加一個值對象層(vo)

第三層:按照層內劃分去分
視具體情況而定,如business和dao內還要再采用鐵三角的形式建子包,而ui和vo則不需要再劃分子包)。

項目分層思想:

未完善,請繼續關注本系列(二)

下面為部分代碼:(util裡面的一個公共類)
cn.hncu.bookStore.util
FileIoUtil.java:

package cn.hncu.bookStore.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 * 用戶的公用數據讀取寫入類
 * @author 陳浩翔
 *
 * @version 1.0
 */
public class FileIoUtil {

    public FileIoUtil() {
    }

    /**
     * 從數據庫中讀取所有的數據並返回出來
     * 
     * @param fileName(數據表對應的文件名字)
     * @param ee(傳遞過來的泛型的類型!)
     * @return 所有表的記錄!
     */
    @SuppressWarnings("unchecked")//壓警告
    public static List readFormFile(String fileName,E ee){
        List list = new ArrayList();
        final File file = new File(fileName);

        ObjectInputStream in =null;
        if(!file.exists()){
            JOptionPane.showMessageDialog(null, "數據表不存在!");
            return list;
        }
        try {
            in = new ObjectInputStream(new FileInputStream(fileName));
            try {
                list = (List) in.readObject();

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(in!=null){
                try {
                    in.close();
                } catch (IOException e) {
                    throw new RuntimeException("數據庫關閉失敗");
                }
            }
        }
        return list;
    }


    /**
     * 寫入一個list集合進入數據文件fileName
     * 
     * @param list(需要存儲的數據集合)
     * @param fileName(寫入到哪個文件的文件名字)
     */
    public static void write2file(List

封裝的用戶數據:

cn.hncu.bookStore.user.vo;
UserModel.java

package cn.hncu.bookStore.user.vo;

/**
 * @author 陳浩翔
 * @version 1.0
 * 
 * 

 * 用於保存用戶信息的值對象

 * 1、可序列化

 * 2、私有化所有變量成員,補setter-getters方法

 * 3、寫equals和hashCode方法----用主鍵(uuid)唯一標識碼

 * 4、toString方法

 * 5,空參構造方法

 */

public class UserModel {
    private String uuid;//用戶唯一標識碼
    private String name;//用戶名
    private int type;//用戶類型
    private String pwd;//用戶密碼
    public UserModel() {
    }

    /**
     * 功能:得到uuid-用戶唯一的標識碼
     * 
     * @return 返回uuid-用戶唯一的標識碼
     */
    public String getUuid() {
        return uuid;
    }

    /**
     * 功能:設置uuid-用戶唯一的標識碼
     * @param uuid-用戶唯一的標識碼-String型參數
     */
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    /**
     * 功能:得到用戶的用戶名
     * @return---name-用戶名
     */
    public String getName() {
        return name;
    }

    /**
     * 功能:設置用戶的用戶名
     * 
     * @param name--用戶設置的用戶名,String型參數
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 功能:得到用戶的類型:
     *  1——表示為admin,可以進行全部操作
     *  2——表示為能操作圖書模塊的人員
     *  3——表示為能操作進貨模塊的人員
     *  4——表示為能操作銷售模塊的人員
     *  5——表示為能操作庫存模塊的人員
     * @return 用戶的類型
     */
    public int getType() {
        return type;
    }

    /**
     *  功能:設置用戶的類型:
     *  1——表示為admin,可以進行全部操作
     *  2——表示為能操作圖書模塊的人員
     *  3——表示為能操作進貨模塊的人員
     *  4——表示為能操作銷售模塊的人員
     *  5——表示為能操作庫存模塊的人員
     * @param type--用戶的類型-int型參數
     */
    public void setType(int type) {
        this.type = type;
    }

    /**
     *功能:得到用戶的密碼
     * @return String型,用戶的密碼
     */
    public String getPwd() {
        return pwd;
    }

    /**
     * 功能:設置用戶的密碼
     * @param pwd--String型參數
     */
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        UserModel other = (UserModel) obj;
        if (uuid == null) {
            if (other.uuid != null)
                return false;
        } else if (!uuid.equals(other.uuid))
            return false;
        return true;
    }
    @Override
    public String toString() {
        return "UserModel [uuid=" + uuid + ", name=" + name + ", type=" + type
                + ", pwd=" + pwd + "]";
    }

}

封裝的用戶查詢數據:
cn.hncu.bookStore.user.vo;
UserQueryModel.java

package cn.hncu.bookStore.user.vo;

public class UserQueryModel extends UserModel{  
}

雖然這個類什麼都沒有,就只是繼承了UserModel,但還是必須寫,這是大家都遵守的java編寫規范!

用戶Dao(數據層):(接口)
cn.hncu.bookStore.user.dao.dao;
UserDao.java

package cn.hncu.bookStore.user.dao.dao;

import java.util.List;

import cn.hncu.bookStore.user.vo.UserModel;
import cn.hncu.bookStore.user.vo.UserQueryModel;

/**
 * 
 * @author 陳浩翔
 *
 * @version 1.0
 * 用戶模塊的數據層接口
 */
public interface UserDao {
    /**
     * 功能:創建一個用戶
     * 
     * @param userModel---將要創建的用戶數據
     * @return---true表示創建成功,false表示創建失敗
     */
    public boolean create(UserModel user);

    /**
     * 功能:刪除一個用戶
     * 
     * @param uuid---用戶唯一的標識碼,每個用戶都不會相同
     * @return---true表示刪除成功,false表示刪除失敗
     */
    public boolean delete(String uuid);

    /**
     * 功能:修改用戶數據資料
     * 
     * @param user---需要修改的用戶數據參數名
     * @return 返回true-表示修改成功了,返回false-表示修改失敗
     */
    public boolean update(UserModel user);

    /**
     * 功能:得到所有的用戶數據
     * 
     * @return---一個UserModel集合,也就是用戶的數據
     */
    public List getAll();

    /**
     * 功能:按照一定的查找條件進行查找,
     * 

     * 把滿足查找條件的用戶數據返回。
     * 
     * @param uqm---被封裝的查找條件
     * @return---滿足查找條件的用戶數據集合
     */
    public List getbyCondition(UserQueryModel uqm);

    /**
     * 功能:得到一個確定的用戶的數據資料
     * 
     * @param uuid---用戶唯一標識碼
     * @return ---返回按這個唯一標識碼找到的用戶數據
     */
    public UserModel getSingle(String uuid);

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved