Java模拟公司置办货物系统(二)

采用MVC风格,将数据写入文件,模拟公司置办货物系统。 
A类表示普通员工,B类表示部门精力,C类表示采购部,D类表示资源管理部。

订单状态 1.表示申请状态 2.表示通过审批 3.表示未通过审批 4.表示订单完成,购物完成

第三步:创建Po类,代表采购部批准的订单类.

package com.jereh14;

public class Po implements java.io.Serializable{

    public int getPor_no() {
        return por_no;
    }
    public void setPor_no(int por_no) {
        this.por_no = por_no;
    }
    public String getPart_desc() {
        return part_desc;
    }
    public int getPo_no() {
        return po_no;
    }
    public void setPo_no(int po_no) {
        this.po_no = po_no;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public String getComp() {
        return comp;
    }
    public void setComp(String comp) {
        this.comp = comp;
    }
    public String getOrd_date() {
        return ord_date;
    }
    public void setOrd_date(String ord_date) {
        this.ord_date = ord_date;
    }
    public String getOrd_emp() {
        return ord_emp;
    }
    public void setOrd_emp(String ord_emp) {
        this.ord_emp = ord_emp;
    }
    public void setPart_desc(String part_desc) {
        this.part_desc = part_desc;
    }
    public String getPart_type() {
        return part_type;
    }
    public void setPart_type(String part_type) {
        this.part_type = part_type;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }

    public String getPnd() {
        return pnd;
    }
    public void setPnd(String pnd) {
        this.pnd = pnd;
    }

    public int getStus() {
        return stus;
    }
    public void setStus(int stus) {
        this.stus = stus;
    }

    private int po_no;
    private int por_no;
    private String part_desc;
    private String part_type;
    private int count;
    private double price;
    private String comp;
    private String pnd;
    private String ord_date;
    private String ord_emp;
    private int stus;

}

定义PoBiz类,实现购买的物品入库方法.

package com.jereh14;

import java.io.*;
import java.util.*;

public class PoBiz {

private List<Po> list = new ArrayList<Po>();

    public void addPo(Po po){

        readDb();
        list.add(po);
        writeDb();
    }
    public void showPo(){

        readDb();
        Iterator<Po> i = list.iterator();
            while(i.hasNext()){
                Po p = i.next();
                System.out.println(p.getPo_no()+"\t"+p.getPor_no()+"\t"+p.getPart_desc()+"\t"+p.getPart_type()+"\t"+
                        p.getCount()+"\t"+p.getPrice()+"\t"+p.getStus()+"\t"+p.getComp()+"\t"+p.getPnd()+"\t"+p.getOrd_date()+"\t"+
                        p.getOrd_emp());
            }
        writeDb();
    }

    public boolean check(int por_no){
        Iterator<Po> i = list.iterator();
        boolean bool = false;
        while(i.hasNext()){
            Po p = i.next();
            if(p.getPor_no() == por_no){
                bool = true;
                break;
            }else{
                bool = false;
            }
        }
        return bool;
    }

    public void readDb(){

        FileInputStream fis  = null;
        ObjectInputStream is = null;
        try {
            fis = new FileInputStream("F:\\test\\Po.txt");
            is = new ObjectInputStream(fis);
            list = (List<Po>) is.readObject();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    public void writeDb(){

        FileOutputStream fos  = null;
        ObjectOutputStream os = null;
        try {
            fos = new FileOutputStream("F:\\test\\Po.txt");
            os  = new ObjectOutputStream(fos);
            os.writeObject(list);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                os.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

定义PoView类,用于采购部确定经过审批的界面,订单状态变为4。

package com.jereh14;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class PoView {

    private int i = 0;
    public void showInfoView(){

        Scanner scn = new Scanner(System.in);
        PorBiz pb   = new PorBiz();
        PoBiz  pbz  = new PoBiz();
        Po po = null;
        Por por = null;


        System.out.println("=======================================订单审批=======================================\n");
        System.out.println("编号\t名称\t型号\t数量\t用途\t需要日期\t申请日期\t状态\t申请者\t批准日期\t审核者\n");
        pb.showPor(3);
        while(true){

            System.out.println("\n******************************1、选单订货\t\t2、退出*******************************");
            System.out.print("请选择您的操作:");
            int chooseNum = scn.nextInt();
            int porId = -1;
            switch(chooseNum){
            case 1:
                System.out.print("请输入您要操作的单号:");
                porId = scn.nextInt();
                if((por=pb.getPor(porId))!=null){
                    System.out.print("请输入订货数量:");
                    int por_num = scn.nextInt();
                    System.out.print("请输入单价:");
                    double price = scn.nextDouble();
                    System.out.print("请输入供应商:");
                    String comp = scn.next();

                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                    po = new Po();
                    po.setPo_no(i++);
                    po.setPor_no(por.getPor_no());
                    po.setPart_desc(por.getPart_desc());
                    po.setPart_type(por.getPart_type());
                    po.setCount(por_num);
                    po.setPrice(price);
                    po.setComp(comp);
                    po.setPnd(por.getPnd());
                    po.setOrd_date(sdf.format(date));
                    po.setOrd_emp(por.getRgdt_emp());
                    po.setStus(4);

                    pbz.addPo(po);
                    pb.changeStuts(porId, 3);
                    if(pb.check(porId)){
                        System.out.println("--添加成功!--");
                    }else{
                        System.out.println("--添加失败!--");
                    }
                }else{
                    System.out.println("--该订单不存在!--\n");
                }
                break;
            case 2:
                System.exit(0);
                System.out.println("谢谢您的使用!");
                break;
                default:
                    System.out.println("--输入有误!--");
                    break;
            }
        }
    }
}

这里写图片描述
定义PoCfView类,用来仓库物品查询.

package com.jereh14;

import java.util.Scanner;

public class PoCfView {

    public void showInfoView(){
        Scanner scn = new Scanner(System.in);
        PorBiz pb   = new PorBiz();
        PoBiz  pbz  = new PoBiz();

        while(true){
            System.out.println("=======================================仓库查询=======================================\n");
            System.out.println("========================请选择您的操作:1、查看仓库\t\t2、退出======================");
            int chooseNum = scn.nextInt();
            switch(chooseNum){
            case 1:
                System.out.println("\n订货编号\t申请编号\t名称\t型号\t数量\t单价\t状态\t供应商\t需要日期\t订货日期\t订货者\n");
                pbz.showPo();
                System.out.println("\n************************************************************************************");               break;
            case 2:
                System.out.println("谢谢您的使用!");
                System.exit(0);
                break;
                default:
                    System.out.println("--输入有误!--");
                    break;
            }
        }
    }

}

运行效果图:这里写图片描述
第四歩:定义Test类将各个View组合起来。

package com.jereh14;

import java.util.Scanner;

public class Test {

    public static void main(String[] args){

        Scanner scn      = new Scanner(System.in);
        EmployeerBiz elb = new EmployeerBiz();
        EmployeerView elv = new EmployeerView();
        PorView prv       = new PorView();
        PorCfView pcv    = new PorCfView();
        PoCfView pfv      = new PoCfView();
        PoView pv        = new PoView();


        System.out.println("==========================欢迎来到大冰公司===========================");
        while(true){    
            System.out.print("\n\t\t\t请输入工号:");
            int userId = scn.nextInt();
            System.out.print("\t\t\t请输入密码:");
            String password = scn.next();
            String type = elb.searchPor(userId, password);
            if(type!=null){
                char ch = type.charAt(0);
                switch(ch){
                case 'A':
                    System.out.println("\n经检测,你的身份是普通员工,可以进行订单申请\n");
                    prv.porView();
                    break;
                case 'B':
                    System.out.println("\n经检测,你的身份是部门经理,可以进行订单处理\n");
                    pcv.showInfoView();
                    break;
                case 'C':
                    System.out.println("\n经检测,你的身份是采购部人员,可以将批准的订单\n");
                    pv.showInfoView();
                    break;
                case 'D':
                    System.out.println("\n经检测,你的身份是资源管理部人员\n");
                    pfv.showInfoView();
                    break;
                    default:
                        break;
                }
            }else if(userId==0&&password.equals("0")){
                System.out.println("\n经检测您是尊贵的管理员\n");
                elv.empView();
            }else{
                System.out.println("你不是本公司员工!");
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值