Надо сделать программу по классам с консольным меню(Документ,счёт,накладная,квитанция)
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 шт):
Работу кода я не проверял. На первый быстрый взгляд ваши "косяки" следующие:
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 сек.? Или пальцы сильно устают?