Надо сделать программу по классам с консольным меню(Документ,счёт,накладная,квитанция)

Class1

namespace Lab.Mas._1.MV
{
    public class Document
    {
        protected static string vid;
        protected static string peredacha;
        protected static string pechat;
        protected static int data;
        protected static string lic_Chtet; //Лицевой счёт

        public string Vid // Вид документа
        {
            get { return vid; }
            set { vid = value; }
        }
        public string Peredacha // Способ передачи
        {
            get { return peredacha; }
            set { peredacha = value; }
        }

        public string Pechat // Печать
        {
            get { return pechat; }
            set { pechat = value; }
        }
        public int Data // Дата создания документа
        {
            get { return data; }
            set { data = value; }
        }
        public string Lic_Chtet
        {
            get { return lic_Chtet; }
            set { lic_Chtet = value; }
        }
        public string GetVid() { return vid; }
        public string GetPeredacha() { return peredacha; }
        public string GetPechat() { return pechat; }
        public int GetData() { return data; }

        public string GetLic_Chtet() { return lic_Chtet; }



        public void SetDocument(string vid, string peredacha, string pechat, string data)
        {

        }



        public object GetAdres_platelhika()
        {

        }
    }

    public class Score : Document
    {
        protected string type = "Счёт";
        protected string adres_platelhika;
        protected string symma_k_oplate;
        protected string rekvisit_prodavca;// Реквизиты продавца

        public string Adres_platelhika
        { 
            get { return adres_platelhika; }
            set { adres_platelhika = value; }
        }
        public string Symma_k_oplate 
        {
            get { return symma_k_oplate; }
            set { symma_k_oplate = value; }
        }
        public string Rekvisit_prodavca 
        {
            get { return rekvisit_prodavca; }
            set { rekvisit_prodavca = value; }
        }

        public string GetSymma_k_oplate() { return symma_k_oplate; }
        public string GetRekvisit_prodavca() { return rekvisit_prodavca; }

        public void SetScore(string _adres_platelhika,string _vid, string _peredacha, string _pechat, int _data, string _symma_k_oplate, string _rekvisit_prodavca)
        {

            vid = _vid;
            peredacha = _peredacha;
            pechat = _pechat;
            data = _data;
            symma_k_oplate = _symma_k_oplate;
            rekvisit_prodavca = _rekvisit_prodavca;
            adres_platelhika = _adres_platelhika;

        }

        public void SetScore(string vid, string peredacha, string pechat, string data, string adres_platelhika, string symma_k_oplate, string rekvisit_prodavca)
        {
            throw new NotImplementedException();
        }
    }

    public class Receipt : Document
    {
        protected string type = "Квитанция";
        protected string inn_platelhika;//Инн плательщика
        protected string symma_k_oplate;
        protected string rekvisit_prodavca;
        protected string adres_platelhika;

        public string Inn_platelhika // Год основания
        {
            get { return inn_platelhika; }
            set { inn_platelhika = value; }
        }

        public string GetInn_platelhika() { return inn_platelhika; }

        public void SetReceipt(string _adres_platelhika, string _vid, string _peredacha, string _pechat, int _data, string _symma_k_oplate, string _rekvisit_prodavca,string _inn_platelhika)
        {
            vid = _vid;
            peredacha = _peredacha;
            pechat = _pechat;
            data = _data;
            symma_k_oplate = _symma_k_oplate;
            rekvisit_prodavca = _rekvisit_prodavca;
            adres_platelhika = _adres_platelhika;
            inn_platelhika = _inn_platelhika;


        }
    }
    public class Invoice : Document
    {
        protected string type = "Накладная";
        public string naimen;//Наименование
        public int kolichestvo;//Количество
        protected string symma_k_oplate;
        protected string rekvisit_prodavca;
        protected string adres_platelhika;
        protected string inn_platelhika;

        public string Naimen // Наименование
        {
            get { return naimen; }
            set { naimen = value; }
        }
        public int Kolichestvo // Количество
        {
            get { return kolichestvo; }
            set { kolichestvo = value; }
        }
        public void SetInvoice(string _adres_platelhika, string _vid, string _peredacha, string _pechat, int _data, string _symma_k_oplate, string _rekvisit_prodavca, string _inn_platelhika, int _kolichestvo)
        {
            vid = _vid;
            peredacha = _peredacha;
            pechat = _pechat;
            data = _data;
            symma_k_oplate = _symma_k_oplate;
            rekvisit_prodavca = _rekvisit_prodavca;
            adres_platelhika = _adres_platelhika;
            inn_platelhika = _inn_platelhika;
            kolichestvo = _kolichestvo;

        }
        public string GetNaimen() { return naimen; }
        public int GetKolichestvo() { return kolichestvo; }

        public void SetInvoice()
        {
            throw new NotImplementedException();
        }

        public void SetInvoice(string kolichestvo, string naimen, string vid, string peredacha, string pechat, string data, string adres_platelhika, string symma_k_oplate, string rekvisit_prodavca)
        {
            throw new NotImplementedException();
        }

        public object GetSymma_k_oplate()
        {
            throw new NotImplementedException();
        }

        public object GetRekvisit_prodavca()
        {
            throw new NotImplementedException();
        }
    }
}

using System;
using Lab.Mas._1.MV;
namespace MainClass
{
    public class Programm
    {
        static int EnterInt(string a)
        {
            bool intResultTryParse = int.TryParse(a, out int b);
            do
            {
                if (intResultTryParse == false)
                {
                    Console.Write("\n Введите число: ");
                    a = Console.ReadLine();
                    intResultTryParse = int.TryParse(a, out b);

                }
            } while (intResultTryParse == false);
            return b;
        }
        static float EnterFloat(string a)
        {
            bool intResultTryParse = float.TryParse(a, out float b);
            do
            {
                if (intResultTryParse == false)
                {
                    Console.Write("\n Введите число: ");
                    a = Console.ReadLine();
                    intResultTryParse = float.TryParse(a, out b);

                }
            } while (intResultTryParse == false);
            return b;
        }
        static void Main()
        {
            while (true)
            {
                Console.WriteLine("____________________Меню:____________________\n" +
                                  "- 1. Документ                               -\n" +
                                  "- 2. Выход                                  -\n" +
                                  "-___________________________________________-");
                string menu = Console.ReadLine();
                if (int.TryParse(menu, out int _menu))
                {
                    if (_menu < 0 || _menu > 2) { Console.WriteLine("Введите корректное значение!"); break; }
                    switch (_menu)
                    {
                        case 1:
                            Console.WriteLine("-__________Добавление нового места__________-\n" +
                                              "- 1. Счёт                                   -\n" +
                                              "- 2. Квитанция                              -\n" +
                                              "- 3. Накладная                              -\n" +
                                              "- 4. Назад                                  -\n" +
                                              "-___________________________________________-\n");
                            string menu_2 = Console.ReadLine();
                            if (int.TryParse(menu_2, out int _menu_2))
                            {
                                if (_menu < 0 || _menu > 4) { Console.WriteLine("Введите корректное значение!"); break; }
                                switch (_menu_2)
                                {
                                    case 1:
                                               string vid = "",
                                               peredacha = "",
                                               pechat = "",
                                               data = "";


                                        Console.Write("\n  Вид документа: ");
                                        vid = Console.ReadLine();

                                        Console.Write("\n Каким способом документ предоставиться адресату: ");
                                        peredacha = Console.ReadLine();

                                        Console.Write("\n  Есть ли печать на документе?:  ");
                                        pechat = Console.ReadLine();

                                        Console.Write("\n Дата на документе ");
                                        data = Console.ReadLine();
                                        int _data = EnterInt(data);

                                        Document obj1 = new Document();
                                        obj1.SetDocument(vid , peredacha , pechat , data);

                                        Console.WriteLine($"\nВид: {obj1.GetVid()}" +
                                                          $"\nПередача: {obj1.GetPeredacha()}" +
                                                          $"\nПечать: {obj1.GetPechat()}" +
                                                          $"\nДата: {obj1.GetData()}\n\n");

                                        break;

                                    case 2:
                                           vid = "";
                                           peredacha = "";
                                           pechat = "";
                                           data = "";

                                    string adres_platelhika = "",
                                           symma_k_oplate = "",
                                           rekvisit_prodavca = "";

                                        Console.Write("\n  Вид документа: ");
                                        vid = Console.ReadLine();

                                        Console.Write("\n Каким способом документ предоставиться адресату: ");
                                        peredacha = Console.ReadLine();

                                        Console.Write("\n  Есть ли печать на документе?:  ");
                                        pechat = Console.ReadLine();

                                        Console.Write("\n Дата на документе ");
                                        data = Console.ReadLine();
                                        int data1 = EnterInt(data);

                                        Console.Write("\n Адрес плательщика");
                                        adres_platelhika = Console.ReadLine();

                                        Console.Write("\n Cумма к оплате");
                                        symma_k_oplate = Console.ReadLine();
                                        int _symma_k_oplate = EnterInt(symma_k_oplate);

                                        Console.Write("\n Реквизиты продавца");
                                        rekvisit_prodavca = Console.ReadLine();

                                        Score obj2 = new Score();
                                        obj2.SetScore(vid, peredacha, pechat, data, adres_platelhika, symma_k_oplate, rekvisit_prodavca);


                                        Console.WriteLine($"\nВид: {obj2.GetVid()}" +
                                                          $"\nПередача: {obj2.GetPeredacha()}" +
                                                          $"\nПечать: {obj2.GetPechat()}" +
                                                          $"\nДата: {obj2.GetData()}" +
                                                          $"\nАдрес плательщика:{obj2.GetAdres_platelhika()}"+
                                                          $"\nСумма к оплате:{obj2.GetSymma_k_oplate()}"+
                                                          $"\nРеквизиты продавца:{obj2.GetRekvisit_prodavca()}\n\n");
                                        break;

                                    case 3:
                                        string kolichestvo = "",
                                        naimen = "",
                                        vid2 = "",
                                        peredacha2 = "",
                                        pechat2 = "",

                                        data2 = "",

                                        adres_platelhika2 = "",
                                        symma_k_oplate2 = "",
                                        rekvisit_prodavca2= "";

                                        Console.Write("\n Наименование накладной: ");
                                        naimen = Console.ReadLine();

                                        Console.Write("\n Количество товара: ");
                                        kolichestvo = Console.ReadLine();
                                        int _kolichestvo = EnterInt(kolichestvo);

                                        Console.Write("\n  Вид документа: ");
                                        vid = Console.ReadLine();

                                        Console.Write("\n Каким способом документ предоставиться адресату: ");
                                        peredacha = Console.ReadLine();

                                        Console.Write("\n  Есть ли печать на документе?:  ");
                                        pechat = Console.ReadLine();

                                        Console.Write("\n Дата на документе ");
                                        data = Console.ReadLine();
                                        int data3 = EnterInt(data);

                                        Console.Write("\n Адрес плательщика");
                                        adres_platelhika = Console.ReadLine();

                                        Console.Write("\n Cумма к оплате");
                                        symma_k_oplate = Console.ReadLine();
                                        int _symma_k_oplate2 = EnterInt(symma_k_oplate);

                                        Console.Write("\n Реквизиты продавца");
                                        rekvisit_prodavca = Console.ReadLine();

                                        Invoice obj3 = new Invoice();
                                        obj3.SetInvoice(kolichestvo,naimen, vid, peredacha, pechat, data, adres_platelhika, symma_k_oplate, rekvisit_prodavca);

                                        Console.WriteLine($"\nВид: {obj3.GetVid()}" +
                                                          $"\nПередача: {obj3.GetPeredacha()}" +
                                                          $"\nПечать: {obj3.GetPechat()}" +
                                                          $"\nДата: {obj3.GetData()}" +
                                                          $"\nАдрес плательщика:{obj3.GetAdres_platelhika()}" +
                                                          $"\nСумма к оплате:{obj3.GetSymma_k_oplate()}" +
                                                          $"\nРеквизиты продавца:{obj3.GetRekvisit_prodavca()}\n\n");

                                        break;
                                    case 4:
                                        break;
                                }

                            }
                            else
                            {
                                Console.WriteLine("Введенная строка не является числом.");
                                break;
                            }

                            break;
                        case 2:
                            Environment.Exit(0);
                            break;
                    }
                }
                else
                {
                    Console.WriteLine("Введенная строка не является числом.");
                    break;
                }
            }
        }
    }
}

Ответы (1 шт):

Автор решения: Bulson

Работу кода я не проверял. На первый быстрый взгляд ваши "косяки" следующие:

1) Мешанина транслита в названиях свойств и методов c англ.названиями классов. Боже, есть же Яндекс.Переводчик или Google.Translate! Почему нельзя потратить 10 сек. и перевести на анг.язык нужный термин?

2) Зачем вы используете полный формат свойств с приватными полями когда вы все равно не работаете с ними. Есть же короткий public string Pechat {get; set;}. Используйте сниппеты. Набираете prop затем дважды нажимаете клавишу Tab и заготовка для свойства готова.

3) Вы пытаетесь "поиграть" в классы, типа даже есть наследование. А вот отделять визуальный интерфейс от бизнес логики почему-то не стали. Этот ужасный, громоздкий метод static void Main() можно же было превратить в вызовы необходимых методов из классов вывода информации в консоль, и получения данных от пользователя. Зачем все это лепить в одном методе?

4) Зачем так делать Invoice obj3 = new Invoice();? Почему тупое ничего не значащее названиеobj3, а не invoice? Ради экономии 2 сек.? Или пальцы сильно устают?

→ Ссылка