书店管理系统:
项目练习目标 :
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;
public class FileIoUtil {
public FileIoUtil() {
}
@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;
}
public static void write2file(List
封装的用户数据:
cn.hncu.bookStore.user.vo;
UserModel.java
package cn.hncu.bookStore.user.vo;
public class UserModel {
private String uuid;//用户唯一标识码
private String name;//用户名
private int type;//用户类型
private String pwd;//用户密码
public UserModel() {
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getPwd() {
return pwd;
}
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;
public interface UserDao {
public boolean create(UserModel user);
public boolean delete(String uuid);
public boolean update(UserModel user);
public List getAll();
public List getbyCondition(UserQueryModel uqm);
public UserModel getSingle(String uuid);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



