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

來源:互聯網
上載者:User

標籤:

書店管理系統:

項目練習目標 :
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<E> List<E> readFormFile(String fileName,E ee){        List<E> list = new ArrayList<E>();        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<E>) 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<Object> list, String fileName){        ObjectOutputStream out = null;        try {            out = new ObjectOutputStream(new FileOutputStream(fileName));            out.writeObject(list);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            if(out!=null){                try {                    out.close();                } catch (IOException e) {                    throw new RuntimeException("資料庫關閉失敗!");                }            }        }    }}

封裝的使用者資料:

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

package cn.hncu.bookStore.user.vo;/** * @author 陳浩翔 * @version 1.0 *  * <br/> * 用於儲存使用者資訊的值對象<br/> * 1、可序列化<br/> * 2、私人化所有變數成員,補setter-getters方法<br/> * 3、寫equals和hashCode方法----用主鍵(uuid)唯一標識碼<br/> * 4、toString方法<br/> * 5,空參構造方法<br/> */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<UserModel> getAll();    /**     * 功能:按照一定的尋找條件進行尋找,     * <br/>     * 把滿足尋找條件的使用者資料返回。     *      * @param uqm---被封裝的尋找條件     * @return---滿足尋找條件的使用者資料集合     */    public List<UserModel> getbyCondition(UserQueryModel uqm);    /**     * 功能:得到一個確定的使用者的資料資料     *      * @param uuid---使用者唯一標識碼     * @return ---返回按這個唯一標識碼找到的使用者資料     */    public UserModel getSingle(String uuid);}

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.