2017-02-24 75 views
3

我是一名新的計算機科學專業的學生,​​目前我正在研究超級商店管理系統的大學項目。c中的簡單菜單

爲此,我想要一個菜單​​系統。我嘗試使用開關盒。
它可以工作,但是,例如,當我按1程序轉到由我定義的另一個函數時。

但是主菜單功能仍然出現在頂部。
我想要一個菜單​​,我將按下一個數字,程序將繼續執行某個功能,清除之前使用的命令。

任何幫助,將不勝感激。謝謝。

(我嘗試使用開關的情況下,我是新手,不知道有關文件處理和諸如此類的東西任何東西)

#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\n       SHIRONAMHIN Super Shop\n================================================================================"); 
printf("        -Products\n        -Payment/Billing\n        -Customer information\n"); 
printf("\n"); 
printf(" Press One for Products \n Press two for Billing \n Press Three for Customer information \n Press 0 to terminate program"); 
scanf("\n%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("\n        -Home products\n        -Electronics\n\n 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\n\n 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(); 
      } 
+4

如果您不在此處發佈代碼,我們無法幫助您解決爲什麼代碼無法正常工作。如果你不能開始分配任務,請向你的教練尋求幫助。 –

+1

你可以發佈你迄今爲止嘗試過的代碼嗎? –

+0

@JosephSible添加代碼 –

回答

3

你可以去看看這個Answer。我在Windows上測試過它。

基本上它說

在Windows(CMD.EXE),Linux操作系統(Bash和zsh中)和OS X(zsh中)測試的一種解決方法:

你可以有這樣的函數

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

基本上發出帶有system("cls")(適用於Windows)的是,它不便攜,同樣適用於system("clear")(在Linux)。

上面的函數對兩者都有效。

你可以把它像這樣

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

所以如果input == 1,第一clrscr()將被調用,控制檯將被清除,然後products()將被調用。您可以使用所有其他功能相同,不要忘記包括上面的功能clrscr()的定義。

另外我強烈推薦你看看這個問題How do you clear the console screen in C?欲瞭解更多關於這個主題的信息。

+0

非常感謝。它有幫助。 –

+0

@AdibHasib歡迎您,也請閱讀其他問題http://stackoverflow.com/questions/2347770/how-do-you-clear-console-screen-in-c –

+0

@AdibHasib併發送您的問候回答http://stackoverflow.com/a/33450696/5473170,這是我所提到的。 –