Железнодорожная система бронирования в 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 Structure typedef 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 variables char source[20], des[20], train[40]; char station[40], cla[40]; int time1, time2, a[55]; // Driver Code void 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 amount int 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 passengers void 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 passengers void 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 seats int 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 receipt void 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,
РЕКОМЕНДУЕМЫЕ СТАТЬИ |