赞
踩
程序编写:编写一个保存书店每日交易记录的程序,将书店的交易信息记录在本地的csv或txt文件中。当用户输入图书编号时,后台会根据图书编号查询到相应图书信息,并返回打印出来。用户紧接着输入购买数量,系统会判定库存是否充足,如果充足则将信息保存至本地的csv文件中,其中每条记录包含“图书编号”、“图书名称”、“购买数量”、“单价”、“总价”和“出版社”等数据。每个数据之间用英文逗号或空格分隔,每条数据之间由换行符分隔。保存的时候需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。文件命名格式为“销售记录”加上当天日期加上“.csv”或“.txt”后缀。
Books类
package bookstore; /* * 图书类 */ public class Books { private int id; private String name;//图书名称 private int number;//图书数量 private double price;//图书单价 private double money;//总价 private String publish;//出版社 //构造方法 public Books() { super(); } public Books(int id, String name, int number, double price, double money, String publish) { super(); this.id = id; this.name = name; this.number = number; this.price = price; this.money = money; this.publish = publish; } //取值赋值构造get,set public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public String getPublish() { return publish; } public void setPublish(String publish) { this.publish = publish; } @Override public String toString() { String message = "图书编号: " + id + " 图书名称: " + name + " 出版社: " + publish + " 单价: " + price + " 库存数量: " + number; return message; } }
RecordBooksOrder类
package bookstore; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Scanner; /* * 图书订单信息 */ public class RecordBooksOrder { //书架 public static ArrayList<Books> booksList = new ArrayList<Books>(); public static void main(String[] args) { //初始化书架 init(); //将书架上所有的书打印出来————遍历 for (Books book : booksList) { System.out.println(book); } //购买图书 while (true) { //获取控制台输入内容 Scanner scan = new Scanner(System.in); System.out.print("请输入图书编号:"); int bookId = scan.nextInt(); //根据输入的图书编号获取图书信息 Books stockBooks = getBooksById(bookId); //判断是否存在这本书 if (stockBooks != null) { //说明找到该图书 System.out.println("当前图书信息" + stockBooks); System.out.print("请输入购买数量:"); int bookNumber = scan.nextInt();//输入购买书的数量 //判断当前库存数量是否足够 if (bookNumber <= stockBooks.getNumber() ) { //可以购买,图书充足 //将购买图书的信息封装成Books对象 Books books = new Books(stockBooks.getId(), stockBooks.getName(), bookNumber, stockBooks.getPrice(), stockBooks.getMoney()*bookNumber, stockBooks.getPublish()); //将本条购买信息保存至本地文件 //拼接文件昵称 Date date =new Date(); DateFormat format = new SimpleDateFormat("yyyyMMdd");//定义日期格式 String fileName = "销售记录" + format.format(date)+".csv" ; try { FileInputStream in = new FileInputStream(fileName); if (in != null) { //说明该文件存在 in.close(); //打开文件,追加数据 saveBooks(fileName, true, books); } } catch (FileNotFoundException e) { // 说明该文件不存在,创建新文件,写入数据 saveBooks(fileName, false, books); }catch(IOException e){ e.printStackTrace(); } } else { //不能购买,图书不够 System.out.println("库存不足!"); //修改当前书的库存数量 stockBooks.setNumber(stockBooks.getNumber() - bookNumber); } } else{ //没有找到 System.out.println("图书编号输入错误!"); } } } /* *初始化书架上的图书信息,将图书放在书架上 */ public static void init() { //创建书 Books good1 = new Books(101, "JAVA基础入门", 100, 44.5, 4450.00, "清华大学出版社"); Books good2 = new Books(102, "JAVA编程思想", 50, 108.0, 5400.00, "机械工业出版社"); Books good3 = new Books(103, "疯狂JAVA讲义", 100, 90.0, 9000.00, "电子工业出版社"); //把书添加到书架上 booksList.add(good1); booksList.add(good2); booksList.add(good3); } /** * 根据输入对应的图书编号信息,进行书架图书信息遍历,找到图书编号所对应的信息 * @param bookId 输入的图书编号 * @return 找到的图书信息 */ public static Books getBooksById(int bookId) { for(Books thisBooks : booksList) { //判断当前书的Id 与输入的图书编号是否一致 if (thisBooks.getId() == bookId) { return thisBooks; } } //没找到Id对应的书,返回null return null; } /** * 图书的售出信息保存到本地,可通过labe1标识来判断是否是修改文件还是新建文件 * @param fileName 文件名 * @param label 文件是否已存在的标识。true: 文件已存,则内容修改; false: 文件不存在,则新建文件 * @param books 图书信息 */ public static void saveBooks (String fileName,boolean label,Books books) { try { BufferedOutputStream out = null; //操作文件的输出流 StringBuffer sbf = new StringBuffer() ; //记录文件中要存的数据 //判断该文件是否存在 if (label) {//说明已存在当天的文件,则在文件内容后追加新数据 out = new BufferedOutputStream(new FileOutputStream(fileName, true)); }else {//说明不存在当天的文件,则新建文件 out = new BufferedOutputStream(new FileOutputStream(fileName)); //新文件中,需要写入表头信息 String[] fieldSort = {"图书编号","图书名称","购买数量","单价","总价","出版社"}; for (String field : fieldSort) { sbf.append(field).append(","); } } //写入购买图书信息到表格 sbf.append("\r\n");//添加换行符 sbf.append(books.getId()).append(","); sbf.append(books.getName()).append(","); sbf.append(books.getNumber()).append(","); sbf.append(books.getPrice()).append(","); sbf.append(books.getMoney()).append(","); sbf.append(books.getPublish()); //通过操作文件的输出流,把图书信息写入到文件中 String result = sbf.toString(); byte[] bys = result.getBytes(); out.write( bys ); out.close(); }catch(IOException e){ e.printStackTrace(); } } }
运行上面的代码
在项目下点击Refresh,可以得到一个.csv结尾的文件,将该文件复制到桌面打开,可以看到书店的交易信息记录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。