Java-保存书店交易记录程序

本文描述了一个Java程序,用于记录书店的每日交易,包括图书编号、名称、购买数量等信息。程序通过字符流将数据保存到CSV或TXT文件中,根据用户输入更新库存并追加到对应日期的文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序编写:编写一个保存书店每日交易记录的程序,使用字符流将书店的交易信息记录在本地的csv或txt文件中。当用户输入图书编号时,后台会根据图书编号查询到相应图书信息,并返回打印出来。用户紧接着输入购买数量,系统会判定库存是否充足,如果充足则将信息保存至本地的csv文件中,其中每条记录包含“图书编号”、“图书名称”、“购买数量”、“单价”、“总价”和“出版社”等数据。每个数据之间用英文逗号或空格分隔,每条数据之间由换行符分隔。保存的时候需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。文件命名格式为“销售记录”加上当天日期加上“.csv”或“.txt”后缀,如“销售记录20200426.csv”或“销售记录20200426.csv”。

package com.pdsu.rjxy;

public class Book_122 {
	int ID,number;//数量,ID
	String Name;//名字
	double price,money;//单价,总价
	String Appear;//出版社

	public Book_122(int iD, int number, String name, double price, double money, String appear) {
		this.ID = iD;
		this.number = number;
		this.Name = name;
		this.price = price;
		this.money = money;
		this.Appear = appear;
	}

	@Override
	public String toString() {
		return "图书编号=" + ID + ", 图书名字=" + Name +", 图书数量=" + number +  ", 图书价格=" + price
				+ ", 出版社=" + Appear;
	}
	
	public void setnumber(int number) {
		this.number=number;
	}
	
}
package com.pdsu.rjxy;

import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

public class File_book {
	
	public static final String SEPARATE_FIELD = ",";
	public static final String SEPARATE_LINE = "\r\n";
	static void judge_file(Book_122 book) {
		Date date = new Date();
		DateFormat format = new SimpleDateFormat("yyyyMMdd");
		String file_name = "销售记录" + format.format(date)+".txt";
		File file = new File(file_name);
		if(file.exists()) {
			create(file_name,true,book);//当天销售记录已经存在
		}
		else {
			create(file_name, false, book);//当天销售记录不存在
		}
	}
	static void create(String name,boolean flag,Book_122 book) {
		
		BufferedOutputStream out = null;
		StringBuffer f = new StringBuffer();
		
		try {
			if(flag) {
				out = new BufferedOutputStream(new FileOutputStream(name,true));
			}
			else {
				out = new BufferedOutputStream(new FileOutputStream(name));
				String [] s = new String [] {"图书编号","图书名称","图书数量",
						"图书单价","图书总价","出版社"};
				for(String it : s) {
					f.append(it + SEPARATE_FIELD);
				}
			}
			f.append(SEPARATE_LINE);
			f.append(book.ID + SEPARATE_FIELD);
			f.append(book.Name + SEPARATE_FIELD);
			f.append(book.number + SEPARATE_FIELD);
			f.append((double)book.price +SEPARATE_FIELD);
			f.append((double)(double)book.money + SEPARATE_FIELD);
			f.append(book.Appear + SEPARATE_FIELD);
			String str = f.toString();
			byte[] by = str.getBytes();
			for(int i=0;i<by.length;i++) {
				out.write(by[i]);
			}
			
 		} catch (Exception e) {
			// TODO: handle exception
 			e.printStackTrace();
		}
		finally {
			try {
				if(out!=null) {
					out.close();
				}
			} catch (Exception e2) {
				// TODO: handle exception
				e2.printStackTrace();
			}
		}
	}
}
3.package com.pdsu.rjxy;

import java.util.ArrayList;
import java.util.Scanner;


public class test_122 {
	static ArrayList<Book_122> bookslist = new ArrayList<Book_122>();
	public static void main(String[] args) {
		//初始化,导入书籍
		init();
		for(int i=0;i<bookslist.size();i++) {
			System.out.println(bookslist.get(i));
		}
		Scanner reader = new Scanner(System.in);
		while(true) {
			System.out.println("请输入图书的编号 :");
			int id = reader.nextInt();
			Book_122 b= getBook(id);
			if(b!=null) {
				System.out.println("当前图书信息:");
				System.out.println(b);
				System.out.println("请输入要购买的数量:");
				int buy = reader.nextInt();
				if(buy>b.number) {
					System.out.println("抱歉,您购买该书数量超出我们库存的数量");
				}
				else {
					Book_122 c = new Book_122(b.ID,buy, b.Name, b.price, b.price*buy, b.Appear);
					//将数据转向本地文件。
					File_book.judge_file(c);
					b.setnumber(b.number-buy);
					
				}
			}
			else {
				System.out.println("图书ID输入错误");
			}
		}
	}
	
	static void init() {
		Book_122 book1= new Book_122(1, 100, "Java2实用教程", 49.9, 4990, "清华出版社");
		Book_122 book2= new Book_122(2, 100, "c语言基础", 39.9, 3990, "清华出版社");
		Book_122 book3= new Book_122(3, 100, "算法基础", 109.9, 10990, "清华出版社");
		Book_122 book4= new Book_122(4, 100, "高等数学", 29.9, 2990, "平顶山出版社");
		bookslist.add(book1);
		bookslist.add(book2);
		bookslist.add(book3);
		bookslist.add(book4);
	}
	
	
	static Book_122 getBook(int id) {//查找该书是否存在
		for(int i=0;i<bookslist.size();i++) {
			Book_122 a = bookslist.get(i);
			if(id==a.ID) {
				return a;
			}
		}
		return null;
	}
	
}

【为什么学习Java?】 1.因为Java是全球排名第一的编程语言Java工程师也是市场需求最大的软件工程师,选择Java,就是选择了高薪。2.Java语言常年霸占着三大市场:互联网和企业应用,这是Java EE的长期优势和市场地位;大数据平台,主要有Hadoop、Spark、Flink等,他们都是Java或Scala(一种运行于JVM的编程语言开发的;Android移动平台。这意味着Java拥有最广泛的就业市场。【我将如何教你?】 本课程囊括了Java语言的基本知识点,可以在短时间内带领学生概览Java语言的全貌,先了解再深入,花最少量的钱,做最快的实验,看你是否对Java感兴趣,有信心。绝对是一门小白学习的必修课程!本课程分为三大模块: 初识篇:主要以Java的环境安装及基础语法为主要内容,帮助学员解决Java基础语法问题,并对Java做一定的介绍,为后续的进阶课程内容展开做好语言基础。进阶篇:带你玩转Java进阶必学的类库和各类API知识,搞清Java最重要的核心编程思想面向对象编程。扩展篇:本篇包含了JDBC、GUI、网络编程、多线程编程等Java高阶应用技巧和核心原理。【报名须知】课程采取录播模式,课程永久有效,可无限次观看课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化【如何开始学习?】PC端:报名成功后可以直接进入课程学习移动端:下载优快云学院或优快云
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络编程工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值