📄 货物进出管理系统完整版.txt
字号:
//Add类
class Add{
int itemNumber; //商品号
int supplier; //供应商号
String description;//商品描述
public Add(int i,int s,String d){
itemNumber=i;supplier=s;description=d;
}
}
//Buy类
class Buy{
int itemNumber; //商品号
int quantity; //商品数量
public Buy(int i,int q){
itemNumber=i;quantity=q;
}
}
//Delete类
class Delete{
int itemNumber; //商品号
public Delete(int i){
itemNumber=i;
}
}
//Goods类
class Goods{
int itemNumber; //商品号
int quantity; //商品数量
int supplier; //供应商号
String description;//商品描述
public Goods(int i,int q,int s,String d){
itemNumber=i;quantity=q;supplier=s;description=d;
}
public Goods(Add a){
itemNumber=a.itemNumber;
quantity=0;
supplier=a.supplier;
description=a.description;
}
}
//Sell类
class Sell{
int itemNumber; //商品号
int quantity; //商品数量
int customer; //客户号
public Sell(int i,int q,int c){
itemNumber=i;quantity=q;customer=c;
}
public Sell(Sell s){
itemNumber=s.itemNumber;
quantity=s.quantity;
customer=s.customer;
}
}
//主类
import java.util.*;
import java.io.*;
//主类,由主函数依次调用7个处理函数,完成一定的功能.这是面向过程的编程思路
public class Storage{
public static Vector goodsvector,sellvector,buyvector,deletevector,addvector;
public static void main(String[]a){
goodsvector=new Vector();
sellvector=new Vector();
buyvector=new Vector();
deletevector=new Vector();
addvector=new Vector();
System.out.println();
readInventory();
readTransaction();
dealAdd();
dealBuy();
dealSell();
dealDelete();
writeNewInwentory();
System.out.println("整个流程已处理完毕。");
}
public static void readInventory(){
//这个函数从文件Inventory.dat中读取记录,生生成一系列Goods类对象
try{
BufferedReader br=new BufferedReader(new FileReader("Inventory.dat") );
StringTokenizer stz;//利用了字符串分隔提取类StringTokenizer
String str=br.readLine();
String word[]=new String[4];
Integer item,num,sup;
String desc;
while(str!=null){
int i=0;
stz=new StringTokenizer(str,"\t");
while(stz.hasMoreTokens()){ //这条记录还没提取完
word[i]=stz.nextToken();
i++;
}
item=new Integer(word[0]);
num=new Integer(word[1]);
sup=new Integer(word[2]);
desc=word[3];
Goods good=new Goods(item.intValue(),num.intValue(),sup.intValue(),desc);
//建立Goods类对象,并加入向量goodsvector
goodsvector.add(good);
str=br.readLine();
}
System.out.println("已完成读取货存信息,现在有"+goodsvector.size()+"个Goods类对象");
System.out.println();
br.close();
}
catch(Exception e){ System.out.println("Error in readInventory."); }
}
public static void readTransaction(){
//这个函数从文件Transaction.dat中读取记录,生生成一系列Sell Add Buy Delete类对象,
//并顺序加入向量 sellvector buyvector deletevector addvector
try{
BufferedReader br=new BufferedReader(new FileReader("Transaction.dat") );
StringTokenizer stz;
String str=br.readLine();
String first;
char c;
while(str!=null){
stz=new StringTokenizer(str,"\t");
first=stz.nextToken();
c=first.charAt(0);
if(c=='O'){ //'O'代表销售
String word[]=new String[3];
int i=0;
Integer item,num,sup;
while(stz.hasMoreTokens()){
word[i]=stz.nextToken();
i++;
}
item=new Integer(word[0]);
num=new Integer(word[1]);
sup=new Integer(word[2]);
Sell good=new Sell(item.intValue(),num.intValue(),sup.intValue());
sellvector.add(good);
}
else if(c=='R'){ //'R'代表进货
String word[]=new String[2];
int i=0;
Integer item,num;
while(stz.hasMoreTokens()){
word[i]=stz.nextToken();
i++;
}
item=new Integer(word[0]);
num=new Integer(word[1]);
Buy good=new Buy(item.intValue(),num.intValue() );
buyvector.add(good);
}
else if(c=='A'){ //'A'代表加一种新货物
String word[]=new String[3];
int i=0;
Integer item,sup;
String desc;
while(stz.hasMoreTokens()){
word[i]=stz.nextToken();
i++;
}
item=new Integer(word[0]);
sup=new Integer(word[1]);
desc=word[2];
Add good=new Add(item.intValue(),sup.intValue(),desc);
addvector.add(good);
}
else if(c=='D'){ //'D'代表删除一种货物
String word=stz.nextToken();
Integer item=new Integer(word);
Delete good=new Delete(item.intValue());
deletevector.add(good);
}
else { System.out.println("Transaction mode is not proper!"); }
str=br.readLine();
}
br.close();
System.out.println("已完成读取交易信息。");
// System.out.println("现在有"+goodsvector.size()+"个Goods类对象");
System.out.println("现在有"+addvector.size()+"个Add事务");
System.out.println("现在有"+buyvector.size()+"个Buy事务");
System.out.println("现在有"+sellvector.size()+"个Sell事务");
System.out.println("现在有"+deletevector.size()+"个Delete事务");
System.out.println();
}
catch(Exception e){ System.out.println("Error in writeNewInventory."); }
}
public static void dealAdd(){
//依次从addvector中取出一个对象,并进行处理
try{
PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat") );
int j=0;
for(int i=0;i<addvector.size();i++){
Add a=(Add)(addvector.get(i));
for(j=0;j<goodsvector.size();j++)
if(a.itemNumber<=((Goods)(goodsvector.get(j))).itemNumber )
break;
if(((Goods)(goodsvector.get(j))).itemNumber>a.itemNumber){
Goods good=new Goods(a);
goodsvector.add(j,good);
}
else if(((Goods)(goodsvector.get(j))).itemNumber==a.itemNumber){
String str=" A\t"+"itemNumber:"+a.itemNumber+"\t\t"+"supplier:"+a.supplier+"\t\t"
+"description:"+a.description+"\t\tThe goods itemNumber still exists!";
pw.println(str);
}
else{
Goods good=new Goods(a);
goodsvector.add(good);
}
}
System.out.println("已完成添加一种新货物交易。");
System.out.println("现在有"+goodsvector.size()+"个Goods类对象");
System.out.println();
pw.close();
}
catch(Exception e){ System.out.println("Error in dealAdd."); }
}
public static void dealBuy(){
//依次从buyvector中取出一个对象,并进行处理
try{
PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat",true) );
int j=0;
String str;
for(int i=0;i<buyvector.size();i++){
Buy b=(Buy)(buyvector.get(i));
for(j=0;j<goodsvector.size();j++)
if(b.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
break;
if(j==goodsvector.size()){
str=" R\t"+"itemNumber:"+b.itemNumber+"\t\t"+"addedquantity:"+b.quantity
+"\t\tThis kind of goods doesnot exist!";
pw.println(str);
}
else{
Goods good=(Goods)(goodsvector.get(j));
if(good.quantity+b.quantity>999999){
str=" R\t"+"itemNumber:"+b.itemNumber+"\t"+"addedquantity:"+b.quantity
+"\t"+"stock:"+good.quantity+"\t\tQuantity cannot be over 999999!";
pw.println(str);
}
else good.quantity+=b.quantity;
}
}
System.out.println("已完成进货交易。");
System.out.println();
pw.close();
}
catch(Exception e){ System.out.println("Error in dealBuy."); }
}
public static void trimsellvector(){
//对sellvector进行处理,合并itemNumber customer均相同的记录
for(int i=0;i<sellvector.size();i++)
for(int j=i+1;j<sellvector.size();j++){
Sell s1=(Sell)(sellvector.get(i));
Sell s2=(Sell)(sellvector.get(j));
Sell sa=new Sell(s1);
Sell sb=new Sell(s2);
if(sa.itemNumber==sb.itemNumber&&sa.customer==sb.customer){
sa.quantity+=sb.quantity;
sb=new Sell(0,0,0);
sellvector.setElementAt(sa,i);
sellvector.setElementAt(sb,j);
}
}
}
public static void resortsellvector(){
//对sellvector进行处理,对itemNumber相同的记录,优先处理quantity小的
for(int i=0;i<sellvector.size();i++)
for(int j=i;j<sellvector.size();j++){
Sell s1=(Sell)(sellvector.get(i));
Sell s2=(Sell)(sellvector.get(j));
Sell sa=new Sell(s1);
Sell sb=new Sell(s2);
if(sa.itemNumber==sb.itemNumber&&sa.quantity>sb.quantity){
int item=sa.itemNumber;
int num=sa.quantity;
int sup=sa.customer;
sa.itemNumber=sb.itemNumber;
sa.quantity=sb.quantity;
sa.customer=sb.customer;
sb.itemNumber=item;
sb.quantity=num;
sb.customer=sup;
sellvector.setElementAt(sa,i);
sellvector.setElementAt(sb,j);
}
}
}
public static void dealSell(){
//依次从sellvector中取出一个对象,并进行处理
trimsellvector();
resortsellvector();
try{
PrintWriter pw1=new PrintWriter(new FileWriter("Errors.dat",true) );
PrintWriter pw2=new PrintWriter(new FileWriter("Shipping.dat") );
int j=0;
String str;
System.out.println(" \titemNumber\t\tSoldQuantity\t\tCustomerID");
for(int i=0;i<sellvector.size();i++){
Sell s=(Sell)(sellvector.get(i));
for(j=0;j<goodsvector.size();j++)
if(s.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
break;
if(j==goodsvector.size()){
str=" O\t"+"itemNumber:"+s.itemNumber+"\t"+"soldquantity:"+s.quantity+"\t\t"
+"customer:"+s.customer+"\t\tThis kind of good doesnot exist!";
pw1.println(str);
}
else{
Goods good=(Goods)(goodsvector.get(j));
if(good.quantity<s.quantity){
str=" O\t"+"itemNumber:"+s.itemNumber+"\t\t"+"soldquantity:"+s.quantity+"\t\t"
+"stock:"+good.quantity+"\t"+"\t\tThe stock isnot enough!";
pw1.println(str);
}
else{
good.quantity-=s.quantity;
str=" O\t"+s.itemNumber+"\t"+s.quantity+"\t"+s.customer;
pw2.println(str);
}
}
}
System.out.println("已完成销售交易。");
System.out.println();
pw1.close();
pw2.close();
}
catch(Exception e){ System.out.println("Error in dealSell."); }
}
public static void dealDelete(){
//依次从deletevector中取出一个对象,并进行处理
try{
PrintWriter pw=new PrintWriter(new FileWriter("Errors.dat,true") );
int j=0;
String str;
for(int i=0;i<deletevector.size();i++){
Delete d=(Delete)(deletevector.get(i));
for(j=0;j<goodsvector.size();j++)
if(d.itemNumber==((Goods)(goodsvector.get(j))).itemNumber )
break;
if(j==goodsvector.size()){
str=" D\t"+"itemNumber:"+d.itemNumber+"\t\tThis kind of good doesnot exist!";
pw.println(str);
}
else if( ((Goods)(goodsvector.get(j))).quantity!=0 ){
str=" D\t"+"itemNumber:"+d.itemNumber+"stock:"+
((Goods)(goodsvector.get(j))).quantity
+"\t\tThis quantity of good isnot 0!";
pw.println(str);
}
else goodsvector.removeElementAt(j);
}
System.out.println("已完成删除一种货物的交易。现在有"+goodsvector.size()+"个Goods类对象");
System.out.println();
pw.close();
}
catch(Exception e){ System.out.println("Error in dealDelete."); }
}
public static void writeNewInwentory(){
//把程序结果,即新的货物存储信息保存到文件NewInventory.dat中
try{
PrintWriter pw=new PrintWriter(new FileWriter("NewInventory.dat") );
for(int i=0;i<goodsvector.size();i++){
Goods good=(Goods)(goodsvector.get(i));
String str=good.itemNumber+"\t"+good.quantity+"\t"+good.supplier+"\t"+good.description;
pw.println(str);
}
System.out.println("已完成存储数据的处理。");
System.out.println();
pw.close();
}
catch(Exception e){ System.out.println("Error in writeNewInventory."); }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -