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; } }