1.图书类java
package it.cn.demo7_1test; /* * 编写一个book类,里面含有图书信息,还有从新设置数量的方法 */ public class Book { int id; String name; double price; int number; double money; //总价 String Publish;//出本社 // 构造方法 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; Publish = publish; } //重写toString方法 @Override public String toString() { String message = "图书编号:"+id+" 图书名称:"+name+" 图书价格:"+" 出版社:"+Publish+" 数量:"+number +" 总价:"+ money; return message; } public void setNumber(int number) { this.number=number; } }
2.编写一个工具类,用来保存图书的购买信息编程
package it.cn.demo7_1test; 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 SEPARATE_FILED=",";//分隔符逗号 public static final String SEPARATE_LINE="\r\n";//行分隔符 /* * 保存图书信息 */ public static void saveBook(Book book) throws Exception { //判断是否存在本地文件 Date date=new Date(); DateFormat format =new SimpleDateFormat("yyyyMMdd");//定义日期格式 //将给定的 Date 格式化为日期/时间字符串 String name="销售记录"+format.format(date)+".csv"; //建立一个输入流对象 InputStream in=null; try { //in的主要做用使用来判断是否存在今天的销售记录的文件 in=new FileInputStream(name); //判断是否存在文件 if(in != null) { //若是有找到文件 in.close();//关闭输入流 createFile(name, true, book); //若是文件存在,就采起修改文件 } }catch(FileNotFoundException e){ //若是没有找到文件 createFile(name, false, book); //若是不存在文件,就从新建立一个文件 }catch (IOException e) { e.printStackTrace(); } } /** * * @param name 文件名 * @param lable 文件存在的标识:true 文件存在 false 文件不存在 * @param book */ public static void createFile(String name,boolean lable,Book book) { //建立一个缓冲区 BufferedOutputStream out=null; //可变字符串,缓冲字符 StringBuffer sbs=new StringBuffer(); try { //根据lable的值来判断是从新建立文件,仍是继续 if(lable) { //建立一个向指定 File 对象表示的文件中写入数据的文件输出流。 //若是第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处 out=new BufferedOutputStream(new FileOutputStream(name,true)); }else { //不存在当天文件,则建立新文件 //建立输出流对象,用于保存文件 out=new BufferedOutputStream(new FileOutputStream(name)); //建立文件的表头部分 String[] fieldSort =new String[] {"图书编号","图书名称","购买数量","单价","总价","出版社"}; //建立表头 for(String fieldKey:fieldSort) { //新建时,将表头存入文件 sbs.append(fieldKey).append(SEPARATE_FILED); } } //添加数据 sbs.append(SEPARATE_LINE);//添加换行 //把购买的图书信息添加到可变字符里,再把可变字符转为字符串,再将字符串转为字节 sbs.append(book.id).append(SEPARATE_FILED); sbs.append(book.name).append(SEPARATE_FILED); sbs.append(book.number).append(SEPARATE_FILED); sbs.append(book.price).append(SEPARATE_FILED); sbs.append(book.money).append(SEPARATE_FILED); sbs.append(book.Publish).append(SEPARATE_FILED); //把字符转换为字节数组 String str=sbs.toString(); byte[] b=str.getBytes(); for(int i=0;i<b.length;i++) { out.write(b[i]); //将内容写入本地文件 } }catch (Exception e) { e.printStackTrace(); }finally{ try { if (out != null) { out.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } }
3.主类数组
package it.cn.demo7_1test; import java.util.ArrayList; import java.util.Scanner; public class RecordBookOrder { //建立一个静态的集合,用来存储书 static ArrayList<Book> booklist = new ArrayList<Book>(); public static void main(String[] args) throws Exception { //初始化图书信息 init(booklist); //将图书打印出来 for(int i=0;i<booklist.size();i++) { System.out.println(booklist.get(i)); } while(true) { //获取控制台输入的信息 Scanner scan=new Scanner(System.in); System.out.println("请输入图书编号:"); int bookID=scan.nextInt(); Book stockBook=getBook(bookID); //若是图书不为空 if(stockBook != null) { System.out.println("当前图书信息:"+stockBook); System.out.println("请输入购买数量:"); int num=scan.nextInt(); if(num<=stockBook.number) { //判断库存是否够 //若是够的话,就建立一个book对象,数量为购买的数量,并将此对象存入CVS文件中 Book book=new Book(stockBook.id, stockBook.name, stockBook.price, num, stockBook.money*num,stockBook.Publish); //建立一个工具类,用来存购买信息 FileUtil.saveBook(book); //将本条信息存入文件 //修改库存 stockBook.setNumber(stockBook.number-num); }else { System.out.println("库存不够!"); } }else { System.out.println("图书编号错误!"); } } } //初始化集合 private static void init(ArrayList<Book> booklist) { Book b1=new Book(101, "java基础入门", 44.50, 100, 4450,"清华大学出版社"); Book b2=new Book(102, "java编程思想", 99.00, 100, 9900, "机械工程出版社"); Book b3=new Book(103, "疯狂java讲义", 99.00, 100, 9900, "电子工业出版社"); booklist.add(b1); booklist.add(b2); booklist.add(b3); } //根据输入的图书编号查找图书,正确的话就返回图书, private static Book getBook(int bookID) { for(int i=0;i<booklist.size();i++) { Book stockbook=booklist.get(i); if(bookID==stockbook.id) { return stockbook; } } return null; } }