货物进销管理系统
一、实验目的
1.掌握Java中文件的读写操作。
2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。
3.掌握字符串类(String, StringBuffer)的使用。
4.掌握用面向对象的方法分析和解决复杂问题。
二、实验原理
1.使用java的文件读写操作读入货物的信。
2.使用vector容器将货物的信息存储起来。
3.创建多个类将信息分类。
4.通过判断信息的类型建立相应的成员函数进行处理信息。
5.将各个消息分类写入到新的文本中。
三、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
1、将各个货物的信息与种类读入并分类存储起来。
2、创建多个类分别用来执行相应的操作。
3、创建各个成员函数处理类从而将货物的信息进行处理。
4、通过对应的信息编码分别进行发货、到货记录、库存、删除等操作。
5、将各个处理后的信息分类存储到相应的文本文件中。
主代码:
import java.io.*;
import java.util.Vector;
public class Inventory{
//建立相应的vector容器为存储信息做准备。
@SuppressWarnings("rawtypes")
Vector inv = new Vector();
@SuppressWarnings("rawtypes")
Vector receive = new Vector();
@SuppressWarnings("rawtypes")
Vector offer = new Vector();
@SuppressWarnings("rawtypes")
Vector AddNam = new Vector();
@SuppressWarnings("rawtypes")
Vector DeleteNum = new Vector();
@SuppressWarnings("rawtypes")
Vector shipping_v = new Vector();
@SuppressWarnings("rawtypes")
Vector Err_v = new Vector();
@SuppressWarnings("unchecked")
//将文件信息读入并存储在vector容器中。
public void readInv(String filename){
try{
BufferedReader br = new BufferedReader(new FileReader(filename));
String s = null;
while((s=br.readLine()) != null){
String[] Name = s.split("\t");
inv.add(new Inv(Integer.parseInt(Name[0]),Integer.parseInt(Name[1]),Integer.parseInt(Name[2]),Name[3]));
}
br.close();
}
catch(Exception e){
}
}
@SuppressWarnings("unchecked")
//根据读入的ORAD字母进行相应的操作。
public void readTra(String filename){
try{
BufferedReader br = new BufferedReader(new FileReader(filename));
String s = null;
while((s=br.readLine()) != null){
String[] Name = s.split("\t");
char method = Name[0].charAt(0);
if(method=='O')
offer.add(new Offer(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Integer.parseInt(Name[3])));
else if(method=='R')
receive.add(new Receive(Integer.parseInt(Name[1]), Integer.parseInt(Name[2])));
else if(method=='A')
AddNam.add(new Add(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Name[3]));
else if(method=='D')
DeleteNum.add(new Delete(Integer.parseInt(Name[1])));
}
br.close();
}
catch(Exception e){
}
}
@SuppressWarnings("unchecked")
//进行添加操作。
public void dealAdd(){
for(int i=0; i<AddNam.size(); i++){
Inv Name = new Inv((Add)AddNam.get(i));
inv.add(Name);
}
}
//进行接受操作。
public void dealReceive(){
for(int i=0; i<receive.size(); i++){
for(int j=0; j<inv.size(); j++){
if( ((Receive)receive.get(i)).Index == ((Inv)inv.get(j)).Index )
((Inv)inv.get(j)).plus(((Receive)receive.get(i)).Next);
}
}
}
@SuppressWarnings("unchecked")
//记录错误的货物信息。
public void arrOffer(){
for(int i=0; i<offer.size(); i++)
for(int j=i+1; j<offer.size(); j++){
if( ((Offer)offer.get(i)).Index == ((Offer)offer.get(j)).Index ){
if( ((Offer)offer.get(i)).Next > ((Offer)offer.get(j)).Next ){
Offer Name = (Offer)offer.get(i);
offer.set(i,(Offer)offer.get(j));
offer.set(j,Name);
}
}
}
}
@SuppressWarnings("unchecked")
//记录货物信息。
public void dealOffer(){
for(int i=0; i<offer.size(); i++)
for(int j=0; j<inv.size(); j++){
if( ((Offer)offer.get(i)).Index == ((Inv)inv.get(j)).Index ){
if( ((Inv)inv.get(j)).Next >= ((Offer)offer.get(i)).Next ){
((Inv)inv.get(j)).cut( ((Offer)offer.get(i)).Next );
shipping_v.add( (Offer)offer.get(i) );
}
else{
Err Name = new Err( (Offer)offer.get(i) );
Err_v.add(Name);
}
}
}
}
@SuppressWarnings("unchecked")
//记录需要删除的信息。
public void dealDelete(){
for(int i=0; i<DeleteNum.size(); i++){
for(int j=0; j<inv.size(); j++){
if( ((Delete)DeleteNum.get(i)).Index == ((Inv)inv.get(j)).Index ){
if(((Inv)inv.get(j)).Next == 0){
inv.remove(j);
break;
}
else{
Err_v.add(new Err(0, ((Inv)inv.get(j)).Index, ((Inv)inv.get(j)).Next ));
break;
}
}
}
}
}
@SuppressWarnings("unchecked")
public void arrshipping(){
for(int i=0; i<shipping_v.size(); i++)
for(int j=i+1; j<shipping_v.size(); j++){
if( ((Offer)shipping_v.get(i)).Customer == ((Offer)shipping_v.get(j)).Customer && ((Offer)shipping_v.get(i)).Index == ((Offer)shipping_v.get(j)).Index ){
Offer Name = new Offer( ((Offer)shipping_v.get(i)).Index, ((Offer)shipping_v.get(i)).Next+((Offer)shipping_v.get(j)).Next, ((Offer)shipping_v.get(i)).Customer );
shipping_v.set(i,Name);
shipping_v.remove(j);
j--;
}
}
}
@SuppressWarnings("unchecked")
public void arrInv(){
for(int i=0; i<inv.size(); i++)
for(int j=i+1; j<inv.size(); j++){
if( ((Inv)inv.get(i)).Index > ((Inv)inv.get(j)).Index ){
Inv Name = (Inv)inv.get(i);
inv.set(i,(Inv)inv.get(j));
inv.set(j,Name);
}
}
}
//将信息保存在相应的文本中。
public void write(String filenames){
try{
String[] filename = filenames.split(" ");
BufferedWriter ibw = new BufferedWriter(new FileWriter(filename[0]));
BufferedWriter sbw = new BufferedWriter(new FileWriter(filename[1]));
BufferedWriter ebw = new BufferedWriter(new FileWriter(filename[2]));
for(int i=0; i<inv.size(); i++){
Inv Name = (Inv)inv.get(i);
String s = Name.Index +"\t"+ Name.Next +"\t"+ Name.Last +"\t"+ Name.Message;
ibw.write(s); ibw.newLine();
}
for(int i=0; i<shipping_v.size(); i++){
Offer Name = (Offer)shipping_v.get(i);
String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;
sbw.write(s); sbw.newLine();
}
for(int i=0; i<Err_v.size(); i++){
Err Name = (Err)Err_v.get(i);
String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;
ebw.write(s); ebw.newLine();
}
ibw.close();
sbw.close();
ebw.close();
}
catch(Exception e){
}
}
public static void main(String[] arg){
Inventory inventory = new Inventory();
//读入两个文件的信息。
inventory.readInv("Inventory.txt");
inventory.readTra("Transactions.txt");
//根据读入的信息分别进行添加接受删除操作。
inventory.dealAdd();
inventory.dealReceive();
inventory.arrOffer();
inventory.dealOffer();
inventory.dealDelete();
inventory.arrshipping();
inventory.arrInv();
//将信息保存在相应的文本中。
inventory.write("NewInventory.txt shipping.txt Errors.txt");
}
}
//定义主货物类以及添加减少操作。
class Inv{
int Index;
int Next;
int Last;
String Message;
Inv(int i,int q, int s, String d){
Index = i;
Next = q;
Last = s;
Message = d;
}
Inv(Add Name){
Index = Name.Index;
Next = 0;
Last = Name.Last;
Message = Name.Message;
}
public void plus(int q){
Next += q;
}
public void cut(int q){
Next -= q;
}
}
//定义接受类。
class Receive{
int Index;
int Next;
Receive(int i, int q){
Index = i;
Next = q;
}
}
//定义货物类。
class Offer{
int Index;
int Next;
int Customer;
Offer(int i, int q, int c){
Index = i;
Next = q;
Customer = c;
}
}
//定义添加类。
class Add{
int Index;
int Last;
String Message;
Add(int i, int s, String d){
Index = i;
Last = s;
Message = d;
}
}
//定义删除类。
class Delete{
int Index;
Delete(int i){
Index = i;
}
}
//定义错误信息类。
class Err{
int Customer;
int Index;
int Next;
Err(int c, int i, int q){
Customer = c;
Index = i;
Next = q;
}
Err(Offer o){
Customer = o.Customer;
Index = o.Index;
Next = o.Next;
}
}
Inventory.txt:
17 42 6 Widget,blue
1234 0 4 Whatsit
123123 999999 98 Doohicky
Transactions.txt:
O 123123 1000 9
O 17 36 8
O 17 12 4
R 123123 1
D 1234
A 5 4 Thingy