c# - 如何为控制台应用程序制作一个合适的 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#。
解决方案
推荐阅读
- java - 如何控制spring boot rest csv响应单元格格式?
- oracle - SQL:根据其他字段信息更新字段
- android - 如何在 ScrollView 中设置自定义拇指
- android - 在 textView 的文本更改上更改按钮的可见性
- python - DataFrame的表格保存为图片时如何使图片清晰
- php - 如何使用“原始”属性回显语言名称?
- shiny - 闪亮:根据输入值向 dygraphs 添加/删除时间序列
- git - 导入的 SVN 存储库不显示在 gitlab 上
- azure - 几天后 Azure AKS 丢失公共 IP 地址
- database - 如何在数据库中存储指令?