online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/* Project : Restaurant Billing System Aim : Generate Bill, Display Bill. admin can add/delete particular customer and also add/delete particular food for that customer. Programmer : Jaimik Chauhan Roll no : 20BCE503 */ #include <stdio.h> #include <stdlib.h> #include <string.h> int GenerateBill(); void displayUsers(); void updateFoodDetails(); void addFoodItem(); int viewFood(int); void deleteFoodItem(); void displayBill(int); int billno = 0; struct RBill { int bill_no, total, totalItem, showStatus; char fname[100], lname[100], MobileNo[12]; struct RBill *next; struct FoodDetails *foodData; }; struct FoodDetails { char food_detail[100]; int cost, quantity, totalCost; struct FoodDetails *next; }; struct RBill *first = NULL; struct RBill *notUpdateFirst = NULL; struct RBill *newnode = NULL; struct RBill *temp = NULL; struct FoodDetails *foodTemp = NULL; /* insert data into linked list using insertion at end */ int GenerateBill() { int i, totalBill = 0, iCount, bill, itemNo = 1; char charTemp; /* Create Newnode and assign size dynamically */ newnode = (struct RBill *)malloc(sizeof(struct RBill *)); struct FoodDetails *food = NULL; printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n Enter User Details "); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); /* Take User-name, Mobile no & no of items user ordered*/ printf("\n\nEnter User's First Name : "); scanf("%s", &newnode->fname); printf("\n Enter User's Last Name : "); scanf("%s", &newnode->lname); printf("Enter Mobile No : "); scanf("%s", &newnode->MobileNo); printf("Enter No. Of Items User Ordered : "); scanf("%d", &iCount); /* traverse loop and insert data into food node.*/ for (i = 0; i < iCount; i++) { char charTemp1; struct FoodDetails *new1 = (struct FoodDetails *)malloc(sizeof(struct FoodDetails *)); printf("\nEnter Details For Dish - %d", (i + 1)); printf("\nEnter Dish Name : "); scanf("%c", &charTemp1); scanf("%[^\n]", &new1->food_detail); printf("Enter Quantity : "); scanf("%d", &new1->quantity); printf("Enter Price Of %s : ", new1->food_detail); scanf("%d", &new1->cost); int q = new1->quantity; int c = new1->cost; int total = (q * c); new1->totalCost = total; totalBill += total; if (food == NULL) { food = new1; new1->next = food; } else { foodTemp = food; while (foodTemp->next != food) { foodTemp = foodTemp->next; } foodTemp->next = new1; new1->next = food; } } newnode->foodData = food; bill = ++billno; newnode->total = (totalBill + ((totalBill * 5) / 100)); newnode->bill_no = bill; newnode->totalItem = iCount; if (first == NULL) { first = newnode; newnode->next = first; printf("\n Bill Generated"); } else { temp = first; while (temp->next != first) { temp = temp->next; } temp->next = newnode; newnode->next = first; printf("Bill Generated"); } return iCount; } /* display bill of billNo*/ void displayBill(int billNo) { temp = first; while (temp->next != first) { if (temp->bill_no == billNo) { break; } temp = temp->next; } if (temp == first && temp->bill_no != billNo) { printf("\n Bill Not Found"); } else { printf("\n---------------------------------------------------------------------------------------"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n XYZ Restaurant(Generated Bill) "); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n---------------------------------------------------------------------------------------"); printf("\n\nBill No : %d", temp->bill_no); printf("\nName : %s %s", temp->fname, temp->lname); printf("\nMobile No : %s", temp->MobileNo); printf("\n\n-------------------------------------------------------------------------------------"); printf("\n\n Order Details \n"); printf("\n---------------------------------------------------------------------------------------"); foodTemp = temp->foodData; int i, totalFoodRecords; totalFoodRecords = temp->totalItem; printf("\n No | Ordered Item | Quantity | Cost | Total Cost\n"); printf("\n---------------------------------------------------------------------------------------"); for (i = 1; i <= totalFoodRecords; i++) { printf("\n %d | %s | %d | %d | %d ", i, foodTemp->food_detail, foodTemp->quantity, foodTemp->cost, foodTemp->totalCost); foodTemp = foodTemp->next; } printf("\n---------------------------------------------------------------------------------------"); printf("\n Total(Inclusive Tax) : \t %d", temp->total); printf("\n---------------------------------------------------------------------------------------"); printf("\n\n Thank You For Your Order \n"); printf("\n---------------------------------------------------------------------------------------"); } } /* Display Users with total bill*/ void displayUsers() { if (first == NULL) { printf("\nOops!!!, You Have Not Generated Any Bill\n"); return; } else { printf("\n---------------------------------------------------------------------------------------"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n XYZ Restaurant (Generated Bills)"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n---------------------------------------------------------------------------------------"); printf("\n---------------------------------------------------------------------------------------\n"); printf("\n| Bill No | Name | Total Bill(Inclusive Of Tax) "); printf("\n---------------------------------------------------------------------------------------\n"); temp = first; while (temp->next != first) { printf("\n| %d | %s %s | %d", temp->bill_no, temp->fname, temp->lname, temp->total); temp = temp->next; } printf("\n| %d | %s %s | %d", temp->bill_no, temp->fname, temp->lname, temp->total); printf("\n---------------------------------------------------------------------------------------\n"); } } /* view food of particular no and return no of food_items user ordered*/ int viewFood(int no) { int i = 1, totalRecord; temp = first; while (temp->next != first) { if (temp->bill_no == no) { break; } temp = temp->next; } if (temp == first && temp->bill_no != no) { printf("\n Bill Details Not Available"); return; } if (temp->bill_no == no) { printf("\n---------------------------------------------------------------------------------------"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n XYZ Restaurant "); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n---------------------------------------------------------------------------------------"); foodTemp = temp->foodData; totalRecord = temp->totalItem; printf("\n---------------------------------------------------------------------------------------"); printf("\n Food Details for Bill No : %d", no); printf("\n---------------------------------------------------------------------------------------\n"); printf("\nNo | Dish Name | Quantity | Cost | Total Cost "); printf("\n---------------------------------------------------------------------------------------\n"); for (i = 1; i <= totalRecord; i++) { printf("\n%d | %s | %d | %d | %d \n", i, foodTemp->food_detail, foodTemp->quantity, foodTemp->cost, foodTemp->totalCost); foodTemp = foodTemp->next; } printf("\n--------------------------------------------------------------------------------------\n"); } return i; } void updateFoodDetails() { int iSwitchChoice; printf("\n1. Add Food Item"); printf("\n2. Delete Food Item"); printf("\n3. Back To Menu"); printf("\n\n Enter Choice "); scanf("%d", &iSwitchChoice); switch (iSwitchChoice) { case 1: addFoodItem(); break; case 2: deleteFoodItem(); break; case 3: break; default: printf("Enter Correct Choice"); } } void addFoodItem() { int billNo, total = 0, iCount, i; temp = first; printf("Enter Bill No. : "); scanf("%d", &billNo); printf("Enter No. Of Items you want to add : "); scanf("%d", &iCount); if (first->bill_no == billNo) { /* insert iCount numbers of food details in given billno */ for (i = 0; i < iCount; i++) { struct FoodDetails *new1 = (struct FoodDetails *)malloc(sizeof(struct FoodDetails *)); printf("\nEnter Dish Name : "); scanf("%s", &new1->food_detail); printf("Enter Quantity : "); scanf("%d", &new1->quantity); printf("Enter Price Of %s : ", new1->food_detail); scanf("%d", &new1->cost); int q = new1->quantity; int c = new1->cost; int t = (q * c); new1->totalCost = t; foodTemp = first->foodData; if (foodTemp == NULL) { foodTemp = new1; new1->next = foodTemp; } else { struct FoodDetails *temp1; temp1 = first->foodData; while(temp1->next != foodTemp){ temp1 = temp1->next; } temp1->next = new1; new1->next = foodTemp; } first->totalItem = (first->totalItem + 1); } /* update Food details*/ foodTemp = first->foodData; while (foodTemp->next != first->foodData) { total += foodTemp->totalCost; foodTemp = foodTemp->next; } total += foodTemp->totalCost; first->total = (total + ((total * 5) / 100)); } else { /* Search bill no */ while (temp->next != first) { if (temp->bill_no == billNo) { break; } temp = temp->next; } /* insert iCount numbers of food details in given billno */ for (i = 0; i < iCount; i++) { struct FoodDetails *new1 = (struct FoodDetails *)malloc(sizeof(struct FoodDetails *)); fflush(stdin); printf("\nEnter Dish Name : "); fflush(stdin); gets(new1->food_detail); printf("Enter Quantity : "); scanf("%d", &new1->quantity); printf("Enter Price Of %s : ", new1->food_detail); scanf("%d", &new1->cost); int q = new1->quantity; int c = new1->cost; int t = (q * c); new1->totalCost = t; foodTemp = temp->foodData; if (foodTemp == NULL) { foodTemp = new1; new1->next = foodTemp; } else { struct FoodDetails *temp1; temp1 = foodTemp; while(temp1->next != foodTemp){ temp1 = temp1->next; } temp1->next = new1; new1->next = foodTemp; } temp->totalItem = (temp->totalItem + 1); } foodTemp = temp->foodData; while (foodTemp->next != temp->foodData) { total += foodTemp->totalCost; foodTemp = foodTemp->next; } total += foodTemp->totalCost; temp->total = (total + ((total * 5) / 100)); } displayBill(billNo); } void deleteFoodItem() { int billNo, deleteNo, totalOrderedItems; if (first == NULL) { printf("No Generated Bill"); } else { printf("Enter Bill No In Which You Want To Delete Food Order : "); scanf("%d", &billNo); temp = first; while (temp->next != first) { if (temp->bill_no == billNo) { break; } temp = temp->next; } if (temp->next == first && temp->bill_no != billNo) { printf("\nBill Not Found"); } else { int i = 1; totalOrderedItems = viewFood(billNo); /* Returned 3 Records instead of 2*/ printf("\n Total Returned Records : %d", totalOrderedItems); struct FoodDetails *prev; foodTemp = temp->foodData; printf("\nNote : If User Order Only One Item then system can not Delete that Item. You have to Delete that bill. "); printf("\nEnter Item No. You Want To Delete : "); scanf("%d", &deleteNo); if (deleteNo == 1) { struct FoodDetails *t1; t1 = foodTemp; while(t1->next != foodTemp){ t1 = t1->next; } foodTemp = foodTemp->next; t1->next = foodTemp; temp->foodData = foodTemp; } else { while(foodTemp->next != foodTemp){ prev = foodTemp; if(i == deleteNo) break; foodTemp = foodTemp->next; } if (i == deleteNo) { prev->next = foodTemp->next; } else { printf("\nItem To be Deleted Not Available"); } } } /* Update bill Details */ int total = 0; foodTemp = temp->foodData; while (foodTemp->next != temp->foodData) { total += foodTemp->totalCost; foodTemp = foodTemp->next; } total += foodTemp->totalCost; temp->total = (total + ((total * 5) / 100)); displayBill(billNo); } } void deleteBill(int no) { struct RBill *prev; if (no == first->bill_no) { struct RBill *t1; t1 = first; while (t1->next != first) { t1 = t1->next; } first = first->next; t1->next = first; } else { temp = first; while (temp->next != first) { prev = temp; if (temp->bill_no == no) { break; } temp = temp->next; } prev->next = temp->next; } } void main() { int iSwitchChoice, iNoData, i, iData, no; while (1) { printf("\n---------------------------------------------------------------------------------------"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n XYZ Restaurant (Home)"); printf("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); printf("\n---------------------------------------------------------------------------------------"); printf("\n\n1. Generate Bill \n"); printf("2. View All Bills \n"); printf("3. View Food Details\n"); printf("4. Update Food Details \n"); printf("5. Delete Generated Bill\n"); printf("6. Exit\n"); printf("\n--------------------------------------------------------------------------------------"); printf("\nEnter Choice "); scanf("%d", &iSwitchChoice); int bil; switch (iSwitchChoice) { case 1: bil = GenerateBill(); displayBill(billno); break; case 2: displayUsers(); break; case 3: printf("Enter Bill NO "); scanf("%d", &no); bil = viewFood(no); break; case 4: updateFoodDetails(); break; case 5: printf("\nNote : If You generated Only One Bill then system can not delete that bill."); printf("\n Enter Bill No You Want To Delete : "); scanf("%d", &no); deleteBill(no); break; case 6: exit(0); break; default: printf("Enter Correct Choice "); } } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue