Структурирование программы - 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;
                    }
                }
            }
 
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы