Member 10506283 Ответов: 1

Мне нужно написать программу для ресторана. Используя C. Нужно добавить некоторые элементы


Question : Write a program for a restaurant. Your program should display a main menu that allows the customer to select between the breakfast menu option,lunch menu option, dinner menu option and check out option. After selected an option from the main menu, your program should continue to display a sub-menu that will show the available foods and prices for the selected meal.Your program should allow the customer to select the food and enter the order quantity. Your program should continue to allow the customer to order their food until they select the check out option in the main menu,then only your program will display the order list with the quantity, prices and total amount need to pay by the customer.

Это моя кодировка , и мне нужно улучшить ее, чтобы отобразить квитанцию о приобретенных товарах, общую сумму, которую нужно оплатить, и позволить пользователю ввести денежную сумму, которую он собирается заплатить, и рассчитать баланс для них. Пожалуйста, помогите мне.




#include <stdio.h>			//header files
#include <ctype.h>
#include <windows.h>

void bfast();		// prototype's
void lunch();
void dinner();
void m_m(); 
void exit();

int num;		//global variable
float price;
float total;
char choice;
int again;

void main()
{
	m_m();
}

 
void m_m()  // main menu screen
{
	char choice = ' ' ; //local variable

  printf("                Welcome to D'10 Restaurant.          \n ");
  printf("             +============================+          \n\n");
  printf("  && Please select the meal that you would like to purchase. && \n\n");
  printf("\t\t      [A] Breakfast\n");
  printf("\t\t      [B] Lunch\n");
  printf("\t\t      [C] Dinner\n");
  printf("\t\t      [D] Exit\n\n");
  printf("Enter your choice here : ");
  scanf("%c", &choice);
  system("cls");
  
		{
		if (toupper(choice) == 'A' )
		  bfast();
		else 
			if (toupper(choice) == 'B')
				  lunch();
			else 
				if (toupper(choice) == 'C')
					  dinner();
				else 
					  if (toupper(choice) == 'D')
						  exit();	
					  else 
						  if (toupper(choice) != 'A' , 'B' , 'C' , 'D')
						  { 
							  m_m();
						  }
	}
  

}
void bfast() //Breakfast Menu Screen 
{
  int choice = 0; //local variables
  int quantity = 0;
  int again = 0;
  
  fflush(stdin);
  printf("                Welcome to D'10 Restaurant.          \n ");
  printf("             +============================+          \n\n");
  printf("                  $  Breakfast Menu  $ \n\n");
  printf("  && Please select the food that you would like to purchase. && \n\n");
  printf("\t\t   [1] Toast - RM 1.00\n");
  printf("\t\t   [2] Egg Muffin - RM 1.50\n");
  printf("\t\t   [3] Nasi Lemak - RM 2.00\n");
  
  
  printf("Enter your choice here : ");
  scanf("%d", &choice);
  {
  if (choice == 1) 
	  {
	  printf("Enter quantity : ");
	  scanf("%d", &quantity);
	  total = 1.00 * quantity ;
	   printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total); 
	   printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : "); // Allows user to choose whether to check-out or buy anything else.
			scanf("%d", &again);
			system("cls");
		
			 if (again == 1 )
				bfast();
			 else 
				 if (again == 2 )
					m_m();
			else
				if (again != 1 , 2)
				{
				 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
				 exit();
				}
      }
	else 
		  if ( choice == 2)
		  {
		  printf("Enter quantity : ");
		  scanf("%d", &quantity);
		  total = 1.50 * quantity ;
		  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total);
		    printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : "); // Allows user to choose whether to check-out or buy anything else.
			scanf("%d", &again);
			system("cls");
		
			 if (again == 1 )
				bfast();
			 else if (again == 2 )	
				m_m();
			else
				if (again != 1 , 2)
				{
				 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
				 exit();
				}
		  }
		  else 
			  if ( choice == 3 )
			  {
			  printf("Enter quantity : ");
			  scanf("%d", &quantity);
			  total = 2.00 * quantity ;
			  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total); 
		       printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : "); // Allows user to choose whether to check-out or buy anything else.
			   scanf("%d", &again);
			   system("cls");
		
			  if (again == 1 )
				{
				bfast();
				 }
			  else 
				  if (again == 2 )
				{	
				m_m();
				}
				else
				    if (again != 1 , 2)
					{
					 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
					 exit();
					}
			  }
			  else 
					if (choice != 1 , 2 , 3 )
						{
						fflush(stdin);
						system("cls");
						printf("\n\n\t\t   Invalid Choice Entered\n\n");
						bfast();
						}
    }			
  }

void lunch() // Lunch Screen Menu
{
  int choice;  //local variables
  int quantity;
  int again;
  

  printf("                Welcome to D'10 Restaurant.          \n ");
  printf("             +============================+          \n\n");
  printf("                   $  Lunch Menu  $ \n\n");
  printf("  && Please select the food that you would like to purchase. && \n\n");
  printf("\t\t   [1] Fried Rice - RM 4.00\n");
  printf("\t\t   [2] Mee Goreng- RM 4.00\n");
  printf("\t\t   [3] Fish Head Curry with Rice - RM 5.00\n");
  
  printf("Enter your choice here : ");
  scanf("%d", &choice);
  {
  if (choice == 1) 
	  {
	  printf("Enter quantity : ");
	  scanf("%d", &quantity);
	  total = 4.00 * quantity ;
	  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total); 
	  {
		printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
		scanf("%d", &again);
		system("cls");
		if (again == 1 )
			lunch();
		else
			if (again == 2 )
				m_m();
		else
			if (again != 1 , 2)
			{	
			 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
			 exit();
			}
		}
      }
	else 
		  if ( choice == 2)
		  {
		  printf("Enter quantity : ");
		  scanf("%d", &quantity);
		  total = 4.00 * quantity ;
		  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total);
		  {
		printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
		scanf("%d", &again);
		system("cls");
		if (again == 1 )
			lunch();
		else 
			if (again == 2 )
				m_m();
		else
			if (again != 1 , 2)
			{	
			 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
			 exit();
			}
		}
		  }
		  else 
			  if ( choice == 3 )
			  {
			  printf("Enter quantity : ");
			  scanf("%d", &quantity);
			  total = 5.00 * quantity ;
			  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total);
			   {
				printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
				scanf("%d", &again);
				system("cls");
				if (again == 1 )
					lunch();
				else 
					if (again == 2 )
						m_m();
				else
					if (again != 1 , 2)
					{	
					 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
					 exit();
					}
	           }
			  }

				 else 
					 if (choice != 1 , 2 , 3)
						{
						fflush(stdin);
						system("cls");
						printf("\n\n\t\t   Invalid Choice Entered\n\n");
						lunch();
						}
	  }
				 
  
			
		
}





void dinner() // Dinner Menu Screen
{
  int choice;  //local variables
  int quantity;
  int again;
  

  printf("                Welcome to D'10 Restaurant.          \n ");
  printf("             +============================+          \n\n");
  printf("                    $  Dinner Menu  $ \n\n");
  printf("  && Please select the food that you would like to purchase. && \n\n");
  printf("\t\t   [1] Chicken Chop - RM 6.50\n");
  printf("\t\t   [2] Spagetti - RM 5.50\n");
  printf("\t\t   [3] Chicken Burger - RM 3.00\n");
  
  printf("Enter your choice here : ");
  scanf("%d", &choice);
  {
  if (choice == 1) 
	  {
	  printf("Enter quantity : ");
	  scanf("%d", &quantity);
	  total = 6.50 * quantity ;
	  printf("Your total amount is RM%.2f , Please pay at the counter\n ", total); 
	    {
		printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
		scanf("%d", &again);
		system("cls");
		if (again == 1 )
			dinner();
		else 
			if (again == 2 )
				m_m();
		else
			if (again != 1 , 2)
			{	
			 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
			 exit();
			}
			
	    }
      }
	else 
		  if ( choice == 2)
		  {
		  printf("Enter quantity : ");
		  scanf("%d", &quantity);
		  total = 5.50 * quantity ;
		  printf("Your total amount is RM%.2f , Please pay at the counter\n ", total);
		    {
			printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
			scanf("%d", &again);
			system("cls");
			if (again == 1 )
				dinner();
			else 
				if (again == 2 )
					m_m();
			else
				if (again != 1 , 2)
				{	
				 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
				 exit();
				}		
	        }
		  }
		  else 
			  if ( choice == 3 )
			  {
			  printf("Enter quantity : ");
			  scanf("%d", &quantity);
			  total = 3.00 * quantity ;
			  printf("Your total amount is RM%.2f , Please pay at the counter\n\n\n ", total);
			    {
				printf("\nWould you like to buy anything else?\n[1] Yes , [2] No : ");
				scanf("%d", &again);
				system("cls");
				if (again == 1 )
					dinner();
				else 
					if (again == 2 )
						m_m();
				else
					if (again != 1 , 2)
					{	
					 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
					 exit();
					}
			
				 }
			  }

				 else 
					 if (choice != 1 , 2 , 3)
						{
						fflush(stdin);
						system("cls");
						printf("\n\n\t\t   Invalid Choice Entered\n\n");
						dinner();
						}
		 }		
		
}

void exit()  // Exit Screen
{
  
  printf("                  Thank You Very Much          \n ");
  printf("             +============================+          \n\n");
  printf("               && Please come again. && \n\n");


[edit]добавлен блок кода - OriginalGriff[/edit]

OriginalGriff

Какая часть дает вам трудности?
Что вы пробовали, и где вы застряли?
Я знаю, что вы хотите "улучшить его, чтобы отобразить квитанцию о приобретенных товарах..." и так далее, но я не знаю, почему это создает вам проблему!

[no name]

Я застрял в той части, где не мог рассчитать общую сумму. Как я могу применить его к программе. Я немного запутался в этом

KarstenK

используйте еще несколько подпрограмм для очистки кода. И некоторые константы или определения.

Это часто помогает яснее видеть, что делать в такой неразберихе ;-)

1 Ответов

Рейтинг:
10

OriginalGriff

"Я застрял в той части, где я не мог вычислить общую сумму. Как я могу применить его к программе. Я немного запутался в этом"


Ну что ж, вы весело подсчитываете итоги и показываете их - так почему бы не использовать их? Это не было бы серьезным изменением, если бы каждая функция возвращала свою общую сумму в вашу основную функцию и использовала ее там, чтобы получить оплату. Вы знаете, как вернуть значение из функции, не так ли?

На ум приходит еще пара вещей:
1) это действительно не удобно для пользователя!

if (again != 1 , 2)
{
 printf("\n\n\t\tSorry Invalid Decision Entered\n\n\n\n");
 exit();
}
Выход из вашей программы, потому что он нажал не ту клавишу, будет довольно раздражающим для тех, у кого толстые пальцы! :смеяться:
2) хотя это и так технически правильно писать свой if..then..else..if... код с таким отступом, это действительно делает его очень трудным для чтения.
if (toupper(choice) == 'A')
    bfast();
else
    if (toupper(choice) == 'B')
        lunch();
    else
        if (toupper(choice) == 'C')
            dinner();
        else
            if (toupper(choice) == 'D')
                exit();
            else
                if (toupper(choice) != 'A' , 'B' , 'C' , 'D')
                    {
                    m_m();
                    }
Вместо этого поставьте else и if в том же ряду:
if (toupper(choice) == 'A')
    bfast();
else if (toupper(choice) == 'B')
    lunch();
else if (toupper(choice) == 'C')
    dinner();
else if (toupper(choice) == 'D')
    exit();
else if (toupper(choice) != 'A', 'B' , 'C' , 'D')
    {
    m_m();
    }
(и я не видел эту конструкцию в финале, если раньше - компилируется ли она?)
Я бы на самом деле изменил его и использовал вместо этого переключатель:
switch (toupper(choice))
    {
    case 'A':
        bfast();
        break;
    case 'B':
        lunch();
        break;
    case 'C':
        dinner();
        break;
    case 'D':
        exit();
    default:
        m_m();
        break;
    }


[no name]

Значит, если я использую switch case, это будет проще?

OriginalGriff

Легче читать! :смеяться:
Он генерирует почти тот же код, когда он компилируется (хотя переключатель может быть намного, намного эффективнее в некоторых случаях) - но его намного легче читать, и бит toupper(выбор) выполняется только один раз, что в любом случае более эффективно.

KarstenK

Ваш код не выдержит никакой проверки кода в моей компании, если вы не используете эти советы :-O