標籤:
書店管理系統:
項目練習目標 :
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-單機版的書店管理系統(系列 一 )