首页 > 解决方案 > 如何为控制台应用程序制作一个合适的 C# 菜单?

问题描述

我猜我有一个按键功能,它对 D1 到 D0 做出反应。

根据我按下的键,它会跳转到开关盒。

看起来像这样:

static void Main(string[] args)
        {
            const ConsoleKey showProductsKey = ConsoleKey.D1;
            const ConsoleKey createProductKey = ConsoleKey.D2;
            const ConsoleKey updateProductKey = ConsoleKey.D3;
            const ConsoleKey deleteProductKey = ConsoleKey.D4;

            const ConsoleKey showCategoriesKey = ConsoleKey.D5;
            const ConsoleKey createCategoryKey = ConsoleKey.D6;
            const ConsoleKey updateCategoryKey = ConsoleKey.D7;
            const ConsoleKey deleteCategoryKey = ConsoleKey.D8;

            while (true)
            {
                Console.WriteLine("Press 1 : Show Products");
                Console.WriteLine("Press 2 : Create Product");
                Console.WriteLine("Press 3 : Update Product");
                Console.WriteLine("Press 4 : Delete Product\n");

                Console.WriteLine("Press 5 : Show Categories");
                Console.WriteLine("Press 6 : Create Category");
                Console.WriteLine("Press 7 : Update Category");
                Console.WriteLine("Press 8 : Delete Category\n\n");

                ConsoleKey pressedKey = PressedKey();

                switch (pressedKey)
                {
                    //-------------------------- PRODUCTS -----------------------------------------//
                    case showProductsKey:
                        Database.ShowProducts();
                        Console.WriteLine("\n");
                        break;

                    case createProductKey:
                        Console.Write("Indtast Produktnavn: ");
                        string createproductname = Console.ReadLine();
                        Console.Write("Hvor mange er der på lager?: ");
                        int createproductstock = int.Parse(Console.ReadLine());
                        Console.Write("Hvilken kategori ID hører produktet til?: ");
                        int createproductcategoryid = int.Parse(Console.ReadLine());
                        Console.Write("Hvilket medarbejder ID har oprettet produktet?: ");
                        int createproductemployeeid = int.Parse(Console.ReadLine());
                        try
                        {
                            Database.CreateProduct(createproductname, createproductstock, createproductcategoryid, createproductemployeeid);
                            Console.WriteLine("\n" + createproductname + " Oprettet med success!\n\n");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    break;

                    case updateProductKey:
                        Console.Write("Hvilket produkt ID vil du redigere?: ");
                        string updateproductid = Console.ReadLine();
                        Console.Write("Indtast nyt Produktnavn: ");
                        string updateproductname = Console.ReadLine();
                        Console.Write("Hvor mange er der på lager?: ");
                        int updateproductstock = int.Parse(Console.ReadLine());
                        Console.Write("Hvilken kategori ID hører produktet til?: ");
                        int updateproductcategoryid = int.Parse(Console.ReadLine());
                        Console.Write("Hvilket medarbejder ID har rettet produktet?: ");
                        int updateproductemployeeid = int.Parse(Console.ReadLine());
                        try
                        {
                            Database.UpdateProduct(updateproductname, updateproductstock, updateproductcategoryid, updateproductemployeeid, updateproductid);
                            Console.WriteLine("\n" + updateproductname + " Opdateret med success!\n\n");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                        break;

                    case deleteProductKey:
                        Console.Write("Hvilket produkt ID vil du slette?: ");
                        string deleteproduct = Console.ReadLine();
                        Database.DeleteProduct(deleteproduct);
                        Console.WriteLine("\n" + "ID: " + deleteproduct + " Slettet med success!\n\n");
                        break;

                    //-------------------------- CATEGORIES -----------------------------------------//
                    case showCategoriesKey:
                        Database.ShowCategories();
                        Console.WriteLine("\n");
                        break;

                    case createCategoryKey:
                        Console.Write("Indtast kategorinavn: ");
                        string createcategoryname = Console.ReadLine();
                        try
                        {
                            Database.CreateCategory(createcategoryname);
                            Console.WriteLine("\n" + createcategoryname + " Oprettet med success!\n\n");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                        break;

                    case updateCategoryKey:
                        Console.Write("Hvilket produkt ID vil du redigere?: ");
                        string updatecategoryid = Console.ReadLine();
                        Console.Write("Indtast nyt kategorinavn: ");
                        string updatecategoryname = Console.ReadLine();
                        try
                        {
                            Database.UpdateCategory(updatecategoryname, updatecategoryid);
                            Console.WriteLine("\n" + updatecategoryname + " Opdateret med success!\n\n");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                        break;

                    case deleteCategoryKey:
                        Console.Write("Hvilket kategori ID vil du slette?: ");
                        string deletecategory = Console.ReadLine();
                        Database.DeleteCategory(deletecategory);
                        Console.WriteLine("\n" + "ID: " + deletecategory + " Slettet med success!\n\n");
                        break;
                }
            }

            ConsoleKey PressedKey()
            {
                do
                {
                    while (!Console.KeyAvailable);
                    ConsoleKey pressed = Console.ReadKey(true).Key;
                    if (pressed == showProductsKey || pressed == createProductKey || pressed == updateProductKey || pressed == deleteProductKey ||
                         pressed == showCategoriesKey || pressed == createCategoryKey || pressed == updateCategoryKey || pressed == deleteCategoryKey)
                        return pressed;
                    Console.Clear();
                } while (true);
            }
        }

但是我在这个程序中需要更多的功能,有没有办法把它们分开?我在想如果我想去产品,点击D1。然后我得到菜单显示

const ConsoleKey showProductsKey = ConsoleKey.D1;
const ConsoleKey createProductKey = ConsoleKey.D2;
const ConsoleKey updateProductKey = ConsoleKey.D3;
const ConsoleKey deleteProductKey = ConsoleKey.D4;

我试图说如果 ConsoleKey.D1 == true 和其他很多.. 我不确定什么是正确/最聪明的方式。

但在我看来,我想我想要 1 个菜单,说按 1 选择产品菜单按 2 选择类别菜单按 3 选择员工菜单等。

当点击其中一个时: 按 1 列出产品 按 2 创建产品 按 3 编辑产品 按 4 删除产品

像这样的东西会很膨胀吗?我是一名业余程序员,试图通过制作某种仓库控制台应用程序来学习 C#。

标签: c#menu

解决方案


推荐阅读