import java.io.; import java.nio.Buffer; import java.util.;

public class Main { // 创建一个排序函数,对订单按照数量从小到大排序 public static String[][] paixu(Vector<String[]> a){ Vector<String[]> e=new Vector<>(); int m=a.size(); String[][] g=new String[m][4]; for(int i=0;i<m;i++){ g[i]=a.get(i); } int n=a.size(); for(int i=0;i<m;i++){ int k=0; int b=Integer.parseInt(g[0][2]); for(int j=1;j<n;j++){ //找到最小值 if(Integer.parseInt(g[j][2])<=b){ b=Integer.parseInt(g[j][2]); k=j; } } e.add(g[k]); //添加最小值 if(k==m-1){ n--; } for(int p=k;p<m-1;p++){ //删除最小值 g[p]=g[p+1]; n--; } } String[][] h=new String[m][4]; for(int i=0;i<m;i++){ h[i]=e.get(i); } return h; }

public static void main(String[] args) throws IOException {
    try {
        // 读取Inventory.txt文件,将商品数据导入Inventory.In中
        FileReader one = new FileReader("Inventory.txt");
        BufferedReader two = new BufferedReader(one);
        String line;
        while((line = two.readLine())!=null) {     
            String[] split = line.split("\\s+");
            int m = Integer.parseInt(split[1]);
            Inventory.In.add(new Inventory(split[0], m, split[2], split[3]));
        }
        two.close();
    }
    catch (Exception ignored) {
    }
    // 读取Transactions.txt文件,将订单数据导入tran中
    File tran1=new File("Transactions.txt");
    BufferedReader tran2=new BufferedReader(new FileReader(tran1));
    Vector<String[]> tran =new Vector<>();
    String line2;
    while((line2= tran2.readLine())!=null){
        String[] a=line2.split("\\s+");
        tran.add(a);
    }
    // 创建输出流
    File Err=new File("Error.txt");
    Vector<String[]> err1=new Vector<>();
    BufferedWriter Err1 = new BufferedWriter(new FileWriter(Err));
    Err1.write("Custom\tItem_number\tQuantity\n");

    // 根据题意,优先处理A,新增订单
    for(String[] b :tran ){
        if(Objects.equals(b[0] , "A")) {
            Inventory.In.add(new Inventory(b[1], 0 ,  b[2] , b[3]));
        }
    }

    // 优先级排第二的是到货记录
    for(String[] b:tran){
        if(Objects.equals(b[0],"R")){
            for(Inventory c : Inventory.In){
                if(Objects.equals(c.number,b[1])){
                    c.Quantity+=Integer.parseInt(b[2]);
                }
            }
        }
    }

    // 第三处理发货记录,首先判断要发的货是<=0,确定添加到错误信息,库存量小于发货货量,停止发货,添加错误信息,多个订单,从小到大处理
    Vector<String[]> m=new Vector<>();
    for(String[] d:tran){
        if(Objects.equals(d[0],"O")){
            m.add(d);    //将所有的发货订单存储到一个表
        }
    }
    String[][] fahuodan=paixu(m);
    for(String[] f:fahuodan){
        String r=f[1];
        int s=Integer.parseInt(f[2]);
        for(Inventory c:Inventory.In){
            if(Objects.equals(c.number,r)){
                if(c.Quantity<=0){  // 要发的货是<=0
                    Err1.write(c.number+"\t"+"货物存储量不正确\n");
                    Err1.flush();
                }
                else{
                    if(c.Quantity-s<0){  // 库存量小于发货货量
                        Err1.write(f[3]+"\t"+f[1]+"\t"+f[2]+"\n");
                        Err1.flush();
                    }
                    else {
                        c.Quantity -= s;
                        int l=0;
                        for(Shipping1 err:Shipping1.Ship){
                            if(Objects.equals(err.Custom,f[3])&&Objects.equals(err.Item,f[1])){
                                Shipping1.Ship.add(new Shipping1(f[3],f[1],Integer.parseInt(f[2])+err.Quantity));
                                l=1;
                            }
                        }
                        if(l==0){
                            Shipping1.Ship.add(new Shipping1(f[3],f[1],Integer.parseInt(f[2])));
                        }
                        // Shi1.write(f[3]+"\t"+f[1]+"\t"+f[2]+"\n");
                        //Shi1.flush();
                    }
                }
            }
        }
    }

    // 处理删除订单信息
    for(String[] d:tran) {
        if (Objects.equals(d[0],"D")) {
            for (int i = 0; i < Inventory.In.size(); i++) {
                if (Objects.equals(Inventory.In.get(i).number,d[1])) {
                    if (Inventory.In.get(i).Quantity != 0) { // 库存量不为0
                        Err1.write("0\t" + d[1] + "\t" + Inventory.In.get(i).Quantity + "\n");
                        Err1.flush();
                    } else {
                        Inventory.In.remove(i);
                        break;
                    }
                }
            }
        }
    }
    Err1.close();

    // 将Shipping1.Ship中的数据写入Shipping.txt文件
    File Shi=new File("Shipping.txt");
    BufferedWriter Shi1 = new BufferedWriter(new FileWriter(Shi));
    Shi1.write("Custom\tItem_number\tQuantity\n");
    for(Shipping1 erro:Shipping1.Ship){
        Shi1.write(erro.Custom+"\t"+erro.Item+"\t"+erro.Quantity);
        Shi1.flush();
    }
    Shi1.close();

    // 将Inventory.In中的数据写入NewInventory.txt文件
    File new_file=new File("NewInventory.txt");
    BufferedWriter bw_new=new BufferedWriter(new FileWriter(new_file));
    bw_new.write("Item_number\tQuantity\tSupplier\tDescription\n");
    for(Inventory inv :Inventory.In){
        bw_new.write(inv.number+"\t"+inv.Quantity+"\t"+inv.Supplier+"\t"+inv.Des+"\n");
        bw_new.flush();
    }
    bw_new.close();

    System.out.println("文件已经生成,正在退出系统……");
}
import javaio;import javanioBuffer;import javautil;public class Main public static String paixuVectorString a VectorString e=new Vector; int m=asize; String g=new Stringm4;

原文地址: https://www.cveoy.top/t/topic/hbjO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录