Java实验之货物进销管理系统

                                                货物进销管理系统

一、实验目的

    1.掌握Java中文件的读写操作。

    2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。

    3.掌握字符串类(String, StringBuffer)的使用。

    4.掌握用面向对象的方法分析和解决复杂问题。

 

二、实验原理

    1.使用java的文件读写操作读入货物的信。

    2.使用vector容器将货物的信息存储起来。

    3.创建多个类将信息分类。

    4.通过判断信息的类型建立相应的成员函数进行处理信息。

    5.将各个消息分类写入到新的文本中。

三、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)

    1、将各个货物的信息与种类读入并分类存储起来。

    2、创建多个类分别用来执行相应的操作。

    3、创建各个成员函数处理类从而将货物的信息进行处理。

    4、通过对应的信息编码分别进行发货、到货记录、库存、删除等操作。

    5、将各个处理后的信息分类存储到相应的文本文件中。

主代码:

 
import java.io.*;   
import java.util.Vector;   
     
public class Inventory{   
	//建立相应的vector容器为存储信息做准备。
    @SuppressWarnings("rawtypes")
	Vector inv = new Vector();        
    @SuppressWarnings("rawtypes")
	Vector receive = new Vector();       
    @SuppressWarnings("rawtypes")
	Vector offer = new Vector();       
    @SuppressWarnings("rawtypes")
	Vector AddNam = new Vector();         
    @SuppressWarnings("rawtypes")
	Vector DeleteNum = new Vector();     
    @SuppressWarnings("rawtypes")
	Vector shipping_v = new Vector();   
    @SuppressWarnings("rawtypes")
	Vector Err_v = new Vector();       
       
    @SuppressWarnings("unchecked")
	//将文件信息读入并存储在vector容器中。
	public void readInv(String filename){   
        try{   
            BufferedReader br = new BufferedReader(new FileReader(filename));   
            String s = null;   
            while((s=br.readLine()) != null){   
                String[] Name = s.split("\t");   
                inv.add(new Inv(Integer.parseInt(Name[0]),Integer.parseInt(Name[1]),Integer.parseInt(Name[2]),Name[3]));   
            }   
            br.close();   
        }   
        catch(Exception e){   
        }   
    }   
      
    @SuppressWarnings("unchecked")
	//根据读入的ORAD字母进行相应的操作。
	public void readTra(String filename){   
        try{   
            BufferedReader br = new BufferedReader(new FileReader(filename));   
            String s = null;   
            while((s=br.readLine()) != null){   
                String[] Name = s.split("\t");   
                char method = Name[0].charAt(0);   
                if(method=='O')   
                    offer.add(new Offer(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Integer.parseInt(Name[3])));   
                else if(method=='R')   
                    receive.add(new Receive(Integer.parseInt(Name[1]), Integer.parseInt(Name[2])));   
                else if(method=='A')   
                    AddNam.add(new Add(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Name[3]));   
                else if(method=='D')   
                    DeleteNum.add(new Delete(Integer.parseInt(Name[1])));   
            }   
            br.close();   
        }   
        catch(Exception e){   
        }   
    }   
       
    @SuppressWarnings("unchecked")
	//进行添加操作。
	public void dealAdd(){   
        for(int i=0; i<AddNam.size(); i++){   
            Inv Name = new Inv((Add)AddNam.get(i));   
            inv.add(Name);   
        }   
    }   
    //进行接受操作。   
    public void dealReceive(){   
        for(int i=0; i<receive.size(); i++){   
            for(int j=0; j<inv.size(); j++){   
                if( ((Receive)receive.get(i)).Index == ((Inv)inv.get(j)).Index )   
                    ((Inv)inv.get(j)).plus(((Receive)receive.get(i)).Next);   
            }   
        }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录错误的货物信息。
	public void arrOffer(){   
        for(int i=0; i<offer.size(); i++)   
            for(int j=i+1; j<offer.size(); j++){   
                if( ((Offer)offer.get(i)).Index == ((Offer)offer.get(j)).Index ){   
                    if( ((Offer)offer.get(i)).Next > ((Offer)offer.get(j)).Next ){   
                        Offer Name = (Offer)offer.get(i);   
                        offer.set(i,(Offer)offer.get(j));   
                        offer.set(j,Name);   
                    }   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录货物信息。
	public void dealOffer(){   
        for(int i=0; i<offer.size(); i++)   
            for(int j=0; j<inv.size(); j++){   
                if( ((Offer)offer.get(i)).Index == ((Inv)inv.get(j)).Index ){   
                    if( ((Inv)inv.get(j)).Next >= ((Offer)offer.get(i)).Next ){   
                        ((Inv)inv.get(j)).cut( ((Offer)offer.get(i)).Next );   
                        shipping_v.add( (Offer)offer.get(i) );   
                    }   
                    else{   
                        Err Name = new Err( (Offer)offer.get(i) );   
                        Err_v.add(Name);   
                    }   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录需要删除的信息。
	public void dealDelete(){   
        for(int i=0; i<DeleteNum.size(); i++){   
            for(int j=0; j<inv.size(); j++){   
                if( ((Delete)DeleteNum.get(i)).Index == ((Inv)inv.get(j)).Index ){   
                    if(((Inv)inv.get(j)).Next == 0){   
                        inv.remove(j);   
                        break;   
                    }   
                    else{   
                        Err_v.add(new Err(0, ((Inv)inv.get(j)).Index, ((Inv)inv.get(j)).Next ));   
                        break;   
                    }   
                }   
            }   
        }   
               
    }   
       
    @SuppressWarnings("unchecked")
	public void arrshipping(){   
        for(int i=0; i<shipping_v.size(); i++)   
            for(int j=i+1; j<shipping_v.size(); j++){   
                if( ((Offer)shipping_v.get(i)).Customer == ((Offer)shipping_v.get(j)).Customer && ((Offer)shipping_v.get(i)).Index == ((Offer)shipping_v.get(j)).Index ){   
                    Offer Name = new Offer( ((Offer)shipping_v.get(i)).Index, ((Offer)shipping_v.get(i)).Next+((Offer)shipping_v.get(j)).Next, ((Offer)shipping_v.get(i)).Customer );   
                    shipping_v.set(i,Name);   
                    shipping_v.remove(j);   
                    j--;   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	public void arrInv(){   
        for(int i=0; i<inv.size(); i++)   
            for(int j=i+1; j<inv.size(); j++){   
                if( ((Inv)inv.get(i)).Index > ((Inv)inv.get(j)).Index ){   
                    Inv Name = (Inv)inv.get(i);   
                    inv.set(i,(Inv)inv.get(j));   
                    inv.set(j,Name);   
                }   
            }   
    }   
    //将信息保存在相应的文本中。 
    public void write(String filenames){   
        try{   
            String[] filename = filenames.split(" ");   
               
            BufferedWriter ibw = new BufferedWriter(new FileWriter(filename[0]));   
            BufferedWriter sbw = new BufferedWriter(new FileWriter(filename[1]));   
            BufferedWriter ebw = new BufferedWriter(new FileWriter(filename[2]));   
               
            for(int i=0; i<inv.size(); i++){   
                Inv Name = (Inv)inv.get(i);   
                String s = Name.Index +"\t"+ Name.Next +"\t"+ Name.Last +"\t"+ Name.Message;   
                ibw.write(s);   ibw.newLine();   
            }   
               
            for(int i=0; i<shipping_v.size(); i++){   
                Offer Name = (Offer)shipping_v.get(i);   
                String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;   
                sbw.write(s);   sbw.newLine();   
            }   
               
            for(int i=0; i<Err_v.size(); i++){   
                Err Name = (Err)Err_v.get(i);   
                String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;   
                ebw.write(s);   ebw.newLine();   
            }   
            ibw.close();   
            sbw.close();   
            ebw.close();   
        }   
        catch(Exception e){   
        }   
    }   
       
    public static void main(String[] arg){   
        Inventory inventory = new Inventory();  
		//读入两个文件的信息。
        inventory.readInv("Inventory.txt"); 
        inventory.readTra("Transactions.txt");  
		//根据读入的信息分别进行添加接受删除操作。
        inventory.dealAdd();   
        inventory.dealReceive();   
        inventory.arrOffer();  
        inventory.dealOffer();  
        inventory.dealDelete(); 
        inventory.arrshipping();   
        inventory.arrInv(); 
		//将信息保存在相应的文本中。
        inventory.write("NewInventory.txt shipping.txt Errors.txt");   
    }   
}
//定义主货物类以及添加减少操作。
class Inv{   
    int Index;   
    int Next;   
    int Last;   
    String Message;    
    Inv(int i,int q, int s, String d){   
        Index = i;   
        Next = q;   
        Last = s;   
        Message = d;   
    }   
    Inv(Add Name){   
        Index = Name.Index;   
        Next = 0;   
        Last = Name.Last;   
        Message = Name.Message;   
    }   
    public void plus(int q){    
        Next += q;   
    }   
    public void cut(int q){     
        Next -= q;   
    }   
}   
   
//定义接受类。
class Receive{   
    int Index;   
    int Next;   
    Receive(int i, int q){   
        Index = i;   
        Next = q;   
    }   
}   
//定义货物类。   
class Offer{   
    int Index;   
    int Next;   
    int Customer;   
    Offer(int i, int q, int c){   
        Index = i;   
        Next = q;   
        Customer = c;   
    }   
}   
//定义添加类。
class Add{   
    int Index;   
    int Last;   
    String Message;   
    Add(int i, int s, String d){   
        Index = i;   
        Last = s;   
        Message = d;   
    }   
}   
//定义删除类。   
class Delete{   
    int Index;   
    Delete(int i){   
        Index = i;   
    }   
}   
//定义错误信息类。
class Err{   
    int Customer;   
    int Index;   
    int Next;   
    Err(int c, int i, int q){   
        Customer = c;   
        Index = i;   
        Next = q;   
    }   
    Err(Offer o){   
        Customer = o.Customer;   
        Index = o.Index;   
        Next = o.Next;   
    }   
}   
 

Inventory.txt:

17	42	6	Widget,blue
1234	0	4	Whatsit
123123	999999	98	Doohicky

Transactions.txt:

O	123123	1000	9
O	17	36	8
O	17	12	4
R	123123	1
D	1234	
A	5	4	Thingy



  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值