Обычную переменную заменить массивом или списком и реализовать события - C#
Формулировка задачи:
Есть программа, в ней кроме самого тела Main имеется 2 класа:
1) нужно сделать так, чтобы из обычной перменной сделать перечислимый объект, можно сделать любым способом, на массиве, на листе или на индексаторе, последний никогда не пробовал использовать. У меня что-то не получилось, не знаю что не так, Name надо сделать несколько шт, там закоментировано, переменная для индекса NameID;
2) в методах, если условие не выполняется вместо ...else Console.WriteLine(%blabla%); реализовать события, дабы весь вывод на экран сплавиь в отдельный класс;
До кучи нужен аналог С++ fflush(stdin); (очистка потока ввода)
Program.cs
Account.cs
Bank.cs
using System; using System.Collections.Generic; namespace VP2_13a { class Program { static public Int32 NameID = 0, AccID = -1; // ID банка, внутренний ID массива static public Bank Name = new Bank(); //static public Bank[] Name = new Bank[1]; //static public List<Bank> Name = new List<Bank>(); static void Main(string[] args) { UInt32? ID; String Familiaq; Decimal? Nomer; float? Procqent; Decimal? Summa; Account[] L = new Account[0]; Account H; String Str; bool f; Decimal Num; Name.Kurs = (Decimal?)99.00; Array.Resize(ref L, 11); L[0] = new Account(2, "Пупкин", (Decimal)782389, (float)15.7, (Decimal)123.65); L[1] = new Account(3, "Иванов", (Decimal)345564, (float)15.0, (Decimal)542.43); L[2] = new Account(4, "Петров", (Decimal)235463, (float)14.8, (Decimal)557.83); L[3] = new Account(7, "Сидоров", (Decimal)436789, (float)16.0, (Decimal)865.59); L[4] = new Account(8, "Петечкин", (Decimal)238747, (float)15.7, (Decimal)684.64); L[5] = new Account(9, "Калачёв", (Decimal)771281, (float)3.5, (Decimal)330.42); L[6] = new Account(11, "Грибов", (Decimal)442164, (float)19.6, (Decimal)125.74); L[7] = new Account(12, "Елизаров", (Decimal)388225, (float)13.5, (Decimal)238.00); L[8] = new Account(15, "Звягинцев", (Decimal)730080, (float)15.4, (Decimal)849.11); L[9] = new Account(20, "Корольков", (Decimal)355698, (float)16.5, (Decimal)201.87); L[10] = new Account(21, "Федосов", (Decimal)990711, (float)8.4, (Decimal)943.11); // сохраняем мссив в лист и обновляем число элементов в нём Name.Acc.AddRange(L); AccID = Name.Acc.Count - 1; // добавление новой записи H = L[0]; ID = 1; Familiaq = "Тыдыщь"; Nomer = (Decimal)149489; Procqent = (float)6.5; Summa = (Decimal)619.83; H.set(ID, Familiaq, Nomer, Procqent, Summa); // сохраняем новую запись в лист if (H.ID != 0) Name.Acc.Add(H); // редактирование записи AccID = Name.Acc.Count - 1; Familiaq = "Бдыщь"; Procqent = (float)6.6; Name.Acc[AccID].Vary(ID, Familiaq, Nomer, Procqent, Summa); Console.WriteLine("Вывод всех вкладчиков на экран: \n"); foreach (Account Vkl in Name.Acc) Vkl.get(); Console.WriteLine("Всего вкладчиков: {0} шт \n", Name.Acc.Count); while (true) { // вывод на экран Console.Write("Введите имеющийся ID для показа: "); Str = Console.ReadLine(); if (Str.Length > 0) f = Int32.TryParse(Str, out AccID); else { AccID = -1; continue; } AccID = (f ? Name.FindID(AccID) : -1); if (AccID > 0) break; } Name.Acc[AccID].get(); // получаем данные акка Name.Acc[AccID].Read(out ID, out Familiaq, out Nomer, out Procqent, out Summa); while (true) { // смена владельца Console.Write("Введите новую фамилию владельца ID #{0} счёта №{1}: ", ID, Nomer); Familiaq = Console.ReadLine(); if (Familiaq.Length == 0) continue; else break; } Name.UstanovitxVladelxcqa(ID, Familiaq, Nomer); Name.Acc[AccID].get(); while (true) { // снять деньги Console.Write("Введите снимаемую сумму с ID #{0} счёта №{1}: ", ID, Nomer); Str = Console.ReadLine(); if (Str.Length > 0) f = Decimal.TryParse(Str, out Num); else continue; if (f) break; } Name.SnaqtxDenxgi(Nomer, Num); Name.Acc[AccID].get(); while (true) { // положить деньги Console.Write("Введите вкладываемую сумму в ID #{0} счёт №{1}: ", ID, Nomer); Str = Console.ReadLine(); if (Str.Length > 0) f = Decimal.TryParse(Str, out Num); else continue; if (f) break; } Name.PologqitxDenxgi(Nomer, Num); Name.Acc[AccID].get(); // начислеие процентов Console.WriteLine("Начисление процентов на ID #{0} счёте №{1}: ", ID, Nomer); Name.NacislenieProcqentov(Nomer, Procqent); Name.Acc[AccID].get(); // сумма в долларах Console.WriteLine("Вывод суммы в долларах на ID #{0} счёте №{1}: ", ID, Nomer); Name.Dollar(Name.Kurs); Console.WriteLine("Нажмите любую клавишу..."); Console.ReadKey(); } } }
using System; namespace VP2_13a { class Account { public UInt32? ID { set; get; } public String Familiaq { set; get; } public Decimal? Nomer { set; get; } public float? Procqent { set; get; } public Decimal? Summa { set; get; } public Account(UInt32? _ID, String _Familiaq, Decimal? _Nomer, float? _Procqent, Decimal? _Summa) { this.ID = _ID; this.Familiaq = _Familiaq; this.Nomer = _Nomer; this.Procqent = _Procqent; this.Summa = _Summa; } public void set(UInt32? ID, String Familiaq, Decimal? Nomer, float? Procqent, Decimal? Summa) { if (Familiaq != "" && Nomer != null && Procqent != null && Summa != null) { if (ID >= Program.Name.Acc[Program.Name.Acc.Count - 1].ID) this.ID = (UInt32?)Program.Name.Acc.Count; else if (Program.AccID > 0 && Program.AccID < Program.Name.Acc.Count - 1 && ID > Program.Name.Acc[Program.AccID - 1].ID && ID < Program.Name.Acc[Program.AccID + 1].ID) this.ID = ID; else if (Program.AccID == 0 && ID < Program.Name.Acc[Program.AccID + 1].ID) this.ID = ID; else if (Program.AccID == Program.Name.Acc.Count - 1 && ID > Program.Name.Acc[Program.AccID - 1].ID) this.ID = ID; this.Familiaq = Familiaq; this.Nomer = Nomer; this.Procqent = Procqent; this.Summa = Summa; } else Console.WriteLine("Пустые поля не допускаютя. Изменения не внесены."); } public void get() { Console.WriteLine("ID: {0} \nFamiliaq: {1} \nNomer: {2} \nProcqent: {3} \nSumma: {4} \n", this.ID, this.Familiaq, this.Nomer, this.Procqent, this.Summa); } public void Vary(UInt32? ID, String Familiaq, Decimal? Nomer, float? Procqent, Decimal? Summa) { if (this.ID != null || this.Familiaq != "" || this.Nomer != null || this.Procqent != null || this.Summa != null) { if (ID != null) this.ID = ID; if (Familiaq != "") this.Familiaq = Familiaq; if (Nomer != null) this.Nomer = (Decimal)Nomer; if (Procqent != null) this.Procqent = (float)Procqent; if (Summa != null) this.Summa = (Decimal)Summa; } else Console.WriteLine("Нельзя изменить пустую карточку, необходимо использовать метод Set. \n"); } public void Read(out UInt32? ID, out String Familiaq, out Decimal? Nomer, out float? Procqent, out Decimal? Summa) { ID = this.ID; Familiaq = this.Familiaq; Nomer = this.Nomer; Procqent = this.Procqent; Summa = this.Summa; } } }
using System; using System.Collections.Generic; namespace VP2_13a { class Bank { public List<Account> Acc = new List<Account>(); /**/ public Decimal? Kurs; /** public Decimal? Kurs { set; get; } public Bank() { } public Bank(Decimal? _Kurs) { this.Kurs = _Kurs; } public void set(Decimal? Kurs) { this.Kurs = Kurs; } public void get(out Decimal? Kurs) { Kurs = this.Kurs; } public Decimal? get() { return this.Kurs; } /**/ public Int32 FindID(Int32 enID) { Int32 Lpos, Rpos, min, max, fnd, j = Acc.Count - 1; max = Convert.ToInt32(Acc[j].ID); if (enID > 0 && enID <= max) { Rpos = (enID <= j ? enID - 1 : j); max = (Int32)Acc[Rpos].ID; Lpos = Rpos + enID - max; if (Lpos < 0) Lpos = 0; min = (Int32)Acc[Lpos].ID; while (enID >= min && Rpos - Lpos > 1) { j = Convert.ToInt32(Convert.ToUInt32(Lpos + Rpos) >> 1); fnd = (Int32)Acc[j].ID; if (fnd > enID) { Rpos = j; max = fnd; } else { Lpos = j; min = fnd; } } if (Acc[Lpos].ID != enID) Lpos = -1; if (Acc[Rpos].ID == enID) { Lpos = Rpos; Console.WriteLine(""); } } else Lpos = -1; return Lpos; } public void UstanovitxVladelxcqa(UInt32? ID, String Familiaq, Decimal? Nomer) { if (Familiaq != "" && Acc[Program.AccID].Nomer == Nomer) Acc[Program.AccID].Familiaq = Familiaq; else Console.WriteLine("Фамилия не можжет быть пустой. Изменения не произведены. \n"); } public void SnaqtxDenxgi(Decimal? Nomer, Decimal? Summa) { if (Acc[Program.AccID].Nomer == Nomer && Summa != null && Summa > 0 && Acc[Program.AccID].Summa > 0 && Acc[Program.AccID].Summa >= Summa) Acc[Program.AccID].Summa -= Summa; else { if (Summa < 0) Console.WriteLine("Сумма снятия должна быть болше нуля. \n"); if (Summa == 0 || Summa == null) Console.WriteLine("Укажите желаемую суумму для снятия. \n"); else Console.WriteLine("Недостаточно средств. На счёте имеется только: {0} \n", Acc[Program.AccID].Summa); } } public void PologqitxDenxgi(Decimal? Nomer, Decimal? Summa) { if (Summa != null && Summa > 0) Acc[Program.AccID].Summa += Summa; else { if (Summa < 0) Console.WriteLine("Сумма вклада должна быть болше нуля. \n"); else Console.WriteLine("Укажите желаемую суумму для вклада. \n"); } } public void NacislenieProcqentov(Decimal? Nomer, float? Procqent) { if (Acc[Program.AccID].Nomer == Nomer && Procqent != null && Procqent > 0) Acc[Program.AccID].Summa *= (Decimal)(1.0 + Procqent / 100.0); else if (Procqent == null) Console.WriteLine("Укажите процентную ставку. \n"); } public void Dollar(Decimal? Kurs) { if (Kurs != null && Kurs > 0) Console.WriteLine("Сумма на счету в долларах составляет: {0} \n", Acc[Program.AccID].Summa / Kurs); else Console.WriteLine("Курс не задан или задан неверно. \n"); } } }
Решение задачи: «Обычную переменную заменить массивом или списком и реализовать события»
textual
Листинг программы
... else throw new Exception("Пустые поля не допускаютcя.")
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д