Untitled
unknown
plain_text
3 years ago
5.1 kB
5
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max_unsize 20
#define max_passsize 20
#define MAX_LOCATIONS 100
struct User
{
char username[max_unsize];
char password[max_passsize];
};
struct Location
{
char name[50];
int available;
float dist;
};
void registerUser()
{
system("cls");
printf("\n\n\t\t\t\t\tREGISTRATION\n\n");
struct User user;
printf("\t\t\t\tEnter your username (maximum %d characters): ",max_unsize);
scanf("%s", user.username);
printf("\t\t\t\tEnter a password (maximum %d characters): ", max_passsize);
scanf("%s", user.password);
FILE* fp = fopen("users.txt", "a");
fprintf(fp, "%s %s\n", user.username, user.password);
fclose(fp);
printf("\t\t\t\tRegistration successful!\n");
}
void loginUser()
{
system("cls");
printf("\n\n\t\t\t\t\tLOGIN\n\n");
struct User user;
char username[max_unsize];
char password[max_passsize];
printf("\t\t\t\tEnter your username: ");
scanf("%s", username);
printf("\t\t\t\tEnter your password: ");
scanf("%s", password);
FILE* fp = fopen("users.txt", "r");
if(fp == NULL)
{
printf("\t\t\t\tUser data fp does not exist.\n");
return;
}
while(fscanf(fp, "%s %s", user.username, user.password) == 2)
{
if(strcmp(user.username, username) == 0 && strcmp(user.password, password) == 0)
{
printf("\t\t\t\tLogin successful!\n");
fclose(fp);
return;
}
}
printf("\t\t\t\tInvalid user.\n");
printf("\t\t\t\tPress [1].to Register or [2].to exit\n");
int a;
scanf("%d",&a);
if(a==1)
registerUser();
else if(a==2)
{
printf("\t\t\t\tGoodbye!");
exit(10);
}
else("\t\t\t\tinvalid choice");
fclose(fp);
}
int main()
{
struct User user;
int choice;
start:
printf("\n\n\n\t\t\t\tWelcome to XYZ cab booking\n\n");
printf("\t\t\t\t1. Login\n");
printf("\t\t\t\t2. Register\n");
printf("\t\t\t\t3. Exit\n");
printf("\t\t\t\tEnter your choice: ");
scanf("\t\t\t\t%d", &choice);
switch(choice)
{
case 1:
loginUser();
break;
case 2:
registerUser();
break;
case 3:
printf("\t\t\t\tGoodbye!\n");
exit(11);
break;
default:
printf("\t\t\t\tInvalid input.\n");
system("cls");
goto start;
}
system("cls");
printf("\n\n\t\t\t\t\tCAB BOOKING\n\n");
FILE *fp, *bill_fp;
struct Location locations[MAX_LOCATIONS];
int num_locations = 0;
int i;
// Read locations from file
fp = fopen("locations.txt", "r");
if (fp == NULL) {
printf("Error opening file\n");
return 1;
}
while (fscanf(fp, "%s %d %f", locations[num_locations].name, &locations[num_locations].available, &locations[num_locations].dist) != EOF) {
num_locations++;
}
fclose(fp);
// Print available locations
printf("Available locations:\n");
for (i = 0; i < num_locations; i++) {
printf("%d. %s\n", i+1, locations[i].name);
}
// Get pickup location from user
int pickup_index = 0;
while (pickup_index < 1 || pickup_index > num_locations) {
printf("Enter pickup location number: ");
scanf("%d", &pickup_index);
}
struct Location pickup = locations[pickup_index-1];
pickup.available--;
// Get dropoff location from user
int dropoff_index = 0;
while (dropoff_index < 1 || dropoff_index > num_locations) {
printf("Enter dropoff location number: ");
scanf("%d", &dropoff_index);
}
struct Location dropoff = locations[dropoff_index-1];
dropoff.available--;
// Calculate distance and bill amount
float distance = dropoff.dist - pickup.dist;
float bill_amount = distance * 10;
// Update file with new location availability
fp = fopen("locations.txt", "w");
for (i = 0; i < num_locations; i++) {
fprintf(fp, "%s %d %f\n", locations[i].name, locations[i].available, locations[i].dist);
}
fclose(fp);
printf("Username: %s\n", user.username);
printf("Pickup: %s\n", pickup.name);
printf( "Dropoff: %s\n", dropoff.name);
printf( "Distance: %.2f km\n", distance);
printf( "Bill amount: $%.2f\n", bill_amount);
// Store bill in file
bill_fp = fopen("bill.txt", "a");
if (bill_fp == NULL) {
printf("Error opening file\n");
return 1;
}
fprintf(bill_fp,"Username: %s\n", user.username);
fprintf(bill_fp, "Pickup: %s\n", pickup.name);
fprintf(bill_fp, "Dropoff: %s\n", dropoff.name);
fprintf(bill_fp, "Distance: %.2f km\n", distance);
fprintf(bill_fp, "Bill amount: $%.2f\n", bill_amount);
fclose(bill_fp);
printf("Bill generated and stored in file\n");
return 0;
}
Editor is loading...