简单的菜单在c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的菜单在c相关的知识,希望对你有一定的参考价值。

我是一名新的计算机科学专业的学生,​​目前我正在从事超级商店管理系统的大学项目。

为此,我想要一个菜单​​系统。我尝试过使用开关盒。 它可以工作,但是,例如,当我按1程序转到我定义的另一个函数。

但主菜单功能仍然显示在顶部。 我想要一个菜单​​,我将按下一个数字,程序将继续执行某个功能,清除我之前使用的命令。

任何帮助,将不胜感激。谢谢。

(我尝试使用switch case。我是新手,对文件处理和那种东西一无所知)

#include<stdio.h>
#include<math.h>
#include<stdlib.h>


//User defined function declaration

int main_menu();
int products();
double payment();
int customer();

//User defined sub menus



//under products

int home_products();
int electronics();

int add_products();
int remove_products();
int products_quantity();

//Under payment

double billing();

//under customer menu()

int customer_inf();
int edit_customer();




int main ()
{
int input;

printf("                              Hello ADMIN
                          SHIRONAMHIN Super Shop
================================================================================");
printf("                              -Products
                              -Payment/Billing
                              -Customer information
");
printf("
");
printf(" Press One for Products 
 Press two for Billing 
 Press Three for Customer information 
 Press 0 to terminate program");
scanf("
%d", &input);
if(input==0)
{
    return 0;  //Program will be terminated if 0 is pressed
}
switch(input)
{
case 1:
    if(input==1)
    {
        products();
    }
    break;
case 2:
    if(input==2)
    {
        payment();
    }
    break;
case 3:
    if(input==3)
    {
        customer();
    }
    break;

default:
    printf("Enter a valid number");
    break;
}
 }


  int products()

  {
    int input;
printf("
                              -Home products
                              -Electronics

 Press any key rather than 1 and 2 two return to main menu");

scanf("%d", &input);

switch (input)
{
case 1:
    if(input == 1)
        home_products();
    break;

case 2:
    if(input == 2)
        electronics();
    break;

default:
    main();
    break;
}

   }

   int home_products()
     {
      int input;
         printf("Code yet to be written

 return to main menu by pressing 1 on the keyboard");
    scanf("%d", &input);
      if(input == 1)
       {
         return main();
     }


      }

   int electronics()
       {
      printf("Code yet to be written");
        }

      double payment()
      {

        return main();

      }

      int customer()
          {
     printf("Code yet to be written");

      return main();
          }
答案

你可以看看这个Answer。我在Windows上测试过它。

它基本上说

在Windows(cmd.exe),Linux(Bash和zsh)和OS X(zsh)上测试的变通方法:

你可以拥有这样的功能

void clrscr()
{
    system("cls||clear");
}

system("cls")(Works On Windows)的基本问题是它不可移植,system("clear")(Works On Linux)也是如此。

以上功能适用于两者。

你可以拥有它

case 1:
    if(input==1)
    {
        clrscr();
        products();
    }

因此,如果input == 1,将调用第一个clrscr()并且将清除控制台,然后将调用products()。您可以对所有其他函数执行相同操作,请不要忘记在上面包含函数clrscr()的定义。

另外,我强烈建议您查看此问题How do you clear the console screen in C?有关此主题的更多信息。

以上是关于简单的菜单在c的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

关于侧边导航菜单和片段的一般设计问题

创建片段的新实例时菜单未膨胀

滑块菜单片段中的可交换选项卡

添加片段时的 FlyOut 菜单设计问题

使用导航从工具栏菜单项单击在片段之间传递数据 - Kotlin