【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 …...
AI代理运行时基础设施:从上下文溢出到持久化事件日志
1. 这不是新赛道,是 runtime 层的“操作系统时刻”来了你有没有在深夜调试一个跑了三小时的 AI 代理,突然发现它开始胡言乱语?不是模型崩了,不是 prompt 写错了,而是——它的“记忆”被挤掉了。上下文窗口就那么大&…...
案发现场时空回溯:UWB无法全域留痕,无感定位全链路可复盘
案发现场时空回溯:UWB无法全域留痕,无感定位全链路可复盘镜像视界浙江科技有限公司,作为数字孪生、视频孪生领域底层原创技术核心供给方,依托国家十四五重点课题专项研究、镜像视界浙江普陀时空大数据应用技术联合研究院深度产学研…...
潜变量扩散模型原理解析:从宝可梦生成看LDM工程落地
1. 项目概述:用宝可梦讲清楚潜变量扩散模型,不是比喻游戏,是真能跑通的原理复现你有没有试过让AI画一只“皮卡丘和喷火龙杂交出来的电火属性神兽”?不是简单拼贴,而是真正理解“电系的毛发质感火系的鳞片过渡神兽级别的…...
Unity XLua调试失败原因与sourceMapPathOverrides终极配置
1. 这不是“配个插件就能跑”的事:为什么90%的UnityXLua调试配置会卡在“找不到源码”上EmmyLua VSCode 调试 XLua,这个组合在Unity Lua热更项目里几乎是事实标准。但你有没有遇到过这样的场景:断点明明打在Lua文件里,VSCode也显…...
从披萨到知识图谱:避开OWL本体建模的3个新手常见坑(Protege避坑指南)
从披萨到知识图谱:避开OWL本体建模的3个新手常见坑(Protege避坑指南) 本体建模是构建知识图谱的核心环节,而OWL(Web Ontology Language)作为W3C推荐的标准本体描述语言,在语义网和知识工程领域扮…...
2026年,探寻靠谱体育器材的终极指南
在追求健康与活力的时代,体育器材成为了我们运动生活中的重要伙伴。但面对市场上琳琅满目的品牌和产品,如何选择靠谱的体育器材成为了许多人的难题。今天,让我们一同探寻 2026 年靠谱体育器材的终极指南。一、品质与口碑沧州九牌体育用品制造…...
Poppler Windows版:终极PDF处理方案,3分钟零配置部署指南
Poppler Windows版:终极PDF处理方案,3分钟零配置部署指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows上复…...
3步快速搭建微信小程序商城:巴爷商城开源项目实战指南
3步快速搭建微信小程序商城:巴爷商城开源项目实战指南 【免费下载链接】wechat_mall_applet A real mall wechat applet 项目地址: https://gitcode.com/gh_mirrors/we/wechat_mall_applet 还在为开发微信小程序商城而烦恼吗?🤔 今天我…...
手写前馈神经网络:从矩阵乘法到梯度下降的硬核实践
1. 这不是“AI科普”,而是一次亲手拆解前馈神经网络的硬核实践你有没有在某个深夜刷到“三分钟看懂神经网络”的短视频,点进去后发现全是齿轮转动、水流奔涌、大脑发光的动画,配上一句“信息像快递一样层层传递”?我试过——看完更…...
别再瞎写抽奖了!从原神保底到洗牌算法,5种实战模型帮你搞定游戏概率设计
游戏抽奖系统设计实战:从概率模型到商业落地的5种解决方案 当玩家在《原神》中第89次抽卡仍未获得五星角色时,心跳加速的瞬间背后是精密的数学计算与商业逻辑的完美结合。抽奖系统作为现代游戏的核心付费点,其设计质量直接影响玩家留存、付费…...
