inventory.java
来自「用JAVA实现的货物进销管理系统,可以实现新增货物,发货,到货以及出错管理.」· Java 代码 · 共 216 行
JAVA
216 行
import java.io.*;
import java.util.*;
class InventoryClass{
String description_inv,supplier_inv;
int item_inv,quantity_inv;
InventoryClass(int i1,int i2,String i3,String str){
item_inv=i1;
quantity_inv=i2;
supplier_inv=i3;
description_inv=str;
}
}
class TransactionsClass{
String operation_tra,description_tra;
int item_tra,quantity_tra;
TransactionsClass(String i1,int i2,int i3,String str){
operation_tra=i1;
item_tra=i2;
quantity_tra=i3;
description_tra=str;
}
}
public class Inventory{
public static Vector vector1=new Vector(),
vector2=new Vector(),
ship_vector=new Vector(),
error_vector=new Vector();
public String readFile (String str,int row,int list) throws IOException{
String str1;
String ch=new String();
int i=0,k=0;
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(str)));
while((str1=in.readLine())!=null&&i<row){
StringTokenizer s=new StringTokenizer(str1,"\t");
while(s.hasMoreTokens()&&k<list){
ch=s.nextToken();
k++;
}
i++;
k=0;
}
return ch;
/* while((str1=in.readLine())!=null&&i<row)
i++;
StringTokenizer s=new StringTokenizer(str1,"\t");
while(s.hasMoreTokens()&&k<list){
ch=s.nextToken();
k++;
}
return ch;*/
}
public int getRows(String str) throws IOException{ //返回文件的总行数
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(str)));
int i=0;
while((in.readLine())!=null){
i++;
}
return i;
}
public static int getMinOrder(Vector vec){ //返回容器的定单数量的最小值
int max=Integer.MAX_VALUE,k=0;
for(int i=0;i<vec.size();i++){
if(((TransactionsClass)vec.elementAt(i)).quantity_tra<max&&
(((TransactionsClass)vec.elementAt(i)).operation_tra.equals("O")==true)){
max=((TransactionsClass) vec.elementAt(i)).quantity_tra;
k=i;
}
}
return k;
}
public static int getMinItem(Vector v){ //返回容器的最小客号位置
int max=Integer.MAX_VALUE,k=0;
for(int i=0;i<v.size();i++){
if(((InventoryClass) v.elementAt(i)).item_inv<max){
max=((InventoryClass) v.elementAt(i)).quantity_inv;
k=i;
}
}
return k;
}
public static void newGoods(){
for(int i=0;i<vector2.size();i++){
if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("A")==true){
vector1.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(i)).item_tra,0,
String.valueOf(((TransactionsClass) vector2.elementAt(i)).quantity_tra),
((TransactionsClass) vector2.elementAt(i)).description_tra));
vector2.remove(i);
}
}
}
public static void receiveGoods(){
for(int i=0;i<vector2.size();i++){ //按要求分别进行相应的处理
if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("R")==true){
for(int k=0;k<vector1.size();k++)
if(((InventoryClass)vector1.elementAt(k)).item_inv==((TransactionsClass)vector2.elementAt(i)).item_tra){
((InventoryClass) vector1.elementAt(k)).quantity_inv+=((TransactionsClass)vector2.elementAt(i)).quantity_tra;
vector2.remove(i);
}
}
}
}
public static void sendGoods(){
for(int i=0;i<vector2.size();i++){
if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("O")==true){
for(int k=0;k<vector1.size();k++){
if(((InventoryClass)vector1.elementAt(k)).item_inv==((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).item_tra)
if(((InventoryClass)vector1.elementAt(k)).quantity_inv>=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra){
((InventoryClass)vector1.elementAt(k)).quantity_inv-=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra;
if(ship_vector.size()==0)
ship_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
else{
int m=0;
for(;m<ship_vector.size();m++){
if(((InventoryClass)ship_vector.elementAt(m)).item_inv==((InventoryClass)vector1.elementAt(k)).item_inv){
((InventoryClass)ship_vector.elementAt(m)).quantity_inv+=((TransactionsClass)vector2.elementAt(getMinOrder(vector2))).quantity_tra;
break;
}
}
if(m==ship_vector.size())
ship_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
}
vector2.remove(getMinOrder(vector2));
}
else{
error_vector.addElement(new InventoryClass(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).item_tra,((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).quantity_tra,String.valueOf(((TransactionsClass) vector2.elementAt(getMinOrder(vector2))).description_tra),((InventoryClass)vector1.elementAt(k)).description_inv));
vector2.remove(getMinOrder(vector2));
}
}
}
}
}
public static void deleteGoods(){
for(int i=0;i<vector2.size();i++){
if(((TransactionsClass)vector2.elementAt(i)).operation_tra.equals("D")==true){
for(int k=0;k<vector1.size();k++){
if(((TransactionsClass)vector2.elementAt(i)).item_tra==((InventoryClass)vector1.elementAt(k)).item_inv)
if(((InventoryClass)vector1.elementAt(k)).quantity_inv==0){
vector1.remove(k);
}
else{
error_vector.addElement(new InventoryClass(((InventoryClass) vector1.elementAt(k)).item_inv,((InventoryClass) vector1.elementAt(k)).quantity_inv,"0",((InventoryClass)vector1.elementAt(k)).description_inv));
}
}
}
}
}
public static void main(String[] args){
String str=new String();
String path_Inv=new String("Inventory.dat");
String path_Tra=new String("Transactions.dat");
String path_NewInv=new String("NewInventory.dat");
String path_Ship=new String("shipping.dat");
String path_Error=new String("errors.dat");
try{
Inventory inven=new Inventory(); //把文件的内容读到相应容器中
for(int i=1;i<=inven.getRows(path_Inv);i++){
vector1.addElement(new InventoryClass(Integer.parseInt(inven.readFile(path_Inv,i,1)),
Integer.parseInt(inven.readFile(path_Inv,i,2)),
inven.readFile(path_Inv,i,3),
inven.readFile(path_Inv,i,4)));
}
for(int i=1;i<=inven.getRows(path_Tra);i++){
vector2.addElement(new TransactionsClass(inven.readFile(path_Tra,i,1),
Integer.parseInt(inven.readFile(path_Tra,i,2)),
Integer.parseInt(inven.readFile(path_Tra,i,3)),
inven.readFile(path_Tra,i,4)));
}
newGoods();
receiveGoods();
sendGoods();
deleteGoods();
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_NewInv)));
out.write("货物编号"+"\t"+"货物数量"+"\t"+"供应商编号"+"\t"+"货物描述"+"\r\n\r\n");
out.flush();
while(vector1.size()>0){
int i=getMinItem(vector1);
String str2=new String(((InventoryClass) vector1.elementAt(i)).item_inv+"\t\t"+((InventoryClass) vector1.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass)vector1.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) vector1.elementAt(i)).description_inv+"\r\n");
out.write(str2);
out.flush();
vector1.remove(i);
}
out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_Ship)));
out.write("客户编号"+"\t"+"货物编号"+"\t"+"定货数量"+"\t"+"货物描述"+"\r\n\r\n");
out.flush();
for(int i=0;i<ship_vector.size();i++)
{
out.write(((InventoryClass) ship_vector.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) ship_vector.elementAt(i)).item_inv+"\t\t"+((InventoryClass)ship_vector.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass) ship_vector.elementAt(i)).description_inv+"\r\n");
out.flush();
}
out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path_Error)));
out.write("客户编号"+"\t"+"货物编号"+"\t"+"货物数量"+"\t"+"货物描述"+"\r\n\r\n");
out.flush();
for(int i=0;i<error_vector.size();i++)
{
out.write(((InventoryClass) error_vector.elementAt(i)).supplier_inv+"\t\t"+((InventoryClass) error_vector.elementAt(i)).item_inv+"\t\t"+((InventoryClass)error_vector.elementAt(i)).quantity_inv+"\t\t"+((InventoryClass)error_vector.elementAt(i)).description_inv+"\r\n");
out.flush();
}
}catch(IOException e){
System.out.println(e);
}
System.out.println("success");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?