Структурирование программы - C#
Формулировка задачи:
Здравствуйте, помогите пожалуйста, нормально структурировать программу, я не совсем понимаю, что должно находиться в классе Спортсменов, что в классе Программы. И еще возможно кто-то может помочь отсортировать эти объекты по переменной power, с помощью интерфейса IComparable, функция сортировки у меня есть, но преподаватель сказал, что должен быть реализован этот интерфейс. Заранее благодарю!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OOP_lab_1 { class Sportsmen : IComparable<Sportsmen>, ICloneable { public string name; public int age; public int energy; public int power; public string gender; public double height; public double weight; public string muscles; public Sportsmen(string name, int age, int energy, int power, string gender, double height, double weight, string muscles) { this.name = name; this.age = age; this.energy = energy; this.power = power; this.gender = gender; this.height = height; this.weight = weight; this.muscles = muscles; } public object Clone() { Sportsmen newsport = new Sportsmen(); newsport.name = this.name; newsport.age = this.age; newsport.energy = this.energy; newsport.power = this.power; newsport.gender = this.gender; newsport.height = this.height; newsport.weight = this.weight; newsport.muscles = this.muscles; return newsport; } public int CompareTo(Sportsmen other) { if (this.power > other.power) return 1; if (this.power < other.power) return -1; return 0; } public static bool operator ==(Sportsmen sp1, Sportsmen sp2) { if ((sp1.name == sp2.name) && (sp1.age == sp2.age) && (sp1.energy == sp2.energy) && (sp1.power == sp2.power) && (sp1.gender == sp2.gender) && (sp1.height == sp2.height) && (sp1.weight == sp2.weight) && (sp1.muscles == sp2.muscles)) return true; return false; } public static bool operator !=(Sportsmen sp1, Sportsmen sp2) { if ((sp1.name == sp2.name) && (sp1.age == sp2.age) && (sp1.energy == sp2.energy) && (sp1.power == sp2.power) && (sp1.gender == sp2.gender) && (sp1.height == sp2.height) && (sp1.weight == sp2.weight) && (sp1.muscles == sp2.muscles)) return true; return false; } public Sportsmen(){} } class Program { static void Main(string[] args) { Console.WriteLine("\t\t\t\t***Початок роботи програми***\n\n"); main_Menu(); } static void main_Menu() { Console.WriteLine("Виберiть дiю"); Console.WriteLine("1. Додати спортсмена"); Console.WriteLine("2. Вибрати спортсмена"); Console.WriteLine("3. Створити випадкових спотрсменiв"); Console.WriteLine("4. Вiдсортувати спотрсменiв"); Console.WriteLine("5. Додати спортсмена на i-ту позицiю"); Console.WriteLine("6. Порiвняти спортсменiв"); Console.WriteLine("7. Клонувати спортсмена"); Console.WriteLine("0. Вийти"); int choice = 1; int i = 1; int.TryParse(Console.ReadLine(), out choice); if (choice == 0) { Console.WriteLine("\t\t\t\t***Кiнець роботи програми***\n\n"); Console.ReadKey(); Environment.Exit(0); } switch (choice) { case 0: return; case 1: Console.Clear(); sportsmen.Add(AddSportsmen()); main_Menu(); break; case 2: Console.Clear(); Select(); main_Menu(); break; case 3: Console.Clear(); random_sport(); Console.Clear(); main_Menu(); break; case 4: Console.Clear(); Sort1(); Console.Clear(); main_Menu(); break; case 5: Console.Clear(); Number(); Console.Clear(); main_Menu(); break; case 6: Console.Clear(); Compare(); Console.Clear(); main_Menu(); break; case 7: Console.Clear(); Console.WriteLine("Введiть номер спортсмена, якого потрiбно клонувати: "); int.TryParse(Console.ReadLine(), out i); sportsmen.Add((Sportsmen)sportsmen[i - 1].Clone()); Console.Clear(); main_Menu(); break; } } public static List<Sportsmen> sportsmen = new List<Sportsmen>(); static void random_sport() { string[] array_m = { "Петя", "Вася", "Коля", "Iгор", "Антон", "Ярослав", }; string[] array_w = { "Таня", "Ipa", "Марiчка", "Настя", "Катя", "Надя" }; string[] mus = { "Руки", "Спина", "Ноги", "Плечi", "Груди", "Прес" }; Random rnd = new Random(); Console.WriteLine("Введiть кiлькiсть випадкових спортсменiв"); int num = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i < num; i++) { int rand = rnd.Next(0, 5); int stat = rnd.Next(1, 3); if (stat == 1) { string gender = "Чоловiк"; string name = array_m[rand]; string muscles = mus[rand]; int age = rnd.Next(16, 60); int energy = rnd.Next(1, 100); int power = rnd.Next(1, 100); double height = rnd.Next(160, 200); double weight = rnd.Next(55, 100); sportsmen.Add(new Sportsmen(name, age, energy, power, gender, height, weight, muscles)); } if (stat == 2) { string gender = "Жiнка"; string name = array_w[rand]; string muscles = mus[rand]; int age = rnd.Next(16, 60); int energy = rnd.Next(1, 100); int power = rnd.Next(1, 100); double height = rnd.Next(155, 190); double weight = rnd.Next(40, 90); sportsmen.Add(new Sportsmen(name, age, energy, power, gender, height, weight, muscles)); } } }
Решение задачи: «Структурирование программы»
textual
Листинг программы
static Sportsmen AddSportsmen() { Console.WriteLine("\t\t\t\t***Вiтаємо в спортзалi!***\n\nВведiть ваше iм'я:"); bool x = true; string name = Console.ReadLine(); Console.Clear(); Console.WriteLine("\nВведiть ваш вiк"); int age; while (!Int32.TryParse(Console.ReadLine(), out age) || x != false) { if (age < 16 || age > 60) { Console.Write("\nНеприпустимий вiк, повторiть спробу: "); } else { x = false; break; } } Console.Clear(); Console.WriteLine("\nВведiть кiлькiсть енергiї (вiд 1 до 100):"); int energy; x = true; while (!Int32.TryParse(Console.ReadLine(), out energy) || x != false) { if (energy < 0 || energy > 100) { Console.Write("\nНе коректне введення, повторiть спробу: "); } else { x = false; break; } } Console.Clear(); Console.WriteLine("\nВведiть рiвень сили (вiд 1 до 100):"); int power; x = true; while (!Int32.TryParse(Console.ReadLine(), out power) || x != false) { if (power < 0 || power > 100) { Console.Write("\nНекоректне введення, повторiть спробу: "); } else { x = false; break; } } Console.Clear(); Console.WriteLine("\nВведiть вашу стать: \n 1) Чоловiк \n 2) Жiнка"); string gender; int zaza = Convert.ToInt32(Console.ReadLine()); if (zaza == 1) { gender = "Чоловiк"; } else { gender = "Жiнка"; } Console.Clear(); Console.WriteLine("\nВведiть ваш зрiст:"); int height; x = true; while (!Int32.TryParse(Console.ReadLine(), out height) || x != false) { if (height < 160 || height > 200) { Console.Write("\nНекоректне введення , повторiть спробу: "); } else { x = false; break; } } Console.Clear(); Console.WriteLine("\nВведiть вашу вагу:"); int weight; x = true; while (!Int32.TryParse(Console.ReadLine(), out weight) || x != false) { if (weight < 40 || weight > 100) { Console.Write("\nНекоректне введення , повторiть спробу: "); } else { x = false; break; } } Console.Clear(); Console.WriteLine("\nЩо сьогоднi будете тренувати?"); Console.WriteLine(" 1) Прес\n 2) Груди \n 3) Плечi\n 4) Спину\n 5) Руки\n 6)Ноги\n"); string muscles = "sdf"; int n = Convert.ToInt32(Console.ReadLine()); switch (n) { case 1: muscles = "Прес"; break; case 2: muscles = "Груди"; break; case 3: muscles = "Плечi"; break; case 4: muscles = "Спина"; break; case 5: muscles = "Руки"; break; case 6: muscles = "Ноги"; break; } Console.Clear(); Console.Clear(); return new Sportsmen(name, age, energy, power, gender, height, weight, muscles); } static void all() { int i = 0; foreach (Sportsmen d in sportsmen) { Console.WriteLine(new string('*', 55)); Console.WriteLine("Iм'я: {0}\nВiк: {1}\nЕнергiя: {2}\nСила: {3}\nСтать: {4}\nЗрiст: {5}\nВага: {6}\nТренує: {7}\n", sportsmen[i].name, sportsmen[i].age, sportsmen[i].energy, sportsmen[i].power, sportsmen[i].gender, sportsmen[i].height, sportsmen[i].weight, sportsmen[i].muscles); Console.WriteLine(new string('*', 55)); i++; } Console.ReadKey(); Console.Clear(); main_Menu(); } static void Compare() { Console.WriteLine("Введiть номери студентiв, яких потрiбно порiвняти"); int x, y; int.TryParse(Console.ReadLine(), out x); int.TryParse(Console.ReadLine(), out y); int i = x - 1; int j = y - 1; if (sportsmen[i] == sportsmen[j]) Console.WriteLine("Спортсмени однаковi!"); else Console.WriteLine("Спортсмени рiзнi!"); Console.ReadKey(); } static void Number() { Console.WriteLine("Введіть порядковий номер спортсмена: "); int i = Convert.ToInt32(Console.ReadLine()); sportsmen.Insert(i - 1, AddSportsmen()); } static void Sort1() { Console.WriteLine("Натиснiть 1, щоб вiдсортувати спортсменiв за вiком "); Console.WriteLine("Натиснiть 2, щоб вiдсортувати спортсменiв за вагою "); Console.WriteLine("Натиснiть 3, щоб вiдсортувати спортсменiв за зростом "); Console.WriteLine("Натиснiть будь-яку клавiшу, щоб повернутись назад"); int choice = 1; while (choice != 0) { int.TryParse(Console.ReadLine(), out choice); switch (choice) { case 1: sportsmen.Sort(delegate (Sportsmen sp1, Sportsmen sp2) { return sp1.age.CompareTo(sp2.age); }); break; case 2: sportsmen.Sort(delegate (Sportsmen sp1, Sportsmen sp2) { return sp1.weight.CompareTo(sp2.weight); }); break; case 3: sportsmen.Sort(delegate (Sportsmen sp1, Sportsmen sp2) { return sp1.height.CompareTo(sp2.height); }); break; } } Console.Clear(); main_Menu(); } static void Select() { int sss = 0; int i = 1; int q; Console.WriteLine("Натиснiть 1 щоб переглянути список спортсменiв"); Console.WriteLine("Натиснiть 2 щоб вивести iнформацiю про всiх спортсменiв"); int.TryParse(Console.ReadLine(), out q); Console.Clear(); if (q == 1) { foreach (Sportsmen d in sportsmen) { Console.WriteLine("{0} {1}", i, d.name); i++; sss++; } if (sss != 0) { int choice; int.TryParse(Console.ReadLine(), out choice); Console.Clear(); Print(choice - 1); } } if (q == 2) { all(); { foreach (Sportsmen d in sportsmen) { i++; sss++; } if (sss != 0) { int choice; int.TryParse(Console.ReadLine(), out choice); Console.Clear(); Print(choice - 1); } } Console.ReadKey(); Console.Clear(); main_Menu(); } string klaviasha = "зайти"; while (klaviasha != "U") { Console.Clear(); Console.WriteLine("Введіть букву 'U' щоб повернутись в меню"); klaviasha = Console.ReadLine(); } Console.Clear(); main_Menu(); } static void Chempionat() { SortedList<Sportsmen, string> temps = new SortedList<Sportsmen, string>(); } static void Print(int i) { int choice = 1; while (choice != 0) { Console.WriteLine(new string('*', 55)); Console.WriteLine("Iм'я: {0}\nВiк: {1}\nЕнергiя: {2}\nСила: {3}\nСтать: {4}\nЗрiст: {5}\nВага: {6}\nТренує: {7}\n", sportsmen[i].name, sportsmen[i].age, sportsmen[i].energy, sportsmen[i].power, sportsmen[i].gender, sportsmen[i].height, sportsmen[i].weight, sportsmen[i].muscles); Console.WriteLine(new string('*', 55)); Console.WriteLine("Натиснiть 1, щоб видалити спортсмена"); Console.WriteLine("Натиснiть будь-яку клавiшу, щоб повернутись назад"); int.TryParse(Console.ReadLine(), out choice); switch (choice) { case 1: sportsmen.RemoveAt(i); break; } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д