控制台应用程序中的简单菜单

 YU亚菲 发布于 2023-02-13 08:19

我想让我的菜单重复,所以在选择并执行选项1之后,它将返回菜单并要求选择另一个选项

class Program
{
    static void Main(string[] args)
    {

        FootballTeams MyCode = new FootballTeams();

        MyCode.ListInit();
        MyCode.DisplayMenu();
        MyCode.AddTeams();
        Console.ReadLine();

        MyCode.ListInit();
        MyCode.DisplayMenu();
        MyCode.DisplayTeams();
        Console.ReadLine();

        MyCode.ListInit();
        MyCode.DisplayMenu();
        MyCode.Delete();
        Console.ReadLine();

        MyCode.ListInit();
        MyCode.DisplayMenu();
        MyCode.TeamSearch();
        Console.ReadLine();
    }
}

以下是取出内容的方法:

class FootballTeams
{


    public FootballTeams(){ }

    List teams;
    public void ListInit()


    public void DisplayMenu()
   {   
    Console.WriteLine("Football Manager");
    Console.WriteLine();
    Console.WriteLine("1. Add a Football team");
    Console.WriteLine("2. List the Football teams");
    Console.WriteLine("3. Search for a Football team");
    Console.WriteLine("4. Delete a team");
    Console.ReadLine();
    }



    public void AddTeams()
    {
      Console.WriteLine("Enter a team to be added: ");
      string userinput = Console.ReadLine();
      if (teams.Count < 10)
      {
       if (userinput != "Colchester")
        {
          teams.Add(userinput);
          foreach (var item in teams)
          Console.Write(item.ToString() + " ");
         }
        else
          Console.Write("NOT ALLOWED");
         }
       else
         Console.Write("MAXIMUM LIMIT REACHED");
      }


    public void DisplayTeams()
    {
     foreach(var item in teams)
     Console.Write(item.ToString() + " ");
    }

    public void TeamSearch()
    {
     Console.WriteLine("Please enter the team you wish to search for: ");
     string userinput = Console.ReadLine();
     if (teams.Contains(userinput))
     Console.WriteLine("Success, team " + userinput);
    }

    public void Delete()
    {
      Console.WriteLine("Enter a team you wish to delete: ");
      string userinput = Console.ReadLine();
      teams.Remove(userinput);
      foreach (var item in teams)
      Console.Write(item.ToString() + " ");
    }

我知道我的措辞很差,所以我希望有人理解我的要求:P

3 个回答
  • 您可以使用do while循环对DispalyMenu()方法进行一些修改并返回如下结果

    static public int DisplayMenu()
    {   
      Console.WriteLine("Football Manager");
      Console.WriteLine();
      Console.WriteLine("1. Add a Football team");
      Console.WriteLine("2. List the Football teams");
      Console.WriteLine("3. Search for a Football team");
      Console.WriteLine("4. Delete a team");
      Console.WriteLine("5. Exit");
      var result = Console.ReadLine();
      return Convert.ToInt32(result);
    }
    

    并在您的Main()方法中写这个

    int userInput = 0;
    do
    {
      userInput = DisplayMenu();
    }while(userInput!=5);
    

    因此,暂时用户不输入'5',代码将在循环中执行.希望有所帮助.

    2023-02-13 08:23 回答
  • 现在有一个nuget包

    https://github.com/splttingatms/EasyConsole

    添加nuget包之后,Menu可以通过以下方式实现,这是一个非常基本的选项

    static void Main(string[] args)
    {
        var menu = new EasyConsole.Menu()
          .Add("foo", () => Console.WriteLine("foo selected"))
          .Add("bar", () => Console.WriteLine("bar selected"));
        menu.Display();
    }
    

    在操作中,您可以放置​​任何方法以在选中时运行

    这将输出这样的东西

      FOO

      酒吧

    选择一个选项:

    2023-02-13 08:24 回答
  • 请参阅:http://msdn.microsoft.com/en-us/library/471w8d85(v=vs.110).aspx

    将主要功能替换为:

    static void Main(string[] args) {
        FootballTeams MyCode = new FootballTeams();
    
        MyCode.ListInit();
    
        ConsoleKeyInfo cki;
    
        do {
            MyCode.DisplayMenu();
            cki = Console.ReadKey(false); // show the key as you read it
            switch (cki.KeyChar.ToString()) {
                case "1":
                    MyCode.AddTeams();
                    break;
                case "2":
                    MyCode.DisplayTeams();
                    break;
                // etc..
            }
        } while (cki.Key != ConsoleKey.Escape);
    
    }
    

    基本上,您需要循环,直到他们按下Escape键.每次读取密钥时,您都可以执行所选的操作.

    2023-02-13 08:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有