【C#】书籍信息的添加、修改、查询、删除
文章目录
- 一、简介
- 二、程序功能
- 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);}}
}
六、运行效果
- 添加书籍


-
修改书籍


-
删除书籍


相关文章:
【C#】书籍信息的添加、修改、查询、删除
文章目录 一、简介二、程序功能2.1 Book类属性:方法: 2.2 Program 类 三、方法:四、用户界面流程:五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看…...
Python 入门教程(2)搭建环境 | 2.4、VSCode配置Node.js运行环境
文章目录 一、VSCode配置Node.js运行环境1、软件安装2、安装Node.js插件3、配置VSCode4、创建并运行Node.js文件5、调试Node.js代码 一、VSCode配置Node.js运行环境 1、软件安装 安装下面的软件: 安装Node.js:Node.js官网 下载Node.js安装包。建议选择L…...
Spark常问面试题---项目总结
一、数据清洗,你都清洗什么?或者说 ETL 你是怎么做的? 我在这个项目主要清洗的式日志数据,日志数据传过来的json格式 去除掉无用的字段,过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据ÿ…...
【AI系统】Auto-Tuning 原理
Auto-Tuning 原理 在硬件平台驱动算子运行需要使用各种优化方式来提高性能,然而传统的手工编写算子库面临各种窘境,衍生出了自动生成高性能算子的的方式,称为自动调优。在本文我们首先分析传统算子库面临的挑战,之后介绍基于 TVM…...
AMEYA360:上海永铭电子全新高压牛角型铝电解电容IDC3系列,助力AI服务器电源高效运转
随着数据中心和云计算的高速发展,AI服务器的能效要求日益提高。如何在有限空间内实现更高的功率密度和稳定的电源管理,成为AI服务器电源设计的一大挑战。永铭推出全新高压牛角型铝电解电容IDC3系列,以大容量、小尺寸的创新特性,为…...
echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip
一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…...
什么是 Socket?
Socket(套接字)是计算机网络编程中的一个重要概念,它用于在不同计算机之间进行通信。Socket 提供了一种机制,使得应用程序可以通过网络发送和接收数据。Socket 通信通常基于 TCP/IP 协议,但也可以使用其他协议…...
【版本控制】SVN安装到使用一条路讲解
文章目录 安装使用 Subversion (SVN) 是一款集中式版本控制系统,广泛应用于团队协作和代码管理中。尽管随着 Git 的兴起,集中式版本控制逐渐被分布式工具取代,但 SVN 仍在许多企业项目中发挥着重要作用。它的简单、稳定和易用特性,…...
KVCKVO
KVC KVC意思是键值编码,是一种可以通过键名来访问对象属性的机制,也可以对属性进行赋值,包括私有属性,由于KVC的定义是对OC中的NSObject的扩展进行实现的,所以如果要使用KVC机制,那么这个类需要继承NSObje…...
PyQt设计界面优化 #qss #ui设计 #QMainWindow
思维导图 通过qss实现ui界面设计优化 Qss是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,它是用来美化UI界面。实现界面和程序的分离,快速切换界面。 首先我们在Pytchram创建一个新目录 然后将我们所需要的图片打…...
Qt Serial Bus 前置介绍篇
文章目录 Qt Serial Bus 简介前言 什么是 Qt Serial Bus?Qt Serial Bus 的核心功能支持的协议1. **CAN 总线**2. **Modbus**3. **自定义协议** 应用场景优势总结 Qt Serial Bus 简介 前言 Qt Serial Bus 是 Qt 框架中的一个模块,用于与工业设备和嵌入式…...
12.2深度学习_项目实战
十、项目实战 鲍勃开了自己的手机公司。他想与苹果、三星等大公司展开硬仗。 他不知道如何估算自己公司生产的手机的价格。在这个竞争激烈的手机市场,你不能简单地假设事情。为了解决这个问题,他收集了各个公司的手机销售数据。 鲍勃想找出手机的特性(例…...
LeetCode 64. 最小路径和(HOT100)
第一次错误代码: class Solution { public:int minPathSum(vector<vector<int>>& grid) {int dp[205][205] {0};int m grid.size(),n grid[0].size();for(int i 1 ;i<m;i){for(int j 1;j<n;j){dp[i][j] min(dp[i][j-1],dp[i-1][j])gr…...
ESP8266作为TCP客户端或者服务器使用
ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为服务端)_esp8266作为station-CSDN博客 ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266 为客户端)_esp8266 sta 连接tcp-CSDN博客…...
C#结合.NET框架快速构建和部署AI应用
在人工智能(AI)的浪潮中,C#作为一种功能强大且类型安全的编程语言,为AI工程开发提供了坚实的基础。C#结合.NET框架,使得开发者能够快速构建和部署AI应用。本文将通过一个简单的实例,展示如何使用C#进行AI工…...
题外话 (火影密令)
哥们! 玩火影不! 村里人全部评论! 不评论的忍战李全保底! 哥们! 密令领了不! “1219村里人集合”领了吗! 100金币! 哥们! 我粉丝没人能上影! 老舅说的…...
蓝桥杯准备训练(lesson1,c++方向)
前言 报名参加了蓝桥杯(c)方向的宝子们,今天我将与大家一起努力参赛,后序会与大家分享我的学习情况,我将从最基础的内容开始学习,带大家打好基础,在每节课后都会有练习题,刚开始的练…...
RTDETR融合[ECCV2024]WTConvNeXt中的WTConv模块及相关改进思路
RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Wavelet Convolutions for Large Receptive Fields》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2407.05848 代码链接:https://github.com/BGU-CS…...
AD7606使用方法
AD7606是一款8通道最高16位200ksps的AD采样芯片。5V单模拟电源供电,真双极性模拟输入可以选择10 V,5 V两种量程。支持串口与并口两种读取方式。 硬件连接方式: 配置引脚 引脚功能 详细说明 OS2 OS1 OS2 过采样率配置 000 1倍过采样率 …...
嵌入式系统应用-LVGL的应用-平衡球游戏 part1
平衡球游戏 part1 1 平衡球游戏的界面设计2 界面设计2.1 背景设计2.2 球的设计2.3 移动球的坐标2.4 用鼠标移动这个球2.5 增加边框规则2.6 效果图2.7 游戏失败重启游戏 3 为小球增加增加动画效果3.1 增加移动效果代码3.2 具体效果图片 平衡球游戏 part2 第二部分文章在这里 1 …...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
