java书店系统毕业设计 总体设计(1)

java书店系统项目功能需求:

1、能进行操作用户的注册,修改基本信息,删除和查询。
2、能对图书的基本信息进行增加、删除、修改和查询操作。
3、能填写进货单,一张进货单带有多条具体的进货信息,进货的书籍必须是图书管理里面已经有的;进货的同时修改库存对应书籍的存货量。
4、能填写销售单,一张销售单带有多条具体的销售信息,销售的书籍必须是图书管理里面已经有的,而且销售的数量不能超过当前库存的数量;销售的同时修改库存对应书籍的存货量。
5、可以查看库存的明细,可以按照条件进行查找具体的图书的库存值。
6、权限方面进行简化,做固定的权限控制。把用户按照模块分成不同操作权限的人员,特设一个admin的用户,可以操作全部的功能。

项目基本设计:

★ 架构设计:
整体框架、模块划分
模块划分:用户、图书、进货、销售和库存5个模块

★ 系统功能结构设计:
每个功能模块的具体功能子模块
★ 数据库设计:
项目框架实现:分模块、分层、分包、构建应用程序
核心框架—-实现每个界面的转换

package cn.hncu.bookStore;
import cn.hncu.bookStore.login.ui.Login;
/**
 *
 *@author<a href="mailto:2402201666@qq.com">xzm</a>
 */
public class bookStoreApp extends javax.swing.JFrame {
 private static final long serialVersionUID = 1L;
 /** Creates new form bookStoreApp */
 public bookStoreApp() {
  initComponents();
  this.setContentPane(new Login(this));//添加登录界面
  this.validate();
  getContentPane().setLocation(150, 50);
 }
 //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();
  jMenu1 = new javax.swing.JMenu();
  menuItemUser = new javax.swing.JMenuItem();
  menuItemBook = new javax.swing.JMenuItem();
  menuItemInMain = new javax.swing.JMenuItem();
  MenuItemOutMain = new javax.swing.JMenuItem();
  menuItemStock = new javax.swing.JMenuItem();
  menuItemLogin = new javax.swing.JMenuItem();

  setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  setMinimumSize(new java.awt.Dimension(800, 600));
  getContentPane().setLayout(null);

  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);

  jMenu1.setText("Menu");

  menuItemUser.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_U,
    java.awt.event.InputEvent.CTRL_MASK));
  menuItemUser.setText("\u7528\u6237\u6a21\u5757");
  menuItemUser.setEnabled(false);
  menuItemUser.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    menuItemUserActionPerformed(evt);
   }
  });
  jMenu1.add(menuItemUser);

  menuItemBook.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_B,
    java.awt.event.InputEvent.CTRL_MASK));
  menuItemBook.setText("\u56fe\u4e66\u6a21\u5757");
  menuItemBook.setEnabled(false);
  menuItemBook.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    menuItemBookActionPerformed(evt);
   }
  });
  jMenu1.add(menuItemBook);

  menuItemInMain.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_I,
    java.awt.event.InputEvent.CTRL_MASK));
  menuItemInMain.setText("\u8fdb\u8d27\u6a21\u5757");
  menuItemInMain.setEnabled(false);
  menuItemInMain.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    menuItemInMainActionPerformed(evt);
   }
  });
  jMenu1.add(menuItemInMain);

  MenuItemOutMain.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_O,
    java.awt.event.InputEvent.CTRL_MASK));
  MenuItemOutMain.setText("\u9500\u552e\u6a21\u5757");
  MenuItemOutMain.setEnabled(false);
  MenuItemOutMain.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    MenuItemOutMainActionPerformed(evt);
   }
  });
  jMenu1.add(MenuItemOutMain);

  menuItemStock.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_S,
    java.awt.event.InputEvent.CTRL_MASK));
  menuItemStock.setText("\u5e93\u5b58\u6a21\u5757");
  menuItemStock.setEnabled(false);
  menuItemStock.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    menuItemStockActionPerformed(evt);
   }
  });
  jMenu1.add(menuItemStock);

  menuItemLogin.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
    java.awt.event.KeyEvent.VK_L,
    java.awt.event.InputEvent.CTRL_MASK));
  menuItemLogin.setText("\u6ce8\u9500");
  menuItemLogin.addActionListener(new java.awt.event.ActionListener() {
   public void actionPerformed(java.awt.event.ActionEvent evt) {
    menuItemLoginActionPerformed(evt);
   }
  });
  jMenu1.add(menuItemLogin);

  menuBar.add(jMenu1);

  setJMenuBar(menuBar);

  pack();
 }// </editor-fold>
 //GEN-END:initComponents

 private void menuItemLoginActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到登录界面,灭掉切换到五个界面的功能菜单
  menuItemBook.setEnabled(false);
  menuItemInMain.setEnabled(false);
  MenuItemOutMain.setEnabled(false);
  menuItemStock.setEnabled(false);
  menuItemUser.setEnabled(false);
  this.setContentPane(new Login(this));
  this.validate();
 }

 void menuItemStockActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到库存模块
  this.setContentPane(new cn.hncu.bookStore.store.ui.listPanel(this));
  this.validate();
 }

 void MenuItemOutMainActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到销售模块
  this.setContentPane(new cn.hncu.bookStore.out.ui.listPanel(this));
  this.validate();
 }

 void menuItemInMainActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到进货模块
  this.setContentPane(new cn.hncu.bookStore.in.ui.listPanel(this));
  this.validate();
 }

 void menuItemBookActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到图书模块
  this.setContentPane(new cn.hncu.bookStore.book.ui.listPanel(this));
  this.validate();
 }

 private void menuItemUserActionPerformed(java.awt.event.ActionEvent evt) {
  //切换到用户模块
  this.setContentPane(new cn.hncu.bookStore.user.ui.listPanel(this));
  this.validate();
 }

 public javax.swing.JMenuItem getMenuItemOutMain() {
  return MenuItemOutMain;
 }

 public javax.swing.JMenuItem getMenuItemBook() {
  return menuItemBook;
 }

 public javax.swing.JMenuItem getMenuItemInMain() {
  return menuItemInMain;
 }

 public javax.swing.JMenuItem getMenuItemStock() {
  return menuItemStock;
 }

 public javax.swing.JMenuItem getMenuItemUser() {
  return menuItemUser;
 }

 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 bookStoreApp().setVisible(true);
   }
  });
 }

 //GEN-BEGIN:variables
 // Variables declaration - do not modify
 private javax.swing.JMenuItem MenuItemOutMain;
 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.JMenu jMenu1;
 private javax.swing.JMenuBar menuBar;
 private javax.swing.JMenuItem menuItemBook;
 private javax.swing.JMenuItem menuItemInMain;
 private javax.swing.JMenuItem menuItemLogin;
 private javax.swing.JMenuItem menuItemStock;
 private javax.swing.JMenuItem menuItemUser;
 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

}

工具包:

package cn.hncu.bookStore.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {

 /**
  * 把long型时间转换成日期格式"yyyy年MM月dd日HH:mm:ss:"的字符串
  * @param t
  * 待转换的(long型)时间
  * @return
  * 日期格式的字符串
  */
 public static String longToString(long t){
  Date d=new Date();
  DateFormat df=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss:");
  return df.format(d);
 }

 /**
  * 把日期格式"yyyy-MM-dd-HH:mm:ss:"的字符串转换成long型时间
  * @param str
  * 待转换的日期字符串
  * @return
  * long型时间
  * @throws ParseException
  */
 public static long stringToLong(String str) throws ParseException{
  DateFormat df=new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss:");
  Date d=df.parse(str);
  return d.getTime();
 }
}
package cn.hncu.bookStore.utils;

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;

public class FileIOUtil {
 /**
  * 构造函数私有化
  */
 private FileIOUtil(){
 }

 /**
  * 把目录fileName里的数据读出
  * @param fileName
  * 文件地址
  * @return
  * 返回对应类型的集合
  */
 public static<E> List<E> readFromFile(String fileName){//定义在静态方法上的泛型
  File file=new File(fileName);//凡是读文件,最好用File开道
  if(!file.exists()){//文件不存在返回空集合
   return new ArrayList<E>();
  }
  ObjectInputStream in=null;
  try {
   in=new ObjectInputStream(new FileInputStream(file));
   @SuppressWarnings("unchecked")
   List<E> list=(List<E>)in.readObject();
   return list;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }finally{
   if(in!=null){
    try {
     in.close();
    } catch (IOException e) {
     throw new RuntimeException("数据文件关闭失败", e);
    }
   }
  }
  return new ArrayList<E>();

 }

 /**
  * 存储:向目录fileName里读入数据
  * @param list
  * 待存入数据的集合
  * @param fileName
  * 文件地址
  * @return
  * 存储成功就返回true,否则,返回false
  */
 public static<E> boolean writeToFile(List<E> list,String fileName){
  ObjectOutputStream out=null;
  try {
   out=new ObjectOutputStream(new FileOutputStream(fileName));
   out.writeObject(list);
   return true;
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   if(out!=null){
    try {
     out.close();
    } catch (IOException e) {
     throw new RuntimeException("数据文件关闭失败", e);
    }
   }
  }
  return false;
 }
}

公共功能:

package cn.hncu.bookStore.common;

public enum uuidModelConstance {
 /**
  * 枚举:把user的五种类型UserModel,BookModel,InMainModel,InDetailModel,OutMainModel,OutDetailModel,StockModel枚举出来
  */
 User("UserModel"),Book("BookModel"),In_Main("InMainModel"),In_Detail("InDetailModel"),
 Out_Main("OutMainModel"),Out_Detail("OutDetailModel"),Stock("StockModel");
 private final String name;
 private uuidModelConstance(String name){
  this.name=name;
 }
 public String getName() {
  return name;
 }
}
package cn.hncu.bookStore.common.uuid.vo;

import java.io.Serializable;

public class uuidModel implements Serializable{

 /**
  * 用唱票模型自动生成uuid编号
  * 封装uuid,自动生成uuid
  */
 private static final long serialVersionUID = 1L;
 private String modelName;//表示UserModel,BookModel,InMainModel,InDetailModel,OutMainModel,OutDetailModel,StockModel
 private int currentNum;//modelName当前的uuid编号
 public uuidModel(){

 }
 //set,get
 public String getModelName() {
  return modelName;
 }
 public void setModelName(String modelName) {
  this.modelName = modelName;
 }
 public int getCurrentNum() {
  return currentNum;
 }
 public void setCurrentNum(int currentNum) {
  this.currentNum = currentNum;
 }
 @Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result
    + ((modelName == null) ? 0 : modelName.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;
  uuidModel other = (uuidModel) obj;
  if (modelName == null) {
   if (other.modelName != null)
    return false;
  } else if (!modelName.equals(other.modelName))
   return false;
  return true;
 }
}
package cn.hncu.bookStore.common.uuid.dao.Ebi;

import cn.hncu.bookStore.common.uuidModelConstance;

public interface uuidDAO {
 /**
  * 用唱票模型自动生成uuid编号
  * @param umc
  * 需要自动生成uuid的类型(UserModel,BookModel,InMainModel,InDetailModel,OutMainModel,OutDetailModel,StockModel)
  * @return
  * 生成对应类型uuid的编号
  */
 public String getNextNum(uuidModelConstance umc);
}
package cn.hncu.bookStore.common.uuid.dao.Ebo;

import java.util.List;

import cn.hncu.bookStore.common.uuidModelConstance;
import cn.hncu.bookStore.common.uuid.dao.Ebi.uuidDAO;
import cn.hncu.bookStore.common.uuid.vo.uuidModel;
import cn.hncu.bookStore.utils.FileIOUtil;

public class uuidEbo implements uuidDAO {

 private final static String FILE_NAME="uuid.txt";//把数据存储到uuid.txt文件中,或读取

 @Override
 public String getNextNum(uuidModelConstance umc) {
  String modelName=umc.getName();//获得待生成uuid编号的user类型
  List<uuidModel> list=FileIOUtil.readFromFile(FILE_NAME);//从文件中读取所有已生成user类型uuid的数据
  for(uuidModel um:list){
   if(um.getModelName().equals(modelName.trim())){//如果modelName在文件中存在,则返回此类型uuid下一个编号
    int res=um.getCurrentNum();
    um.setCurrentNum(res+1);
    FileIOUtil.writeToFile(list, FILE_NAME);//把经过更新的uuid数据存入文件夹
    return ""+res;
   }
  }
  //如果for循环没有找到,说明modelName是第一个,编号为1
  //new一个此类型的对象,存入文件夹
  uuidModel um=new uuidModel();
  um.setModelName(modelName);
  um.setCurrentNum(2);
  list.add(um);
  FileIOUtil.writeToFile(list, FILE_NAME);
  return ""+1;
 }

}
package cn.hncu.bookStore.common.uuid.dao.factory;

import cn.hncu.bookStore.common.uuid.dao.Ebi.uuidDAO;
import cn.hncu.bookStore.common.uuid.dao.Ebo.uuidEbo;

public class uuidDAOFactory {
 /**
  * 构造函数私有化
  */
 private uuidDAOFactory(){

 }
 /**
  * 获得接口uuidDAO
  * @return
  * uuidDAO
  */
 public static uuidDAO getUuidDAO(){
  return new uuidEbo();
 }

}

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

(0)

相关推荐

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • java开发就业信息管理系统

    本文实例为大家分享了java就业信息管理平台开发案例,供大家参考,具体内容如下 可查询公司信息,学生信息,班级信息,针对学生就业与否信息的统计,老师和管理员登录后的权限不同等 就业信息管理平台想要实现的是各个班级的学生就业情况,数据库里建有6张表,分别是班级,公司,职位,学生,登录用户. 其中就业信息在界面上显示的内容是学生信息和职位的组合,在jsp页面中是拼接来实现,如果这个学生找到工作则需要填写就业信息,否则空着.如就业截图. 在企业信息中,需要实现的功能是首先有计划招聘时间,实际招聘时间,

  • java留言管理系统中模糊查询实例分享

    本文分享了一个基于MVC+DAO的留言管理系统,包含增删改查,其中查询,有全部查询和按关键字进行模糊查询的功能,具体内容如下 NoteDAO.Java package cn.mldn.lxh.note.dao ; import java.util.* ; import cn.mldn.lxh.note.vo.* ; public interface NoteDAO { // 增加操作 public void insert(Note note) throws Exception ; // 修改操作

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

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

    Java-单机版的书店管理系统(练习设计模块和思想_系列 一 ): http://www.jb51.net/article/91004.htm 介绍 小提示:上面一点有一个目录,可以快速定位到自己需要看的类. 今天对前面的代码有了小小的修改,让代码更加完善了一点. 至于用户唯一标识码uuid,会在以后修改成程序内部生成的, 现在的uuid还是由用户自己设置. 今天对这个程序,添加了用户界面的表现层的一部分,增加了公共类 枚举, 下面贴出目前我写的这个程序的全部代码:我会逐渐的写完这个程序的,请大

  • JAVA实现简单系统登陆注册模块

    前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的. 功能:用户注册功能+系统登录功能+生成验证码 知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等 设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • JavaEE在线人数管理系统

    这篇博客是filter.listener和servlet技术的相关总结,实现了简单的显示在线人数.在线人详细信息.管理员踢人功能 下面是详细代码 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http:

  • 相册管理系统(Java表单+xml数据库存储)

    功能文件的上传,下载和管理 技术:1.用xml当做数据库存储信息(dom4j,xpath) 2.Java表单的文件上传和下载 3.文件目录的打散 ( Hash目录是一种优化文件存储性能的方法) 需要的jar包: commons-fileupload-1.2.2.jar.commons-io-2.1.jar.dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar -----------------------------------------------------------

随机推荐