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

网友投稿 198 2023-07-08


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的用户,可以操作全部的功能。

项目基本设计 http://:

★ 架构设计

整体框架、模块划分

模块划分:用户、图书、进货、销售和库存5个模块

★ 系统功能结构设计

每个功能模块的具体功能子模块

★ 数据库设计

项目框架实现:分模块、分层、分包、构建应用程序

1、用户管理(User.txt)

说明:其中的type为int类型,用来表示操作用户的类型。

1——表示为admin,可以进行全部操作

2——表示为能操作图书模块的人员

3——表示为能操作进货模块的人员

4——表示为能操作销售模块的人员http://

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 List readFormFile(String fileName,E ee){

List list = new ArrayList();

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

*

*

* 用于保存用户信息的值对象

* 1、可序列化

* 2、私有化所有变量成员,补setter-getters方法

* 3、写equals和hashCode方法----用主键(uuid)唯一标识码

* 4、toString方法

* 5,空参构造方法

*/

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 toStrinhttp://g() {

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

/**

* 功能:按照一定的查找条件进行查找,

*

* 把满足查找条件的用户数据返回。

*

* @param uqm---被封装的查找条件

* @return---满足查找条件的用户数据集合

*/

public List getbyCondition(UserQueryModel uqm);

/**

* 功能:得到一个确定的用户的数据资料

*

* @param uuid---用户唯一标识码

* @return ---返回按这个唯一标识码找到的用户数据

*/

public UserModel getSingle(String uuid);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JDBC使用游标实现分页查询的方法
下一篇:详细学习Java Cookie技术(用户登录、浏览、访问权限)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~