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("你不是本公司员工!
");
}
}
}
}
Java模拟公司置办货物系统(二)的更多相关文章
- Java模拟登录系统抓取内容【转载】
没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下.... 为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...
- Java模拟登录带验证码的教务系统(原理详解)
一:原理 客户端访问服务器,服务器通过Session对象记录会话,服务器可以指定一个唯一的session ID作为cookie来代表每个客户端,用来识别这个客户端接下来的请求. 我们通过Chrome浏 ...
- 北京一家JAVA开发公司面试题(留给后人)
1.jsp有哪些内置对象?作用分别是什么? 2.描述一下servlet的生命周期和基本架构. 3.多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 4.作用域public priv ...
- Java高级面试题解析(二):百度Java面试题前200页(精选)
基本概念 操作系统中 heap 和 stack 的区别 heap是堆,stack是栈,是两种不同的数据结构.堆是队列优先,先进先出:栈是先进后出. 在java多线程中,每个线程都有自己的栈:不同的线程 ...
- java模拟post请求发送json
java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求, 方法一: package main ...
- 语言模拟ATM自动取款机系统
C语言实验报告 题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...
- [Java] 模拟HTTP的Get和Post请求
在之前,写了篇Java模拟HTTP的Get和Post请求的文章,这篇文章起源与和一个朋友砍飞信诈骗网站的问题,于是动用了Apache的comments-net包,也实现了get和post的http请求 ...
- [Java聊天室server]实战之二 监听类
前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更 ...
- 上curl java 模拟http请求
最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接. java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次 ...
随机推荐
- AIR:使用 HTML + Javascript 开发桌面应用
背景 断断续续用Winform和WPF开发过一些小工具,始终不得其法门,在玩Flex的时候就接触过AIR,最近发现可以用HTML + Javascript开发AIR应用,本文就尝试一下(Hello,W ...
- 从头開始学 RecyclerView(六) LayoutManager
前言 在前面的文章中.每一个演示样例,都使用了LayoutManager,毕竟它是RecyclerView必不可少的一部分. LayoutManager,顾名思义,就是『布局管理器』. 使用例如以下代 ...
- Elasticsearch Groovy任意命令执行漏洞EXP
测试url:http://190.196.67.252:9200/_search?pretty http://191.234.18.14:9200///_search?pretty POST提交 {“ ...
- 使用ssh向sqlserver2005数据库中保存image类型的二进制图片
1.首先设计数据库表,其中photo.photo2字段均为image类型的. 2.建立实体bean对象,设置两个字段为byte[]如:private byte[] photo; private byt ...
- 数值格式化 NumberFormat DecimalFormat RoundingMode
NumberFormat [简介] java.text.NumberFormat extends java.text.Format extends java.lang.Object 实现的接口:Ser ...
- 查看网络IP连接
- getActivity nullPointerException
今天突然出现一个问题. Fragment中getActivity突然不能了,会出现空指针问题.最后也不知道是什么原因引起的. 解决的方法: @Override public void onAttach ...
- 通过Intel XDK编写跨平台app(二)
通过Intel XDK编写跨平台app(一) 通过Intel XDK编写跨平台app(二) 在这个系列的上一篇文章中,我们大致了解了Interl XDK的概况.在这一部分中,我们会详细地介绍如何通过这 ...
- JQuery 控制div滚动条保持最下
$("#session_show").animate({ scrollTop: $("#session_show").scrollHeight },1000); ...
- Linux阅读笔记(一)
1.关机命令 shutdown -h now 马上关机 shutdown -r now 马上重新启动 reboot ...