Java实验二货物进销管理系统

2023-11-07 08:50

本文主要是介绍Java实验二货物进销管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验目的

​ 1.掌握Java中文件的读写操作。

​ 2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。

​ 3.掌握字符串类(String, StringBuffer)的使用。

​ 4.掌握用面向对象的方法分析和解决复杂问题。

实验数据:

Inventory.txt

img

Transactions.txt

img

三、使用硬件、软件环境

Windows10,内存8g,硬盘1TB,JDK1.8,eclipse

四、实验过程、步骤及原始记录**(算法、原程序、测试结果,分析等)**

源代码:

package inven;

import java.io.*;

import java.lang.*;

import java.util.ArrayList;

import org.omg.CORBA.PUBLIC_MEMBER;

class update{//更新库存信息

​ void upd() throws IOException{

​ BufferedReader br = new BufferedReader(

​ new FileReader(“E:/进货管理/NewInventory.dat”));

BufferedWriter bw = new BufferedWriter(

​ new FileWriter(“E:/进货管理/Inventory.dat”));

String s = null;

s=br.readLine();

while(s!=null)

{

​ bw.write(s);

​ bw.newLine();

​ s=br.readLine();

}

bw.close(); //用完要关闭

br.close(); //用完要关闭

}

}

class global{

 public static int cc=0;public static int outcount=0;}

class updateall{//更新库存信息

void updall(String file,String path) throws IOException{BufferedReader br = new BufferedReader(

​ new FileReader(file));

​ BufferedWriter bw = new BufferedWriter(

​ new FileWriter(path));

​ String s = null;

​ s=br.readLine();

​ while(s!=null)

​ {

​ bw.write(s);

​ bw.newLine();

​ s=br.readLine();

​ }

​ bw.close(); //用完要关闭

​ br.close(); //用完要关闭

​ }

}

class updateT{//更新交易记录

​ void upd() throws IOException{

​ BufferedReader br = new BufferedReader(

​ new FileReader(“E:/进货管理/NewTransaction.dat”));

BufferedWriter bw = new BufferedWriter(

​ new FileWriter(“E:/进货管理/Transaction.dat”));

String s = null;

s=br.readLine();

while(s!=null)

{

​ bw.write(s);

​ bw.newLine();

​ s=br.readLine();

}

bw.close(); //用完要关闭

br.close(); //用完要关闭

}

}

class getshortstring{

​ String getstring(int i,int j,String s){

	int x=0,y=0,z=0,w=0;String shortstr="";while(z<i){if(s.charAt(x)!='\t'){x++;}else{x++;z++;}}while(w<j){if(s.charAt(y)!='\t'){y++;}else{y++;w++;}}shortstr=s.substring(x,y-1);return 	shortstr;}

}

class Rscan{//交易记录扫描

​ void updR() throws IOException{

​ BufferedReader br = new BufferedReader(

​ new FileReader(“E:/进货管理/Transaction.dat”));

BufferedReader brin = new BufferedReader(

​ new FileReader(“E:/进货管理/Inventory.dat”));

String s = null;

String invs = null;//对库存行扫描时的变量

String shortstring="";

String shortstringnum="";//记录操作订单的变量

String findinviten="";

String findinvitennum="";

int addnumber=0;

int localnumber=0;

s=br.readLine();

while(s!=null){

if((s.charAt(0)==‘R’)){

getshortstring get=new getshortstring();

shortstring=get.getstring(1,2,s);//获取进出货项目编号

shortstringnum=get.getstring(2,3,s);

addnumber=Integer.parseInt(shortstringnum);

invs=brin.readLine();

while(invs!=null){

findinviten=get.getstring(0,1,invs);if(shortstring.equals(findinviten)){findinvitennum=get.getstring(1,2,invs);localnumber=Integer.parseInt(findinvitennum);localnumber=localnumber+addnumber;findinvitennum=localnumber+"";invs=get.getstring(0,1,invs)+"\t"+findinvitennum+"\t"+get.getstring(2,3,invs)+"\t"+get.getstring(3,4,invs)+"\t";//按行修改指定出的代码change ch=new change();String fileway="E:/进货管理/Inventory.dat";String destfileway="E:/进货管理/NewInventory.dat";ch.cha(fileway,destfileway,0,1,shortstring , invs);//处理完到货条款invs="//"+"\t"+s+"\t";fileway="E:/进货管理/Transaction.dat";destfileway="E:/进货管理/NewTransaction.dat";shortstring="R";ch.cha(fileway,destfileway,0,1,shortstring , invs);//删除掉已处理的到货条款

​ ///

	}invs=brin.readLine();

}

​ }

​ s=br.readLine();

​ }

br.close(); //用完要关闭

}

}

 class change{void cha(String orfile,String destfile,int x,int y,String find,String exchange) throws IOException{//修改文件地址及特征值BufferedReader br = new BufferedReader(

​ new FileReader(orfile));

​ BufferedWriter bw = new BufferedWriter(

​ new FileWriter(destfile));

​ String s = null;

​ s=br.readLine();

​ while(s!=null)

​ { String item;

​ getshortstring get=new getshortstring();

​ item=get.getstring(x,y,s);

​ if(item.equals(find)){

​ bw.write(exchange);

​ bw.newLine();

​ s=br.readLine();

​ //

​ }

​ else {

​ bw.write(s);

​ bw.newLine();

​ s=br.readLine();

​ }

​ }

​ bw.close(); //用完要关闭

br.close(); //用完要关闭

}

	}class Ascan{//新增货物记录扫描void upd() throws IOException{BufferedReader br = new BufferedReader(new FileReader("E:/进货管理/Transaction.dat"));BufferedReader brin = new BufferedReader(new FileReader("E:/进货管理/Inventory.dat"));BufferedWriter bwin = new BufferedWriter(new FileWriter("E:/进货管理/NewInventory.dat"));String s = null;String invs = null;//对库存行扫描时的变量String shortstring="";String shortstringnum="";//记录操作订单的变量String findinviten="";String findinvitennum="";int addnumber=0;int localnumber=0;s=br.readLine();boolean charge=true;while(s!=null){if((s.charAt(0)=='A')){getshortstring get=new getshortstring();shortstring=get.getstring(1,2,s);//获取新增货项目编号addnumber=Integer.parseInt(shortstring);//新增货物编号转换为int型invs=brin.readLine();charge=true;while(invs!=null){findinviten=get.getstring(0,1,invs);localnumber=Integer.parseInt(findinviten);if( (addnumber<localnumber) &&(charge==true)){shortstringnum=get.getstring(1,2,s)+"\t"+"0"+"\t"+get.getstring(2,3,s)+"\t"+get.getstring(3,4,s)+"\t";///	   	

​ bwin.write(shortstringnum);

​ bwin.newLine();

​ bwin.write(invs);

​ bwin.newLine();

​ invs=brin.readLine();

​ charge=false;

   	///String ainvs="//"+"\t"+s+"\t";String fileway="E:/进货管理/Transaction.dat";String  destfileway="E:/进货管理/NewTransaction.dat";  shortstring="A";change ch=new change();ch.cha(fileway,destfileway,0,1,shortstring , ainvs);//删除掉已处理的到货条款updateT tran=new updateT();

​ tran.upd();//更新交易记录

   		}else{bwin.write(invs);

​ bwin.newLine();

​ invs=brin.readLine();

   	}}}else{};

​ s=br.readLine();

    }br.close();  //用完要关闭brin.close();bwin.close();}}class oscan{void updO() throws IOException{BufferedReader tran = new BufferedReader(

​ new FileReader(“E:/进货管理/Transaction.dat”));

		BufferedReader inve = new BufferedReader(

​ new FileReader(“E:/进货管理/Inventory.dat”));

		//BufferedWriter error = new BufferedWriter(

​ // new FileWriter(“E:/进货管理/error.dat”));

		BufferedWriter ninbw = new BufferedWriter(

​ new FileWriter(“E:/进货管理/NewInventory.dat”));

​ //BufferedWriter ship = new BufferedWriter(

​ // new FileWriter(“E:/进货管理/Ship.dat”));

		String trans=null,inves=null,gets=null;while(global.cc<=global.outcount){// outtrans=outtran1.readLine();trans=tran.readLine();global.cc=global.cc+1;}//trans=tran.readLine();

getshortstring get=new getshortstring();

   gets=get.getstring(1,2,trans);//获取发出货项目编号ArrayList itemname=new ArrayList();ArrayList number=new ArrayList();ArrayList factory=new ArrayList();String replace=null;String oriagn=null;while(trans!=null&&(trans.charAt(0)=='O')&&(itemname.isEmpty()||itemname.indexOf(gets)!=-1)){  replace=gets;  oriagn=trans;itemname.add(get.getstring(1,2,trans));if(factory.indexOf(get.getstring(3,4,trans))!=-1 ){int j=0,i=0,k=0;j=factory.indexOf(get.getstring(3,4,trans));i=(Integer) number.get(j);k=Integer.parseInt(get.getstring(2,3,trans));i=i+k;number.add(i);}else{number.add(get.getstring(2,3,trans));factory.add(get.getstring(3,4,trans));}trans=tran.readLine();gets=get.getstring(1,2,trans);}

​ ///

​ tran.close();

​ String ainvs="//"+"\t"+oriagn;

​ String fileway=“E:/进货管理/Transaction.dat”;

​ String destfileway=“E:/进货管理/NewTransaction.dat”;

​ String shortstring=“O”;

​ ochange cho=new ochange();

​ cho.ocha(fileway,destfileway,0,1,shortstring , replace,ainvs);//删除掉已处理的出货条款

​ updateT t=new updateT();

​ t.upd();//更新交易记录

​ //

		inves=inve.readLine();int min=0,n=1,k=0;String chanship=null;while(inves!=null){//判断库存对应并进行出货处理,,,记得删除已操作的出货记录int totalnumber=Integer.parseInt( get.getstring(1,2,inves)) ;if(itemname.indexOf(get.getstring(0,1,inves))!=-1){if(totalnumber>=0){while(number.size()>0){min=Integer.parseInt (number.get(0).toString());	while(n<number.size()){if(min>Integer.parseInt ( number.get(n).toString())){min=Integer.parseInt ( number.get(n).toString());n++;}else{n++;}					}

​ k=number.indexOf(Integer.toString(min));//获取要减去的位置

​ totalnumber=totalnumber-min;

​ if(totalnumber>0){

​ inves= get.getstring(0,1,inves)+"\t"+totalnumber+"\t"+ get.getstring(2,3,inves)+"\t"+ get.getstring(3,4,inves)+"\t";

​ chanship=factory.get(k).toString()+"\t"+itemname.get(0).toString()+"\t"+number.get(k).toString()+"\t";

​ BufferedReader ship1= new BufferedReader(

​ new FileReader(“E:/进货管理/ship.dat”));

​ BufferedWriter newship = new BufferedWriter(

​ new FileWriter(“E:/进货管理/newship.dat”));

​ String ships = null;

​ ships=ship1.readLine();

​ while(ships!=null)

​ {

​ newship.write(ships);

​ newship.newLine();

​ ships=ship1.readLine();

​ }

​ newship.write(chanship);

​ newship.newLine();

​ ship1.close(); //用完要关闭

​ newship.close(); //用完要关闭

​ updateall allship=new updateall();

​ allship.updall(“E:/进货管理/newship.dat”, “E:/进货管理/ship.dat”);

​ }

​ else{

​ totalnumber=totalnumber+min;

​ chanship=factory.get(k).toString()+"\t"+itemname.get(0).toString()+"\t"+number.get(k).toString()+"\t";

​ BufferedReader error1= new BufferedReader(

​ new FileReader(“E:/进货管理/error.dat”));

​ BufferedWriter newerror = new BufferedWriter(

​ new FileWriter(“E:/进货管理/newerror.dat”));

​ String errors = null;

​ errors=error1.readLine();

​ while(errors!=null)

​ {

​ newerror.write(errors);

​ newerror.newLine();

​ errors=error1.readLine();

​ }

​ newerror.write(chanship);

​ newerror.newLine();

​ error1.close(); //用完要关闭

​ newerror.close(); //用完要关闭

​ updateall allerror=new updateall();

​ allerror.updall(“E:/进货管理/newerror.dat”, “E:/进货管理/error.dat”);

​ }

​ number.remove(k);

​ factory.remove(k);

​ itemname.remove(k);

					}//	ninbw.write(inves);//	ninbw.newLine();}}if(inves!=null){ninbw.write(inves);

​ ninbw.newLine();

​ inves=inve.readLine();

			}}/,,,,

​ ninbw.close();

​ //error.close();

​ //ship.close();

​ update inv =new update();

​ inv.upd();//更新库存记录

	}}class ochange{void ocha(String orfile,String destfile,int x,int y,String find,String find2,String exchange) throws IOException{//修改文件地址及特征值BufferedReader br = new BufferedReader(

​ new FileReader(orfile));

​ BufferedWriter bw = new BufferedWriter(

​ new FileWriter(destfile));

​ String s = null;

​ s=br.readLine();

​ while(s!=null)

​ { String item;

​ getshortstring get=new getshortstring();

​ item=get.getstring(x,y,s);

​ String item2=get.getstring(1,2,s);

​ if(item2.equals(find2)){

​ if(item.equals(find)){

​ bw.write(exchange);

​ bw.newLine();

​ s=br.readLine();

​ //

​ }

​ else {

​ bw.write(s);

​ bw.newLine();

​ s=br.readLine();

​ }

​ }

​ else{ bw.write(s);

​ bw.newLine();

​ s=br.readLine();};

​ }

​ bw.close(); //用完要关闭

br.close(); //用完要关闭

}

	}class delte{void del() throws IOException{BufferedReader delbtr = new BufferedReader(

​ new FileReader(“E:/进货管理/Transaction.dat”));

		String delbtrs=null,dshort=null,invds=null;

​ delbtrs=delbtr.readLine();

​ String rep=null;

		 while(delbtrs!=null){ if(delbtrs.charAt(0)=='D'){rep=delbtrs;getshortstring getd=new getshortstring();dshort=getd.getstring(1,2,delbtrs); BufferedReader invd = new BufferedReader(

​ new FileReader(“E:/进货管理/Inventory.dat”));

    BufferedWriter inb = new BufferedWriter(

​ new FileWriter(“E:/进货管理/NewInventory.dat”));

     invds=invd.readLine();while(invds!=null){if(dshort.equals( getd.getstring(0,1,invds)))  {if(getd.getstring(1,2,invds).equals("0")){invds=invd.readLine();}else{inb.write(invds);inb.newLine();

///出错处理

    			BufferedReader error1= new BufferedReader(

​ new FileReader(“E:/进货管理/error.dat”));

​ BufferedWriter newerror = new BufferedWriter(

​ new FileWriter(“E:/进货管理/newerror.dat”));

​ String errors = null;

​ errors=error1.readLine();

​ while(errors!=null)

​ {

​ newerror.write(errors);

​ newerror.newLine();

​ errors=error1.readLine();

​ }

​ newerror.write(“0”+"\t"+getd.getstring(0,1,invds)+"\t"+getd.getstring(1,2,invds)+"\t");

​ newerror.newLine();

​ error1.close(); //用完要关闭

​ newerror.close(); //用完要关闭

​ updateall allerror=new updateall();

​ allerror.updall(“E:/进货管理/newerror.dat”, “E:/进货管理/error.dat”);

​ invds=invd.readLine();

    		}}else{inb.write(invds);

​ inb.newLine();

​ invds=invd.readLine();

​ }

    }invd.close();inb.close();}delbtrs=delbtr.readLine();}delbtr.close();String ainvs="//"+"\t"+rep+"\t";

​ String fileway=“E:/进货管理/Transaction.dat”;

​ String destfileway=“E:/进货管理/NewTransaction.dat”;

​ String shortstring=“D”;

​ change ch=new change();

​ ch.cha(fileway,destfileway,0,1,shortstring , ainvs);//删除掉已处理的到货条款

​ updateT tran=new updateT();

​ tran.upd();//更新交易记录

	}}

public class Inventory {

public static void main(String[] args)throws Exception{

​ Rscan find=new Rscan();

​ find.updR();//完成货物补充

​ updateT tran=new updateT();

​ tran.upd();//更新交易记录

​ update inv =new update();

​ inv.upd();//更新库存记录

​ Ascan add=new Ascan();

​ add.upd();

tran.upd();//更新交易记录

inv.upd();//更新库存记录

​ // int cc=0;

​ BufferedReader outtran = new BufferedReader(

​ new FileReader(“E:/进货管理/Transaction.dat”));

​ String outtrans=null;

​ outtrans=outtran.readLine();

​ // int outcount=0;

​ outtran.close();

​ getshortstring outget=new getshortstring();

String outshort=outget.getstring(0,1,outtrans);

while(outtrans!=null){

​ if(outshort.equals(“O”)){

​ oscan orpe=new oscan();

​ orpe.updO();

​ global.outcount=global.outcount+1;

​ }

​ else{global.outcount=global.outcount+1;}

​ BufferedReader outtran1 = new BufferedReader(

​ new FileReader(“E:/进货管理/Transaction.dat”));

​ while(global.cc<=global.outcount+1){

​ outtrans=outtran1.readLine();

​ global.cc=global.cc+1;

​ }

​ global.cc=0;

​ outtran1.close();

​ if(outtrans!=null){

​ outshort=outget.getstring(0,1,outtrans);

​ }

}

​ delte de=new delte();

​ de.del();

​ update inve =new update();

inve.upd();//更新库存记录

​ System.out.println(“处理完毕,请查看结果”);

}

}

运行前:

image-20210611112604595

image-20210611112608144

运行后:

image-20210611112614879

image-20210611112617846

image-20210611112622744

image-20210611112626326

五、实验结论、分析、思考题与心得体会

1.掌握了Java中文件的BufferedReader和BufferedWriter实现输入输出信息的读写操作。

​ 2.学会了使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。

​ 3.掌握了字符串类(String, StringBuffer)的使用。

​ 4.掌握了用面向对象的方法分析和解决复杂问题。

这篇关于Java实验二货物进销管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/362548

相关文章

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

9个SpringBoot中的自带实用过滤器使用详解

《9个SpringBoot中的自带实用过滤器使用详解》在SpringBoot应用中,过滤器(Filter)是处理HTTP请求和响应的重要组件,SpringBoot自带了许多实用的过滤器,如字符编码,跨... 目录1. CharacterEncodingFilter - 字符编码过滤器功能和配置手动配置示例2

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ