Java設計模塊系列之書店治理體系單機版(二)。本站提示廣大學習愛好者:(Java設計模塊系列之書店治理體系單機版(二))文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計模塊系列之書店治理體系單機版(二)正文
Java-單機版的書店治理體系(演習設計模塊和思惟_系列 一 ): http://www.jb51.net/article/91004.htm
引見
小提醒:下面一點有一個目次,可以疾速定位到本身須要看的類。
明天對後面的代碼有了小小的修正,讓代碼加倍完美了一點。
至於用戶獨一標識碼uuid,會在今後修正成法式外部生成的,
如今的uuid照樣由用戶本身設置。
明天對這個法式,添加了用戶界面的表示層的一部門,增長了公共類 列舉,
上面貼出今朝我寫的這個法式的全體代碼:我會逐步的寫完這個法式的,請年夜家寧神!(須要完成的功效在這個書店治理體系的系列一可以找到,我為這個系列的文章曾經分類了,便利年夜家尋覓)
這個系列的博客是不會斷的。
如今的代碼分層:
如今的法式運轉後的圖片:
我依照從目次下面到上面的次序貼出代碼:
請留意!這個代碼次序其實不是我寫代碼的次序!
假如你們要參考我的寫,請不要依照我貼的代碼的次序。
應當先寫公共類,對象類。
再次:數據層類—>邏輯層類—>表示層類
如今法式運轉後的部門圖片:
UserTypeEnum類:
cn.hncu.bookStore.common;
UserTypeEnum類:
package cn.hncu.bookStore.common; /** * 功效:用戶類型的列舉!<br/> * 界說在公共模塊。<br/> * 變量:<br/> * ADMIN(1,"超等治理員"),<br/> * BOOK(2,"圖書治理員"),<br/> * IN(3,"進貨治理員"),<br/> * OUT(4,"發賣治理員"),<br/> * STOCK(5,"庫存治理員");<br/> * @author chx * @version 1.0 */ public enum UserTypeEnum { ADMIN(1,"超等治理員"), BOOK(2,"圖書治理員"), IN(3,"進貨治理員"), OUT(4,"發賣治理員"), STOCK(5,"庫存治理員"); private final int type; private final String name; /** * 初始化列舉變量名字 * @param type---列舉變量對應的整型數字 * @param name---列舉變量對應的String型名字 */ private UserTypeEnum(int type, String name) { this.type=type; this.name=name; } /** * 獲得以後列舉變量的數字 * @return---type-編號 */ public int getType() { return type; } /** * 獲得以後列舉變量的中文名字 * @return---name-中文名字 */ public String getName() { return name; } /** * 依據列舉變量的int數字獲得數字對應的列舉變量的中文名字 * @param type---須要傳入的int型參數 * @return ---假如存在如許的數字對應的列舉變量,就前往這個列舉變量的中文名字。 * <br/>---假如不存在如許的數字對應的列舉變量,就拋出一個異常信息。 */ public static String getNameByType(int type){ for(UserTypeEnum userType:UserTypeEnum.values()){ if(userType.getType()==type){ return userType.getName(); } } throw new IllegalArgumentException("列舉中沒有對應的用戶類型:"+type); } /** * 依據列舉變量的name中文名字獲得name對應的列舉變量的int型type * @param name---須要傳入的String型名字 * @return ---假如存在如許的名字對應的列舉變量,就前往這個列舉變量對應的type-int * <br/> ---假如不存在如許的名字對應的列舉變量,就拋出一個異常信息 */ public static int getTypeByName(String name){ for(UserTypeEnum userType:UserTypeEnum.values()){ if(userType.getName().equals(name)){ return userType.getType(); } } throw new IllegalArgumentException("列舉中沒有對應的用戶類型:"+name); } }
UserEbi接口:
cn.hncu.bookStore.user.business.ebi;
UserEbi接口:
package cn.hncu.bookStore.user.business.ebi; import java.util.List; import cn.hncu.bookStore.user.vo.UserModel; import cn.hncu.bookStore.user.vo.UserQueryModel; /** * 邏輯層的接口 * * @author chx * @version 1.0 */ public interface UserEbi { /** * 功效:創立一個用戶 * * @param userModel---將要創立的用戶數據 * @return---true表現創立勝利,false表現創立掉敗 */ public boolean create(UserModel user); /** * 功效:依據用戶的獨一標識碼uuid刪除一個用戶 * * @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); }
UserEbo類:
cn.hncu.bookStore.user.business.ebo;
UserEbo類:
package cn.hncu.bookStore.user.business.ebo; import java.util.List; import cn.hncu.bookStore.user.business.ebi.UserEbi; import cn.hncu.bookStore.user.dao.dao.UserDao; import cn.hncu.bookStore.user.dao.factory.UserDaoFactory; import cn.hncu.bookStore.user.vo.UserModel; import cn.hncu.bookStore.user.vo.UserQueryModel; public class UserEbo implements UserEbi{ private UserDao dao = UserDaoFactory.getUserDao(); @Override public boolean create(UserModel user) { return dao.create(user); } @Override public boolean delete(String uuid) { return dao.delete(uuid); } @Override public boolean update(UserModel user) { return dao.update(user); } @Override public List<UserModel> getAll() { return dao.getAll(); } @Override public List<UserModel> getbyCondition(UserQueryModel uqm) { // TODO Auto-generated method stub return null; } @Override public UserModel getSingle(String uuid) { return dao.getSingle(uuid); } }
UserEbiFactory類:
cn.hncu.bookStore.user.business.factory;
UserEbiFactory類:
package cn.hncu.bookStore.user.business.factory; import cn.hncu.bookStore.user.business.ebi.UserEbi; import cn.hncu.bookStore.user.business.ebo.UserEbo; public class UserEbiFactory { public static UserEbi getUserEbi(){ return new UserEbo(); } }
UserDao接口:
cn.hncu.bookStore.user.dao.dao;
UserDao接口:
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); /** * 功效:依據用戶的獨一標識碼uuid刪除一個用戶 * * @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); }
UserDaoFactory類:
cn.hncu.bookStore.user.dao.factory;
UserDaoFactory類:
package cn.hncu.bookStore.user.dao.factory; import cn.hncu.bookStore.user.dao.dao.UserDao; import cn.hncu.bookStore.user.dao.impl.UserDaoSerImpl; /** * 工場辦法<br/> * new 一個dao的實例 * @author 陳浩翔 * * @version 1.0 * */ public class UserDaoFactory { public static UserDao getUserDao(){ return new UserDaoSerImpl(); } }
UserDaoSerImpl類:
cn.hncu.bookStore.user.dao.impl;
UserDaoSerImpl類:
package cn.hncu.bookStore.user.dao.impl; import java.util.ArrayList; import java.util.List; import cn.hncu.bookStore.user.dao.dao.UserDao; import cn.hncu.bookStore.user.vo.UserModel; import cn.hncu.bookStore.user.vo.UserQueryModel; import cn.hncu.bookStore.util.FileIoUtil; /** * <br/> * 對用戶數據處置的詳細完成類 ----完成了UserDao接口 * * @author 陳浩翔 * * @version 1.0 */ public class UserDaoSerImpl implements UserDao { private static final String FILE_NAME = "User.txt"; @Override public boolean create(UserModel user) { // 1先把已有的數據反序列化(讀)出來 List<UserModel> list = FileIoUtil.readFormFile(FILE_NAME); // 2斷定該用戶能否曾經存在,再決議能否創立 for (UserModel userModel : list) { // 假如2個用戶的uuid相等,用戶就是雷同的 if (userModel.getUuid().equals(user.getUuid())) { return false;// 用戶曾經存在了,前往false } } // 3假如用戶不存在,就創立 list.add(user); FileIoUtil.write2file(list, FILE_NAME); return true;// 創立勝利,前往true } @Override public boolean delete(String uuid) { // 1先把已有的數據反序列化(讀)出來 List<UserModel> list = FileIoUtil.readFormFile(FILE_NAME); // 2斷定該用戶能否曾經存在,再決議能否刪除 // for(int i=0;i<list.size();i++){ // if(list.get(i).getUuid().equals(uuid)){ // list.remove(i); // FileIoUtil.write2file(list, FILE_NAME); // return true; // } // } for (UserModel userModel : list) { // 假如2個用戶的uuid相等,用戶就是雷同的 if (userModel.getUuid().equals(uuid)) { list.remove(userModel); FileIoUtil.write2file(list, FILE_NAME); // 刪除勝利,前往true return true; } } // 3用戶不存在 // 刪除掉敗,前往false return false; } @Override public boolean update(UserModel user) { // 1先把已有的數據反序列化(讀)出來 List<UserModel> list = FileIoUtil.readFormFile(FILE_NAME); // 2斷定該用戶能否曾經存在,再決議能否創立 for (int i = 0; i < list.size(); i++) { // uuid是不克不及改的,經由過程uuid來找到誰人用戶數據,再修正就ok了 if (list.get(i).getUuid().equals(user.getUuid())) { // 將找到的用戶修正成user list.set(i, user); FileIoUtil.write2file(list, FILE_NAME); // 找到用戶,前往true return true; } } // 3若該用戶不存在,則修正掉敗 return false; } @Override public List<UserModel> getAll() { return FileIoUtil.readFormFile(FILE_NAME); } @Override public List<UserModel> getbyCondition(UserQueryModel uqm) { // TODO Auto-generated method stub return null; } @Override public UserModel getSingle(String uuid) { // 1先把已有的數據反序列化(讀)出來 List<UserModel> list = FileIoUtil.readFormFile(FILE_NAME); // 2斷定該用戶能否曾經存在,存在就前往誰人用戶 for (int i = 0; i < list.size(); i++) { if (list.get(i).getUuid().equals(uuid)) { return list.get(i); } } // 3若該用戶不存在,前往null return null; } }
AddPanel類:
cn.hncu.bookStore.user.ui;
AddPanel類:
/* * AddPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.user.ui; import javax.swing.JFrame; import javax.swing.JOptionPane; import cn.hncu.bookStore.common.UserTypeEnum; import cn.hncu.bookStore.user.business.ebi.UserEbi; import cn.hncu.bookStore.user.business.factory.UserEbiFactory; import cn.hncu.bookStore.user.vo.UserModel; import cn.hncu.bookStore.util.FileIoUtil; /** * * @author 陳浩翔 */ public class AddPanel extends javax.swing.JPanel { private JFrame mainFrame = null; /** Creates new form AddPanel */ public AddPanel(JFrame mainFrame) { this.mainFrame = mainFrame; initComponents(); myInitData(); } private void myInitData() { for (UserTypeEnum type : UserTypeEnum.values()) { combType.addItem(type.getName()); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); tfdName = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); tfdUuid = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); tfdPwd2 = new javax.swing.JPasswordField(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); combType = new javax.swing.JComboBox(); tfdPwd = new javax.swing.JPasswordField(); btnAdd = new javax.swing.JButton(); btnBack = new javax.swing.JButton(); setMinimumSize(new java.awt.Dimension(800, 600)); setLayout(null); jLabel1.setFont(new java.awt.Font("微軟雅黑", 1, 48)); jLabel1.setForeground(new java.awt.Color(204, 0, 0)); jLabel1.setText("\u6dfb\u52a0\u7528\u6237"); add(jLabel1); jLabel1.setBounds(270, 30, 230, 80); jLabel2.setFont(new java.awt.Font("微軟雅黑", 0, 18)); jLabel2.setText("\u7528\u6237\u7c7b\u578b:"); add(jLabel2); jLabel2.setBounds(40, 310, 90, 30); tfdName.setFont(new java.awt.Font("Dialog", 1, 18)); tfdName.setAutoscrolls(false); add(tfdName); tfdName.setBounds(420, 160, 120, 30); jLabel3.setFont(new java.awt.Font("微軟雅黑", 0, 18)); jLabel3.setText("uuid:"); add(jLabel3); jLabel3.setBounds(70, 160, 50, 30); tfdUuid.setFont(new java.awt.Font("Dialog", 0, 11)); add(tfdUuid); tfdUuid.setBounds(140, 160, 110, 30); jLabel4.setFont(new java.awt.Font("微軟雅黑", 0, 18)); jLabel4.setText("\u59d3\u540d:"); add(jLabel4); jLabel4.setBounds(360, 160, 50, 30); add(tfdPwd2); tfdPwd2.setBounds(420, 240, 170, 30); jLabel5.setFont(new java.awt.Font("微軟雅黑", 0, 18)); jLabel5.setText("\u5bc6\u7801:"); add(jLabel5); jLabel5.setBounds(70, 240, 50, 30); jLabel6.setFont(new java.awt.Font("微軟雅黑", 0, 18)); jLabel6.setText("\u786e\u8ba4\u5bc6\u7801:"); add(jLabel6); jLabel6.setBounds(330, 240, 90, 30); combType.setFont(new java.awt.Font("Dialog", 1, 18)); combType.setForeground(new java.awt.Color(51, 51, 255)); combType.setModel(new javax.swing.DefaultComboBoxModel( new String[] { "請選擇..." })); add(combType); combType.setBounds(140, 310, 160, 30); tfdPwd.setFont(new java.awt.Font("宋體", 1, 18)); add(tfdPwd); tfdPwd.setBounds(140, 240, 160, 30); btnAdd.setFont(new java.awt.Font("Dialog", 1, 24)); btnAdd.setForeground(new java.awt.Color(0, 204, 204)); btnAdd.setText("\u6dfb\u52a0"); btnAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddActionPerformed(evt); } }); add(btnAdd); btnAdd.setBounds(140, 430, 120, 60); btnBack.setFont(new java.awt.Font("Dialog", 1, 24)); btnBack.setForeground(new java.awt.Color(0, 204, 204)); btnBack.setText("\u8fd4\u56de"); btnBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnBackActionPerformed(evt); } }); add(btnBack); btnBack.setBounds(470, 430, 120, 60); }// </editor-fold> //GEN-END:initComponents private void back() { mainFrame.setContentPane(new ListPanel(mainFrame)); mainFrame.validate(); } /** *監聽前往按鈕 * @param 前往按鈕的點擊監聽 */ private void btnBackActionPerformed(java.awt.event.ActionEvent evt) { back(); } private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { //1搜集參數 String uuid = tfdUuid.getText(); String name = tfdName.getText(); String pwd = new String(tfdPwd.getPassword()); String pwd2 = new String(tfdPwd2.getPassword()); if (!pwd.equals(pwd2)) { JOptionPane.showMessageDialog(null, "兩次暗碼輸出紛歧致,請從新輸出!"); return; } int type = 0; try { type = UserTypeEnum.getTypeByName(combType.getSelectedItem() .toString()); } catch (Exception e) { JOptionPane.showMessageDialog(null, "請指定用戶類型!"); return; } //2組織參數 UserModel user = new UserModel(); user.setName(name); user.setPwd(pwd); user.setType(type); user.setUuid(uuid); //3挪用邏輯層 UserEbi ebi = UserEbiFactory.getUserEbi(); //4依據挪用前往成果導向分歧頁面 if (ebi.create(user)) { back(); } else { JOptionPane.showMessageDialog(null, "該用戶曾經存在!"); } } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JButton btnAdd; private javax.swing.JButton btnBack; private javax.swing.JComboBox combType; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JTextField tfdName; private javax.swing.JPasswordField tfdPwd; private javax.swing.JPasswordField tfdPwd2; private javax.swing.JTextField tfdUuid; // End of variables declaration//GEN-END:variables }
ListPanel類:
cn.hncu.bookStore.user.ui;
ListPanel類:
/* * ListPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.user.ui; import java.util.List; import javax.swing.JFrame; import cn.hncu.bookStore.user.business.ebi.UserEbi; import cn.hncu.bookStore.user.business.factory.UserEbiFactory; import cn.hncu.bookStore.user.vo.UserModel; /** * 表示層-用戶列外面板 * * @author 陳浩翔 * @version 1.0 */ public class ListPanel extends javax.swing.JPanel { private JFrame mainFrame = null; /** Creates new form ListPanel */ public ListPanel(JFrame mainFrame) { this.mainFrame = mainFrame; initComponents(); myInitData(); } /** * 讀取一切用戶並添加進列表 */ private void myInitData() { UserEbi user = UserEbiFactory.getUserEbi(); List<UserModel> list = user.getAll(); userLists.setListData(list.toArray()); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); userLists = new javax.swing.JList(); jLabel1 = new javax.swing.JLabel(); btnToAdd = new javax.swing.JButton(); setMinimumSize(new java.awt.Dimension(800, 600)); setLayout(null); userLists.setModel(new javax.swing.AbstractListModel() { String[] strings = { "" }; public int getSize() { return strings.length; } public Object getElementAt(int i) { return strings[i]; } }); jScrollPane1.setViewportView(userLists); add(jScrollPane1); jScrollPane1.setBounds(150, 150, 480, 230); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 48)); jLabel1.setForeground(new java.awt.Color(204, 0, 51)); jLabel1.setText("User List"); add(jLabel1); jLabel1.setBounds(270, 30, 260, 80); btnToAdd.setFont(new java.awt.Font("Dialog", 1, 18)); btnToAdd.setText("\u6dfb\u52a0\u7528\u6237"); btnToAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnToAddActionPerformed(evt); } }); add(btnToAdd); btnToAdd.setBounds(60, 420, 150, 50); }// </editor-fold> //GEN-END:initComponents private void btnToAddActionPerformed(java.awt.event.ActionEvent evt) { mainFrame.setContentPane(new AddPanel(mainFrame)); mainFrame.validate(); } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JButton btnToAdd; private javax.swing.JLabel jLabel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JList userLists; // End of variables declaration//GEN-END:variables }
UserModel類:
cn.hncu.bookStore.user.vo;
UserModel類:
用戶值對象模塊:
package cn.hncu.bookStore.user.vo; import java.io.Serializable; import cn.hncu.bookStore.common.UserTypeEnum; /** * @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 implements Serializable{ 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 uuid + "," + name + "," + UserTypeEnum.getNameByType(type); } }
UserQueryModel類:
cn.hncu.bookStore.user.vo;
UserQueryModel類:
固然沒有代碼,但不克不及不寫!這是查找用戶時須要的。
緣由我在系列一寫了。
package cn.hncu.bookStore.user.vo; /** * * @author 陳浩翔 * * @version 1.0 */ public class UserQueryModel extends UserModel{ }
FileIoUtil類:
cn.hncu.bookStore.util;
FileIoUtil類:
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:(數據表對應的文件名字) * @return 一切表的記載! */ @SuppressWarnings("unchecked")//壓正告 public static<E> List<E> readFormFile(String fileName){ 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<E> void write2file(List<E> 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("數據庫封閉掉敗!"); } } } } }
BookStore類:(含main辦法)
cn.hncu.bookStore;
BookStore類:
用戶模塊的main辦法在這個類中:
/* * BookStore.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore; import cn.hncu.bookStore.user.ui.ListPanel; /** * * @author 陳浩翔 */ public class BookStore extends javax.swing.JFrame { /** Creates new form BookStore */ public BookStore() { initComponents(); this.setContentPane(new ListPanel(this)); this.setResizable(false);//不克不及縮放 this.setDefaultCloseOperation(EXIT_ON_CLOSE); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { menuBar = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); openMenuItem = new javax.swing.JMenuItem(); saveMenuItem = new javax.swing.JMenuItem(); saveAsMenuItem = new javax.swing.JMenuItem(); exitMenuItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JMenu(); cutMenuItem = new javax.swing.JMenuItem(); copyMenuItem = new javax.swing.JMenuItem(); pasteMenuItem = new javax.swing.JMenuItem(); deleteMenuItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); contentsMenuItem = new javax.swing.JMenuItem(); aboutMenuItem = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setMinimumSize(new java.awt.Dimension(800, 600)); fileMenu.setText("File"); openMenuItem.setText("Open"); fileMenu.add(openMenuItem); saveMenuItem.setText("Save"); fileMenu.add(saveMenuItem); saveAsMenuItem.setText("Save As ..."); fileMenu.add(saveAsMenuItem); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); editMenu.setText("Edit"); cutMenuItem.setText("Cut"); editMenu.add(cutMenuItem); copyMenuItem.setText("Copy"); editMenu.add(copyMenuItem); pasteMenuItem.setText("Paste"); editMenu.add(pasteMenuItem); deleteMenuItem.setText("Delete"); editMenu.add(deleteMenuItem); menuBar.add(editMenu); helpMenu.setText("Help"); contentsMenuItem.setText("Contents"); helpMenu.add(contentsMenuItem); aboutMenuItem.setText("About"); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); setJMenuBar(menuBar); javax.swing.GroupLayout layout = new javax.swing.GroupLayout( getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE)); layout.setVerticalGroup(layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 279, Short.MAX_VALUE)); pack(); }// </editor-fold> //GEN-END:initComponents private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed System.exit(0); }//GEN-LAST:event_exitMenuItemActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new BookStore().setVisible(true); } }); } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JMenuItem aboutMenuItem; private javax.swing.JMenuItem contentsMenuItem; private javax.swing.JMenuItem copyMenuItem; private javax.swing.JMenuItem cutMenuItem; private javax.swing.JMenuItem deleteMenuItem; private javax.swing.JMenu editMenu; private javax.swing.JMenuItem exitMenuItem; private javax.swing.JMenu fileMenu; private javax.swing.JMenu helpMenu; private javax.swing.JMenuBar menuBar; private javax.swing.JMenuItem openMenuItem; private javax.swing.JMenuItem pasteMenuItem; private javax.swing.JMenuItem saveAsMenuItem; private javax.swing.JMenuItem saveMenuItem; // End of variables declaration//GEN-END:variables }
明天就寫到這裡的,未完待續。。。
今朝的添加有一個小bug,就是添加用戶時,甚麼都不輸出,
只選擇用戶類型,也能創立!下次我會修復的。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。