⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 货物进出管理系统完整版.txt

📁 货物进出管理系统
💻 TXT
字号:
//Add类
class Add{
	int itemNumber;    //商品号
	int supplier;      //供应商号
	String description;//商品描述
	
	public Add(int i,int s,String d){
		itemNumber=i;supplier=s;description=d;
	}
}


//Buy类
class Buy{
	int itemNumber;         //商品号
	int quantity;           //商品数量
	
	public Buy(int i,int q){
		itemNumber=i;quantity=q;
	}
}

//Delete类
class Delete{
	int itemNumber;      //商品号
	
	public Delete(int i){
		itemNumber=i;
	}	
}

//Goods类
class Goods{
	int itemNumber;    //商品号
	int quantity;      //商品数量
	int supplier;      //供应商号
	String description;//商品描述
	
	public Goods(int i,int q,int s,String d){
		itemNumber=i;quantity=q;supplier=s;description=d;
	}
	public Goods(Add a){
	    itemNumber=a.itemNumber;
	    quantity=0;
	    supplier=a.supplier;
	    description=a.description;
	}
}

//Sell类
class Sell{
	int itemNumber;    //商品号
	int quantity;      //商品数量
	int customer;      //客户号
	
	public Sell(int i,int q,int c){
		itemNumber=i;quantity=q;customer=c;
	}
	public Sell(Sell s){
		itemNumber=s.itemNumber;
		quantity=s.quantity;
		customer=s.customer;
	}
}




//主类
import java.util.*;
import java.io.*; 
//主类,由主函数依次调用7个处理函数,完成一定的功能.这是面向过程的编程思路

public class Storage{
	public static Vector goodsvector,sellvector,buyvector,deletevector,addvector;
	public static void main(String[]a){
		goodsvector=new Vector();
		sellvector=new Vector();
		buyvector=new Vector();
		deletevector=new Vector();
		addvector=new Vector();
		System.out.println();
		readInventory();
		readTransaction();
		dealAdd();
		dealBuy();
		dealSell();
	    dealDelete();
		writeNewInwentory();
		System.out.println("整个流程已处理完毕。");
	}
	
	public static void readInventory(){
	  //这个函数从文件Inventory.dat中读取记录,生生成一系列Goods类对象
		try{
			BufferedReader br=new BufferedReader(new FileReader("Inventory.dat") );
			StringTokenizer stz;//利用了字符串分隔提取类StringTokenizer
			String str=br.readLine();
			String word[]=new String[4];			
			Integer item,num,sup;
			String desc;
			while(str!=null){
				int i=0;
				stz=new StringTokenizer(str,"\t");
				while(stz.hasMoreTokens()){ //这条记录还没提取完
					word[i]=stz.nextToken();
					i++;
				}
				item=new Integer(word[0]);
				num=new Integer(word[1]);
				sup=new Integer(word[2]);
				desc=word[3];
				Goods good=new Goods(item.intValue(),num.intValue(),sup.intValue(),desc);
				    //建立Goods类对象,并加入向量goodsvector
				goodsvector.add(good);
				str=br.readLine();
			}
			System.out.println("已完成读取货存信息,现在有"+goodsvector.size()+"个Goods类对象");
		    System.out.println();
			br.close();
		}
		catch(Exception e){ System.out.println("Error in readInventory.");	}
	}
	
	public static void readTransaction(){
	  //这个函数从文件Transaction.dat中读取记录,生生成一系列Sell Add Buy Delete类对象,
	  //并顺序加入向量 sellvector buyvector deletevector addvector
		try{
			BufferedReader br=new BufferedReader(new FileReader("Transaction.dat") );
			StringTokenizer stz;
			String str=br.readLine();
			String first;
			char c;
			while(str!=null){
				stz=new StringTokenizer(str,"\t");
				first=stz.nextToken();
				c=first.charAt(0);
				if(c=='O'){ //'O'代表销售
					String word[]=new String[3];
					int i=0;
					Integer item,num,sup;
					while(stz.hasMoreTokens()){
					   word[i]=stz.nextToken();
					   i++;
				    }
				    item=new Integer(word[0]);
				    num=new Integer(word[1]);
				    sup=new Integer(word[2]);
				    Sell good=new Sell(item.intValue(),num.intValue(),sup.intValue());
				    sellvector.add(good);
				}
				else if(c=='R'){  //'R'代表进货
					String word[]=new String[2];
					int i=0;
					Integer item,num;
					while(stz.hasMoreTokens()){
					   word[i]=stz.nextToken();
					   i++;
				    }
				    item=new Integer(word[0]);
				    num=new Integer(word[1]);
				    Buy good=new Buy(item.intValue(),num.intValue() );
				    buyvector.add(good);
				}
				else if(c=='A'){  //'A'代表加一种新货物
					String word[]=new String[3];
					int i=0;
					Integer item,sup;
					String desc;
					while(stz.hasMoreTokens()){
					   word[i]=stz.nextToken();
					   i++;
				    }
				    item=new Integer(word[0]);
				    sup=new Integer(word[1]);
				    desc=word[2];
				    Add good=new Add(item.intValue(),sup.intValue(),desc);
				    addvector.add(good);
				}
				else if(c=='D'){  //'D'代表删除一种货物
					String word=stz.nextToken();
					Integer item=new Integer(word);
					Delete good=new Delete(item.intValue());
					deletevector.add(good);
				}  
				else {  System.out.println("Transaction mode is not proper!");	}
				str=br.readLine();	

			}
			br.close();
			System.out.println("已完成读取交易信息。");
//			System.out.println("现在有"+goodsvector.size()+"个Goods类对象");
			System.out.println("现在有"+addvector.size()+"个Add事务");
			System.out.println("现在有"+buyvector.size()+"个Buy事务");
			System.out.println("现在有"+sellvector.size()+"个Sell事务");
			System.out.println("现在有"+deletevector.size()+"个Delete事务");
		    System.out.println();
		}
		catch(Exception e){ System.out.println("Error in writeNewInventory.");	}		
	}
	
	public static void dealAdd(){
		//依次从addvector中取出一个对象,并进行处理
		try{
			PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat") );
			int j=0;
			for(int i=0;i<addvector.size();i++){
				Add a=(Add)(addvector.get(i));
				for(j=0;j<goodsvector.size();j++)
				  if(a.itemNumber<=((Goods)(goodsvector.get(j))).itemNumber )
				      break;
				if(((Goods)(goodsvector.get(j))).itemNumber>a.itemNumber){
					Goods good=new Goods(a);
					goodsvector.add(j,good);
				}
				else if(((Goods)(goodsvector.get(j))).itemNumber==a.itemNumber){
					String str=" A\t"+"itemNumber:"+a.itemNumber+"\t\t"+"supplier:"+a.supplier+"\t\t"
					+"description:"+a.description+"\t\tThe goods itemNumber still exists!";
					pw.println(str);
				}
				else{
					Goods good=new Goods(a);
					goodsvector.add(good);
				}
			}
			System.out.println("已完成添加一种新货物交易。");
			System.out.println("现在有"+goodsvector.size()+"个Goods类对象");
			System.out.println();
			pw.close();
		}
		catch(Exception e){ System.out.println("Error in dealAdd.");	}
	}
	
	public static void dealBuy(){
		//依次从buyvector中取出一个对象,并进行处理
		try{
			PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat",true) );        
			int j=0;
			String str;
            for(int i=0;i<buyvector.size();i++){
				Buy b=(Buy)(buyvector.get(i));
				for(j=0;j<goodsvector.size();j++)
				  if(b.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
				      break;
				if(j==goodsvector.size()){
					str=" R\t"+"itemNumber:"+b.itemNumber+"\t\t"+"addedquantity:"+b.quantity
					    +"\t\tThis kind of goods doesnot exist!";
					pw.println(str);
				}
				else{
					Goods good=(Goods)(goodsvector.get(j));
					if(good.quantity+b.quantity>999999){
					   str=" R\t"+"itemNumber:"+b.itemNumber+"\t"+"addedquantity:"+b.quantity
					     +"\t"+"stock:"+good.quantity+"\t\tQuantity cannot be over 999999!";
					   pw.println(str);
					}
					else good.quantity+=b.quantity;
				}
		     }
			 System.out.println("已完成进货交易。");
			 System.out.println();		      
		     pw.close();
	    }
	    catch(Exception e){ System.out.println("Error in dealBuy.");	}
    }
	
	public static void trimsellvector(){
		//对sellvector进行处理,合并itemNumber customer均相同的记录
		for(int i=0;i<sellvector.size();i++)
		    for(int j=i+1;j<sellvector.size();j++){
		    	Sell s1=(Sell)(sellvector.get(i));
		    	Sell s2=(Sell)(sellvector.get(j));
		    	Sell sa=new Sell(s1);
		    	Sell sb=new Sell(s2);
		        if(sa.itemNumber==sb.itemNumber&&sa.customer==sb.customer){
		    		sa.quantity+=sb.quantity;
		    		sb=new Sell(0,0,0);
		    		sellvector.setElementAt(sa,i);		    		
		    		sellvector.setElementAt(sb,j); 		    		
		    	}    
		    
		    }
	}
	
	public static void resortsellvector(){
		//对sellvector进行处理,对itemNumber相同的记录,优先处理quantity小的
		for(int i=0;i<sellvector.size();i++)
		    for(int j=i;j<sellvector.size();j++){
		    	Sell s1=(Sell)(sellvector.get(i));
		    	Sell s2=(Sell)(sellvector.get(j));
		    	Sell sa=new Sell(s1);
		    	Sell sb=new Sell(s2);
		    	if(sa.itemNumber==sb.itemNumber&&sa.quantity>sb.quantity){
		    		int item=sa.itemNumber;
		    		int num=sa.quantity;
		    		int sup=sa.customer;
		    		sa.itemNumber=sb.itemNumber;
		    		sa.quantity=sb.quantity;
		    		sa.customer=sb.customer;
		    		sb.itemNumber=item;
		    		sb.quantity=num;
		    		sb.customer=sup;
		    		
		       		sellvector.setElementAt(sa,i);
		    		sellvector.setElementAt(sb,j);		    		
		    	}
		    }
	    
	}
	
	public static void dealSell(){
		//依次从sellvector中取出一个对象,并进行处理
		trimsellvector();
		resortsellvector();
		try{
			PrintWriter pw1=new PrintWriter(new FileWriter("Errors.dat",true) );
			PrintWriter pw2=new PrintWriter(new FileWriter("Shipping.dat") );   
			int j=0;
			String str;
			System.out.println("  \titemNumber\t\tSoldQuantity\t\tCustomerID");
			for(int i=0;i<sellvector.size();i++){
				Sell s=(Sell)(sellvector.get(i));
				for(j=0;j<goodsvector.size();j++)
				    if(s.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
				        break;
				if(j==goodsvector.size()){
					str=" O\t"+"itemNumber:"+s.itemNumber+"\t"+"soldquantity:"+s.quantity+"\t\t"
					    +"customer:"+s.customer+"\t\tThis kind of good doesnot exist!";
					pw1.println(str);
				}
				else{
					Goods good=(Goods)(goodsvector.get(j));
					if(good.quantity<s.quantity){
						str=" O\t"+"itemNumber:"+s.itemNumber+"\t\t"+"soldquantity:"+s.quantity+"\t\t"
					        +"stock:"+good.quantity+"\t"+"\t\tThe stock isnot enough!";
					    pw1.println(str);
					}
					else{
						good.quantity-=s.quantity;
						str=" O\t"+s.itemNumber+"\t"+s.quantity+"\t"+s.customer;
						pw2.println(str);
					}
				}
			}
			System.out.println("已完成销售交易。");
			System.out.println();			
			pw1.close();
			pw2.close();			 
		}
		catch(Exception e){ System.out.println("Error in dealSell.");	}
	}
	
	public static void dealDelete(){
		//依次从deletevector中取出一个对象,并进行处理
		try{
			PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat,true") );
			int j=0;
			String str;
			for(int i=0;i<deletevector.size();i++){
				Delete d=(Delete)(deletevector.get(i));
				for(j=0;j<goodsvector.size();j++)
					if(d.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
					    break;
			    if(j==goodsvector.size()){
					str=" D\t"+"itemNumber:"+d.itemNumber+"\t\tThis kind of good doesnot exist!";
					pw.println(str);
				}
				else if( ((Goods)(goodsvector.get(j))).quantity!=0 ){
				    str=" D\t"+"itemNumber:"+d.itemNumber+"stock:"+
				       ((Goods)(goodsvector.get(j))).quantity
				       +"\t\tThis quantity of good isnot 0!";
					pw.println(str);
				}
				else goodsvector.removeElementAt(j);
			}
			System.out.println("已完成删除一种货物的交易。现在有"+goodsvector.size()+"个Goods类对象");
			System.out.println();					
			pw.close();
		}
		catch(Exception e){ System.out.println("Error in dealDelete.");	}
	}
		
	public static void writeNewInwentory(){
		//把程序结果,即新的货物存储信息保存到文件NewInventory.dat中
		try{
			PrintWriter pw=new PrintWriter(new FileWriter("NewInventory.dat") );
			for(int i=0;i<goodsvector.size();i++){
				Goods good=(Goods)(goodsvector.get(i));
				String str=good.itemNumber+"\t"+good.quantity+"\t"+good.supplier+"\t"+good.description;
				pw.println(str);
			}
			System.out.println("已完成存储数据的处理。");
            System.out.println();
			pw.close();
		}
		catch(Exception e){ System.out.println("Error in writeNewInventory.");	}		
	}		
}

⌨️ 快捷键说明

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