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

书店管理系统:

项目练习目标 :
1、Java应用程序基本分析
2、培养面向对象编程的基本思想
3、Java基本设计模式综合应用
4、掌握分层和接口的基本设计
5、构建合理的Java应用程序包结构
6、综合应用JSE所学习的知识
7、在应用中合理使用集合框架
8、在应用中综合使用swing的常用组件
9、基本的表现层的实现机制
10、IO流和文件的基本操作
11、培养良好的Java编程习惯
12、培养调试Java程序的能力,培养改错的能力

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

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

★ 系统功能结构设计
每个功能模块的具体功能子模块

★ 数据库设计
项目框架实现:分模块、分层、分包、构建应用程序

1、用户管理(User.txt)

 

说明:其中的type为int类型,用来表示操作用户的类型。
1——表示为admin,可以进行全部操作
2——表示为能操作图书模块的人员
3——表示为能操作进货模块的人员
4——表示为能操作销售模块的人员
5——表示为能操作库存模块的人员

2、图书管理(Book.txt)

3、进货管理(InMain.txt)

4、进货明细管理(InDetail.txt)

5、销售管理(OutMain.txt)

6、销售明细管理(OutDetail.txt)

7、库存管理(Stock.txt)

项目分包

第一层:按照模块分
用户模块(user)、
图书(book)、
进货(in)、
销售(out)、
库存(store)

第二层:按照三层模式分
表现层(ui)、逻辑层(business) 和 数据层(dao)
通常还要增加一个值对象层(vo)

第三层:按照层内划分去分
视具体情况而定,如business和dao内还要再采用铁三角的形式建子包,而ui和vo则不需要再划分子包)。

项目分层思想:

 

未完善,请继续关注本系列(二)

下面为部分代码:(util里面的一个公共类)

cn.hncu.bookStore.util
FileIoUtil.java:

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(数据表对应的文件名字)
 * @param ee(传递过来的泛型的类型!)
 * @return 所有表的记录!
 */
 @SuppressWarnings("unchecked")//压警告
 public static<E> List<E> readFormFile(String fileName,E ee){
 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 void write2file(List<Object> 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("数据库关闭失败!");
  }
  }
 }
 }

}

封装的用户数据:

cn.hncu.bookStore.user.vo;
UserModel.java


package cn.hncu.bookStore.user.vo;

/**
 * @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 {
 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 "UserModel [uuid=" + uuid + ", name=" + name + ", type=" + type
  + ", pwd=" + pwd + "]";
 }

}

封装的用户查询数据:

cn.hncu.bookStore.user.vo;
UserQueryModel.java


package cn.hncu.bookStore.user.vo;

public class UserQueryModel extends UserModel{
}

虽然这个类什么都没有,就只是继承了UserModel,但还是必须写,这是大家都遵守的java编写规范!

用户Dao(数据层):(接口)

cn.hncu.bookStore.user.dao.dao;
UserDao.java


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

 /**
 * 功能:删除一个用户
 *
 * @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);

}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java管理系统
, java书店管理系统
java书店管理
javaweb网上书店系统、java网上书店系统、java书店管理系统、javaweb书店管理系统、书店销售管理系统java,以便于您获取更多的相关知识。

时间: 2024-09-28 01:23:51

Java设计模块系列之书店管理系统单机版(一)_java的相关文章

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

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

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

介绍 今天对系列二的一个添加用户的输入小bug进行了解决, 增加了用户模块的,删除用户,和修改用户模块. 下面的代码是相对于系列二来说进行了修改或者是增加的类. 先看AddPanel类的修改: 在收集参数的时候进行防范就可防止那个bug了. cn.hncu.bookStore.user.ui; AddPanel类:(添加用户模块) /* * AddPanel.java * * Created on __DATE__, __TIME__ */ package cn.hncu.bookStore.u

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

本系列前面博客的链接: Java-单机版的书店管理系统(练习设计模块和思想_系列 六 ) http://blog.csdn.net/qq_26525215/article/details/51169277 Java-单机版的书店管理系统(练习设计模块和思想_系列 五 ) http://blog.csdn.net/qq_26525215/article/details/51136848 Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) ): http://blog.csdn.ne

代码-java设计一个管理系统

问题描述 java设计一个管理系统 基于java设计一个学生成绩管理系统,要求有界面,且有增加,查询,修改,删除,退出功能,代码怎么写? 解决方案 这个在网上搜索一下就可以吧. 解决方案二: 界面的代码用easyUI可以自动生成,数据用SQL 解决方案三: 找个jservlet的资料看看你就知道怎么弄了

Java设计一个教学管理系统,要求如下

问题描述 Java设计一个教学管理系统,要求如下 设计一个教学管理系统,考虑到教师.学生.班级.课程.成绩等变量;设计实现类和类的关系,如下: 1.教师和学生都能登入系统,有不同的功能,登录密码为空(提示用继承和多态实现) 2.教师可以录入指定班级指定课程的学生成绩,以字符串输入 3.学生可以登录进去查询某门课程的成绩(自己的或全班的都可以查)和自己的排名 注意:每一个类中要使用无参的构造方法;并且实现数据域的封装 解决方案 教学管理信息系统的设计 解决方案二: http://down.51ct

基于Java、jQuery应用的账务管理系统开源了(09.3.19更新)

基于Java.jQuery开发的账务管理系统(个人版)系统演示及源码共享,致力于企业级RIA应用-- 在这个特殊的日子还是继续宅男的生活,过着没有情人的情人节,但是今年这个没有情人的情人节要献给广大Java.jQuery技术爱好者一份大礼,半年来周末.下班时间学习使用的账务管理系统公开源代码了,关于系统的说明请参看本博客相关文章,废话不说了,googlecode地址公布如下: 2009.02.25更新-- 版本库主页:http://code.google.com/p/finance-p/ 匿名检

java mysql-求一个java+mysql编写的银行账户管理系统

问题描述 求一个java+mysql编写的银行账户管理系统 用java链接mysql 编写的一个银行账户管理系统,里面有两个模块:管理员和用户模块,管理员可以给用户开户查询所有用户信息,用户可以存取款,查询利息,显示用户信息 解决方案 有c#连接sqlserver的,你要吗

JAVA/JSP学习系列之八(改写MySQL翻页例子)

js|mysql|翻页 一.前言 其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源.我用Orion试的,将本站<JAVA/JSP学习系列之六(MySQL翻页例子) > 简单改写了一下. 二.配置 (1)JDBC 需要将用到的JDBC驱动Copy到[ORION]/lib目录下 (2)data-source 在[ORION]/config/data-sources.xml文件中加入如下: 〈data-source class="com.e

Java入门教程系列 – 开发环境搭建

原文http://go-learning.com/2012/05/23/java-gettingstart-1/ Java入门教程系列 – 开发环境搭建 Posted on 2012 年 5 月 23 日 by Johnny 在使用任何的计算机语言进行编程之前,你都需要搭建一个开发环境.简单的说,这个过程就是要安装一些开发 用的软件和进行相关的一些配置.每种计算机语言所需要的软件是不一样的,对于Java语言来说,你最少需要安装一个JDK (这是一个专有名称,要死记),JDK的全称叫 – Java