多平台统一管理软件接口,如何实现多平台统一管理软件接口
207
2023-07-08
Java设计模块系列之书店管理系统单机版(二)
java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): //jb51.net/article/91004.htm
介绍
小提示:上面一点有一个目录,可以快速定位到自己需要看的类。
今天对前面的代码有了小小的修改,让代码更加完善了一点。
至于用户唯一标识码uuid,会在以后修改成程序内部生成的,
现在的uuid还是由用户自己设置。
今天对这个程序,添加了用户界面的表现层的一部分,增加了公共类 枚举,
下面贴出目前我写的这个程序的全部代码:我会逐渐的写完这个程序的,请大家放心!(需要实现的功能在这个书店管理系统的系列一可以找到,我为这个系列的文章已经分类了,方便大家寻找)
这个系列的博客是不会断的。
现在的代码分层:
现在的程序运行后的图片:
我按照从目录上面到下面的顺序贴出代码:
请注意!这个代码顺序并不是我写代码的顺序!
如果你们要参考我的写,请不要按照我贴的代码的顺序。
应该先写公共类,工具类。
再次:数据层类—>逻辑层类—>表现层类
现在程序运行后的部分图片:
UserTypeEnum类:
cn.hncu.bookStore.common;
UserTypeEnum类:
package cn.hncu.bookStore.common;
/**
* 功能:用户类型的枚举!
* 定义在公共模块。
* 变量:
* ADMIN(1,"超级管理员"),
* BOOK(2,"图书管理员"),
* IN(3,"进货管理员"),
* OUT(4,"销售管理员"),
* STOCK(5,"库存管理员");
* @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 ---如果存在这样的数字对应的枚举变量,就返回这个枚举变量的中文名字。
*
---如果不存在这样的数字对应的枚举变量,就抛出一个异常信息。
*/
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
*
---如果不存在这样的名字对应的枚举变量,就抛出一个异常信息
*/
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
/**
* 功能:按照一定的查找条件进行查找,
*
* 把满足查找条件的用户数据返回。
*
* @param uqm---被封装的查找条件
* @return---满足查找条件的用户数据集合
*/
public List
/**
* 功能:得到一个确定的用户的数据资料
*
* @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
return dao.getAll();
}
@Override
public List
// 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
/**
* 功能:按照一定的查找条件进行查找,
*
* 把满足查找条件的用户数据返回。
*
* @param uqm---被封装的查找条件
* @return---满足查找条件的用户数据集合
*/
public List
/**
* 功能:得到一个确定的用户的数据资料
*
* @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;
/**
* 工厂方法
* new 一个dao的实例
* @author 陈浩翔
*
* @version 1.0
*
*/
public class UserDaoFactory {
pubCwjDYHlic 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;
/**
*
* 对用户数据处理的具体实现类 ----实现了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
// 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
// 2判断该用户是否已经存在,再决定是否删除
// for(int i=0;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 // 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 return FileIoUtil.readFormFile(FILE_NAME); } @Override public List // TODO Auto-generated method stub return null; } @Override public UserModel getSingle(String uuid) { // 1先把已有的数据反序列化(读)出来 List // 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 // 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); }// //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 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 // 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); }// //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 * * * 用于保存用户信息的值对象 * 1、可序列化 * 2、私有化所有变量成员,补setter-getters方法 * 3、写equals和hashCode方法----用主键(uuid)唯一标识码 * 4、toString方法 * 5,空参构造方法 */ 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 hhttp://ashCode() { 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 List 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 } 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 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 // 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(); }// //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,就是添加用户时,什么都不输入, 只选择用户类型,也能创建!下次我会修复的。
// 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
// 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
return FileIoUtil.readFormFile(FILE_NAME);
}
@Override
public List
// TODO Auto-generated method stub
return null;
}
@Override
public UserModel getSingle(String uuid) {
// 1先把已有的数据反序列化(读)出来
List
// 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
//
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);
}//
//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
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
//
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);
}//
//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
*
*
* 用于保存用户信息的值对象
* 1、可序列化
* 2、私有化所有变量成员,补setter-getters方法
* 3、写equals和hashCode方法----用主键(uuid)唯一标识码
* 4、toString方法
* 5,空参构造方法
*/
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 hhttp://ashCode() {
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
List
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
} 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
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
//
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();
}//
//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,就是添加用户时,什么都不输入,
只选择用户类型,也能创建!下次我会修复的。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~