Железнодорожная система бронирования в C
Опубликовано: 12 Сентября, 2022
Система бронирования железнодорожных билетов реализована на языке C. Это то же самое, что можно увидеть, когда мы собираемся онлайн-бронирование билетов. При бронировании железнодорожного билета в этом программном обеспечении выполняются следующие шаги:
- Первым шагом является предоставление общего количества пассажиров и предоставление всех необходимых сведений о пассажирах.
- Следующим шагом является ввод источника и назначения.
- Появится список доступных поездов. Среди них пользователю предстоит выбрать один.
- Стоимость билета будет оцениваться. Система попросит ввести выбор места, показав матрицу мест. Наконец, квитанция будет сгенерирована на экране.
Подход:
- Первый шаг — реализовать структуру для сбора сведений о пассажирах, таких как имя, пол и возраст.
- Определены пять функций: void details(int), void add_node(char, char, int), int seat(int), int cal(int, int, int), void bill(int, int) для бесперебойной работы.
- В структуре есть три элемента, такие как две строки: одна для ввода имени и пола пассажира, а другая — целое число для определения возраста пассажира. Кроме того, будет использоваться указатель структуры, который помогает связать следующий узел другого пассажира. Он похож на связанный список.
- Определены символьные массивы, а некоторые целочисленные массивы определены глобально.
- Возьмите количество пассажиров в качестве входных данных, и эти данные будут отправлены в функцию details() .
- Выполните цикл for, чтобы получить информацию о каждом пассажире. Детали, введенные пользователем, будут отправлены в функцию add_node().
- В функции add_node каждая деталь будет храниться в узле для каждого пассажира. Эти узлы будут связывать друг друга. Это основано на концепции связанного списка.
- Возьмите ввод для места отправления, места назначения, и это даст некоторый выбор доступных поездов. На основании этого пользователь должен дать выбор. Затем вызовите функцию cal() .
- В функции cal() пользователь должен выбрать класс sleeper или ac. Если пользователь выбирает класс переменного тока, откроются еще три варианта, в которых пользователь должен дать другой выбор, основанный на том, что система добавит 18% GST к сумме и составит общую сумму.
- Вызовите функцию сиденья (), где пользователю будет предоставлена матрица мест, и пользователь должен выбрать место, соответствующее количеству пассажиров.
- Наконец, вызовите функцию bill(), в которой будет отображена общая сумма счета со всеми необходимыми данными.
Ниже приведена реализация вышеуказанного подхода:
C
// C program for the above approach#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h> // Defining Structuretypedef struct mynode { char name[20]; char gen[6]; int age; struct mynode* link;} Node; Node* start = NULL; void details(int);int seat(int);int cal(int, int, int);void bill(int, int); // Global variableschar source[20], des[20], train[40];char station[40], cla[40];int time1, time2, a[55]; // Driver Codevoid main(){ int i, j, a1, a2, b, c, int x = 0, d, e, r; char o; printf("Enter Number Of Passengers: "); fflush(stdin); scanf("%d", &j); // Calling details() function with // argument number of passenger details(j); printf("Enter The Source Place: "); fflush(stdin); gets(source); printf("Enter The Destination Place: "); gets(des); printf(" The Following Trains " "Are Available.....
"); printf(" 1. Rajdhani Express.." ".......10:00 " "a.m........Sealdah Station
"); printf(" 2. Satabdi Express..." ".......05:00 " "p.m........Howrah Station
"); printf(" 3. Humsafar Express..." ".......11:00 " "p.m........Kolkata Chitpur" " Station
"); printf(" 4. Garib-Rath Express" ".........05:00 " "p.m........Sealdah Station
"); printf(" 5. Duronto Express..." ".........07:00 " "a.m.........Santraganchi" "Station
"); scanf("%d", &i); do { switch (i) { case 1: { strcpy(train, "Rajdhani Express"); strcpy(station, "Sealdah Station"); time1 = 10; time2 = 00; a1 = 2099; a2 = 1560; // Calling cal() function // with the three argument // and return value d = cal(a1, a2, j); printf("Total Bill Amount:" " %d
", d); }; break; case 2: { strcpy(train, "Satabdi Express"); strcpy(station, "Howrah Station"); time1 = 05; time2 = 00; a1 = 1801; a2 = 981; // Calling cal() function with // three argument & return value d = cal(a1, a2, j); printf("Total Bill Amount:" "%d
", d); }; break; case 3: { strcpy(train, "Humsafar Express"); strcpy(station, "Kolkata Chitpur Express"); time1 = 11; time2 = 00; a1 = 2199; a2 = 1780; // Calling cal() function with // three argument & return value d = cal(a1, a2, j); printf("Total Bill Amount: %d
", d); }; break; case 4: { strcpy(train, "Garib-Rath Express"); strcpy(station, "Sealdah Station"); time1 = 05; time2 = 00; a1 = 1759; a2 = 1200; // Calling cal() function with // three argument & return value d = cal(a1, a2, j); printf("Total Bill Amount: %d
", d); }; break; case 5: { strcpy(train, "Duronto Express"); strcpy(station, "Santraganchi Station"); time1 = 07; time2 = 00; a1 = 2205; a2 = 1905; // Calling cal() function with // three argument & return value d = cal(a1, a2, j); printf("Total Bill Amount: %d
", d); }; break; default: printf("Enter Correct choice.....
"); x = 1; break; } } while (x); printf("Now Book Your Seats......
"); // Calling seat() function with number // of passenger seat(j); // Calling bill() function with // the number of passenger // and amount argument bill(d, j);} // Function for calculation of amountint cal(int y1, int y2, int h){ int b, c, i, t, r, n; printf(" Enter Your Choice......
"); printf(" 1. Slepper Class....
"); printf(" 2. A.C Class.......
"); scanf("%d", &i); switch (i) { case 1: { strcpy(cla, "Slepper Class"); b = y2 * h; c = b + (b * 0.18); } break; case 2: { printf(" Enter Your Choice....
"); printf(" 1. 3A Class....
"); printf(" 2. 2A Class....
"); printf(" 3. 1st Class A.C.....
"); scanf("%d", &n); switch (n) { case 1: { strcpy(cla, "3A Class"); b = y1 * h; c = b + (b * 0.18); } break; case 2: { strcpy(cla, "2A Class"); b = (y1 + 1000) * h; c = b + (b * 0.18); } break; case 3: { strcpy(cla, "1st Class A.C."); b = (y1 + 5000) * h; c = b + (b * 0.18); } break; default: { printf(" Enter Right Choice......
"); } } } break; default: { printf(" Enter Right Choice......
"); } } return c;} // Function for taking details// of passengersvoid details(int k){ int i, a; char val[20], gen[6]; for (i = 1; i <= k; i++) { printf("Enter The %dth Passenger Name: ", i); fflush(stdin); gets(val); printf("Enter The %dth Passenger Gender: ", i); fflush(stdin); gets(gen); printf("Enter The %dth Passenger Age: ", i); fflush(stdin); scanf("%d", &a); // Calling add_node() function add_node(val, gen, a); }} // Function to add details in node// for each passengersvoid add_node(char lol[20], char der[6], int b){ Node *newptr = NULL, *ptr; newptr = (Node*)malloc(sizeof(Node)); strcpy(newptr->name, lol); strcpy(newptr->gen, der); newptr->age = b; newptr->link = NULL; if (start == NULL) start = newptr; else { ptr = start; while (ptr->link != NULL) ptr = ptr->link; ptr->link = newptr; }} // Function for choosing seatsint seat(int p){ int i; printf(" -:SEAT MATRIX:-
"); printf(" (U) (M) (L) (L) " " (U)
"); printf(" 01 02 03 04 " "05
"); printf(" 06 07 08 09 " "10
"); printf(" 11 12 13 14 " "15
"); printf(" 16 17 18 19 " "20
"); printf(" 21 22 23 24 " "25
"); printf(" 26 27 28 29 " "30
"); printf(" 31 32 33 34 " "35
"); printf(" 36 37 38 39 " "40
"); printf(" 41 42 43 44 " "45
"); printf(" 46 47 48 49 " "50
"); printf(" 51 52 53 54 " "55
"); printf(" 56 57 58 59 " "60
"); printf(" Enter Seat Numbers:
"); for (i = 0; i < p; i++) scanf("%d", &a[i]);} // Function for printing receiptvoid bill(int y, int j){ int i; Node* ptr = start; for (i = 1; i <= j; i++) { printf(" \%dst Passenger Name: ", i); puts(ptr->name); printf(" %dst Passenger Gender: ", i); puts(ptr->gen); printf(" %dst Passenger Age: %d
", i,
РЕКОМЕНДУЕМЫЕ СТАТЬИ |