导读:本期聚焦于小伙伴创作的《如何用Java编写商品销售记录程序并演示数据输入输出流程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用Java编写商品销售记录程序并演示数据输入输出流程》有用,将其分享出去将是对创作者最好的鼓励。

商品销售记录程序是Java基础阶段非常典型的小项目,核心目标是实现销售数据的录入、存储和输出,能够清晰展示Java程序从接收外部数据到处理再到输出的完整流程。下面我们通过一个完整的示例来拆解实现过程。

如何用Java编写商品销售记录程序并演示数据输入输出流程

程序需求梳理

首先我们明确商品销售记录需要包含的核心信息,每条销售记录应该包含以下字段:

  • 商品编号:唯一标识商品的字符串
  • 商品名称:描述商品的文本
  • 销售数量:正整数类型
  • 销售单价:浮点数类型
  • 销售时间:记录生成的时间戳

程序需要实现两个核心功能:一是从控制台接收用户输入的上述销售信息,二是将录入的销售记录输出到控制台和本地文件,方便后续查看。

数据输入流程实现

Java中控制台输入通常使用Scanner类实现,我们需要先创建Scanner对象,然后依次提示用户输入各个字段的内容,同时做基础的合法性校验。

输入模块核心代码

import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SalesRecordInput {
    // 定义销售记录的结构,使用数组存储单条记录的不同字段
    public static String[] inputSalesRecord() {
        Scanner scanner = new Scanner(System.in);
        String[] record = new String[5];
        
        // 输入商品编号
        System.out.print("请输入商品编号:");
        record[0] = scanner.nextLine();
        
        // 输入商品名称
        System.out.print("请输入商品名称:");
        record[1] = scanner.nextLine();
        
        // 输入销售数量,做合法性校验
        while (true) {
            System.out.print("请输入销售数量(正整数):");
            try {
                int quantity = Integer.parseInt(scanner.nextLine());
                if (quantity > 0) {
                    record[2] = String.valueOf(quantity);
                    break;
                } else {
                    System.out.println("数量必须为正整数,请重新输入");
                }
            } catch (NumberFormatException e) {
                System.out.println("输入格式错误,请输入整数");
            }
        }
        
        // 输入销售单价,做合法性校验
        while (true) {
            System.out.print("请输入销售单价(正数):");
            try {
                double price = Double.parseDouble(scanner.nextLine());
                if (price > 0) {
                    record[3] = String.valueOf(price);
                    break;
                } else {
                    System.out.println("单价必须为正数,请重新输入");
                }
            } catch (NumberFormatException e) {
                System.out.println("输入格式错误,请输入数字");
            }
        }
        
        // 生成销售时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        record[4] = sdf.format(new Date());
        
        return record;
    }
}

数据存储与输出流程实现

录入的数据可以先存储在内存集合中,再分别输出到控制台和本地文件。输出到控制台直接使用System.out.println即可,输出到文件需要使用文件输出流。

输出模块核心代码

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class SalesRecordOutput {
    // 存储所有销售记录的集合
    private List<String[]> allRecords = new ArrayList<>();
    
    // 添加单条记录到集合
    public void addRecord(String[] record) {
        allRecords.add(record);
    }
    
    // 输出所有记录到控制台
    public void printToConsole() {
        System.out.println("n====== 商品销售记录列表 ======");
        System.out.println("商品编号 | 商品名称 | 销售数量 | 销售单价 | 销售时间");
        for (String[] record : allRecords) {
            System.out.println(record[0] + " | " + record[1] + " | " + record[2] + " | " + record[3] + " | " + record[4]);
        }
    }
    
    // 输出所有记录到本地文件
    public void printToFile(String filePath) {
        try (FileWriter writer = new FileWriter(filePath, true)) {
            writer.write("====== 商品销售记录列表 ======n");
            writer.write("商品编号,商品名称,销售数量,销售单价,销售时间n");
            for (String[] record : allRecords) {
                writer.write(record[0] + "," + record[1] + "," + record[2] + "," + record[3] + "," + record[4] + "n");
            }
            writer.write("n");
            System.out.println("记录已成功写入文件:" + filePath);
        } catch (IOException e) {
            System.out.println("文件写入失败:" + e.getMessage());
        }
    }
}

主程序整合演示

我们将输入和输出模块整合到主程序中,实现完整的流程演示,用户可以循环录入多条记录,最后选择输出方式。

主程序代码

import java.util.Scanner;

public class SalesRecordApp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        SalesRecordOutput output = new SalesRecordOutput();
        
        while (true) {
            System.out.println("n--- 商品销售记录录入 ---");
            String[] record = SalesRecordInput.inputSalesRecord();
            output.addRecord(record);
            
            System.out.print("是否继续录入记录?(y/n):");
            String choice = scanner.nextLine();
            if (!"y".equalsIgnoreCase(choice)) {
                break;
            }
        }
        
        // 输出到控制台
        output.printToConsole();
        
        // 输出到文件
        System.out.print("请输入要保存的文件路径(如:D:/sales.txt):");
        String filePath = scanner.nextLine();
        output.printToFile(filePath);
        
        scanner.close();
        System.out.println("程序执行结束");
    }
}

流程总结

整个程序的数据输入输出流程可以总结为三个步骤:第一步通过Scanner类从控制台接收用户输入的原始数据,同时完成格式校验,避免非法数据进入后续流程;第二步将校验通过的单条记录存入内存集合,方便后续统一处理;第三步分别通过控制台输出流和文件输出流,将集合中的记录输出到不同载体,完成数据的持久化或展示。

这个示例涵盖了Java基础开发中常用的输入输出组件,理解这个流程后,可以扩展到图形界面程序或者数据库存储的场景,核心逻辑是相通的。

Java商品销售记录程序数据输入数据输出输入输出流修改时间:2026-07-07 11:06:12

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。