|||||||||||||||||||||||||||||||||||||||||||||||||||
实现类:UserDaoSerImpl
package cn.hncu.bookStore.user.dao.impl; import java.util.ArrayList; import java.util.List; import cn.hncu.bookStore.common.UserTypeEnum; import cn.hncu.bookStore.user.business.factory.UserEbiFactory; 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) { List<UserModel> list = UserEbiFactory.getUserEbi().getAll(); List<UserModel> results = new ArrayList<UserModel>(); for(UserModel user : list){ //反逻辑,卫条件: 外层判断用户输入是否是查询条件;内层判断该对象是否符合查询条件 if(uqm.getUuid()!=null&&uqm.getUuid().trim().length()>0){//外层判断 if(!user.getUuid().equals(uqm.getUuid())){//内层判断--精确查询 continue; } } if(uqm.getName()!=null&&uqm.getName().trim().length()>0){//外层判断 if(user.getName().indexOf(uqm.getName())==-1){//内层判断--模糊查询 continue; } } if(uqm.getType()>0){//外层判断 if(user.getType()!=uqm.getType()){//内层判断--精确查询 continue; } } results.add(user); } return results; } @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; } }
|||||||||||||||||||||||||||||||||||||||||||||||||
工厂方法: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(); } }
用户模块逻辑层:
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
package cn.hncu.bookStore.user.business.ebo; import java.util.List; import cn.hncu.bookStore.common.UuidModelConstance; import cn.hncu.bookStore.common.uuid.dao.factory.UuidDaoFactory; import cn.hncu.bookStore.common.uuid.vo.UuidModel; 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; /** * 逻辑层的实现类 * @author 陈浩翔 * @version 1.0 */ public class UserEbo implements UserEbi{ //注入 private UserDao dao = UserDaoFactory.getUserDao(); @Override public boolean create(UserModel user) { //如果表现层中对user对象的数据没有封装完整,那么在这里要为它补全 //调用uuid模块的dao层来自动获取当前user对象的uuid String uuid = UuidDaoFactory.getUuidDao().getNextUuid(UuidModelConstance.USER); user.setUuid(uuid); 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) { return dao.getbyCondition(uqm); } @Override public UserModel getSingle(String uuid) { return dao.getSingle(uuid); } }
||||||||||||||||||||||||||||||||||||||||||||
工厂方法:UserEbiFactory
package cn.hncu.bookStore.user.business.factory; import cn.hncu.bookStore.user.business.ebi.UserEbi; import cn.hncu.bookStore.user.business.ebo.UserEbo; /** * * @author 陈浩翔 * * @version 1.0 */ public class UserEbiFactory { public static UserEbi getUserEbi(){ return new UserEbo(); } }
|||||||||||||||||||||||||||||||||||||||
用户模块表现层:
用户列表:ListPanel
/* * ListPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.user.ui; import java.util.List; import javax.swing.JFrame; import javax.swing.JOptionPane; 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(); } public ListPanel(JFrame mainFrame, List<UserModel> results) { this.mainFrame = mainFrame; initComponents(); userLists.setListData(results.toArray()); } /** * 读取所有用户并添加进列表 */ private void myInitData() { UserEbi user = UserEbiFactory.getUserEbi(); List<UserModel> list = user.getAll(); userLists.setListData(list.toArray()); } //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(); btnToDelete = new javax.swing.JButton(); btnToUpdate = new javax.swing.JButton(); btnToQuery = 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(170, 80, 480, 230); jLabel1.setFont(new java.awt.Font("Dialog", 1, 48)); jLabel1.setForeground(new java.awt.Color(204, 0, 51)); jLabel1.setText("\u7528\u6237\u5217\u8868"); add(jLabel1); jLabel1.setBounds(300, 0, 260, 80); btnToAdd.setFont(new java.awt.Font("Dialog", 1, 24)); btnToAdd.setForeground(new java.awt.Color(0, 102, 102)); 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(160, 350, 150, 50); btnToDelete.setFont(new java.awt.Font("Dialog", 1, 24)); btnToDelete.setForeground(new java.awt.Color(0, 102, 102)); btnToDelete.setText("\u5220\u9664\u7528\u6237"); btnToDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnToDeleteActionPerformed(evt); } }); add(btnToDelete); btnToDelete.setBounds(510, 350, 150, 50); btnToUpdate.setFont(new java.awt.Font("Dialog", 1, 24)); btnToUpdate.setForeground(new java.awt.Color(0, 102, 102)); btnToUpdate.setText("\u4fee\u6539\u7528\u6237"); btnToUpdate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnToUpdateActionPerformed(evt); } }); add(btnToUpdate); btnToUpdate.setBounds(160, 450, 150, 50); btnToQuery.setFont(new java.awt.Font("Dialog", 1, 24)); btnToQuery.setForeground(new java.awt.Color(0, 102, 102)); btnToQuery.setText("\u67e5\u627e\u7528\u6237"); btnToQuery.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnToQueryActionPerformed(evt); } }); add(btnToQuery); btnToQuery.setBounds(510, 450, 150, 50); }// </editor-fold> //GEN-END:initComponents private void btnToQueryActionPerformed(java.awt.event.ActionEvent evt) { mainFrame.setContentPane(new QueryPanel(mainFrame)); mainFrame.validate(); } private void btnToUpdateActionPerformed(java.awt.event.ActionEvent evt) { UserModel user = (UserModel) userLists.getSelectedValue(); if (user == null) { JOptionPane.showMessageDialog(mainFrame, "请选择要修改的用户!"); return; } String uuid = user.getUuid(); mainFrame.setContentPane(new UpdatePanel(mainFrame, uuid)); mainFrame.validate(); } private void btnToDeleteActionPerformed(java.awt.event.ActionEvent evt) { UserModel user = (UserModel) userLists.getSelectedValue(); if (user == null) { JOptionPane.showMessageDialog(mainFrame, "请选择要删除的用户!"); return; } String uuid = user.getUuid(); mainFrame.setContentPane(new DeletePanel(mainFrame, uuid)); mainFrame.validate(); } 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.JButton btnToDelete; private javax.swing.JButton btnToQuery; private javax.swing.JButton btnToUpdate; private javax.swing.JLabel jLabel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JList userLists; // End of variables declaration//GEN-END:variables }
|||||||||||||||||||||||||||||||||||||||||
添加用户: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(); 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(370, 190, 90, 30); tfdName.setFont(new java.awt.Font("Dialog", 1, 18)); tfdName.setAutoscrolls(false); add(tfdName); tfdName.setBounds(180, 190, 120, 30); jLabel4.setFont(new java.awt.Font("微软雅黑", 0, 18)); jLabel4.setText("\u59d3\u540d:"); add(jLabel4); jLabel4.setBounds(120, 190, 50, 30); tfdPwd2.setFont(new java.awt.Font("宋体", 1, 18)); add(tfdPwd2); tfdPwd2.setBounds(470, 300, 170, 30); jLabel5.setFont(new java.awt.Font("微软雅黑", 0, 18)); jLabel5.setText("\u5bc6\u7801:"); add(jLabel5); jLabel5.setBounds(120, 300, 50, 30); jLabel6.setFont(new java.awt.Font("微软雅黑", 0, 18)); jLabel6.setText("\u786e\u8ba4\u5bc6\u7801:"); add(jLabel6); jLabel6.setBounds(380, 300, 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(470, 190, 160, 30); tfdPwd.setFont(new java.awt.Font("宋体", 1, 18)); add(tfdPwd); tfdPwd.setBounds(190, 300, 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(190, 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(520, 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 name = tfdName.getText(); String pwd = new String(tfdPwd.getPassword()); String pwd2 = new String(tfdPwd2.getPassword()); if (name.equals("") || name.equals(null)) { JOptionPane.showMessageDialog(mainFrame, "用户名为空,请重新输入!"); return; } if (!pwd.equals(pwd2) || pwd.equals("") || pwd.equals(null) || pwd2.equals("") || pwd2.equals(null)) { JOptionPane.showMessageDialog(mainFrame, "两次密码输入不一致或密码为空,请重新输入!"); return; } int type = 0; try { type = UserTypeEnum.getTypeByName(combType.getSelectedItem() .toString()); } catch (Exception e) { JOptionPane.showMessageDialog(mainFrame, "请指定用户类型!"); return; } //2组织参数 UserModel user = new UserModel(); user.setName(name); user.setPwd(pwd); user.setType(type); //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 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; // End of variables declaration//GEN-END:variables }