您好,欢迎访问三七文档
1/9《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等软件四、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)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/92.源程序: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;3/9Strings1;huo[huolength]=newhuowu();while(istr.length){for(x++;istr.length&&str[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(istr.length){for(x++;istr.length&&str[i]!='\t';i++){4/9}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++;5/9t=i;}}}tralength++;}tr.close();}catch(Exceptionex){System.out.println(error2);}/*将Transaction.dat中的数据与Inventory.dat中的数据进行比较处理*///对A进行处理for(inti=0;itralength;i++){if(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;itralength;i++){if(tra[i].type.equals(R)){for(intt=0;thuolength;t++){if(tra[i].itemNumber.equals(huo[t].itemNumber)){huo[t].quantity+=tra[i].quantity;}}}}//对O进行处理//先将O型数据保存的fuzhu类for(inti=0;itralength;i++){intxiangtong=-1;if(tra[i].type.equals(O)){for(intj=0;jfzlength;j++){if(tra[i].itemNumber.equals(fz[j].itemNumber)&&tra[i].supplier.equals(fz[j].supplier)){fz[j].quantity+=tra[i].quantity;6/9xiangtong=1;break;}}if(xiangtong0){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;ifzlength;i++){for(intj=fzlength-1;ji;j--){if(fz[j].quantityfz[j-1].quantity){intq=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;ifzlength;i++){for(intj=0;jhuolength;j++){if(fz[i].itemNumber.equals(huo[j].itemNumber)){7/9if(fz[i].quantityhuo[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();}}
本文标题:货物进销管理系统
链接地址:https://www.777doc.com/doc-4536993 .html