C# 实现简单的图书管理系统(控制台版)

简介: 图书管理系统案例,基于C#实现,支持增删改查功能,使用List存储图书信息,包含书名、作者、价格等字段,适用于控制台操作。

图书管理系统支持添加、查询、修改、删除图书信息,用 List 存储数据。

案例:图书管理系统

public class Book
{
    public int Id { get; set; }
    public string Title { get; set; } // 书名
    public string Author { get; set; } // 作者
    public decimal Price { get; set; } // 价格
    public string Category { get; set; } // 分类
    public override string ToString()
    {
        return $"ID:{Id} | 书名:{Title} | 作者:{Author} | 价格:{Price:C} | 分类:{Category}";
    }
}
public class BookManager
{
    private static List<Book> _books = new List<Book>();
    private static int _nextId = 1; // 自增ID
    // 添加图书
    public static void AddBook()
    {
        Book book = new Book();
        book.Id = _nextId++;
        Console.Write("请输入书名:");
        book.Title = Console.ReadLine()?.Trim() ?? "";
        Console.Write("请输入作者:");
        book.Author = Console.ReadLine()?.Trim() ?? "";
        Console.Write("请输入价格:");
        decimal.TryParse(Console.ReadLine()?.Trim(), out decimal price);
        book.Price = price;
        Console.Write("请输入分类:");
        book.Category = Console.ReadLine()?.Trim() ?? "";
        _books.Add(book);
        Console.WriteLine("图书添加成功!");
    }
    // 查询所有图书
    public static void QueryAllBooks()
    {
        if (_books.Count == 0)
        {
            Console.WriteLine("暂无图书信息!");
            return;
        }
        Console.WriteLine("=== 所有图书信息 ===");
        foreach (var book in _books)
        {
            Console.WriteLine(book);
        }
    }
    // 按书名查询图书
    public static void QueryBookByTitle()
    {
        Console.Write("请输入要查询的书名关键词:");
        string keyword = Console.ReadLine()?.Trim() ?? "";
        var result = _books.Where(b => b.Title.Contains(keyword, StringComparison.OrdinalIgnoreCase)).ToList();
        if (result.Count == 0)
        {
            Console.WriteLine("未找到匹配的图书!");
            return;
        }
        Console.WriteLine($"=== 找到 {result.Count} 本匹配图书 ===");
        foreach (var book in result)
        {
            Console.WriteLine(book);
        }
    }
    // 删除图书
    public static void DeleteBook()
    {
        Console.Write("请输入要删除的图书ID:");
        if (!int.TryParse(Console.ReadLine()?.Trim(), out int id))
        {
            Console.WriteLine("无效的ID!");
            return;
        }
        Book book = _books.FirstOrDefault(b => b.Id == id);
        if (book == null)
        {
            Console.WriteLine("未找到该ID的图书!");
            return;
        }
        _books.Remove(book);
        Console.WriteLine("图书删除成功!");
    }
    // 显示菜单
    public static void ShowMenu()
    {
        Console.WriteLine("\n=== 图书管理系统 ===");
        Console.WriteLine("1. 添加图书");
        Console.WriteLine("2. 查询所有图书");
        Console.WriteLine("3. 按书名查询图书");
        Console.WriteLine("4. 删除图书");
        Console.WriteLine("5. 退出系统");
        Console.Write("请选择操作(1-5):");
    }
    public static void Main(string[] args)
    {
        while (true)
        {
            ShowMenu();
            string choice = Console.ReadLine()?.Trim() ?? "";
            switch (choice)
            {
                case "1":
                    AddBook();
                    break;
                case "2":
                    QueryAllBooks();
                    break;
                case "3":
                    QueryBookByTitle();
                    break;
                case "4":
                    DeleteBook();
                    break;
                case "5":
                    Console.WriteLine("退出系统!");
                    return;
                default:
                    Console.WriteLine("无效操作,请重新选择!");
                    break;
            }
        }
    }
}
相关文章
|
3月前
|
C#
C# 随机数生成:Random 类用法
Random类用于生成伪随机数,适用于游戏、验证码、测试等场景。通过静态实例避免重复创建,确保随机性。提供整数、小数、布尔值及指定长度的随机字符串生成方法,使用简便且高效。注意需复用实例防止种子重复导致随机数相同。
|
3月前
|
存储 算法 C#
C# 哈希值计算:MD5/SHA256 加密
本示例展示了C#中使用MD5和SHA256算法生成哈希值的方法,适用于密码加密与数据校验。MD5安全性较低,建议仅用于非敏感场景;密码存储推荐使用SHA256配合盐值以增强安全性。
|
3月前
|
C#
C# 实现简单的定时任务工具
基于 `System.Timers.Timer` 实现定时任务,支持周期性与单次执行。通过封装 Timer 类,提供启动、停止功能,并包含异常处理,确保任务稳定运行,适用于后台定时操作场景。
|
3月前
|
C#
C# 实现发送邮件功能(SMTP)
通过SMTP协议实现邮件发送,支持文本与附件,需配置邮箱SMTP信息(如QQ邮箱授权码)。示例代码展示C#中如何使用SmtpClient发送邮件,适用于QQ、163、Gmail等主流邮箱服务。
|
3月前
|
JSON C# 数据格式
C# 实现简单的 HTTP 请求工具(POST 补充)
该代码实现了一个基于 HttpClient 的异步 HTTP POST 请求工具类,支持以 JSON 格式提交数据并反序列化响应结果,具备异常处理机制,适用于 .NET 环境下的轻量级网络请求操作。
|
3月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
3月前
|
存储 数据库连接 C#
C# 配置文件读取:App.config 用法
App.config用于存储程序配置(如数据库连接、接口地址),避免硬编码,提升可维护性。通过ConfigurationManager读取配置,支持字符串、整型、布尔值及连接字符串的获取,需引用System.Configuration程序集。
|
3月前
|
网络协议 安全 C#
C# 实现基于 TCP 的简单聊天程序(服务端)
基于TcpListener实现TCP聊天服务器,监听指定端口,接收客户端连接并实时转发消息。支持多客户端并发通信,新连接自动加入广播列表,断开后自动移除,确保线程安全与稳定运行。
|
3月前
|
C#
C# 实现简单的 AOP(面向切面编程)
通过反射与委托实现AOP,可在方法执行前后动态添加日志、计时等横切逻辑,提升代码复用性与可维护性。