java保存书店每日交易记录

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
import java.util.Date;
public class Bookstore {

    static final String SEPARATE_FIELD = ",";
    static final String SEPARATE_LINE = "\r\n";
    static HashMap<Integer, Book> map = new HashMap<Integer, Book>();
    static ArrayList<Integer> noid = new ArrayList<Integer>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        createbooks();//将书的信息存储;
        for(int key: noid)
        {
            System.out.println(map.get(key));
        }
        while(true)
        {
            System.out.println("请输入您想要买的书籍编号");
            int n;
            n = sc.nextInt();
            if(map.containsKey(n))
            {
                Book buybook = map.get(n);
                if(buybook.number == 0)
                {
                    System.out.println("不好意思,您要的书本已经买完");
                }
                else 
                {
                    int booknum;
                    System.out.println("请输入您要买的书本的数量");
                    booknum = sc.nextInt();
                    if(booknum <= buybook.number)
                    {
                        Book books = new Book(buybook.id,buybook.name,buybook.price,booknum,buybook.price * booknum,buybook.publish);
                        saveBooks(books);
                        buybook.setNumber(buybook.number - booknum);
                        buybook.setMoney((buybook.number - booknum) * buybook.price);
                        System.out.println("购买成功");
                    }
                    else
                    {
                        System.out.println("不好意思,您要买的书库存不足且只有" + buybook.number + "本");
                        System.out.println("请问您是否将库存全部买走请回答yes或no");
                        String s;
                        s = sc.next();
                        if(s == "yes")
                        {
                            Book books = new Book(buybook.id,buybook.name,buybook.price,booknum,buybook.price * buybook.number,buybook.publish);
                            saveBooks(books);
                            buybook.setNumber(0);
                            buybook.setMoney(0.00);
                            System.out.println("购买成功");
                        }
                        else 
                        {
                            System.out.println("好的,欢迎下次光临");
                        }
                    }
                }
            }
            else
            {
                System.out.println("你输入的编号错误");
            }
        }
    }
    public static void createbooks() {
        Book good1 = new Book(101,"java基础入门",44.50,100,4450.00,"清华大学出版社");
        Book good2 = new Book(102,"java编程竞赛",108.00,50,5400.00,"ak算法出版社");
        Book good3 = new Book(103,"java遍历算法",99.00,100,9900.00,"ac自动机出版社");
        Book good4 = new Book(104,"java编程思想",44.50,100,4450.00,"dfs建树出版社");
        map.put(101, good1);
        map.put(102, good2);
        map.put(103, good3);
        map.put(104, good4);
        noid.add(101);
        noid.add(102);
        noid.add(103);
        noid.add(104);
        
    }
    public static void saveBooks(Book sellBook){
        Date date = new Date();
        //parse()返回的是一个Date类型数据,format()返回的是一个StringBuffer类型的数据
        DateFormat format = new SimpleDateFormat("yyyyMMdd");
        String name = "sell_log" + format.format(date) + ".csv";
        InputStream in = null;
        //判断本地是否有此文件
        try{
            in = new FileInputStream(name);
            if(in != null){
                //存在文件,采取修改文件的方式
                in.close();
                createFile(name, true, sellBook);
            }
        } catch (FileNotFoundException e){
            //不存在该文件,应创建文件
            createFile(name, false, sellBook);
        } catch (IOException e){
            e.printStackTrace();
        }
    }
    public static void createFile(String name, boolean label, Book sellBook){
        BufferedOutputStream bos = null;
        StringBuffer sbf = new StringBuffer();
        try{
            if(label){
                bos = new BufferedOutputStream(new FileOutputStream(name, true));
            }else{
                bos = new BufferedOutputStream(new FileOutputStream(name));
                String[] str = new String[] {"图书编号", "图书名称", "购买数量", 
                        "单价", "总价", "出版社"};
                for(String s : str){
                    sbf.append(s + SEPARATE_FIELD);
                }
            }
            sbf.append(SEPARATE_LINE);
            sbf.append(sellBook.id).append(SEPARATE_FIELD);
            sbf.append(sellBook.name).append(SEPARATE_FIELD);
            sbf.append(sellBook.number).append(SEPARATE_FIELD);
            sbf.append(sellBook.price).append(SEPARATE_FIELD);
            sbf.append(sellBook.money).append(SEPARATE_FIELD);
            sbf.append(sellBook.publish).append(SEPARATE_FIELD);
            String str = sbf.toString();
            byte[] b = str.getBytes();
            for (int i=0; i<b.length; i++){
                bos.write(b[i]);
            }
        } catch(Exception e){
            e.printStackTrace();
        } finally{
            try {
                if(bos!=null)
                    bos.close();            
            }catch(Exception e2){
                e2.printStackTrace();
            }
        }
    }
}

class Book
{
    int id;
    String name;
    double price;
    int number;
    double money;
    String publish;
    
    
    public Book() {
        super();
    }
    public Book(int id, String name, double price, int number, double money,
            String publish) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
        this.number = number;
        this.money = money;
        this.publish = publish;
    }
    @Override
    public String toString() {
        return "book [图书编号:" + id + "  图书名称:" + name + "  单价:" + price
                + "  库存数量:" + number + "  出版社:"
                + publish + "]";
    }
    
    public void setPrice(double price) {
        this.price = price;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public void setMoney(double money) {
        this.money = money;
    }    
}

  

posted @ 2018-11-14 13:10  WINDZLY  阅读(1203)  评论(1编辑  收藏  举报