java吧 关注:1,251,166贴子:12,737,217
  • 3回复贴,共1

求救 已经纠结了几天了 用户订单信息

只看楼主收藏回复

1.定义Goods类
import java.io.Serializable;
class Goods implements Serializable{
private String name;
private int amount;
private double unitPrice;
public Goods(String name,double unitPrice){
this.name=name;
this.unitPrice=unitPrice;
}
public Goods(String name,double unitPrice,int amount){
this.name=name;
this.unitPrice=unitPrice;
this.amount=amount;
}
public Goods(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(double unitPrice) {
this.unitPrice = unitPrice;
}
}
2.定义订单类Order
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
//序列化保存客户所选商品的集合对象,将其信息写入到save.txt中
public class Order {
public void save(ArrayList<Goods> goodsList) throwsFileNotFoundException,IOException{
FileOutputStream fos=new FileOutputStream("D:\\青鸟学习\\Java高级特性\\03输入输出处理\\课间作业\\save.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(goodsList);
// (goods.getName()+goods.getUnitPrice()+goods.getAmount())
oos.close();
fos.close();
}
//反序列化保存客户所选商品的临时文件
public ArrayList<Goods> load() throws FileNotFoundException,IOException, ClassNotFoundException{
ObjectInputStream ois=new ObjectInputStream(newFileInputStream("D:\\青鸟学习\\Java高级特性\\03输入输出处理\\课间作业\\save.txt"));
@SuppressWarnings("unchecked")
ArrayList<Goods>goodsList=(ArrayList<Goods>)ois.readObject();
ois.close();
return goodsList;
}
//判断保存客户所选商品的临时文件是否存在
public boolean saveIsExist(){
File file=new File("D:\\青鸟学习\\Java高级特性\\03输入输出处理\\课间作业\\save.txt");
return file.exists();
}
//用于删除保存客户所选商品的临时文件
public void clear(){
File file=new File("D:\\青鸟学习\\Java高级特性\\03输入输出处理\\课间作业\\save.txt");
file.delete();
}
}
3.定义顾客类Customer,并创建main方法
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Customer {
//创建商品,并定义其价格
static Goods tv=new Goods("创维液晶电视",2666);
static Goods iceBox=new Goods("海尔冰箱",2888);
static Goods washer=new Goods("荣事达洗衣机",1380);
public static void main (String[] args)throws InputMismatchException,FileNotFoundException, IOException, ClassNotFoundException{
//实例化一个Customer对象
Customer customer=new Customer();
System.out.println("**********请输入商品编号,输入8结束输入*************");
System.out.println("1、"+tv.getName()+"价格"+tv.getUnitPrice());
System.out.println("2、"+iceBox.getName()+"价格"+iceBox.getUnitPrice());
System.out.println("3、"+washer.getName()+"价格"+washer.getUnitPrice());
//定义一个集合用于存储顾客选择的商品
ArrayList<Goods> goodsList;
//实例化一个订单,用于保存客户选择的商品信息
Order orders=new Order();
if(!orders.saveIsExist()){
customer.inIt();
}
System.out.println("以下是您需要付款的商品及价款:");
//反序列化读取客户购买商品的信息
goodsList=orders.load();
Goods[] goods=goodsList.toArray(new Goods[goodsList.size()]);
double sum=0;
for(int i=0;i<goods.length;i++){
System.out.println("您需要付款的商品是"+goods[i].getName()+"数量是"
+goods[i].getAmount()+"台"+" 价款是:"+goods[i].getUnitPrice()*goods[i].getAmount()+"元");
sum+=goods[i].getUnitPrice()*goods[i].getAmount();
}
System.out.println("您需要付商品的价钱总额为:"+sum+"元");
orders.clear();
}
//定义客户选择商品及保存商品的方法
public void inIt() throws FileNotFoundException, IOException{
//定义一个集合将顾客选择的多个商品存储到集合中
ArrayList<Goods> goodsList = new ArrayList<Goods>();
//定义一个Goods类型的变量用于临时保存顾客选择的商品
Goods goods;
//定义一个订单对象,将客户选择的商品保存到save.txt中
Order orders=new Order();
int num=0;
int amount=0;
Scanner sc=new Scanner(System.in);
while(num!=8){
num=sc.nextInt();
if(num==8){
System.out.println("商品选择完毕,请到到结账页面付款");
break;}
switch(num){
case 1:
goods=tv;
System.out.println("请输入商品数量");
amount=sc.nextInt();
goods.setAmount(amount);
goodsList.add(goods);
System.out.println("**********请继续选择所要购买的商品编号,输入8结束输入*************");
break;
case 2:
goods=iceBox;
System.out.println("请输入商品数量");
amount=sc.nextInt();
goods.setAmount(amount);
System.out.println("**********请继续选择所要购买的商品编号,输入8结束输入*************");
goodsList.add(goods);
break;
case 3:
goods=washer;
System.out.println("请输入商品数量");
amount=sc.nextInt();
goods.setAmount(amount);
System.out.println("**********请继续选择所要购买的商品编号,输入8结束输入*************");
goodsList.add(goods);
break;
default:
System.out.println("输入错误,请重新输入商品编号:");
continue;
}
}
orders.save(goodsList);
}
}


1楼2014-05-29 16:56回复


    2楼2014-05-29 16:57
    回复
      在线等待大神出现


      3楼2014-05-29 16:57
      回复
        该关闭的文件没有关闭。打开的文件需要关闭。例如你好像有的方法是返回一个打开的文件,但在外面貌似没有关闭。自己查查吧。基本都是这个问题。


        IP属地:北京4楼2014-05-29 19:05
        回复