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("你不是本公司员工!

");
            }
        }
    }
}

原文地址:https://www.cnblogs.com/llguanli/p/8728654.html

时间: 2024-07-29 07:52:51

Java模拟公司置办货物系统(二)的相关文章

android/java模拟登录正方教务系统

最近闲来无事,打算开始写博客,也算是对自己知识的一个总结.本篇将讲解如何使用HttpClient模拟登录正方教务系统. 需要使用道德jar包:HttpClient,Jsoup.(下载jar包) 本次模拟登录的成都大学的教务系统,其他学校的教务系统,可参照本文给出的流程和代码进行修改并测试. 基本流程: 1).使用谷歌浏览器打开教务系统首页,并打开浏览器开发者工具记录浏览过程,然后正常登录并浏览自己的课表,成绩等信息. 2).下载jar包,将jar引用到自己需要的项目中,可创建一个新的工具类. 3

java装潢公司预算系统

每天记录学习,每天会有好心情.*^_^* 在学习基于web的java装潢公司预算系统项目的时候,方便日后能及时查阅,在本平台中记录一下基于web的java装潢公司预算系统的开发流程.在学习时候的选用了SSM(MYECLIPSE),这个框架不论是学习还是使用都非常方便,简单易上手.是我们学习编程可以重点学习的一个框架,我在开发基于web的java装潢公司预算系统项目的时候选用了MYECLIPSE来搭建SSM(MYECLIPSE)框架,最终将基于web的java装潢公司预算系统项目开发为了一个 后台

模拟银行自动终端系统

本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 二. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 **************************** 0.------开户 1.------查询 2.------存款 3.------取款 4.------退出 **************************** 请选择你要执行的功能: 此时,用户可以通过键盘输入选择自己要实现的功能,如果输入不是0,1,2,3,4,则系统提示:

2018.6.19 Java模拟考试(基础习题)

Java模拟考试(基础习题) 一.单选题(每题1分 * 50 = 50分) 1.java程序的执行过程中用到一套JDK工具,其中javac.exe指( B ) A.java语言解释器 B.java字节码编译器 C.java文档生成器 D.java类分解器 2.在Java语言中,不允许使用指针体现出的Java特性是( D ) A.可移植 B.解释执行 C.健壮性 D.安全性 3. 00101010(&)00010111语句的执行结果是( C ) A.11111111 B.00111111 C.00

Java模拟生产者消费者问题

一.Syncronized方法详解 解决生产者消费这问题前,先来了解一下Java中的syncronized关键字. synchronized关键字用于保护共享数据.请大家注意"共享数据",你一定要分清哪些数据是共享数据,如下面程序中synchronized关键字保护的不是共享数据(其实在这个程序中synchronized关键字没有起到任何作用,此程序的运行结果是不可预先确定的).这个程序中的t1,t2是 两个对象(pp1,pp2)的线程.JAVA是面向对象的程序设计语言,不同的对象的数

语言模拟ATM自动取款机系统

C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入:用户输入密码,才能进入. 登陆成功界面:共有六个选项,查询余额.取款.存款.转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示. 选定1后,进入查询余额界面: 选定2后,进入取款界面: 选定3后,进入存款界面: 选定4后,修改密码,选定5,进入转账:选定6,退出界面:

java模拟手动Telnet过程之需求说明和功能点说明

一.需求 (一)每五分钟查询一次交换机的连接情况: (二)每2.5分钟更新每栋楼的连接情况. 二.功能点 序号 功能点说明 待定 完成 未完成 完成时间 预计用时(min) 实际用时(min) 备注 1 登录口令加密以及解密         60     2 表的创建和IP以及口令写入数据库         10     3 java模拟手动Telnet交换机         90     4 获取目标字符串         30     5 表的创建与当前目标数据的写入         10

[Java聊天室server]实战之二 监听类

前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更想和广大程序猿分享的是一种心境:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态.比方近期在看网易公开课MIT<算法导论>,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序猿最好还是从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字...

java模拟实现生产者---消费者问题

本文章为小编原创,请尊重文章的原创性,转载请注意写明转载来源:http://blog.csdn.net/u012116457 已知技术参数: 生产者消费者问题,描述一组生产者向一组消费者提供产品/消息.它们共享一个有界缓冲区,生产者向其中放产品/消息,消费者从中取产品/消息.只要缓冲区未满,生产者可放产品/消息,只要缓冲区有数据,消费者可取消息.即应满足下列二个同步条件: 1.只有在缓冲池中至少有一个缓冲区已存入消息后,消费者才能从中提取消息,否则消费者必须等待. 2.只有缓冲池中至少有一个缓冲