用结构体书写图书管理系统(C#程序)

图书管理系统的需求:

用结构体来实现图书管理系统,需要在cmd中运行

用MonoDevelop或者VS进行编码

用结构体写图书管理系统,此代码可以在Monodevelop上或者在VS上运行

需要实现的第一个功能是能够进行图书的添加将图书的信息保存到一个数组中,数组的类型为结构体所命名的类型

第二个功能能够进行图书的删除

第三个功能能够进行图书的修改

第四个功能能够进行图书的查询

第五个功能能够进行图书系统的退出

代码如下:

using System;
using System.Threading;

namespace book_Manager
{
    struct Book
    {
        //公司变量名前面加一个m_

        /// <summary>
        /// 书的名字
        /// </summary>
        public string m_BookName;
        /// <summary>
        /// 书的作者
        /// </summary>
        public string m_BookAuthor;
        /// <summary>
        /// 书的价格
        /// </summary>
        public float m_Price;
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Book book1 = new Book ();

            book1.m_BookName="平凡的世界";
            book1.m_BookAuthor = "路遥";
            book1.m_Price = 10;
            Book book2;
            book2.m_BookName="射雕英雄传";
            book2.m_BookAuthor="金庸";
            book2.m_Price=23.5f;

            //数组的容量
            int m_Capacity=4;
            //数组所添加图书的个数
            int m_Count=0;

            Book[] m_Books = new Book[4];
            m_Books [0] = book1;
            m_Books [1] = book2;
            m_Count = 2;

            while (true)
            {
                Console.WriteLine ("**************************************************");
                Console.WriteLine ("*             欢迎进入图书管理系统               *");
                Console.WriteLine ("*A:添加  D:删除 C:修改 S:查看 Q:退出 P:全部显示  *");
                Console.WriteLine ("**************************************************");
                Console.Write ("请输入你要进行的选择(Q表示退出!):");
                string input = Console.ReadLine ();

                //把input字符串转换成大写  然后再赋值给input
                input=input.ToUpper();

                switch (input)
                {
                    //添加
                    case "A":
                        {
                            if (m_Count < m_Capacity)
                            {
                                //往数组里面加一本书
                                Book book;
                                Console.Write ("请输入要添加的图书的名字:");
                                string name = Console.ReadLine ();
                                Console.Write ("前输入要添加的图书的作者:");
                                string author = Console.ReadLine ();
                                Console.Write ("请输入要添加的图书的价格:");
                                float price = float.Parse (Console.ReadLine ());

                                book.m_BookName = name;
                                book.m_BookAuthor = author;
                                book.m_Price = price;

                                //进行其中的显示的清除
                                Console.Clear ();

                                m_Books [m_Count] = book;
                                m_Count++;
                            }
                            else
                            {
                                //需要把数组的容量变大
                                m_Capacity += 4;
                                //通过容量创建一个新的数组
                                Book[] temp = new Book[m_Capacity];
                                //把原有的数组里面的元素全部拷贝到新数组里面
                                for (int i = 0; i < m_Count; i++)
                                {
                                    temp [i] = m_Books [i];
                                }
                                //赋值以后原数组和新数组为用一个数组,都是新创建的那个数组
                                m_Books = temp;
                            }
                        }
                        break;
                    //删除
                    case "D":
                        {
                            Console.WriteLine ("E:按名称删除 R:按作者删除");
                            Console.Write ("请输入您的选择:");
                            string str = Console.ReadLine ();
                            switch (str)
                            {
                                case "E":
                                    //判断是否找到此书
                                    bool isFind = false;
                                    Console.Write ("请输入您要进行删除的图书的名字:");
                                    string strName = Console.ReadLine ();
                                    for (int i = 0; i < m_Count; i++) {
                                        if (m_Books[i].m_BookName==strName)
                                        {
                                            isFind = true;
                                        }
                                    }
                                    if (isFind)
                                    {
                                        Console.WriteLine ("删除成功!!!!!");
                                        m_Books [m_Count].m_BookName = "";
                                        m_Books [m_Count].m_BookAuthor = "";
                                        m_Books [m_Count].m_Price = 0;
                                        m_Count--;
                                    }
                                    else
                                    {
                                        Console.WriteLine ("删除失败!!!!!");
                                    }

                                    break;
                                case "R":
                                    //判断是否找到此书
                                    bool isFind1 = false;
                                    Console.Write ("请输入您要进行删除的图书的作者:");
                                    string strAuthor = Console.ReadLine ();
                                    for (int i = 0; i < m_Count; i++) {
                                        if (m_Books[i].m_BookAuthor==strAuthor)
                                        {
                                            isFind = true;
                                        }
                                    }
                                    if (isFind1)
                                    {
                                        Console.WriteLine ("删除成功!!!!!");
                                        m_Books [m_Count].m_BookName = "";
                                        m_Books [m_Count].m_BookAuthor = "";
                                        m_Books [m_Count].m_Price = 0;
                                        m_Count--;
                                    }
                                    else
                                    {
                                        Console.WriteLine ("删除失败!!!!!");
                                    }
                                    break;
                            }
                        }
                        break;
                    //修改
                    case "C":
                        {
                            int index = 0;
                            bool isFind = false;
                            Console.Write ("请输入要修改的书的名字:");
                            string strName = Console.ReadLine ();
                            for (int i = 0; i < m_Count; i++)
                            {
                                if (m_Books[i].m_BookName==strName)
                                {
                                    index = i;
                                    isFind = true;
                                }
                            }
                            if (isFind)
                            {
                                Console.WriteLine ("Y:修改图书名称 H:修改图书作者 G:修改图书价格");
                                Console.Write ("请输入您的选择:");
                                string str = Console.ReadLine ();
                                switch (str)
                                {
                                    case "Y":
                                        Console.Write ("请输入您要修改成的图书名称:");
                                        string strName1=Console.ReadLine();
                                        m_Books[index].m_BookName=strName1;
                                        Console.WriteLine ("修改成功!!!!!!");
                                        break;
                                    case "H":
                                        Console.Write ("请输入您要修改成的图书作者:");
                                        string strAuthor=Console.ReadLine();
                                        m_Books[index].m_BookAuthor=strAuthor;
                                        Console.WriteLine ("修改成功!!!!!!");
                                        break;
                                    case "G":
                                        Console.Write ("请输入您要修改成的图书名称:");
                                        int price=int.Parse(Console.ReadLine());
                                        m_Books[index].m_Price=price;
                                        Console.WriteLine ("修改成功!!!!!!");
                                        break;
                                }
                            }
                            else
                            {
                                Console.WriteLine ("没有此图书无法进行修改!!!!!");
                            }
                        }
                        break;
                    //查看
                    case "S":
                        {
                            Console.WriteLine ("N:按名称查找  Z:按作者查找");
                            Console.Write ("请输入您的选择:");
                            string str = Console.ReadLine ();
                            str = str.ToUpper ();
                            switch (str)
                            {
                                case "N":
                                    {
                                        Console.Write ("请输入要查找书的名称:");
                                        string strName = Console.ReadLine ();
                                        //判断是否找到此书
                                        bool isFind = false;
                                        //记录找到的书的下标
                                        int index = 0;
                                        for (int i = 0; i < m_Count; i++)
                                        {
                                            if (m_Books [i].m_BookName == strName)
                                            {
                                                isFind = true;
                                                index = i;
                                            }
                                        }
                                        if (isFind)
                                        {
                                            Console.WriteLine ("书的名字为:{0},书的作者为:{1},书的价格为:{2}",
                                                m_Books [index].m_BookName,
                                                m_Books [index].m_BookAuthor,
                                                m_Books [index].m_Price);
                                        }
                                        else
                                        {
                                            Console.WriteLine ("没有找到这本书!!!!!!");
                                        }
                                    }
                                    break;
                                case "Z":
                                    {
                                        Console.Write ("请输入要查找书的作者:");
                                        string strAuthor = Console.ReadLine ();
                                        //判断是否找到此书
                                        bool isFind = false;
                                        //记录找到的书的下标
                                        int index = 0;
                                        for (int i = 0; i < m_Count; i++)
                                        {
                                            if (m_Books [i].m_BookName == strAuthor)
                                            {
                                                isFind = true;
                                                index = i;
                                            }
                                        }
                                        if (isFind)
                                        {
                                            Console.WriteLine ("书的名字为:{0},书的作者为:{1},书的价格为:{2}",
                                                m_Books [index].m_BookName,
                                                m_Books [index].m_BookAuthor,
                                                m_Books [index].m_Price);
                                        }
                                        else
                                        {
                                            Console.WriteLine ("没有找到这本书!!!!!!");
                                        }
                                    }
                                    break;
                            }
                        }
                        break;
                    case "P":
                        for (int i = 0; i < m_Count; i++)
                        {
                            Console.WriteLine ("书的名字:{0},书的作者:{1},书的价格:{2}",
                                m_Books[i].m_BookName,
                                m_Books[i].m_BookAuthor,
                                m_Books[i].m_Price);
                        }
                        break;
                }
                if (input=="Q")
                {
                    break;
                }
            }
            Console.WriteLine ("退出程序成功!!!!!");
        }
    }
}

以上代码中应用了数组的扩容方法,随着数组的扩大数组的容量也应该跟着扩大,那样的话就需要首先将原数组的数据放到新数组中,然后赋值原数组等于新数组

//通过容量创建一个新的数组
Book[] temp = new Book[m_Capacity];
//把原有的数组里面的元素全部拷贝到新数组里面
for (int i = 0; i < m_Count; i++)
{
      temp [i] = m_Books [i];
}
//赋值以后原数组和新数组为用一个数组,都是新创建的那个数组
m_Books = temp;

明天分享用集合书写图书管理系统,有需求的可以在下方评论区写下自己的要做的cmd小程序的需求,大家可以一起分享一起讨论做???

原文地址:https://www.cnblogs.com/baosong/p/8467318.html

时间: 2024-10-11 12:09:19

用结构体书写图书管理系统(C#程序)的相关文章

集合书写图书管理系统(C#程序)

图书管理系统的需求: 用结构体来实现图书管理系统,需要在cmd中运行 用MonoDevelop或者VS进行编码 用结构体写图书管理系统,此代码可以在Monodevelop上或者在VS上运行 需要实现的第一个功能是能够进行图书的添加将图书的信息保存到一个数组中,数组的类型为结构体所命名的类型 第二个功能能够进行图书的删除 第三个功能能够进行图书的修改 第四个功能能够进行图书的查询 第五个功能能够进行图书系统的退出 以下是两种不一样的编程思想(一一遍吗列举了出来) 第一种: using System

Golang项目之结构体版学生管理系统

前言 学习第4天,基于结构体的方式对函数版本重构编写小项目:学生管理系统 代码 package main import ( "fmt" "os" ) // 菜单系统(将菜单系统封装到函数中) func showMenu(){ fmt.Println("欢迎光临学生管理系统") fmt.Println(` 1.查看所有学生 2.新增学生 3.删除学生 4.退出 `) } // 造一个存储学生数据的类型 type student struct{ id

C程序范例(3)——结构体

一.结构体类型定义. 结构体类型和数组类型一样,需要由程序员定义,必须限定以后使用. struct 类型标识符 { 类型名 成员名; 类型名 成员名; ... }; 其中,struct 是结构体类型定义的关键字,他与其后用户指定的类型标识符共同组成结构体类型名.例如学生结构体类型定义如下: struct st_type { char num[7]; char name[20]; char sex; int age; float score; char address[30]; }; 说明:(1)

【阅读笔记】《C程序员 从校园到职场》第七章 指针和结构体

原文地址:让你提前认识软件开发(13):指针及结构体的使用 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/23872995 [文章摘要] 指针在C语言中占有很重要的地位,同时也是学习C语言的难点所在.结构体属于用户自己建立的数据类型,在实际的软件开发项目中应用很广泛. 本文以实际的例子介绍了C语言中指针和结构体的使用方法,为进一步的学习和应用提供了有益的参考. [关键词] C语言 指针  结构体 文件 1.指针和结构

C++中结构体和类的区别

在C++中,结构体是一种特殊形态的类. 结构体和类的唯一区别就是:  结构体和类具有不同的默认访问控制属性. 类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public) C++中,不使用结构体丝毫不会影响程序的表达能力.C++之所以要引入结构体,是为了保持和C程序的兼容性. 但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据.(若用类来保存,因类中成

c语言中结构体指针

1.指向结构体的指针变量: C 语言中->是一个整体,它是用于指向结构体,假设我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到指向运算符"->". 举例说明: struct SunLL { int a; int b; int c; }; struct SunLL  * p;               //定义结构体指针 struct SunLL A = {1,2,3};    //定义一个SunLL类型的变量A

结构体变量的sizeof计算

结构体字节对齐准则: 1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除: 2. 结构体每个成员相对于结构体首地址的偏移量都是当前成员大小的整数倍,如有需要编译器会在成员之间加上填充字节: 3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节. 4. 在嵌套结构中需要把内部‘打散'后再进行对齐计算. // sizeof(结构体).cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #inc

《天天酷跑》游戏后台结构体标准化探 转

http://www.yxrb.net/thread-11839-1-1.html 在程序设计领域,程序就是数据结构加算法的理论早已深入人心.在手机游戏的后台系统中,数据结构就是各式各样的struct或class,遍布于数据存储(DB).内存(业务逻辑).网络(C/S交互协议),算法就是各种基于数据的业务处理逻辑了. 手机游戏后台数据结构有一些特点: 以整形数据为主,字符串类型比例很少,绝大部分数据可以用整形(直接或间接)表示. 相对大型端游,数据结构相对简单,绝大多数可以通过2-3层结构来抽象

程序设计基石与实践系列之失落的C语言结构体封装艺术

英文来源于 Eric S. Raymond-- The Lost Art of C Structure Packing 谁该阅读这篇文章 本文是关于削减C语言程序内存占用空间的一项技术--为了减小内存大小而手工重新封装C结构体声明.你需要C语言的基本知识来读懂本文. 如果你要为内存有限制的嵌入式系统.或者操作系统内核写代码,那么你需要懂这项技术.如果你在处理极大的应用程序数据集,以至于你的程序常常达到内存的界限时,这项技术是有帮助的.在任何你真的真的需要关注将高速缓存行未命中降到最低的应用程序里