货物进销管理系统.docx
《货物进销管理系统.docx》由会员分享,可在线阅读,更多相关《货物进销管理系统.docx(14页珍藏版)》请在冰点文库上搜索。
货物进销管理系统
《Java程序设计》实验报告
--实验2
实验室:
2014年12月10日
学院
计算机与信息学院
专业班级
姓名
成绩
课程
名称
Java程序设计
实验项目
名称
实验二货物进销管理系统
指导
教师
教师评语
教师签名:
年月日
一、实验目的
1.掌握Java中文件的读写操作。
2.学会使用Java提供的实用类(Vector,ArrayList)来完成特定的功能。
3.掌握字符串类(String,StringBuffer)的使用。
4.掌握用面向对象的方法分析和解决复杂问题。
二、实验原理
1.程序首先打开并读取Inventory.dat中记录的所有库存记录,然后读取Transactions.dat,处理这个文件中包含的事务,记录发货记录到Shipping.dat,并记录错误信息到Errors.dat中。
最后更新库存到另外一个文件NewInventory.dat中。
三、使用硬件、软件环境
PC计算机一台,配置为CPU为2.6G,内存为4G,硬盘为1T,安装Windows8操作系统。
另外,使用JCreator,JDK1.8.0等软件
4、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)
1.实验过程:
首先在电脑中新建5个dat文件。
分别为Inventory.dat、Transactions.dat、
Shipping.dat、Errors.dat、NewInventory.dat;在Inventory.dat、Transactions.dat中写要
求的实验信息。
程序先打开Inventory.dat、Transactions.dat文件,读取其中的数据,分
析Transactions.dat中的数据,分类进行处理,最后将更新的Inventory.dat数据复制到
NewInventory.dat中
2.源程序:
importjava.io.*;
/*保存Inventory.dat中的数据*/
classhuowu{
StringitemNumber;
intquantity;
Stringsupplier;
Stringdescription;
intbiaoji=1;
}
/*保存Transaction中的数据*/
classtrans{
Stringtype;
StringitemNumber;
intquantity;
Stringsupplier;
Stringdescription;
}
/*用来保存"O"交易数据的中间类,以满足quantity大的最后进行交易*/
classfuzhu{
StringitemNumber;
intquantity;
Stringsupplier;
}
publicclassInventory{
publicstaticvoidmain(String[]args){
huowu[]huo=newhuowu[100];inthuolength=0;
trans[]tra=newtrans[100];inttralength=0;
fuzhu[]fz=newfuzhu[100];intfzlength=0;
try{
Strings=null;
/*读取Inventory.dat中的数据,保存到内存*/
BufferedReaderinvent=newBufferedReader(newFileReader("Inventory.dat"));
char[]str;
while((s=invent.readLine())!
=null){
str=s.toCharArray();
intt=0;
inti=0;
intx=0;
Strings1;
huo[huolength]=newhuowu();
while(ifor(x++;i='\t';i++){
}
s1=newString(str,t,i-t);
if(x==1)
huo[huolength].itemNumber=newString(s1);
if(x==2)
huo[huolength].quantity=Integer.parseInt(s1);
if(x==3)
huo[huolength].supplier=newString(s1);
if(x==4)
huo[huolength++].description=newString(s1);
i++;
t=i;
}
}
invent.close();
}
catch(Exceptione){
System.out.println("error1");
}
/*读取Transaction.dat中的数据,保存到内存*/
try{
Strings=null;
BufferedReadertr=newBufferedReader(newFileReader("Transactions.dat"));
char[]str;
while((s=tr.readLine())!
=null){
str=s.toCharArray();
intt=0;
inti=0;
intx=0;
Strings1;
tra[tralength]=newtrans();
while(ifor(x++;i='\t';i++){
}
s1=newString(str,t,i-t);
if(x==1){
tra[tralength].type=newString(s1);
i++;
t=i;
}
else{
if(tra[tralength].type.equals("O")){
if(x==2)
tra[tralength].itemNumber=newString(s1);
if(x==3)
tra[tralength].quantity=Integer.parseInt(s1);
if(x==4)
tra[tralength].supplier=newString(s1);
i++;
t=i;
}
elseif(tra[tralength].type.equals("R")){
if(x==2)tra[tralength].itemNumber=newString(s1);
if(x==3)tra[tralength].quantity=Integer.parseInt(s1);
i++;
t=i;
}
elseif(tra[tralength].type.equals("D")){
if(x==2)tra[tralength].itemNumber=newString(s1);
i++;
t=i;
}
elseif(tra[tralength].type.equals("A")){
tra[tralength].quantity=0;
if(x==2)tra[tralength].itemNumber=newString(s1);
if(x==3)tra[tralength].supplier=newString(s1);
if(x==4)tra[tralength].description=newString(s1);
i++;
t=i;
}
}
}
tralength++;
}
tr.close();
}
catch(Exceptionex){
System.out.println("error2");
}
/*将Transaction.dat中的数据与Inventory.dat中的数据进行比较处理*/
//对A进行处理
for(inti=0;iif(tra[i].type.equals("A")){
intj=huolength++;
huo[j]=newhuowu();
huo[j].itemNumber=newString(tra[i].itemNumber);
huo[j].quantity=tra[i].quantity;
huo[j].supplier=newString(tra[i].supplier);
huo[j].description=newString(tra[i].description);
}
}
//对R进行处理
for(inti=0;iif(tra[i].type.equals("R")){
for(intt=0;tif(tra[i].itemNumber.equals(huo[t].itemNumber)){
huo[t].quantity+=tra[i].quantity;
}
}
}
}
//对O进行处理
//先将O型数据保存的fuzhu类
for(inti=0;iintxiangtong=-1;
if(tra[i].type.equals("O")){
for(intj=0;jif(tra[i].itemNumber.equals(fz[j].itemNumber)&&tra[i].supplier.equals(fz[j].supplier)){
fz[j].quantity+=tra[i].quantity;
xiangtong=1;
break;
}
}
if(xiangtong<0){
fz[fzlength]=newfuzhu();
fz[fzlength].itemNumber=newString(tra[i].itemNumber);
fz[fzlength].quantity=tra[i].quantity;
fz[fzlength].supplier=newString(tra[i].supplier);
fzlength++;
}
}
}
//在fuzhu类中先按数量排序处理
for(inti=0;ifor(intj=fzlength-1;j>i;j--){
if(fz[j].quantityintq=0;
Stringit;
Stringsu;
q=fz[j].quantity;fz[j].quantity=fz[j-1].quantity;fz[j-1].quantity=q;
it=newString(fz[j].itemNumber);fz[j].itemNumber=fz[j-1].itemNumber;fz[j-1].itemNumber=it;
su=newString(fz[j].supplier);fz[j].supplier=fz[j-1].supplier;fz[j-1].supplier=su;
}
}
}
try{
BufferedWritererror=newBufferedWriter(newFileWriter("Errors.dat"));
BufferedWritership=newBufferedWriter(newFileWriter("Shipping.dat"));
BufferedWriternewinv=newBufferedWriter(newFileWriter("NewInventory.dat"));
//将O型数据与Inventory.dat中的数据比较处理,并在处理过程中按要求记录error和shipping信息
for(inti=0;ifor(intj=0;jif(fz[i].itemNumber.equals(huo[j].itemNumber)){
if(fz[i].quantity>huo[j].quantity){
error.write(fz[i].supplier);
error.write("");
error.write(fz[i].itemNumber);
error.write("");
error.write(String.valueOf(fz[i].quantity));
error.newLine();
}
else{
huo[j].quantity-=fz[i].quantity;
ship.write(fz[i].supplier);
ship.write("");
ship.write(fz[i].itemNumber);
ship.write("");
ship.write(String.valueOf(fz[i].quantity));
ship.newLine();
}
}
}
}
//对D型数据进行处理
for(inti=0;iif(tra[i].type.equals("D")){
for(intj=0;jif(huo[j].itemNumber.equals(tra[i].itemNumber)){
if(huo[j].quantity>0){
error.write("0");
error.write("");
error.write(huo[j].itemNumber);
error.write("");
error.write(String.valueOf(huo[j].quantity));
error.newLine();
}
else{
huo[j].biaoji=-1;
}
}
}
}
}
//将更新的Inventrory中的数据按item排序并更新到NewInventory.dat中
for(inti=0;i//排序
for(intj=0;jfor(intk=huolength-1;k>j;k--){
if(Integer.parseInt(huo[k].itemNumber)intq=0;
Stringit;
Stringsu;
Stringds;
q=huo[k].quantity;huo[k].quantity=huo[k-1].quantity;huo[k-1].quantity=q;
it=newString(huo[k].itemNumber);huo[k].itemNumber=huo[k-1].itemNumber;huo[k-1].itemNumber=it;
su=newString(huo[k].supplier);huo[k].supplier=huo[k-1].supplier;huo[k-1].supplier=su;
ds=newString(huo[k].description);huo[k].description=huo[k-1].description;huo[k-1].description=ds;
q=huo[k].biaoji;huo[k].biaoji=huo[k-1].biaoji;huo[k-1].biaoji=q;
}
}
}
//没被删除的写入NewInventory.dat中
if(huo[i].biaoji>0){
newinv.write(huo[i].itemNumber);
newinv.write("");
newinv.write(String.valueOf(huo[i].quantity));
newinv.write("");
newinv.write(huo[i].supplier);
newinv.write("");
newinv.write(huo[i].description);
newinv.newLine();
}
}
error.close();
ship.close();
newinv.close();
}
catch(Exceptionex){
System.out.println("error3");
}
}
}
3.测试结果:
5、实验结论、分析、思考题与心得体会
通过本次实验,我有以下几方面的收获、认识和体会:
1)通过本次试验,我更进一步掌握了java的输入输出流和读写操作,打开文件、将文件内容保存至内存、通过程序处理数据、写入文件、关闭文件。
2)掌握了怎样将string型转换为int型和怎样将int型转换为string型。
3)也对异常处理有了更深的认识,出现异常时程序会报告是什么异常,这有时候可以帮助我知道程序错误出现在那里。
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!