inventory.java

来自「用JAVA实现的货物进销管理系统,可以实现新增货物,发货,到货以及出错管理.」· Java 代码 · 共 216 行

JAVA
216
字号
import java.io.*;
import java.util.*;

class InventoryClass{
	String description_inv,supplier_inv;
	int item_inv,quantity_inv;
	InventoryClass(int i1,int i2,String i3,String str){
		item_inv=i1;
		quantity_inv=i2;
		supplier_inv=i3;
		description_inv=str;
	}
	
}

class TransactionsClass{
	String operation_tra,description_tra;
	int item_tra,quantity_tra;
	TransactionsClass(String i1,int i2,int i3,String str){
		operation_tra=i1;
		item_tra=i2;
		quantity_tra=i3;
		description_tra=str;
	}
}

public class Inventory{
	public static Vector vector1=new Vector(),
	                     vector2=new Vector(),
	                     ship_vector=new Vector(),
	                     error_vector=new Vector();
	public String readFile (String str,int row,int list) throws IOException{
		String str1;
		String ch=new String();
		int i=0,k=0;
		BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(str)));
		while((str1=in.readLine())!=null&&i<row){ 
			StringTokenizer s=new StringTokenizer(str1,"\t");
			while(s.hasMoreTokens()&&k<list){
				ch=s.nextToken();
				k++;
				}
			i++;
			k=0;
			}
		return ch;	
    /*	while((str1=in.readLine())!=null&&i<row)
			i++;
	    StringTokenizer s=new StringTokenizer(str1,"\t");
		while(s.hasMoreTokens()&&k<list){
			ch=s.nextToken();
			k++;
		}
		return ch;*/
	}
	public int getRows(String str) throws IOException{        //返回文件的总行数
		BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(str)));
		int i=0;
		while((in.readLine())!=null){
			i++;
		}
		return i;
	}
	public static int getMinOrder(Vector vec){   //返回容器的定单数量的最小值
		int max=Integer.MAX_VALUE,k=0;
		for(int i=0;i<vec.size();i++){
			if(((TransactionsClass)vec.elementAt(i)).quantity_tra<max&&
			         (((TransactionsClass)vec.elementAt(i)).operation_tra.equals("O")==true)){
				max=((TransactionsClass) vec.elementAt(i)).quantity_tra;
				k=i;
			}
		}
		return k;
		
	}
	public static int getMinItem(Vector v){   //返回容器的最小客号位置
		int max=Integer.MAX_VALUE,k=0;
		for(int i=0;i<v.size();i++){
			if(((InventoryClass) v.elementAt(i)).item_inv<max){
				max=((InventoryClass) v.elementAt(i)).quantity_inv;
				k=i;
			}
		}
		return k;
    }
    public static void newGoods(){          
    	for(int i=0;i<vector2.size();i++){
				if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("A")==true){
					vector1.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(i)).item_tra,0,
					               String.valueOf(((TransactionsClass) vector2.elementAt(i)).quantity_tra),
					               ((TransactionsClass) vector2.elementAt(i)).description_tra));
					vector2.remove(i);
				}
			}
    }
    public static void receiveGoods(){
    	for(int i=0;i<vector2.size();i++){        //按要求分别进行相应的处理
				if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("R")==true){
					for(int k=0;k<vector1.size();k++)
						if(((InventoryClass)vector1.elementAt(k)).item_inv==((TransactionsClass)vector2.elementAt(i)).item_tra){
						((InventoryClass) vector1.elementAt(k)).quantity_inv+=((TransactionsClass)vector2.elementAt(i)).quantity_tra;
						vector2.remove(i);
					}
				}
			}
    }
    public static void sendGoods(){
    	for(int i=0;i<vector2.size();i++){ 
    	      if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("O")==true){ 
					for(int k=0;k<vector1.size();k++){ 
						if(((InventoryClass)vector1.elementAt(k)).item_inv==((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).item_tra)
						if(((InventoryClass)vector1.elementAt(k)).quantity_inv>=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra){ 
							((InventoryClass)vector1.elementAt(k)).quantity_inv-=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra;
							if(ship_vector.size()==0)
							ship_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
							else{
								int m=0;
								for(;m<ship_vector.size();m++){
								if(((InventoryClass)ship_vector.elementAt(m)).item_inv==((InventoryClass)vector1.elementAt(k)).item_inv){
									((InventoryClass)ship_vector.elementAt(m)).quantity_inv+=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra;
									break;
								}
							    }
							    if(m==ship_vector.size())
							    ship_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
						    }
						    vector2.remove(getMinOrder(vector2));
						}
						else{
							error_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
							vector2.remove(getMinOrder(vector2));
						}
					}
					
				}
				
			}
    }
    public static void deleteGoods(){
    	for(int i=0;i<vector2.size();i++){
				if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("D")==true){
					for(int k=0;k<vector1.size();k++){
						if(((TransactionsClass)vector2.elementAt(i)).item_tra==((InventoryClass)vector1.elementAt(k)).item_inv)
						if(((InventoryClass)vector1.elementAt(k)).quantity_inv==0){
							vector1.remove(k);
						}
						else{
							error_vector.addElement(new InventoryClass(((InventoryClass) vector1.elementAt(k)).item_inv,((InventoryClass) vector1.elementAt(k)).quantity_inv,"0",((InventoryClass)vector1.elementAt(k)).description_inv));
						}
					}
				}
			}
    }
    public static void main(String[] args){
		 
		String str=new String();
		String path_Inv=new String("Inventory.dat");
		String path_Tra=new String("Transactions.dat");
		String path_NewInv=new String("NewInventory.dat");
		String path_Ship=new String("shipping.dat");
		String path_Error=new String("errors.dat");
		
		try{
			Inventory inven=new Inventory();         //把文件的内容读到相应容器中
			for(int i=1;i<=inven.getRows(path_Inv);i++){
			vector1.addElement(new InventoryClass(Integer.parseInt(inven.readFile(path_Inv,i,1)),
			                                      Integer.parseInt(inven.readFile(path_Inv,i,2)),
			                                      inven.readFile(path_Inv,i,3),
			                                      inven.readFile(path_Inv,i,4))); 
			}
			for(int i=1;i<=inven.getRows(path_Tra);i++){
			vector2.addElement(new TransactionsClass(inven.readFile(path_Tra,i,1),
			                                         Integer.parseInt(inven.readFile(path_Tra,i,2)), 
			                                         Integer.parseInt(inven.readFile(path_Tra,i,3)),
			                                         inven.readFile(path_Tra,i,4)));
			}
			newGoods();
			receiveGoods();
			sendGoods();
			deleteGoods();
			
			BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_NewInv)));
			out.write("货物编号"+"\t"+"货物数量"+"\t"+"供应商编号"+"\t"+"货物描述"+"\r\n\r\n");
			out.flush();
			 while(vector1.size()>0){ 
			    int i=getMinItem(vector1);
				String str2=new String(((InventoryClass) vector1.elementAt(i)).item_inv+"\t\t"+((InventoryClass) vector1.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass)vector1.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) vector1.elementAt(i)).description_inv+"\r\n");
			    out.write(str2);
				out.flush();
				vector1.remove(i);
			}
			
			out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_Ship)));
			out.write("客户编号"+"\t"+"货物编号"+"\t"+"定货数量"+"\t"+"货物描述"+"\r\n\r\n");
			out.flush();
			for(int i=0;i<ship_vector.size();i++)
			{
				out.write(((InventoryClass) ship_vector.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) ship_vector.elementAt(i)).item_inv+"\t\t"+((InventoryClass)ship_vector.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass) ship_vector.elementAt(i)).description_inv+"\r\n");
				out.flush();
			}
			
			out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_Error)));
			out.write("客户编号"+"\t"+"货物编号"+"\t"+"货物数量"+"\t"+"货物描述"+"\r\n\r\n");
			out.flush();
			for(int i=0;i<error_vector.size();i++)
			{
				out.write(((InventoryClass) error_vector.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) error_vector.elementAt(i)).item_inv+"\t\t"+((InventoryClass)error_vector.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass)error_vector.elementAt(i)).description_inv+"\r\n");
				out.flush();
			}
			
		}catch(IOException e){
			System.out.println(e);
		}
		System.out.println("success");
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?