java保存图书每日的交易记录

①创建一个图书实体类

package in;

public class Books {
	int id;
	String name;	//图书名称
	double price;	//单价
	int number;	//图书数量
	double money;	//总价
	String Publish;	//出版社
	
	//定义方法赋值
	public  Books(int id,String name,double price,int number,double money,String Publish ) {
		this.id=id;
		this.name=name;
		this.price=price;
		this.number=number;
		this.money=money;
		this.Publish=Publish;
	}
	@Override			//①可以当注释用, 方便阅读.②编译器检查覆写方法的正确性, 验证`@Override下面的方法名是否存在父类中. 如果没有则报错.
						//是伪代码, 表示覆写父类方法
	//用来输出图书的具体情况
	public String toString(){
		String message="图书编号:"+id+" 图书名称:"+name+" 单价:"+price+" 出版社:"+Publish+ " 总价:"+money+"  库存数量:"+number;
		return message;	
	}
	//用来设置减掉购买的书本数量
	public void setNumber(int number) {
		this.number=number;
		
	}
	
}

②创建一个记录和操作的图书

package in;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class RecordBooksOrder {
	static ArrayList<Books> bookList=new ArrayList<Books>();

	public static void main(String[] args) throws IOException {
		init();
		for(int i=0;i<bookList.size();i++)
		{
			System.out.println(bookList.get(i));
		}
		while(true){
			Scanner sin=new Scanner(System.in);
			System.out.print("请输入图书编号:");
			int bookId=sin.nextInt();
			Books stockBooks=getBooksById(bookId);
			if(stockBooks!=null)//判断是否存在图书
			{
				System.out.println("当前图书信息:"+stockBooks);
				System.out.println("请输入购买数量:");
				int bookNumber=sin.nextInt();
				if(bookNumber<=stockBooks.number)	//判断库存是否足够
				{
					Books books=new Books(stockBooks.id,stockBooks.name,stockBooks.price,bookNumber,stockBooks.price*bookNumber,stockBooks.Publish);//封装
					FileUtil.saveBooks(books);//保存数据
					stockBooks.setNumber(stockBooks.number-bookNumber);
				}else{
					System.out.println("库存不足!");
				}
			}else{
				System.out.println("图书编号输入错误");
			}
		}
		
	}
	private static Books getBooksById(int bookId) {
		for(int i=0;i<bookList.size();i++)
		{
			Books thisBooks=bookList.get(i);
			if(bookId==thisBooks.id)
			{
				return thisBooks;
			}
		}
		return null;
	}
	//初始化数据;
	private static void init() {
		Books goods1=new Books(101,"java基础入门",44.50,100,4450.00,"清华大学出版社");
		Books goods2=new Books(102,"java中级",108.00,50,5400.00,"清华大学出版社");
		Books goods3=new Books(103,"java高级",99.00,100,9900.00,"清华大学出版社");
		bookList.add(goods1);
		bookList.add(goods2);
		bookList.add(goods3);
	}
	

}

③定义工具类来保存图书信息

package in;

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileUtil {
	public static final String aa=",";
	public static final String bb="\r\n";
	
	//保存图书信息
	public static void saveBooks(Books books) throws IOException
	{
		Date date=new Date();
		DateFormat format=new SimpleDateFormat("yyyyMMdd");
		String name="销售记录"+format.format(date)+".csv";
		InputStream in=null;
		try{
			in=new FileInputStream(name);
			if(in!=null)
			{
				in.close();
				createFile(name,true,books);
			}
		}catch (FileNotFoundException e){
			
			createFile(name, false, books);
		}catch (IOException e) {
			e.printStackTrace();	
		}
	
	}
	
	private static void createFile(String name, boolean b, Books books) {
		BufferedOutputStream out=null;
		StringBuffer sbf=new StringBuffer();
		try{
			   if(b){
				out=new BufferedOutputStream(new FileOutputStream(name,true));	//为真时直接追加内容
				 }else{
					 out=new BufferedOutputStream(new FileOutputStream(name));
					 String[] filedSort=new String[]{"图书编号","图书名称","购买数量","单价","总价","出版社"};
					 for(String fieldKey:filedSort)
					 {
						sbf.append(fieldKey).append(aa);//创建表头,给StringBuff添加数据
					 }    }
			sbf.append(bb);
			sbf.append(books.id).append(aa);
			sbf.append(books.name).append(aa);
			sbf.append(books.number).append(aa);
			sbf.append((double)books.price).append(aa);
			sbf.append((double)books.money).append(aa);
			sbf.append(books.Publish).append(aa);
			String str=sbf.toString();
			byte[] c=str.getBytes();
			for(int i=0;i<c.length;i++)
			{
				out.write(c[i]);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}finally {
			try{
				if(out!=null)
				{
					out.close();
				}
			}catch (Exception ee){
				ee.printStackTrace();
				
			}
		}
		
	}


}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值