-
Notifications
You must be signed in to change notification settings - Fork 0
/
restaurent.c
142 lines (120 loc) · 3.99 KB
/
restaurent.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct items{
char item[20];
float price;
int qty;
};
struct orders{
char customer[50];
char date[50];
int numOfItems;
struct items itm[200]
};
//function to generate bills
void generateBillHeader(char name[50],char date[30]){
printf("\n\n");
printf("\t ADV . Restaurant");
printf("\n\t ------------------");
printf("\nDate:%s",date);
printf("\nInvoice to: %s",name);
printf("\n");
printf("-------------------------------------------\n");
printf("Items\t\t");
printf("Qty\t\t");
printf("Total\t\t");
printf("\n-------------------------------------------");
printf("\n\n");
}
void generateBillBody(char item[30], int qty, float price){
printf("%s\t\t",item);
printf("%d\t\t",qty);
printf("%.2f\t\t",qty * price);
printf("\n");
}
void generateBillFooter(float total){
printf("\n");
float cgst=0.09*total,grandTotal=total + 2*cgst;
printf("---------------------------------------\n");
printf("\nCGST @9%s\t\t\t%.2f","%",cgst);
printf("\nSGST @9%s\t\t\t%.2f","%",cgst);
printf("\n---------------------------------------");
printf("\nGrand Total\t\t\t%.2f",grandTotal);
printf("\n---------------------------------------");
}
int main(){
int opt, n;
float total;
char saveBill = 'y';
FILE * fp;
struct orders ord;
struct orders order;
//dashboard
printf("\t===========ADV. RESTAURANT===========");
printf("\n\nPlease select your preference:\t");
printf("\n\n1. Generate Invoice");
printf("\n2. Show all Invoices");
printf("\n3. Search Invoice");
printf("\n4. Exit");
printf("\n\nYour Choice:\t");
scanf("%d",&opt);
fgetc(stdin);
switch(opt){
case 1:
system("cls");
printf("\nPlease enter the name of the customer:\t");
fgets(ord.customer,200,stdin);
ord.customer[strlen(ord.customer)-1] = 0;
strcpy(ord.date,__DATE__);
printf("\nPlease enter the number of items:\t");
scanf("%d",&n);
ord.numOfItems = n;
for(int i=0;i<n;i++){
fgetc(stdin);
printf("\n\n");
printf("Please enter the item %d:\t",i+1);
fgets(ord.itm[i].item,20,stdin);
ord.itm[i].item[strlen(ord.itm[i].item)-1] = 0;
printf("Please enter the quantity:\t");
scanf("%d",&ord.itm[i].qty);
printf("Please enter the unit price:\t");
scanf("%f",&ord.itm[i].price);
total += ord.itm[i].qty * ord.itm[i].price;
}
generateBillHeader(ord.customer,ord.date);
for(int i=0;i<ord.numOfItems;i++){
generateBillBody(ord.itm[i].item,ord.itm[i].qty,ord.itm[i].price);
}
generateBillFooter(total);
printf("\nDo you want to save the invoice [y/n]:\t");
scanf("%s",&saveBill);
if(saveBill == 'y'){
fp = fopen("RestaurantBill.dat","a+");
fwrite(&ord,sizeof(struct orders),1,fp);
if(fwrite != 0)
printf("\nSuccessfully Saved");
else
printf("\nError");
fclose(fp);
}
break;
case 2:
system("cls");
fp = fopen("RestaurantBill.dat","r");
printf("\n *****Your Previous Invoices*****\n");
while(fread(&order,sizeof(struct orders),1,fp)){
float tot = 0;
generateBillHeader(order.customer,order.date);
for(int i=0;i<order.numOfItems;i++){
generateBillBody(order.itm[i].item,order.itm[i].qty,order.itm[i].price);
tot+=order.itm[i].qty * order.itm[i].price;
}
generateBillFooter(tot);
}
fclose(fp);
break;
}
printf("\n\n");
return 0;
}