【C#】书籍信息的添加、修改、查询、删除

news/2024/12/4 20:27:48/

文章目录

    • 一、简介
    • 二、程序功能
      • 2.1 Book类
        • 属性:
        • 方法:
      • 2.2 Program 类
    • 三、方法:
    • 四、用户界面流程:
    • 五、程序代码
    • 六、运行效果


一、简介

简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看和删除书籍信息,并将每本书籍的信息保存到一个文本文件中。这是一个实用的工具,适用于需要管理书籍信息的用户。

二、程序功能

我们的程序将包含以下功能:

当然,以下是程序中每个功能和对应方法的详细解释:

2.1 Book类

这个类代表了一个书籍对象,包含了书籍的所有属性。

属性:
  • Title:书名。
  • Author:作者。
  • Publisher:出版社。
  • PublishDate:出版日期。
  • Price:定价。
方法:
  • Book():默认构造函数,用于创建一个没有任何信息的书籍对象。
  • Book(string title, string author, string publisher, DateTime publishDate, decimal price):参数化构造函数,用于创建一个包含所有信息的书籍对象。
  • SaveToFile(string filePath):将书籍信息保存到指定的文件路径。这个方法使用File.WriteAllText来写入文件,文件内容以特定的格式保存(书名、作者、出版社、出版日期和定价)。
  • LoadFromFile(string filePath):从指定的文件路径加载书籍信息。这个方法使用File.ReadAllLines来读取文件,并解析每一行来设置书籍对象的属性。
  • DeleteBookFile(string filePath):删除指定文件路径的书籍文件。这个方法首先检查文件是否存在,如果存在,则使用File.Delete来删除文件。

2.2 Program 类

这个类包含程序的入口点和用户界面逻辑。

三、方法:

  • Main(string[] args):程序的入口点。这个方法设置控制台标题,显示主菜单,并根据用户的选择调用不同的方法来执行操作。
  • AddEditBook():添加或编辑书籍信息。这个方法提示用户输入书籍的详细信息,并保存到用户指定的文件路径。
  • ViewBook():查看书籍信息。这个方法提示用户输入书籍文件的路径,然后加载并显示书籍的详细信息。
  • DeleteBook():删除书籍信息。这个方法提示用户输入要删除的书籍文件路径,然后调用Book.DeleteBookFile方法来删除文件。

四、用户界面流程:

  • 程序启动后,显示主菜单,用户可以选择添加/编辑书籍、查看书籍、删除书籍或退出程序。
  • 根据用户的选择,程序调用相应的方法来执行操作。
  • 每个方法都通过控制台输入输出与用户交互,获取必要的信息或显示结果。

五、程序代码

以下是程序的完整代码:

using System;
using System.IO;namespace pages_211_编程题3_2_书籍信息的查看与编辑
{public class Book{public string Title { get; set; }public string Author { get; set; }public string Publisher { get; set; }public DateTime PublishDate { get; set; }public decimal Price { get; set; }public Book() { }public Book(string title, string author, string publisher, DateTime publishDate, decimal price){Title = title;Author = author;Publisher = publisher;PublishDate = publishDate;Price = price;}public void SaveToFile(string filePath){File.WriteAllText(filePath, $"书名: {Title}\n作者:{Author}\n出版社: {Publisher}\n出版日期: {PublishDate}\n定价: {Price}");}public static Book LoadFromFile(string filePath){string[] lines = File.ReadAllLines(filePath);return new Book{Title = lines[0].Split(new char[] { ':' }, 2)[1].Trim(),Author = lines[1].Split(new char[] { ':' }, 2)[1].Trim(),Publisher = lines[2].Split(new char[] { ':' }, 2)[1].Trim(),PublishDate = DateTime.Parse(lines[3].Split(new char[] { ':' }, 2)[1].Trim()),Price = decimal.Parse(lines[4].Split(new char[] { ':' }, 2)[1].Trim())};}public static void DeleteBookFile(string filePath){if (File.Exists(filePath)){File.Delete(filePath);Console.WriteLine("书籍文件删除成功。");}else{Console.WriteLine("书籍文件不存在。");}}}class Program{static void Main(string[] args){Console.Title = "书籍管理器";bool exit = false;while (!exit){Console.WriteLine("\n书籍管理器");Console.WriteLine("1. 添加/编辑书籍");Console.WriteLine("2. 查看书籍");Console.WriteLine("3. 删除书籍");Console.WriteLine("4. 退出");Console.Write("请选择一个选项:");int option = Convert.ToInt32(Console.ReadLine());switch (option){case 1:AddEditBook();break;case 2:ViewBook();break;case 3:DeleteBook();break;case 4:exit = true;break;default:Console.WriteLine("选项无效,请再试一次");break;}}}static void AddEditBook(){Console.Write("请输入书名:");string title = Console.ReadLine();Console.Write("请输入作者:");string author = Console.ReadLine();Console.Write("请输入出版社:");string publisher = Console.ReadLine();Console.Write("请输入出版日期(格式为yyyy-MM-dd):");DateTime publishDate = DateTime.Parse(Console.ReadLine());Console.Write("请输入定价:");decimal price = decimal.Parse(Console.ReadLine());Book book = new Book(title, author, publisher, publishDate, price);Console.Write("请输入保存书籍的文件路径:");string filePath = Console.ReadLine();book.SaveToFile(filePath);Console.WriteLine("书籍保存成功。");}static void ViewBook(){Console.Write("请输入要查看书籍的文件路径:");string filePath = Console.ReadLine();Book book = Book.LoadFromFile(filePath);Console.WriteLine($"书名: {book.Title}");Console.WriteLine($"作者: {book.Author}");Console.WriteLine($"出版社: {book.Publisher}");Console.WriteLine($"出版日期: {book.PublishDate.ToShortDateString()}");Console.WriteLine($"定价: {book.Price}");}static void DeleteBook(){Console.Write("请输入要删除书籍的文件路径:");string filePath = Console.ReadLine();Book.DeleteBookFile(filePath);}}
}

六、运行效果

  • 添加书籍

在这里插入图片描述
在这里插入图片描述

  • 修改书籍
    在这里插入图片描述
    在这里插入图片描述

  • 删除书籍
    在这里插入图片描述
    在这里插入图片描述


http://www.ppmy.cn/news/1552370.html

相关文章

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)

顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab) 目录 顶刊算法 | 鱼鹰算法OOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…

vue中如何获取public路径

在Vue项目中获取public路径的方法有多种,主要通过以下1、使用相对路径、2、使用环境变量、3、使用webpack配置三种方式来实现。这些方法可以帮助开发者在项目中更灵活地使用静态资源。下面将详细解释每种方法以及如何使用它们。 一、使用相对路径 在Vue项目中&#…

React进阶面试题目(二)

React 组件声明的方法有哪些?各有什么不同? React 组件声明的方法主要有三种: 无状态函数式组件:这种组件只负责根据传入的props来展示,不涉及到state状态的操作。组件不会被实例化,整体渲染性能得到提升…

反向代理模块开发

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…

高级java每日一道面试题-2024年12月02日-JVM篇-虚拟机为什么使用元空间替换了永久代?

如果有遗漏,评论区告诉我进行补充 面试官: 虚拟机为什么使用元空间替换了永久代? 我回答: 在Java高级面试中,关于虚拟机为何使用元空间替换了永久代的问题,可以从以下几个方面进行详解: 一、背景与概念 永久代(Permanent Ge…

Spring Boot整合EasyExcel

Spring Boot整合EasyExcel主要涉及到以下几个步骤: 1.添加EasyExcel依赖到Spring Boot项目的pom.xml文件中。 2.创建数据模型类,用于映射Excel文件中的数据。 3.编写读取和写入Excel的服务。 以下是一个简单的例子: 1.添加EasyExcel依赖 …

CAD 二次开发入门与实践:以 C# 为例

摘要: 本文详细介绍了如何使用 C# 进行 CAD 软件的二次开发。首先阐述了 CAD 二次开发的概念、意义与应用场景,接着深入探讨了开发环境的搭建,包括 CAD 相关 API 的引用与 C# 开发工具的配置。随后重点讲解了基于 C# 的 CAD 二次开发的核心技…

字节青训Marscode——8:找出整形数组中超过一半的数

问题描述 小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。 测试样例 样例1: 输入:array [1, 3, 8, 2, 3, 1, 3, 3, 3] 输出…