├── README.md └── Toll_Plaza.c /README.md: -------------------------------------------------------------------------------- 1 | # Some code 2 | # Toll Plaza Project 3 | -------------------------------------------------------------------------------- /Toll_Plaza.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | char plazaName[100]; 7 | char date[20]; 8 | char collectorName[20]; 9 | char shiftID[20]; 10 | char vehicle_class[50]; 11 | 12 | int base_fare; 13 | int shift_charge; 14 | float vat; 15 | int payable_amount; 16 | int bike_count,cng_count,privateCar_count,microBus_count,miniBus_count,bus_count,truck_count; 17 | int totalCollected; 18 | 19 | void user_Login() 20 | { 21 | char userID[20]; 22 | char password[20]; 23 | 24 | printf("Enter your User ID: "); 25 | scanf("%s", userID); 26 | 27 | printf("Enter your Password: "); 28 | scanf("%s", password); 29 | 30 | if(strcmp(userID,"rakib")==0 && strcmp(password,"rakib")==0) 31 | { 32 | strcpy(collectorName,userID); 33 | printf("Login sucessfull."); 34 | clearConsole(); 35 | display(); 36 | } 37 | else 38 | { 39 | printf("Invalid UserId Or password!!\n"); 40 | user_Login(); 41 | } 42 | } 43 | 44 | void clearConsole() 45 | { 46 | COORD topLeft = {0, 0}; 47 | HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); 48 | CONSOLE_SCREEN_BUFFER_INFO screen; 49 | DWORD written; 50 | 51 | GetConsoleScreenBufferInfo(console, &screen); 52 | FillConsoleOutputCharacterA(console, ' ', screen.dwSize.X * screen.dwSize.Y, topLeft, &written); 53 | FillConsoleOutputAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE, 54 | screen.dwSize.X * screen.dwSize.Y, topLeft, &written); 55 | SetConsoleCursorPosition(console, topLeft); 56 | } 57 | 58 | 59 | void dateTime() 60 | { 61 | time_t currentTime = time(NULL); 62 | char currentDate[11]; 63 | strftime(currentDate, sizeof(currentDate),"%d-%m-%Y", localtime(¤tTime)); 64 | strcpy(date,currentDate); 65 | 66 | struct tm *localTime = localtime(¤tTime); 67 | int currentHour = localTime->tm_hour; 68 | 69 | if(currentHour >= 6 && currentHour < 14) 70 | { 71 | strcpy(shiftID,"Morning"); 72 | shift_charge=7; 73 | } 74 | else if(currentHour >= 14 && currentHour < 22) 75 | { 76 | strcpy(shiftID,"Evening"); 77 | shift_charge=7; 78 | } 79 | else 80 | { 81 | strcpy(shiftID,"Night"); 82 | shift_charge=5; 83 | } 84 | } 85 | 86 | 87 | void display() 88 | { 89 | dateTime(); 90 | strcpy(plazaName," Podda Setu Toll Plaza"); 91 | 92 | printf("%s\n", plazaName); 93 | printf(" Date:%s\n", date); 94 | printf("--------------------------------\n"); 95 | printf("Collector Name: %s\n", collectorName); 96 | printf("Shift Id: %s\n", shiftID); 97 | printf("--------------------------------\n"); 98 | 99 | vehicleList(); 100 | } 101 | 102 | 103 | void vehicleList() 104 | { 105 | printf("\nVehicle List fare(BDT) \n"); 106 | printf("1. Bike 20 tk\n"); 107 | printf("2. CNG Auto Rickshaw 40 tk\n"); 108 | printf("3. Private Car 50 tk\n"); 109 | printf("4. Micro Bus 60 tk\n"); 110 | printf("5. Mini Bus 70 tk\n"); 111 | printf("6. Bus 120 tk\n"); 112 | printf("7. Truck 150 tk\n"); 113 | printf("--------------------------------\n"); 114 | 115 | setVehicle(); 116 | } 117 | 118 | 119 | void setVehicle() 120 | { 121 | int choice; 122 | 123 | printf("Select a vehicle: "); 124 | scanf("%d",&choice); 125 | 126 | if(choice==1) 127 | { 128 | strcpy(vehicle_class,"Bike"); 129 | base_fare=20; 130 | bike_count++; 131 | printf("Bike selected.\n"); 132 | } 133 | else if(choice==2) 134 | { 135 | strcpy(vehicle_class,"CNG Auto Rickshaw"); 136 | base_fare=40; 137 | cng_count++; 138 | printf("CNG Auto Rickshaw selected.\n"); 139 | } 140 | else if(choice==3) 141 | { 142 | strcpy(vehicle_class,"Private Car"); 143 | base_fare=50; 144 | privateCar_count++; 145 | printf("Private Car selected.\n"); 146 | } 147 | else if(choice==4) 148 | { 149 | strcpy(vehicle_class,"Micro Bus"); 150 | base_fare=60; 151 | microBus_count++; 152 | printf("Micro Bus selected.\n"); 153 | } 154 | else if(choice==5) 155 | { 156 | strcpy(vehicle_class,"Mini Bus"); 157 | base_fare=70; 158 | miniBus_count++; 159 | printf("Mini Bus selected.\n"); 160 | } 161 | else if(choice==6) 162 | { 163 | strcpy(vehicle_class,"Bus"); 164 | base_fare=120; 165 | bus_count++; 166 | printf("Bus selected.\n"); 167 | } 168 | else if(choice==7) 169 | { 170 | strcpy(vehicle_class,"Truck"); 171 | base_fare=150; 172 | truck_count++; 173 | printf("Truck selected.\n"); 174 | } 175 | else 176 | { 177 | printf("\nInvalid Vehicle!!\n"); 178 | setVehicle(); 179 | } 180 | printToken(); 181 | } 182 | 183 | 184 | void printToken() 185 | { 186 | printf("\nPress 'P' to print token: "); 187 | char print; 188 | scanf("%s", &print); 189 | 190 | if(print=='P'||print=='p') 191 | { 192 | clearConsole(); 193 | calculateToll(); 194 | Token(); 195 | } 196 | else 197 | printToken(); 198 | } 199 | 200 | 201 | void calculateToll() 202 | { 203 | vat = base_fare*(0.05); 204 | payable_amount= round(base_fare+shift_charge+vat); 205 | 206 | totalCollected = totalCollected+payable_amount; 207 | } 208 | 209 | 210 | void Token() 211 | { 212 | printf("\n-------------Token-------------\n"); 213 | printf("-------------------------------\n"); 214 | printf("\n%s\n", plazaName); 215 | printf(" Date:%s\n", date); 216 | printf("--------------------------------\n"); 217 | printf(" Collector Name: %s\n", collectorName); 218 | printf(" Shift ID: %s\n", shiftID); 219 | printf(" Vehicle Class: %s\n", vehicle_class); 220 | printf(" Fare: \n"); 221 | printf(" Base fare : %i tk\n", base_fare); 222 | printf(" Shift charge: %i tk\n", shift_charge); 223 | printf(" Vat (5%%) : %.1f tk\n", vat); 224 | printf("--------------------------------\n"); 225 | printf(" Payable (round) : %i Taka\n", payable_amount); 226 | printf(" Thank you, have a nice trip.\n"); 227 | 228 | tollContinue(); 229 | } 230 | 231 | 232 | void tollContinue() 233 | { 234 | printf("\nContinue[Y/N]: "); 235 | char con; 236 | scanf("%s", &con); 237 | 238 | if(con=='Y'||con=='y') 239 | { 240 | clearConsole(); 241 | display(); 242 | } 243 | else if(con=='N'||con=='n') 244 | logout(); 245 | else 246 | tollContinue(); 247 | } 248 | 249 | 250 | void logout() 251 | { 252 | printf("\nPress 'L' to LogOut: "); 253 | char press; 254 | scanf("%s", &press); 255 | 256 | if(press=='L'||press=='l') 257 | { 258 | clearConsole(); 259 | summeryReport(); 260 | } 261 | 262 | else 263 | logout(); 264 | } 265 | 266 | 267 | void summeryReport() 268 | { 269 | printf("\n--------------Summery Report-------------\n"); 270 | printf("------------------------------------------\n"); 271 | printf("\n%s\n", plazaName); 272 | printf(" Date:%s\n", date); 273 | printf("--------------------------------\n"); 274 | printf(" Collector Name: %s\n", collectorName); 275 | printf(" Shift ID: %s\n", shiftID); 276 | printf(" Summery: \n"); 277 | printf(" Bike : %i\n",bike_count); 278 | printf(" CNG Auto Rickshaw : %i\n",cng_count); 279 | printf(" Private Car : %i\n",privateCar_count); 280 | printf(" Micro Bus : %i\n",microBus_count); 281 | printf(" Mini Bus : %i\n",miniBus_count); 282 | printf(" Bus : %i\n",bus_count); 283 | printf(" Truck : %i\n",truck_count); 284 | printf("--------------------------------\n"); 285 | printf("Total Collected amount: %i Taka\n",totalCollected); 286 | } 287 | 288 | 289 | int main() { 290 | 291 | user_Login(); 292 | return 0; 293 | } 294 | 295 | --------------------------------------------------------------------------------