Реализация меню в консоли - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста разобраться с программой. У меня не получается реализация пунктов меню. Вот код функции main:
  public static void main(string[] args)
            {
                int p;          
                Console.Title = "Array";
                do
                {
                Console.WriteLine("Menu:");
                Console.WriteLine();
                Console.WriteLine("1. One-dimensional array");
                Console.WriteLine("2. Two-dimensional array");
                Console.WriteLine("3. Jagged array");
                Console.WriteLine("0. Quit");
                Console.WriteLine();
                p = int.Parse(Console.ReadLine());
                switch (p)
                {
                case 1:
                string s=" "; 
                int[] massiv=null; 
                do 
                { 
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Enter the elements of the array is separated by a space"); 
                Console.ResetColor();
                string str=Console.ReadLine(); 
                if (str.[B]trim[/B]()!='e') //"string" не содержит определения для trim и не был найден 
                                                //метод расширения trim...
                s+=str+'!'; 
                }while(str.trim()!='e'); //элемент "str" не существует в данном контексте
                break;
                Array(k);//элемент "k" не существует в данном контексте
            case 2:
                string st=" "; 
                int[,] Massiv=null; 
                do 
                { 
                Console.ForegroundColor = ConsoleColor.DarkGreen; 
                Console.WriteLine("Enter the elements of the row is separated by a space");
                Console.ResetColor();
                string str=Console.ReadLine(); 
                if (str.trim()!='e') 
                st+=str+'!'; 
                }while(str.trim()!='e'); 
                break;
                Array(k,l);
            case 3:
                string Das_Line=" "; 
                int[][] Das_Massiv=null; 
                do 
                { 
                Console.ForegroundColor = ConsoleColor.Blue; 
                Console.WriteLine("Enter the elements of the row is separated by a space"); 
                Console.WriteLine(); 
                Console.WriteLine("Warning: no need to enter the same number of elements of jagged array for all rows");   
                Console.ResetColor();
                string str=Console.ReadLine(); 
                if (str.trim()!='e') 
                Das_Line+=str+'!'; 
                }while(str.trim()!='e'); 
                break;
                if (k == l) Console.WriteLine("Error");
                Array(k,l);
            case 0:
                Console.WriteLine("You decide to exit from program. Goodbye");
                break;
            default:
                Console.WriteLine("You pressed the wrong button. Re-enter");
                break;
        }
        Console.Write("\n\n\t\t\tEnter any key");
        Console.ReadLine();
        Console.Clear();
    }
    while (i != 3);
}
                Console.WriteLine("Choose menu");//"Console.WriteLine()"является "метод", но используется как "тип"
                Console.ReadLine();//"Console.ReadLine()"является "метод", но используется как "тип"
Полный текст задания
Разработать консольное приложение. Написать класс, содержащий только три открытых полиморфных метода. Первый работает с одномерным массивом, второй – с двумерным, третий – с вложенным. С каждым из массивов осуществить действие по варианту (см. ниже таблица 1). В методе Main (в основной программе) осуществить заполнение переменных-массивов с клавиатуры, а затем передать их как параметр в метод. То, с каким массивом следует работать, указывает пользователь, и в зависимости от этого заполняется переменная нужного типа. Организовать это в виде псевдографического меню с возможностью возврата к нему после выполнения действий из выбранного пункта. Выбранный пункт должен менять цвет и обводиться рамочкой, которая по клавишам «вверх-вниз» должна циклически перемещаться по пунктам. Ограничение на ввод вложенного массива: он не должен быть прямоугольным, т.е. разное количество элементов в разных строках должно проверяться программно. Затем происходит вызов метода вашего объекта, который выводит на экран исходный массив и результат своей работы. У пользователя запрещается спрашивать, сколько элементов будет в массиве – программа должна определять окончание ввода самостоятельно (например, по введенному ключевому символу).

Решение задачи: «Реализация меню в консоли»

textual
Листинг программы
using System;
 
namespace ConsoleApplication1
{
    class MyArrayClass
    {
        public void OneDArray(int[] arr)
        {
            Console.WriteLine("Press any key...");
            Console.ReadKey(true);
        }
        public void TwoDArray(int[,] arr)
        {
            Console.WriteLine("Press any key...");
            Console.ReadKey(true);
        }
        public void JaggedArray(int[][] arr)
        {
            Console.WriteLine("Press any key...");
            Console.ReadKey(true);
        }
    }
    class Menu
    {
        private string[] _items;
        public int SelectedItem { get; private set; }
        public ConsoleColor ForegroundColor = ConsoleColor.White; 
        public ConsoleColor BackgroundColor = ConsoleColor.Black; 
        public ConsoleColor SelectedForegroundColor = ConsoleColor.Black;
        public ConsoleColor SelectedBackgroundColor = ConsoleColor.White;
        public Menu(string[] items)
        {
            _items = items;
            SelectedItem = 0;
            ShowMenu();
        }
        public void SelectUp()
        {
            SelectedItem--;
            if (SelectedItem < 0)
                SelectedItem = _items.Length - 1;
            ShowMenu();
        }
        public void SelecDown()
        {
            SelectedItem++;
            if (SelectedItem >= _items.Length)
                SelectedItem = 0;
            ShowMenu();
        }
        public void HideMenu()
        {
            Console.Clear();
        }
        public void ShowMenu()
        {
            Console.Clear();
            Console.BackgroundColor = this.BackgroundColor;
            Console.ForegroundColor = this.ForegroundColor;
            for (int i = 0; i < _items.Length; i++)
            {
                if (i == SelectedItem)
                {
                    Console.BackgroundColor = this.SelectedBackgroundColor;
                    Console.ForegroundColor = this.SelectedForegroundColor;
                    Console.WriteLine(_items[i]);
                    Console.BackgroundColor = this.BackgroundColor;
                    Console.ForegroundColor = this.ForegroundColor;
                }
                else Console.WriteLine(_items[i]);
            }
        }
    }
    class Program
    {
        public static void Main(string[] args)
        {
            Console.Title = "Array";
            Menu m = new Menu(new string[] { "One-dimensional array", "Two-dimensional array", "Jagged array", "Quit" });
            MyArrayClass mac = new MyArrayClass();
            ConsoleKeyInfo ki;
            bool flag = true;
            do
            {
                ki = Console.ReadKey();
                switch (ki.Key)
                {
                    case ConsoleKey.DownArrow:
                        m.SelecDown();
                        break;
                    case ConsoleKey.UpArrow:
                        m.SelectUp();
                        break;
                    case ConsoleKey.Enter:
                        m.HideMenu();
                        switch (m.SelectedItem)
                        {
                            case 0:
                                Console.WriteLine("Enter the elements of the array is separated by a space");
                                string[] nums = Console.ReadLine().Split(' ');
                                int[] array = new int[nums.Length];
                                for (int i = 0; i < nums.Length; i++)
                                {
                                    int n = 0;
                                    int.TryParse(nums[i], out n);
                                    array[i] = n;
                                }
                                mac.OneDArray(array);
                                break;
                            case 1:
                                //заполнение двухмерного массива и вызов соответствующего метода
                                break;
 
                            case 2:
                                //заполнение ступенчатого массива и вызов соответствующего метода
                                break;
                            case 3:
                                m.HideMenu();
                                flag = false;
                                break;
                            default:
                                break;
                        }
                        m.ShowMenu();
                        break;
                    default:
                        break;
                }
 
            } while (flag);
            Console.WriteLine("You decide to exit from program. Goodbye");
            Console.ReadKey();
        }
    }
}

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


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

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

9   голосов , оценка 3.778 из 5