Advertisement
tampurus

case study 2 railway gsits gourav

Apr 23rd, 2024
539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.24 KB | None | 0 0
  1. create database cs2;
  2. use cs2;
  3.  
  4. -- TrainList table
  5.  
  6. CREATE TABLE TrainList (
  7.   train_number INT PRIMARY KEY,
  8.   train_name VARCHAR(255) NOT NULL,
  9.   source VARCHAR(255) NOT NULL,
  10.   destination VARCHAR(255) NOT NULL,
  11.   ac_fair DECIMAL(10,2) NOT NULL,
  12.   general_fair DECIMAL(10,2) NOT NULL,
  13.   weekdays VARCHAR(255)
  14. );
  15.  
  16.  
  17. -- Train_Status table
  18.  
  19. CREATE TABLE Train_Status (
  20.   train_number INT,
  21.   train_date DATE NOT NULL,
  22.   total_ac_seats INT NOT NULL,
  23.   total_general_seats INT NOT NULL,
  24.   ac_seats_booked INT NOT NULL DEFAULT 0,
  25.   general_seats_booked INT NOT NULL DEFAULT 0,
  26.   PRIMARY KEY (train_number, train_date),
  27.   FOREIGN KEY (train_number) REFERENCES TrainList(train_number)
  28. );
  29.  
  30.  
  31. -- Passenger table
  32.  
  33. CREATE TABLE Passenger (
  34.   ticket_id INT PRIMARY KEY AUTO_INCREMENT,
  35.   train_number INT NOT NULL,
  36.   booking_date DATE NOT NULL,
  37.   name VARCHAR(255) NOT NULL,
  38.   age INT,
  39.   sex VARCHAR(10),  
  40.   address TEXT,
  41.   status VARCHAR(20) NOT NULL,
  42.   ticket_category VARCHAR(10) NOT NULL,
  43.   FOREIGN KEY (train_number) REFERENCES TrainList(train_number)
  44. );
  45.  
  46. -- inserting data ramesh boi
  47. INSERT INTO TrainList (train_number, train_name, source, destination, ac_fair, general_fair, weekdays)
  48. VALUES
  49. (1001, 'Gourav U Exp', 'Indore', 'Delhi', 1500.00, 1000.00, 'Monday, Wednesday, Friday'),
  50. (1002, 'Gourav U Ps', 'Delhi', 'Prayagraj', 2000.00, 1200.00, 'Tuesday, Thursday, Saturday'),
  51. (1003, 'Rajdhani Express', 'Kolkata', 'Chennai', 1800.00, 1100.00, 'Daily'),
  52. (1004, 'Kalyan Exp', 'Chennai', 'Bangalore', 1700.00, 1050.00, 'Monday, Friday'),
  53. (1005, 'Maharaja exp', 'Jaipur', 'Jodhpur', 50000.00, 20000.00, 'Wednesday, Saturday');
  54.  
  55. INSERT INTO Train_Status (train_number, train_date,
  56.  total_ac_seats, total_general_seats, ac_seats_booked,
  57.  general_seats_booked)
  58. VALUES
  59. (1001, '2024-05-05', 50, 100, 10, 20),
  60. (1001, '2024-05-06', 50, 100, 15, 30),
  61. (1001, '2024-05-07', 50, 100, 20, 40),
  62. (1002, '2024-05-05', 60, 120, 5, 10),
  63. (1002, '2024-05-06', 60, 120, 10, 20),
  64. (1003, '2024-05-05', 40, 80, 8, 15),
  65. (1003, '2024-05-06', 40, 80, 12, 25),
  66. (1004, '2024-05-05', 45, 90, 6, 12),
  67. (1004, '2024-05-06', 45, 90, 8, 16),
  68. (1005, '2024-05-05', 100, 40, 90, 23),
  69. (1005, '2024-05-06', 101, 40, 95, 35);
  70.  
  71. INSERT INTO Passenger (train_number, booking_date, name, age, sex, address, status, ticket_category)
  72. VALUES
  73. (1001, '2024-05-05', 'Gourav Upadhyay', 21, 'Male', '123 Bandra, Mumbai', 'Confirmed', 'AC'),
  74. (1001, '2024-05-05', 'Priya Singh', 25, 'Female', '456 Kirti Nagar, Delhi', 'Confirmed', 'General'),
  75. (1002, '2024-05-05', 'Ajay Kumar', 40, 'Male', '789 New Friends Colony, Delhi', 'Confirmed', 'AC'),
  76. (1002, '2024-05-05', 'Neha Gupta', 35, 'Female', '987 Ballygunge, Kolkata', 'Confirmed', 'General'),
  77. (1003, '2024-05-05', 'Ankit Patel', 28, 'Male', '654 Bhawanipur, Kolkata', 'Confirmed', 'AC'),
  78. (1003, '2024-05-05', 'Riya Jain', 22, 'Female', '321 Anna Nagar, Chennai', 'Confirmed', 'General'),
  79. (1004, '2024-05-05', 'Vivek Reddy', 45, 'Male', '234 Madhavaram, Chennai', 'Confirmed', 'AC'),
  80. (1004, '2024-05-05', 'Shreya Mishra', 20, 'Female', '567 Walnut Street, Bangalore', 'Confirmed', 'General'),
  81. (1005, '2024-05-05', 'Amit Kumar', 33, 'Male', '345 Jayanagar, Bangalore', 'Confirmed', 'AC'),
  82. (1005, '2024-05-05', 'Pooja Sharma', 27, 'Female', '876 Banjara Hills, Hyderabad', 'Confirmed', 'General');
  83.  
  84.  
  85. -- Booking procedure
  86. DELIMITER //
  87. CREATE PROCEDURE BookTicket (
  88.     IN gu_train_number INT,
  89.     IN gu_train_date DATE,
  90.     IN gu_category VARCHAR(10),
  91.     IN gu_name VARCHAR(255),
  92.     IN gu_age INT,
  93.     IN gu_sex VARCHAR(10),
  94.     IN gu_address TEXT,
  95.     OUT gu_ticket_id INT,
  96.     OUT gu_booking_status VARCHAR(50)
  97. )
  98. BEGIN
  99.     DECLARE total_seats INT;
  100.     DECLARE total_booked_seats INT;
  101.     -- Retrieve total and booked seats based on train number and date
  102.     IF gu_category = 'AC' THEN
  103.         SELECT total_ac_seats, ac_seats_booked INTO total_seats, total_booked_seats
  104.         FROM Train_Status
  105.         WHERE train_number = gu_train_number AND train_date = gu_train_date;
  106.     ELSE
  107.         SELECT total_general_seats, general_seats_booked INTO total_seats, total_booked_seats
  108.         FROM Train_Status
  109.         WHERE train_number = gu_train_number AND train_date = gu_train_date;
  110.     END IF;
  111.    
  112.     -- CHECKIGN DOES SEAST AVAILABLE OR NOT
  113.     IF total_booked_seats < total_seats THEN
  114.         -- Insert passenger details into Passenger table
  115.         INSERT INTO Passenger (train_number, booking_date, name, age, sex, address, status, ticket_category)
  116.         VALUES (gu_train_number, gu_train_date, gu_name, gu_age, gu_sex, gu_address, 'Confirmed', gu_category);
  117.         -- Retrieve the auto-generated ticket ID
  118.         SELECT LAST_INSERT_ID() INTO gu_ticket_id;
  119.         SET gu_booking_status = 'Booking Successful';
  120.            
  121.            
  122.            
  123.     ELSE
  124.         SET gu_ticket_id = NULL;
  125.         SET gu_booking_status = 'No seats available for the selected category';
  126.     END IF;
  127. END //
  128.  
  129. CALL BookTicket(
  130.     1005,                      
  131.     '2024-05-05',              
  132.     'AC',                  
  133.     'Rohit Upadhyay',                    
  134.     21,                        
  135.     'Male',                    
  136.     '13 Palan Nagar near 60 feet road Indore',    
  137.     @ticket_id,                
  138.     @booking_status            
  139. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement