C#面向对象实现图书管理系统

 更新时间:2022年02月21日 09:36:41   作者:894.000000  
这篇文章主要为大家详细介绍了C#面向对象实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C#面向对象实现图书管理系统的具体代码,供大家参考,具体内容如下

这个系统需要两个类:class Book,class BookManager
首先先进行对Book类成员的声明。

class Book
    {
        //数据
        string id;
        public string Id
        {
            get { return id; }
            set { id = value;}
        }
        //使用了lamda表达式, 跟上面的get/set等价
        public string Name { get => name; set => name = value; }

        string name;
        string author;
        float price;
        int page;
        public int Page { get; set; }
        public void print()
        {
            string str = string.Format("书名是{0},作者是{1},编号是{2},价格{3},页数{4}",
                name,author,id,price,page);
            Console.WriteLine(str);
        }
    }

BookManager类的声明

//数据成员
int size;//容器的大小
        public int curIndex;//当前存储的位置
        Book[] books; //定义一个Book类型的数组
         //函数成员
        public BookManager(int size)
        {
            curIndex = 0;
            this.size = size;
            //申请了一个容器,目前里面还没有值
            books = new Book[size];
        }

实现添加的方法

1、curIndex一开始的位置是[0],将b的内存地址存入数组中的第0位后,curIndex+1,这样的话下一次存储时会将数据存储到第1位。
2、判断数组的游标是否大于容器大小, 大于则要进行数组扩容

public void addBook(Book b)//传入Book的一个引用 b
        {
            books[curIndex] = b;//将b存入数组 
            curIndex++;
            if (curIndex>=size)//判断数组的游标是否大于容器大小, 大于则要进行数组扩容
            {
                size = size + size / 2;//将容器的大小扩容增加原来的一半
                Book[] booksNew = new Book[size];//定义一个新的Book类型数组 booksNew
                Array.Copy(books,booksNew, books.Length);//使用Copy函数将books数组里面的值赋值给booksNew,长度为books的长度 
                books = booksNew;
            }
        }

重写删除的文本,通过ID遍历

public bool delBook(string id)
        {
            int findCurIndex = 0;
            bool isFind = false;
            for (int i = 0; i < curIndex; i++)//通过遍历比较两个id
            {
                if (books[i].Id.Equals(id))
                {
                    findCurIndex = i;
                    isFind = true;
                    break;
                }
            }
            return false;
        }

查找书籍方法

public Book find(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return null;//返回空引用
            }
            for (int i = 0; i < curIndex; i++)//通过遍历比较两个id
            {
                if (books[i]!=null&&books[i].Id.Equals(id))
                {
                    return books[i];
                }
            }
            return null;
        }

显示所有书籍方法

public void showAllBook()
        {
            Console.WriteLine("所有的书籍信息如下");
            for (int i = 0; i < curIndex; i++)
            {
                books[i].print();
            }
        }

以上,书和管理器的类就写完了 接下来在主函数中运行测试:
 

using System;

namespace 图书管理系统
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("欢迎进入图书管理软件");
            int num = 1;
            BookManager manager = new BookManager(2);//容器(数据库)
            while (true)
            {
                Console.Clear();//清理控制台信息
                Console.WriteLine("1、录入书籍\n2、查找书籍\n3、删除书籍\n4、显示所有书籍\n按对应的数字进入该功能,按Q退出");
                string str = Console.ReadLine();
                num = int.Parse(str);
                switch (num)
                {
                    case 1://录入书籍
                        Console.WriteLine("已经进入录入书籍功能");
                        Console.Write("输入编号:");
                        string id = Console.ReadLine();
                        Console.Write("输入书名:");
                        string name = Console.ReadLine();
                        Console.Write("输入作者名字:");
                        string authName = Console.ReadLine();
                        Console.Write("输入书的价格:");
                        float price = float.Parse(Console.ReadLine());
                        Console.Write("输入书的页数:");
                        int page = int.Parse(Console.ReadLine());
                        Book book = new Book(authName, price);//通过构造函数生成对象,并且赋值
                        //通过属性对对象赋值
                        book.Id = id;
                        book.Name = name;
                        book.Page = page;
                        //把书存储到管理器中
                        manager.addBook(book);
                        break;
                    case 2://查找书籍
                        if (manager.curIndex == 0)
                        {
                            Console.Write("系统里一本书都没有!");
                            break;
                        }
                        id = Console.ReadLine();
                        Book curBook = manager.find(id);
                        if (curBook != null)
                        {
                            Console.WriteLine("找到了书,信息如下:");
                            curBook.print();
                        }
                        else
                        {
                            Console.WriteLine("没有找到书");
                        }
                        break;
                    case 3://删除书籍
                        Console.Write("输入要删除的书籍编号:");
                        id = Console.ReadLine();
                        Book _curBook = manager.find(id);
                        if (_curBook != null)
                        {
                            Console.WriteLine("已删除{0}这本书", _curBook.Name);
                            manager.delBook(_curBook.Id);
                        }
                        else
                        {
                            Console.WriteLine("没有找到书");
                        }
                        break;
                    case 4://显示所有书籍
                        if (manager.curIndex != 0)
                        {
                            manager.showAllBook();
                        }
                        else
                        {
                            Console.WriteLine("系统里一本书都没有!");
                        }
                        break;
                }
                if (str.ToLower().Contains('q'))
                {
                    break;
                }
                Console.ReadKey();
            }


        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#实现六大设计原则之接口隔离原则

    C#实现六大设计原则之接口隔离原则

    这篇文章介绍了C#实现六大设计原则之接口隔离原则的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例

    C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例

    这篇文章主要介绍了C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例,本文分别给出了示例代码,需要的朋友可以参考下
    2015-06-06
  • C#实现Modbus通信功能的示例详解

    C#实现Modbus通信功能的示例详解

    Modbus作为一种开放且广泛采用的通信协议,在实现设备间数据交换方面发挥着至关重要的作用,它不仅支持多种物理层接口(如RS-232, RS-485, 以及以太网),还因其简单易用的特点而被大家所青睐,本文通过实际示例介绍如何在C#项目中轻松实现Modbus通信功能
    2024-11-11
  • C# 读写ini文件操作实现

    C# 读写ini文件操作实现

    本文主要介绍了C# 读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • C#使用shell32获取文件属性的方法

    C#使用shell32获取文件属性的方法

    这篇文章主要介绍了C#使用shell32获取文件属性的方法,涉及C#通过shell32获取文件属性的相关技巧,需要的朋友可以参考下
    2015-04-04
  • c#对象初始化顺序实例分析

    c#对象初始化顺序实例分析

    这篇文章主要介绍了c#对象初始化顺序,实例分析了C#对象初始化的相关使用技巧与调用顺序,需要的朋友可以参考下
    2015-06-06
  • unity实现贴图矩阵运算(旋转平移缩放)

    unity实现贴图矩阵运算(旋转平移缩放)

    这篇文章主要为大家详细介绍了unity实现贴图矩阵运算,旋转平移缩放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C#实现泛型List分组输出元素的方法

    C#实现泛型List分组输出元素的方法

    这篇文章主要介绍了C#实现泛型List分组输出元素的方法,涉及C#针对List的遍历、排序、输出等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • WPF中Binding字符串格式化技巧分享

    WPF中Binding字符串格式化技巧分享

    在 WPF 开发中,数据绑定(Binding)是一项核心功能,它允许 UI 元素与数据源紧密关联,下面我们就来深入了解下Binding字符串格式化的技巧吧
    2024-10-10
  • 基于C#实现将图片转换为PDF文档

    基于C#实现将图片转换为PDF文档

    将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下
    2024-12-12

最新评论