0

0

Java实现快递寄件记录管理_文件持久化入门项目

P粉602998670

P粉602998670

发布时间:2025-11-13 17:33:06

|

876人浏览过

|

来源于php中文网

原创

快递寄件记录管理系统是Java初学者练习文件持久化的理想项目。1. 实现控制台操作:支持添加、查看、查询、删除快递记录,并通过文本文件保存数据,确保程序关闭后信息不丢失。2. 核心类Express封装快递单号、寄件人、收件人、电话、地址和时间等属性。3. ExpressService类负责管理快递列表,使用BufferedReader/Writer读写CSV格式的express.txt文件,实现数据加载与存储。4. 主程序ExpressApp提供菜单界面,用户可交互式操作,包含输入处理、重复单号校验及异常捕获。5. 项目涵盖类设计、集合操作、文件IO、异常处理等基础技能,后续可扩展JSON支持或修改功能,适合练手与简历展示。

java实现快递寄件记录管理_文件持久化入门项目

快递寄件记录管理是一个非常适合Java初学者练习文件持久化的入门项目。通过这个项目,你可以掌握类设计、集合操作、文件读写(如使用文本文件或JSON)等基础技能。下面是一个简单但完整的实现思路和代码结构。

1. 项目目标

实现一个控制台程序,能够:

  • 添加新的快递寄件记录
  • 查看所有寄件记录
  • 根据单号查询记录
  • 删除某条记录
  • 数据在程序关闭后不丢失(使用文件保存)

2. 核心类设计:Express(快递对象)

每个快递记录包含基本信息:

public class Express {
    private String number;  // 快递单号
    private String sender;  // 寄件人
    private String receiver; // 收件人
    private String phone;   // 收件人电话
    private String address; // 收件地址
    private long timestamp; // 寄件时间

    // 构造方法
    public Express(String number, String sender, String receiver, 
                   String phone, String address) {
        this.number = number;
        this.sender = sender;
        this.receiver = receiver;
        this.phone = phone;
        this.address = address;
        this.timestamp = System.currentTimeMillis();
    }

    // Getter 和 toString 方法(略)
}

3. 文件持久化:使用文本文件存储

采用简单的文本格式存储每条数据,每行代表一个快递记录,字段用逗号分隔(类似CSV)。

立即学习Java免费学习笔记(深入)”;

多面鹅
多面鹅

面向求职者的AI面试平台

下载

示例文件内容(express.txt):

1001,张三,李四,13800138000,北京市海淀区
1002,王五,赵六,13900139000,上海市浦东新区

使用 Java 的 BufferedReader / BufferedWriter 进行读写操作。

import java.io.*;
import java.util.*;

public class ExpressService {
    private List<Express> records = new ArrayList<>();
    private static final String FILE_PATH = "express.txt";

    // 加载数据
    public void loadFromFile() {
        records.clear();
        File file = new File(FILE_PATH);
        if (!file.exists()) return;

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] parts = line.split(",");
                if (parts.length == 6) {
                    Express e = new Express(parts[0], parts[1], parts[2], parts[3], parts[4]);
                    records.add(e);
                }
            }
        } catch (IOException e) {
            System.out.println("读取文件失败:" + e.getMessage());
        }
    }

    // 保存数据
    public void saveToFile() {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(FILE_PATH))) {
            for (Express e : records) {
                bw.write(String.join(",", e.getNumber(), e.getSender(), e.getReceiver(),
                        e.getPhone(), e.getAddress()));
                bw.newLine();
            }
        } catch (IOException e) {
            System.out.println("保存文件失败:" + e.getMessage());
        }
    }

    // 添加记录
    public boolean addExpress(Express e) {
        if (findExpressByNumber(e.getNumber()) != null) {
            return false; // 单号重复
        }
        records.add(e);
        saveToFile();
        return true;
    }

    // 查询
    public Express findExpressByNumber(String number) {
        for (Express e : records) {
            if (e.getNumber().equals(number)) {
                return e;
            }
        }
        return null;
    }

    // 删除
    public boolean deleteExpress(String number) {
        Express target = findExpressByNumber(number);
        if (target != null) {
            records.remove(target);
            saveToFile();
            return true;
        }
        return false;
    }

    // 获取全部
    public List<Express> getAll() {
        return new ArrayList<>(records);
    }
}

4. 主程序:控制台交互

提供菜单式操作界面。

import java.util.Scanner;

public class ExpressApp {
    private ExpressService service = new ExpressService();
    private Scanner scanner = new Scanner(System.in);

    public void start() {
        service.loadFromFile();
        System.out.println("=== 快递寄件管理系统 ===");

        while (true) {
            System.out.println("\n1. 添加记录");
            System.out.println("2. 查看所有记录");
            System.out.println("3. 查询单号");
            System.out.println("4. 删除记录");
            System.out.println("0. 退出");
            System.out.print("请选择:");

            int choice = scanner.nextInt();
            scanner.nextLine(); // 消费换行

            switch (choice) {
                case 1:
                    addRecord();
                    break;
                case 2:
                    showAll();
                    break;
                case 3:
                    query();
                    break;
                case 4:
                    delete();
                    break;
                case 0:
                    System.out.println("再见!");
                    return;
                default:
                    System.out.println("无效选择!");
            }
        }
    }

    private void addRecord() {
        System.out.print("单号:"); String num = scanner.nextLine();
        System.out.print("寄件人:"); String s = scanner.nextLine();
        System.out.print("收件人:"); String r = scanner.nextLine();
        System.out.print("电话:"); String p = scanner.nextLine();
        System.out.print("地址:"); String a = scanner.nextLine();

        Express e = new Express(num, s, r, p, a);
        if (service.addExpress(e)) {
            System.out.println("添加成功!");
        } else {
            System.out.println("单号重复,添加失败!");
        }
    }

    private void showAll() {
        List<Express> list = service.getAll();
        if (list.isEmpty()) {
            System.out.println("暂无记录。");
        } else {
            for (Express e : list) {
                System.out.println(e);
            }
        }
    }

    private void query() {
        System.out.print("输入单号:");
        String num = scanner.nextLine();
        Express e = service.findExpressByNumber(num);
        if (e != null) {
            System.out.println("找到记录:" + e);
        } else {
            System.out.println("未找到该单号。");
        }
    }

    private void delete() {
        System.out.print("输入要删除的单号:");
        String num = scanner.nextLine();
        if (service.deleteExpress(num)) {
            System.out.println("删除成功!");
        } else {
            System.out.println("未找到该单号!");
        }
    }

    public static void main(String[] args) {
        new ExpressApp().start();
    }
}

基本上就这些。这个项目虽小,但涵盖了面向对象设计、集合使用、文件IO、异常处理等核心知识点。后续可以扩展功能,比如支持JSON格式、增加修改功能、加入时间格式化显示等。适合练手和简历项目展示。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

457

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

547

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

335

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

Node.js后端开发与Express框架实践
Node.js后端开发与Express框架实践

本专题针对初中级 Node.js 开发者,系统讲解如何使用 Express 框架搭建高性能后端服务。内容包括路由设计、中间件开发、数据库集成、API 安全与异常处理,以及 RESTful API 的设计与优化。通过实际项目演示,帮助开发者快速掌握 Node.js 后端开发流程。

422

2026.02.10

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

58

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

63

2025.11.27

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.4万人学习

C# 教程
C# 教程

共94课时 | 11.2万人学习

Java 教程
Java 教程

共578课时 | 81.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号