当前位置: 移动技术网 > IT编程>开发语言>Java > Java设计模块系列之书店管理系统单机版(二)

Java设计模块系列之书店管理系统单机版(二)

2019年07月22日  | 移动技术网IT编程  | 我要评论

dnf鹰吉在哪里,梁镜凡,车险超市首选车有惠

java-单机版的书店管理系统(练习设计模块和思想_系列 一 ):

介绍

小提示:上面一点有一个目录,可以快速定位到自己需要看的类。
今天对前面的代码有了小小的修改,让代码更加完善了一点。
至于用户唯一标识码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,就是添加用户时,什么都不输入,
只选择用户类型,也能创建!下次我会修复的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网