Java之------单机版书店管理系统(设计思想和设计模式系列三)工具包和公共包

Posted 夏小弥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之------单机版书店管理系统(设计思想和设计模式系列三)工具包和公共包相关的知识,希望对你有一定的参考价值。

书店管理系统

书店管理系统可以说是设计模式及设计思想的一个比较经典的例子。

本系列将分为多个部分讲述此输电管理系统。

书店管理系统将分为:用户、图书、进货、销售和库存五个模块,另外还有公共包、工具包和登录包,另外还有一个框架。

对于分层设计,都是表现层可以调用逻辑层,逻辑层调用数据层,数据层调用工具和公共包,方向不可打乱,必须严格按照这种模式。

本篇将做工具包和公共包。


注:本篇需要使用到的框架在本系列二的用户模块:

链接:http://blog.csdn.net/x121850182/article/details/51362269


工具包:

工具包是使用IO进行数据存储的,因为本项目里面的类进行存储时都是用到了此包,因此在这里先写了。

日期转换

package cn.hncu.utils;

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

import javax.swing.JOptionPane;

public class DateUtil 
	private DateUtil()
	
	
	public static String longToString(long inDate)
		Date date=new Date(inDate);
		DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String str = df.format(date);
		return str;
	
	
	public static long StringToLong(String txtDate,String errorInfo)
		DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		long inDate=0;
		try 
			Date d=df.parse(txtDate);
			inDate=d.getTime();
		 catch (ParseException e) 
			JOptionPane.showMessageDialog(null, errorInfo);
			return -1;
		
		return inDate;
	
文件读取和存储:

package cn.hncu.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;

import javax.swing.JOptionPane;

public class FileIo 
	public static<E> List<E> read(String fileName)
		List<E> list = new ArrayList<E>();
		final File file = new File(fileName);
		if (!file.exists()) 
			JOptionPane.showMessageDialog(null, "数据表不存在!");
			return list;
		
		ObjectInputStream in = null;
		try 
			in = new ObjectInputStream(new FileInputStream(fileName));
			list = (List<E>)in.readObject();
		 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("数据库关闭失败!");
				
			
		

		return list;
	
	
	public static<E> void write(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("数据库关闭失败");
				
			
		
	

公共包:

公共包中放的是枚举常量和单独对用户、图书、进货、销售和库存的id编号进行存储的uuid包

1、枚举

用户类型枚举:

package cn.hncu.common;

public enum UserTypeEnum 
	ADMIN(1,"超级管理员"),
	BOOK(2,"图书管理员"),
	IN(3,"进货管理员"),
	OUT(4,"销售管理员"),
	STOCK(5,"库存管理员");

	private final int type;
	private final String name;
	private UserTypeEnum(int type, String name)
		this.type = type;
		this.name = name;
	

	public int getType() 
		return type;
	
	public String getName() 
		return name;
	

	public static String getNameByType( int type)
		for( UserTypeEnum userType:UserTypeEnum.values())
			if(userType.getType()==type)
				return userType.getName();
			
		
		throw new IllegalArgumentException("枚举中没有对应的用户类型:"+type);
	

	public static int getTypeByName( String name)
		for(UserTypeEnum userType: UserTypeEnum.values())
			if(userType.getName().equals(name))
				return userType.getType();
			
		
		throw new IllegalArgumentException("枚举中没有对应的用户类型:"+name);
	
Uuid模型枚举:

package cn.hncu.common;

public enum UuidModelConstance 
	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;
	


2、uuid包

值对象层:

package cn.hncu.common.uuid.vo;

import java.io.Serializable;

public class UuidModel implements Serializable
	private String modelName;
	private int currentNum;
	
	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 + currentNum;
		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 (currentNum != other.currentNum)
			return false;
		if (modelName == null) 
			if (other.modelName != null)
				return false;
		 else if (!modelName.equals(other.modelName))
			return false;
		return true;
	
数据层:

1)接口:

package cn.hncu.common.uuid.dao.dao;

import cn.hncu.common.UuidModelConstance;

public interface UuidDAO 
	public String getNextUuid(UuidModelConstance uuidEnum);
2)实现类:

package cn.hncu.common.uuid.dao.impl;

import java.util.List;

import cn.hncu.common.UuidModelConstance;
import cn.hncu.common.uuid.dao.dao.UuidDAO;
import cn.hncu.common.uuid.vo.UuidModel;
import cn.hncu.utils.FileIo;

public class UuidDAOImpl implements UuidDAO 
	private String FILE_NAME="Uuid.txt";

	@Override
	public String getNextUuid(UuidModelConstance uuidEnum) 
		String modelName=uuidEnum.getName();
		List<UuidModel> list=FileIo.read(FILE_NAME);
		for (UuidModel uuid:list)
			if (uuid.getModelName().equals(modelName))
				int type=uuid.getCurrentNum();
				uuid.setCurrentNum(type+1);
				FileIo.write(list, FILE_NAME);
				return String.valueOf(type);
			
		
		int type=1;
		UuidModel uuid=new UuidModel();
		uuid.setModelName(modelName);
		uuid.setCurrentNum(2);
		list.add(uuid);
		FileIo.write(list, FILE_NAME);
		return String.valueOf(type);
	
3)工厂类:

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

import cn.hncu.common.uuid.dao.dao.UuidDAO;
import cn.hncu.common.uuid.dao.impl.UuidDAOImpl;

public class UuidDAOFactory 
	public static UuidDAO getUuidDAO()
		return new UuidDAOImpl();
	


以上是关于Java之------单机版书店管理系统(设计思想和设计模式系列三)工具包和公共包的主要内容,如果未能解决你的问题,请参考以下文章

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

Java-单机版的书店管理系统(系列 一 )

计算机毕业设计之java+javaweb的电气与信息类书籍网上书店

计算机毕业设计之java+ssm网上书店销售管理系统

计算机毕业设计之java+javaweb的网上电子书店-图书商城网站

计算机毕业设计之java+ssm图书商城_网上书店