0% found this document useful (0 votes)
46 views

OOSE LAB EXP online voting System

The document outlines the development of a problem statement and software requirements specification (SRS) for an Online Voting System and Railway Reservation System. It details the functionalities, capabilities, and user interactions of the systems, including ticket booking, payment processing, and user account management. Additionally, it identifies use cases and conceptual classes for the Railway Reservation System, emphasizing the importance of security, usability, and compliance with regulations.

Uploaded by

Shanmugam K
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views

OOSE LAB EXP online voting System

The document outlines the development of a problem statement and software requirements specification (SRS) for an Online Voting System and Railway Reservation System. It details the functionalities, capabilities, and user interactions of the systems, including ticket booking, payment processing, and user account management. Additionally, it identifies use cases and conceptual classes for the Railway Reservation System, emphasizing the importance of security, usability, and compliance with regulations.

Uploaded by

Shanmugam K
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 103

DATE: IDENTIFY PROBLEM STATEMENT FOR ONLINE

EX.NO: VOTING SYSTEM

AIM

To develop a problem statement for the suggested domain Online Voting System.

PROBLEMSTATEMENT
The basic methodology as applied to online voting system would involve giving voter realistic
voting task to accomplish using a variety of ballot designs. A regroups methodology is used to sample variable
aspects of the system, such as vectors and ballots. The sample is constructed so as to provide a statistical basis
for generalization from the sample to the populations they represents voting task performance is measured
using variables such as accuracy time and workload.
In online voting mechanism each voter receives a unique ballot code. The ballot code has an arbitrary length
and is generated randomly to help prevent manipulation. Online voting system mails virtual ballot papers
, including the ballot code, to the voters before election. The voters can then uses their email clients to
return their votes to the voting server.
The voting server collects the votes and filters out duplicate and invalid vote. Each voter can then check his/
her vote online to ensure that his/her vote has been counted correctly

SYSTEMCAPABILITIES:

1. Real-Time Journey Planning and Information: Enables users to search for trains based on source and destination
stations, and desired date of travel, providing up-to-the-minute information on train schedules, seat availability
across different classes, and detailed fare breakdowns.

CSE/OOSE RISHIKAC/513322104027
2. EffortlessTicket Bookingand Management: Allows users to select trains, choose travelclasses and the number of
passengers, input passenger details securely, select available seats (where applicable), and manage their current
bookings.
3. Streamlined Cancellation andRefundProcessing:Providesastraightforwardprocess foruserstocancel confirmed
tickets, clearly displays the applicable cancellation policies and potential refund amounts, and manages the
refund process according to established rules.
4. Intuitive Search and Filtering: Offers a user-friendly interface for searchingtrains with options to filter results
based on various criteria such as departure/arrival times, train type, and preferred travel class, ensuring efficient
discovery of suitable travel options.
5. Dynamic Availability Display and Confirmation: Presents real-time seat availability information to users during
the booking process and generates immediate booking confirmation messages with all relevant details upon
successful transaction, as well as clear cancellation confirmations whenapplicable.
6. SecureandDiversePaymentGateway Integration: Integrateswithmultiplesecurepayment gatewaysto facilitate
online payments through various methods, ensuring transaction security and offering users flexibility in payment
options.
7. Automated Ticket Generation and Delivery: Generates electronic tickets in a printable format (e.g., PDF)
containing all necessary travel information, including booking reference (PNR), train details, passenger
information, and seat numbers, and provides options for download or emaildelivery.

RESULT

Thustheproblemstatementforthegivenmini-projectRailwayReservationSystemwasidentified successfully.

CSE/OOSE RISHIKAC/513322104027
DATE:
SOFTWAREREQUIREMENTSSPECIFICATION
EX.NO:

AIM

ToCreatetheSoftwareRequirementsSpecification(SRS)forRailwayReservationSystem.

SOFTWAREREQUIREMENTSSPECIFICATION(SRS)

1. INTRODUCTION

Purpose

Thisdocument details what our RailwayReservation System (RRS) needsto do. Thinkof it asa clear guide for
everyone involved – the people building it (developers), the ones testing it (testers), and anyone who has astake in how
it works(stakeholders). It lays out exactly whatthe system isfor, what it will cover, explains any special terms we use,
and points to any related documents. Ultimately, this SRS acts like a shared understanding, a blueprint that ensures we
all know what the system should do, how well it should perform, and any limitations we need to keep in mind during
development.

Scope

ThisSRScoverstherequirementsfor anonlinerailwayreservationsystemthatallowsusers to:

1. Searchforavailabletrainsbasedonsourceanddestinationstations,anddateofjourney.
2. Viewtrainschedules,seatavailability,andfaredetails.
3. Bookticketsonlineandmakepaymentsthroughvariouspayment gateways.
4. Cancelticketsandrequestrefundsaccordingtothecancellationpolicy.
5. Manageuseraccounts,profiles, andbookinghistory.
6. Generateanddownloadtickets inprintableformat.
7. Administertrainschedules, routes,andfaresthroughanadministrativeinterface.

ThisSRSdoesnot cover:

1. Integrationwithphysicalticketing kiosks.
2. Real-timetraintrackingandlocation services.
3. On-boardentertainment systems.

CSE/OOSE RISHIKAC/513322104027
2. OVERALLDESCRIPTION

Product Perspective

The Railway Reservation System (RRS) is a web-based application designed to provide a convenient and
efficient way for passengers to book railway tickets online. It operates as a standalone system, but integrates with
payment gateways and potentially with railway's internal database for train schedules and availability.

Product Features

 TrainSearch:Allowsuserstosearchforavailabletrainsbasedonsource,destination,anddate.
 ScheduleDisplay:Displaystrainschedules,includingarrivalanddeparturetimes,andseat availability.
 Ticket Booking: Enables users to book tickets online by providing passenger details and selecting seats.
 PaymentProcessing:Integrateswith paymentgatewaysto processonlinepaymentssecurely.
 TicketCancellation:Allowsusersto cancelticketsand requestrefunds.
 User Account Management: Enables users to create accounts, manage profiles, and view booking history.
 TicketGeneration:Generatesandallowsuserstodownloadticketsinprintableformat.

UserClassesandCharacteristics

Passengers (Users):
 Characteristics:Generalpublic,rangingfromnovicetoexperiencedinternet users.
 Skills:Basiccomputerliteracy,abilitytonavigatewebsites.
 Goals:Tosearchfortrains,booktickets,managebookings,andaccesstravelinformation.

Administrators(Admins):
 Characteristics:Railwaystaff responsibleformanagingthesystem.
 Skills:Advancedcomputerliteracy,databasemanagement,systemadministration.
 Goals:Tomanagetrainschedules,routes, fares,useraccounts,andsystemconfigurations.

OperatingEnvironment
 ApplicationServer:Python(Flask)
 Database:
 OperatingSystems:WindowsServer
 Browsers:Chrome,Firefox,Safari,Edge

CSE/OOSE RISHIKAC/513322104027
DesignandImplementationConstraints

1. Security:ThesystemmustcomplywithPCIDSSstandardsforsecurepayment processing.
2. Accessibility:ThesystemmustcomplywithWCAGguidelinesfor accessibility.
3. Scalability:Thesystemmustbescalabletohandlealargenumberofconcurrentusersand transactions.
4. Performance:Thesystemmustprovidefastresponsetimesandefficientresource utilization.
5. DataPrivacy:Thesystemmustprotectuser dataand complywith dataprivacyregulations.
6. TechnologyStack:Thesystemmustbedevelopedusingthespecifiedtechnologystack(Python,
Flask,SQLAlchemy,HTML,CSS,JS).

AssumptionsandDependencies

 Astableinternetconnectionisavailableforuserstoaccessthesystem.
 Railway'sinternaldatabasefortrainschedulesandavailabilityisaccessible.
 Usershavebasiccomputerliteracyandareabletonavigatewebsites.

3. SPECIFICREQUIREMENTS

ExternalInterfaceRequirements

UserInterfaces

Web-basedGUI:
Thesystemoffersaresponsivedesign forbothdesktopandmobiledevices, ensuringsmooth navigation and
usability. It featuresa clear, intuitive layout with concise information presentation while adhering to WCAG accessibility
standards for inclusivity.

AdminInterface:
The system ensures secure login with role-based access, offers a dashboard for performance monitoring,
andincludesformsformanagingschedules, fares, andaccounts. Italso providesreportingtools for tracking ticket sales
and user activity.

HardwareInterfaces

 WebServer:Standardserverhardwarewithsufficientprocessingpowerandmemory.
 DatabaseServer:StandardserverhardwarewithsufficientstoragecapacityandI/Operformance.
 BarcodeScanners:Forscanningticketsatrailwaystations
 Printers:Forprintingticketsat railwaystations.

CSE/OOSE RISHIKAC/513322104027
SoftwareInterfaces

 CSV DataHandler:UsesPython'scsvmoduletostore, retrieve, andupdatereservationsefficiently, replacing


traditional databases.
 WebFramework:Useofawebframework(e.g.,Flask) forhandlingHTTPrequestsand responses.
 AuthenticationLibrary:Useofanauthenticationlibrary(e.g.,Flask-Login)formanaginguser authentication.

CommunicationInterfaces

SecurecommunicationbetweentheclientandtheserverusingHTTPS.InteractionviaHTTP requests for booking and


cancellations.

FunctionalRequirements

1. User Registration and Login: The system enables users to register with a valid password, ensuring secure
account creation. It supports secure login authentication and includes a "Forgot Password"feature for
resetting passwords when needed.
2. Train Search: The system enables users to search for available trains by specifying the sourcestation,
destination station, and journey date. It then displays matching trains with details such as train name, arrival
and departure times, and seat availability for easy selection.
3. Schedule Display: The system shall display detailed train schedules, including all stations along the route,
arrival and departure times at each station, and seat availability for each class.
4. Ticket Booking: The system enables users to select a train, class, and number of passengers, while also
collectingpassenger details such asname, age, and gender. It then displaysthe totalfare for the selected tickets
and allows seat selection when applicable.
5. Payment Processing: The system securely integrates with payment gateways, supporting multiple options like
credit cards, debit cards, and online wallets. Upon successful payment, it displays a confirmation message to
ensure transaction completion.
6. Ticket Cancellation: The system enables users to cancel tickets and request refunds, displaying the
cancellation policy and refund amount. Refunds are processed according to the policy, ensuring clarity and
fairness.
7. User Account Management: The system enables users to manage profile information such as name, phone
number, and email, while also allowing them to view booking history and change their password for account
security.
8. TicketGeneration:Thesystemgeneratesprintabletickets informats likePDF,containingessential details such as
booking ID, train information, passenger name, seat number, and barcode for verification.

CSE/OOSE RISHIKAC/513322104027
PerformanceRequirements
 ResponseTime:Thesystemshallrespond to user requestswithin 3secondson average.
 Scalability: The system shall be able to handle at least 1000 concurrent users without
performancedegradation.

QualityAttributes

 Reliability:Thesystemshallbereliableand available99.9% of thetime.


 Security:Thesystemshallbesecureand protectuser datafromunauthorized access.
 Usability:Thesystemshallbeuser-friendly andeasytouse.
 Maintainability:Thesystemshallbemaintainableand easyto update.
 Portability:Thesystemshallbeportableandabletorunondifferentoperatingsystemsand hardware platforms.

DesignConstraints

LimitedscalabilityduetoCSVstorage,requiringfuturetransitiontoa database.

4. OtherRequirements

 LegalandRegulatoryCompliance:Thesystemmustcomplywithallapplicablelawsandregulations.
 Documentation:The system shallbe well-documented, includingusermanuals, developer guides, and API
documentation.
 Training:Training shallbeprovided to administratorsand userson howto usethe system.

5. ErrorHandling&Logging

CommonErrors& Troubleshooting:

 LoginIssues:Ifusersenterincorrectcredentials,thesystemprovidesclearerrormessagesanda password recovery


option.
 Payment Failures: Displays appropriate error messages in case of transaction failures and suggestsretry
options.
 Train Search Errors: Providesfeedbackif no matchingtrainsarefound, allowingusersto refinetheir search
criteria.
 TicketBookingErrors:Ensuresusersfillallrequireddetailsbefore confirmingtheirbooking.
 CSV Data Handling Issues: Prevents corruption by ensuring proper formatting and validation while
reading/writing data.

SystemLoggingforDebugging:
 Logsuseractivity,errors,andsystemperformancemetricstodiagnoseissues.

CSE/OOSE RISHIKAC/513322104027
 UsesCSV-basedlogging,recordingeventssuchasfailedtransactionsandunauthorizedaccess attempts.
 Ensuresadministratorscanmonitor,analyze,andimprovesystemstabilitybasedonloggeddata.

User-FriendlyErrorMessages:
 Providesclear,conciseerrornotificationswithouttechnicaljargon.
 Guidesuserstoward solutions,suchasretryingactionsor contactingsupport.
 Ensuresasmooth experiencebyminimizingconfusion and frustration.

6. Appendix

Acronyms&Abbreviations

 PNR–PassengerNameRecord
 UI–UserInterface
 CSV–Comma-Separated Values
 WCAG–WebContentAccessibilityGuidelines
 ORM–Object-RelationalMapping

References

 Railwaybookingguidelines
 FlaskandPythondocumentationforwebapplicationdevelopment
 WCAGaccessibilitystandards

Future Enhancements

 DatabaseIntegration–TransitionfromCSVtoPostgreSQL/MySQLforscalability
 MobileAppDevelopment – Extendfunctionalitytomobile applications
 DynamicPricing–Implementreal-timefareadjustmentsbased ondemand
 NotificationSystem–IntroduceSMS/emailalertsfor bookingupdates

RESULT

Thus,thesoftwarerequirement specification(SRS)fortheRailwayReservation Systemproject is designed


successfully.

CSE/OOSE RISHIKAC/513322104027
DATE: IDENTIFYUSECASESANDDEVELOP
EX.NO: THEUSECASEMODEL

AIM

Toidentifyusecasesand to develop theUseCasemodel.

USECASE

1. EnquireTicketAvailability:Customerscheckifseatsareavailableforaspecifictrain.
2. FillForm:Customersprovidenecessarydetailsforbooking.
3. BookTicket: Customersconfirmtheirbookingafterfillingthe formandpayingthe fare.
4. PayFare Amount:Customerscompletethepaymentprocessfor theirbooking.
5. PrintForm:Clerksassistin printingformsfor customers.
6. CancelTicket:Customerscanceltheirbooked tickets.
7. RefundMoney:Thesystemprocessesrefundsforcanceledtickets.

ACTORS

The Customer interacts with the system for booking, cancelling, or inquiring about tickets, ensuring smooth
travel arrangements. The Clerk supports customers by printing forms and managing ticket cancellations when
required. At the core, the Railway System automates processes, handles data, and facilitates seamless ticket
transactions among users.

Relationships

1. Customer↔RailwaySystem:
o Customers interact directly with the railwaysystem for alluse cases like booking, cancellation, and
payment.
2. Customer↔Clerk:
o Clerksassistcustomersin printingformsor managingcancellations.
3. Clerk↔RailwaySystem:
o Clerksusetherailwaysystemto printformsor processcancellations.
4. Customer↔Ticket:
o Customersarelinkedtoticketsthroughbookingandcancellation processes.
5. Customer↔Payment:
o Customerscompletepaymentsfor ticketbookings,whichisprocessed bytherailwaysystem.

CSE/OOSE RISHIKAC/513322104027
USECASEDIAGRAM

RESULT

Thus,the usecases for the selectedsoftwaresystem Railway Reservartion System has beenidentified and the use
case diagram has been developed successfully.

CSE/OOSE RISHIKAC/513322104027
DATE:
DOMAINMODELANDCLASSDIAGRAMS
EX.NO:

AIM

Toidentifytheconceptualclasses,develop aDomainModeland alsoderiveaClassDiagramfrom that.

PROCEDURE

ConceptualClassesand DomainModel
Thedomainandconceptualmodelfocusesonrepresentingthereal-worldentitiesandtheirrelationships within the
railway reservation system.
1. Entities:

 Passenger:Represents individualsbookingtickets.
 RailwaySystem:Handlesoverallfunctionalityandinteractionwithpassengersandclerks.
 Clerk:Assistswithticketbookingand cancellations.
 Train:Representstrain-relateddetailsliketrainnumberandname.
 Ticket:Maintainsticket-specificdetails suchasPNRnumber,status,andpassengercount.
 Payment:Managestransaction details.

2. Relationships:

 Passenger ↔Railway System:Passengersinteractwiththesystemforbooking,payment,and ticket


confirmation.
 Passenger↔Train:Passengerssearchand selecttrainsfor their journey.
 Passenger↔ Ticket:Passengersareassignedticketsafter bookingconfirmation.
 Passenger↔Payment:Passengersmakepaymentsfor theirtickets.
 Clerk↔RailwaySystem:Clerksmanagebookingformsandcancellationsthroughthe system.
 Train↔ Ticket:Ticketsareassociatedwith specific trains.

ClassModel
Theclassmodeldefinestheattributesandmethodsforeachentityandmapsouttherelationships between them.
Classes
1. Passenger:
o Attributes:name,address,age,gender.
o Methods:searchTrain(),bookTicket(),cancelTicket(),payCharges(),modifyForm().
2. RailwaySystem:
o Attributes:id.
o Methods:response().

CSE/OOSE RISHIKAC/513322104027
3. Clerk:
o Attributes:id,name.
o Methods:form_detail(),cancellation_form().
4. Train:
o Attributes:trainNo, trainName.
o Methods:Nonespecifiedbutlinkedto Ticket.
5. Ticket:
o Attributes:pnrNo,status,noOfPersons, chargeType.
o Methods:newTicket(), deleteTicket().
6. Payment:
o Attributes:amount.
o Methods:Nonespecifiedbutlinkedto Passenger.

CLASSDIAGRAM

RESULT

Thus,the conceptual classes have beenidentified,a domainmodel has beendevelopedand the class diagrams have
been constructed successfully.

CSE/OOSE RISHIKAC/513322104027
DATE: SEQUENCEDIAGRAMAND
DATE:
EX.NO: COLLABORATIONDIAGRAM

AIM

To find the interaction between objects and represent them using UML sequence diagrams and collaboration
diagrams.

PROCEDURE

INTERACTIONSEQUENCE

1. PassengerLogin:
 ThePassengerinitiatestheinteractionbyloggingintotheRailwaySystem.
 TheRailwaySystemvalidatesthelogin.
2. FormRequestandSubmission:
 ThePassengerrequestsabookingform.
 RailwaySystemgeneratesand providestheform.
 Passengerfills inandsubmitstheformwiththeirdetails.
3. TicketCreation:
 TheRailwaySystemprocessesthedetailsandcreatestheticket.
 Detailsaresentto theTicketentity,which confirmstheticketcreation.
4. TicketPrinting:
 TheRailwaySysteminformsthePassenger thatthetickethasbeencreated successfully.
 Passengerprintstheticketto completethe process.

SEQUENCE DIAGRAM

The diagram aims to visually map out the communication flow and responsibilities between the Passenger,
Railway System, and Ticket entity in the ticket booking process. It provides clarity on the steps required for login,
form submission, ticket creation, and ticket printing.

CSE/OOSE RISHIKAC/513322104027
COLLABORATIONDIAGRAM

The primary purpose of this collaboration diagram is to show how different entities work together and
communicate during the ticket bookingprocess. It highlights the rolesand responsibilitiesof each entity and the flow of
information between them

RESULT

Thus, the sequence diagrams and collaboration diagrams have been used to represent interactions between the
objects.

CSE/OOSE RISHIKAC/513322104027
DATE:
STATECHARTANDACTIVITYDIAGRAM
EX.NO:

AIM

Todeveloptherelevantstatechartand activitydiagram.

STATECHARTREPRESENTATION

1. Loginand Validation:
 Theuserenterstheirlogindetailsthensystemvalidatesthecredentials.

2. EnteringTrainDetails:
 Theuserprovidesinformationaboutthetrain theywishto book.

3. CheckingAvailability:
 Thesystemverifiesifseatsareavailablefortheselected train.

4. ProvidingPersonalDetails:
 Theuserinputstheirpersonaldetails,requiredfor booking.

5. BookingConfirmation:
 Thesystemprocessesthebookingandconfirmstheticket.

6. Printing:
 Theuserprintstheticketfortheir reference.

7. Logout:
 Theuserlogsout,completingthe process.

CSE/OOSE RISHIKAC/513322104027
ACTIVITYDIAGRAMREPRESENTATION

1. Start bysearchingforatrain.
2. Proceedtocheckticketavailability:
 Ifticketsaren't available:endtheprocesswithlogout.
 Ifticketsareavailable:moveforward to bookthe tickets.
3. Enterpersonalandjourneydetails(filldetails) andsubmitthem.
4. Completethepayment process.
5. Finishbyprinting the ticket.

RESULT

Thus,therelevantstatechartdiagramsandactivitydiagramshavebeendrawnfortheRailway Reservation System.

CSE/OOSE RISHIKAC/513322104027
DATE:
DATE: SOFTWARESYSTEM IMPLEMENTATION
EX.NO:

AIM

ToimplementtheRailwayReservationSystemasper therequirements.

Steps toImplement theRailwayReservationSystem:

1. ProjectSetup:

ChoosetheTechStack:
 ProgrammingLanguage:Python
 WebFramework:Flask
 Frontend:HTML,CSS,JavaScript
 DataStorage:CSVfiles(initially),consider SQLiteorPostgreSQLforfuture scalability.

2. EnvironmentSetup:

 InstallPython.
 Createavirtualenvironment:python-mvenvvenv
 Activatethevirtualenvironment:
 Windows:venv\Scripts\activate
 macOS/Linux:sourcevenv/bin/activate
 InstallFlask:pipinstallflask
 InstallSQLAlchemy(optional,forfuturedatabaseintegration):pipinstallsqlalchemy
 SetupyourIDE(VSCode,PyCharm,etc.).

3. DataStorageImplementation:

 CSVFileSetup:
 Createadata/directoryinyourproject.
 Createtrain.csvfilewithappropriateheaders(e.g.,train_id,from_station,to_station,journey_date).
 SchemaDesign:Designthedatabaseschemaforstoringtrainschedules,bookings,passenger information, etc.
4. BackendDevelopment(Flask):

 APIDevelopment:
 CreateFlaskroutesfor:
 Homepage(/index)
 Searchtrains(/search_train)

CSE/OOSE RISHIKAC/513322104027
 Bookticket(/book)
 Cancelticket(/cancel)
 Refundrequest(/refund)
 Trainschedule(/schedule)
 PassengerInfo(/info)
 PrintTicket(/print_ticket)
 BusinessLogic:
 Implementfunctionsto:
 Searchfortrainsbasedon criteria.
 Booktickets.
 Canceltickets.
 Processrefundrequests.
 Managetrainschedules.
 Readand writedatato thebookings.csvfileusingthe csvmodule.
 Security:
 Implementbasicinputvalidationtopreventmalicious input.
 ConsiderusingHTTPSforsecure communication.

5. FrontendDevelopment:

 UI/UXDesign:
 CreateHTMLtemplatesforeachpage(e.g.,index.html,search_train.html,book.html).
 UseCSStostylethepagesandmakethemvisuallyappealing.
 UseJavaScriptforinteractiveelements(e.g.,formvalidation,dynamiccontentupdates).
 Integration:
 UseFlask'surl_for()functiontogenerateURLsfordifferentroutes.
 UseFlask'stemplateengine(Jinja2) torenderdynamiccontentin theHTML templates.
 Handleformsubmissionsanddisplayappropriatemessagestothe user.
 ResponsiveDesign:
 Use CSSmedia queries to ensure the websitelooksgood on differentscreen sizes(desktop, tablet,
mobile).

6. Testing:

 UnitTesting:
 Writeunittestsforthebackendfunctions(e.g.,search train,bookticket,cancelticket).
 UsePython'sunittestmoduleorpytestfor writingand runningunittests.
 IntegrationTesting:
 Testtheintegrationbetweenthefrontendand backend.

CSE/OOSE RISHIKAC/513322104027
 Verifythatthedataisbeingpassed correctlybetween thefrontend and backend.
 UserAcceptanceTesting(UAT):
 Haveuserstestthesystemtoensureitmeetstheir requirements.
 Gatherfeedbackfrom usersandfixanyissues.

7. Deployment: (Simplified- FocusonLocalExecution)

 Run theFlaskapplicationlocallyusing python app.py.


 Accesstheapplicationinyourwebbrowserathttp://127.0.0.1:5000.

8. Documentation:

 CodeDocumentation:
 Addcommentstothecodetoexplainitsfunctionality.
 Usedocstringstodocumentfunctionsand classes.
 UserDocumentation:
 Createa usermanualthat explainshowtouse the system.
 ProvideFAQsand troubleshootingtips.
 APIDocumentation:
 DocumenttheFlaskroutesandtheirparameters.
 UsetoolslikeSwaggertogenerateAPIdocumentation.

9. Maintenanceand Updates:

 BugFixesandUpdates:
 Continuouslymonitorthesystemforbugsanderrors.
 Fixbugsandreleaseupdatesregularly.
 CustomerSupport:
 Providesupporttouserswhoarehavingproblemswiththesystem.
 Gatherfeedbackfromusersand useitto improvethesystem.

RESULT

Thus,thedesignforforRailwayReservationSystemhasbeenimplemented successfully

CSE/OOSE RISHIKAC/513322104027
DATE:
DATE: SOFTWARESYSTEMTESTCASES
EX.NO:

AIM

Totestthesoftwaresystemforallthescenariosidentifiedaspertheusecase diagram.

TESTCASETEMPLATE

1. TestCaseID:Auniqueidentifierforeachtestcase.
2. TestScenario:Abrief descriptionof thefunctionalitybeingtested.
3. TestSteps:Concisestepsthatoutlinehowto executethetestcase.
4. ExpectedResult:Theexpectedoutcomeafterexecutingtheteststeps.
5. ActualResult:Theactualoutcomeobserved after executingthetest.
6. Status:Pass/Failbased on whether theactualresultmatchestheexpected result.

TestCase1:FillForm

 Test CaseID:TC001
 TestScenario:VerifythattheCustomercansuccessfullyfillthebookingformwithallrequired details.
 TestSteps:
1. Navigateto the"FillForm"usecase(normally after checkingavailability).
2. Enterallrequiredpassenger details(name,email,travelpreferences,etc.).
3. Ensureallmandatoryfieldsarefilled andvalidations(such asformatanddatatype)pass.
4. Submitthe form.
 ExpectedResult:
o Theformisacceptedwithouterrors,andthedataisrecordedforfurtherprocessing.
 ActualResult:
o Thebookingformissuccessfullyfilledandsubmittedwithcorrectvalidations.
 Status:Pass

CSE/OOSE RISHIKAC/513322104027
TestCase2:Enquire Ticket Availability

 Test CaseID:TC002
 TestScenario:VerifythattheCustomercanenquireaboutticketavailabilitybyprovidingvalid travel details.
 TestSteps:
1. LaunchtheapplicationandensuretheCustomerisloggedin(ifrequired).
2. Navigatetothe"EnquireTicketAvailability"feature.
3. Entervalidtravelinformation(e.g.,source,destination, date).
4. Clickon the"Search"or "Enquire"button.
 ExpectedResult:
o The system displays a list of available trains, including details such as departure times, seats available,
and fare information.
 ActualResult:
o Availabletrainsalongwithdetailedtimingsandseatinformationaredisplayed.
 Status:Pass

CSE/OOSE RISHIKAC/513322104027
TestCase3:BookTicket

 Test CaseID:TC003
 Test Scenario:VerifythattheCustomer canbookaticketafter completingthebookingform.
 TestSteps:
1. Completethe"FillForm"usecase asperTC001.
2. Clickonthe"BookTicket"option.
3. Thesystemprocessesthebookingrequestusingtheprovideddetails.
 ExpectedResult:
o Thesystemconfirmsthebooking,displayingaticketconfirmationthatincludesaunique ticket or PNR
number and journey details.
 ActualResult:
o Aconfirmationmessageisdisplayedwith ageneratedticketnumberand traveldetails.
 Status:Pass

CSE/OOSE RISHIKAC/513322104027
CSE/OOSE RISHIKAC/513322104027
TestCase4:PayFareAmount

 Test CaseID:TC004
 TestScenario:Verifythatthe autopayment processistriggeredandexecutedautomaticallyafter ticket booking.
 TestSteps:
1. Completetheticketbookingprocess.
2. Allowthesystemtotriggertheautopaymentprocessusingsavedpayment details.
3. Observetheautomaticprocessingand confirmation.
 ExpectedResult:Paymentisprocessedautomaticallywithaconfirmationmessagedisplayed.
 ActualResult: Autopaymentexecutedsuccessfullyandconfirmationdetailsprovided.
 Status:Pass

TestCase5:PrintForm

 Test CaseID:TC005
 Test Scenario: Verify that the Clerk can print the filled booking form to provide a hard copy to the Customer.
 TestSteps:
1. TheClerklogsintothesystem.
2. Locatethebookingformassociated with aspecific transaction.
3. Clickonthe"PrintForm"optionprovidedinthesystem interface.
 ExpectedResult:
o Thesystemsendsthebookingformtotheprinter,andtheprinteddocumentincludesall essential details
(passenger info, booking details, etc.).
 ActualResult:

CSE/OOSE RISHIKAC/513322104027
o Theformprintscorrectly withallrequiredbookinginformation.
 Status:Pass

TestCase6:CancelTicket

 Test CaseID:TC006
 TestScenario:VerifythattheCustomer can cancelabooked ticketthrough the system.
 TestSteps:
1. TheCustomerlogsinandnavigatestothe"CancelTicket"option.
2. Selectthetickettobecanceledfromthelistof booked tickets.
3. Confirmthecancellation whenpromptedbythe system.
 ExpectedResult:
o Thesystemprocessestheticketcancellation and updatestheticketstatusto "Cancelled."
 ActualResult:
o Theselectedticketiscanceled,andacancellationconfirmationmessageisdisplayed.
 Status:Pass

CSE/OOSE RISHIKAC/513322104027
TestCase7:RefundMoney

 Test CaseID:TC007
 Test Scenario:VerifythattheRailwaySystemprocessesarefund after atickethasbeencanceled.
 TestSteps:
1. Followingasuccessfulticketcancellation (TC006),navigateto therefund processsection.
2. Checkthattherefundprocedureistriggeredautomaticallyorviacustomerrequest.
3. Reviewtherefundtransactiondetails(amount,transactionID,timestamp,etc.).
 ExpectedResult:
o Thesystemsuccessfullyprocessestherefund,andtherefunddetailsaredisplayedtothe Customer (or sent to
their registered email).
 ActualResult:
o Therefundisprocessed,andconfirmationalongwithrefunddetailsisprovidedtothe Customer.
 Status:Pass

CSE/OOSE RISHIKAC/513322104027
Prerequisitesforthe Project:

 Deployment:Projectdeployedonalocal/testserver.
 Software:Python,Flask, andrequireddependenciesareinstalled.
 Data:CSVdatafilesareplacedinthedesignated folder.
 Credentials:Validtestuseraccounts(e.g., Customer,Clerk)areavailable.
 Environment: Ensurebrowser,network,andsystemconfigurationsaresetup.

RESULT

Thus, thetestcasesfortheidentifiedusecasediagramhavebeen successfullytestedforRailway Reservation System.

CSE/OOSE RISHIKAC/513322104027
DATE: IMPROVETHEREUSABILITYAND
MAINTAINABILITYBYAPPLYING APPROPRIATE
EX.NO: DESIGNPATTERNS

AIM

Toimprovethereusabilityandmaintainabilityofthesoftwaresystembyapplyingappropriatedesign patterns.

IMPROVINGSYSTEMSTRUCTURE

1. Model-View-Controller(MVC)

Thispatternseparatesthesystemintothreedistinctcomponents:

 Model:Managesdata(e.g.,trainschedules,seatavailability, userbookings).
 View:Displays information(e.g., webpages, mobileappUI).
 Controller:Handlesuserrequests(e.g.,ticketsearch,bookingprocess).

Thisseparationallowsindependentmodifications,soUI changeswon’taffectbusinesslogic,makingthe system easier to


maintain and scale.

2. FactoryMethod

Ratherthanmanuallycreatingticketobjects,thispatternencapsulatesobjectcreation:

 StandardTicketFactory:Createsnormaltickets.
 ConcessionTicketFactory:Generatesdiscountedtickets(forseniors,students).
 PremiumTicketFactory:IssuesVIP-classtickets.

By using factories,new tickettypes canbeaddedwithoutaltering existing code,ensuring modularity and reusability.

3. StrategyPattern

Differentfarecalculationmethodscanbeswapped dynamically:

 DistanceBasedFare:Chargesperkilometer traveled.
 ClassBasedFare:Pricesdifferforsleeper,AC,andgeneralclasses.
 DynamicFare:Adjustsbased ondemand.

Thisensuresflexibilityinfarecalculationswithoutmodifyingcorelogic.

CSE/OOSE RISHIKAC/513322104027
4. ObserverPattern

Insteadofmanuallynotifyingusers,thesystemcanautomaticallyupdatethemwhenscheduleschange:

 TrainSchedule(Subject):Maintainsschedulesand updatesstatus.
 Observers(NotificationService,BookingManager):Receivealertswhentraintimingschange.

Usersreceivereal-timeupdates,improvingresponsiveness.

5. TemplateMethod

Definesthegeneralbookingstepswhileallowingspecificmodifications:

1. Searchtrains→Selectseats→ Calculatefare → Confirm booking


2. OnlineBooking:Includesdigitalpayment,e-ticketgeneration.
3. CounterBooking:Handlesphysicalpayment,paper tickets.

Thispreventsduplicationwhileallowingcustomworkflows.

6. SingletonPattern

Ensuresonlyoneinstanceofcoreservices(likeDatabaseConnection)exists,preventingconflicts.

 Centralizeddatabasehandlingavoidsredundant queries.
 Improvesperformancebyminimizingresource usage.

7. FacadePattern

Simplifiescomplexinteractionsbyprovidingasingleinterface:

 BookingFacade:Handlestrainsearch,seatselection,paymentprocessinginonestep.
 Usersdon’thavetointeractwithmultiplesubsystems.

This improvesusability,makingticketbookingsimplerand moreintuitive.

RESULT

Thus, thereusabilityandmaintainabilityofthe softwaresystemhas beendonesuccessfullyforRailway Reservation

System.

CSE/OOSE RISHIKAC/513322104027
DATE: IMPLEMENTTHEMODIFIEDSYSTEMAND
TESTITFORVARIOUSSCENARIOS
EX.NO:
AIM

AIM

ToimplementandTest theModifiedRailwayReservationSystem.

Step1:ImplementtheModifiedSystem

ThemodifiedsystemintegratesdesignpatternslikeMVC,FactoryMethod,Strategy,andObserverto enhance reusability and


maintainability. Implementation involves:

 Refactoringthecode tofollowMVCprinciples,separatingbusinesslogic,UI,anduserinteractions.
 IntegratingtheFactoryMethodfor ticketcreation,ensuringdynamicticketobjectgeneration.
 ImplementingtheStrategyPatternforflexiblefarecalculationsbasedondistance,class,and demand.
 ObserverPatternisusedfor real-timenotifications,ensuringusersreceiveupdatesontrainschedules.

Step2: TestingtheSystemforVariousScenarios

Tovalidatethefunctionalityandrobustness,thesystemistestedunderthefollowing scenarios:

1. FunctionalTesting

TrainSearch&Booking Tests:

 Verifytrainsearchresultsmatchtheuser’sinput(date,source,destination).
 Ensureuserscan selectseatsandtickettype(General,Sleeper,AC,etc.).
 Validatethesystemcorrectlycalculatesfarebased onclassandroute distance.
 Confirmsuccessful ticketgeneration andproperformatting ofticket details(PNR,passengerinfo, barcode, etc.).

Cancellation&Refunds Tests:

 Verifythesystem calculatesthecorrectrefundamount basedonthecancellationwindow.


 Ensurerefundrequestsgetprocessedpromptlywithaccuratetrackingstatus.
 Testmultiplescenariossuchaspartialcancellations,bulkcancellations, andlast-minute
cancellations.

UserAccountManagementTests:

 Ensureuserscanupdateprofileinformation(Name,Email,Password,PhoneNumber)successfully.

CSE/OOSE RISHIKAC/513322104027
 Verifybookinghistorydisplayscorrectdetails,includingpastcancellationsandpayments.
 Testpasswordrecoveryandauthenticationsecuritymeasures.

2. Load&PerformanceTesting

Simulating High User Load:

 Testhowthesystembehaveswhenhundreds/thousandsof usersaccessit simultaneously.


 Measureresponsetimefortrain search,booking,and paymentprocessingunderpeak loads.
 IdentifybottlenecksindatabasequeriesandAPIrequest handling.

StressTesting:

 Pushthesystemtoitslimitsbysimulatingextremecasessuchas:
o Massiveticketbookingswithinashort period.
o Multiplesimultaneouscancellations.
o Suddenspikesin paymenttransactions.
 Evaluatehowserverresourcesareutilizedandwhetherfail-safemechanismsare triggered.

3. SecurityTesting

Authentication&AccessControlTests:

 Testloginsecurity,ensuringaccountsarenotvulnerabletoattackslikebruteforceorpassword guessing.
 Validaterole-basedaccesscontrolsopassengers,clerks,andadministratorshaveproperpermissions.

Testing forSQLInjection&XSSAttacks:

 Validatethatuserinputscannotbeexploitedtomanipulatedatabasequeries(SQLinjection prevention).
 Ensuresystemescapesuntrustedinputto protectagainstCross-SiteScripting(XSS)attacks.

4. ErrorHandling&RecoveryTesting

Network Failure Scenarios:

 Testhowthesystemhandles server downtimeor paymentgatewayfailures.


 Ensurefailed transactionsretryproperlyor showclear errormessages.

CSE/OOSE RISHIKAC/513322104027
IncorrectInputHandling:

 Validatepropererrormessagesappearwhenusersenterinvalidstationnames,incorrectpayment details, or
unsupported requests.
 Ensureusersreceiveclearguidanceonhowtocorrecterrors.

SystemCrash&RecoveryTests:

 Simulatesystemcrashesand validate automaticrecoverymechanisms restoreoperationswithoutdata loss.


 Ensureuserscan resumeincompletebookingsifanissueoccursmid-transaction.

5. Usability&AccessibilityTesting

User Experience (UX) Evaluation:

 Ensureintuitivenavigation andeasy-to-usefeatures.
 Validateconsistencyindesignacrossdesktopandmobileversions.

AccessibilityComplianceChecks:

 EnsurecompliancewithWCAG (WebContentAccessibilityGuidelines)fordifferently-abled users.


 Testscreenreadercompatibility,keyboardnavigation, andcolorcontrastforbetterreadability.

RESULT

ThustheimplementationandTestingforthe ModifiedRailwayReservationSystemwasdone
successfully.

CSE/OOSE RISHIKAC/513322104027
Appendix

app.py

fromflaskimportFlask,render_template,request,redirect,url_for,send_file from

flask_sqlalchemy import SQLAlchemy

importio

from reportlab.pdfgen import canvas

fromreportlab.lib.pagesizesimportletter from

reportlab.lib.units import inch

fromdatetimeimportdatetime

from flask import flash

import os

importuuid

app= Flask(name)

app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///trains.db'app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=Fal

se

db=SQLAlchemy(app)

classTrain(db.Model):

id = db.Column(db.Integer, primary_key=True)

train_id=db.Column(db.String(10),nullable=False)

from_station=db.Column(db.String(100),nullable=False) to_station

= db.Column(db.String(100), nullable=False) departure =

db.Column(db.String(100), nullable=False) available_seats =

db.Column(db.Integer, nullable=False)

classBooking(db.Model):

id=db.Column(db.Integer,primary_key=True)

booking_id=db.Column(db.String(36),default=str(uuid.uuid4()),unique=True) name =

db.Column(db.String(100), nullable=False)

email=db.Column(db.String(100),nullable=False)

CSE/OOSE RISHIKAC/513322104027
phone = db.Column(db.String(15), nullable=False) from_station

=db.Column(db.String(100),nullable=False) to_station =

db.Column(db.String(100), nullable=False)

journey_date=db.Column(db.String(100),nullable=False) seats =

db.Column(db.Integer, nullable=False)

train_id=db.Column(db.String(10),nullable=False)

status=db.Column(db.String(20),default='Booked')#ForCancelorRefund def init_db():

ifnotos.path.exists('trains.db'): with

app.app_context():

db.create_all()

print("✅Databasecreated!")

#AddthistoimporttraindatafromCSV import

csv

with open('trains.csv') as f:

reader=csv.DictReader(f)

for row in reader:

train = Train(train_id=row['train_id'],

from_station=row['from_station'],

to_station=row['to_station'],

departure=row['departure'],

available_seats=int(row['available_seats'])

db.session.add(train)

db.session.commit()

print("Traindataimported!")

@app.route('/')

CSE/OOSE RISHIKAC/513322104027
def index():

return render_template('index.html')

@app.route('/search_train',methods=['GET','POST']) def

search_train():

ifrequest.method=='POST':

from_station=request.form['from'].strip().title()

to_station = request.form['to'].strip().title()

journey_date = request.form['journeyDate']

try:

formatted_date=datetime.strptime(journey_date,'%Y-%m-%d').strftime('%d-%m-%Y') available_trains =

Train.query.filter(

Train.from_station.ilike(f'%{from_station}%'),

Train.to_station.ilike(f'%{to_station}%'),

Train.departure.like(f'%{formatted_date}%')

).all()

returnrender_template('schedule.html',trains=available_trains)

except Exception as e:

flash('Errorprocessingyoursearch','error') return

redirect(url_for('search_train'))

returnrender_template('search_train.html')

@app.route('/book', methods=['GET', 'POST']) def

book():

if request.method == 'POST': train_id

=request.form['train_id']

seats_needed=int(request.form['seats'])

train=Train.query.filter_by(train_id=train_id).first() if

nottrain or train.available_seats < seats_needed:

flash('Notenoughseatsavailable','error')

CSE/OOSE RISHIKAC/513322104027
return redirect(url_for('search_train')) #

Proceed with booking

booking_data={

'name': request.form['name'], 'email':

request.form['email'], 'phone':

request.form['phone'],

'from_station':request.form['from'],

'to_station': request.form['to'],

'journey_date':request.form['journeyDate'], 'seats':

seats_needed,

'train_id':train_id

train.available_seats-=seats_needed booking =

Booking(**booking_data)

db.session.add(booking) db.session.commit()

returnrender_template('confirmation.html', booking_id=booking.booking_id,

**booking_data)returnre

nder_template('book.html')

@app.route('/cancel',methods=['GET','POST']) def

cancel():

ifrequest.method=='POST':

booking_id= request.form['booking_id']

booking=Booking.query.filter_by(booking_id=booking_id).first() if

booking:

booking.status='Cancelled'db.session.

commit()

CSE/OOSE RISHIKAC/513322104027
returnrender_template('cancel.html',message="TicketCancelledSuccessfully.") else:

returnrender_template('cancel.html',message="BookingIDnotfound.") return

render_template('cancel.html')

@app.route('/refund',methods=['GET','POST']) def

refund():

ifrequest.method=='POST':

booking_id= request.form['booking_id']

booking=Booking.query.filter_by(booking_id=booking_id).first() if

booking:

booking.status='Refunded'db.session.

commit()

returnrender_template('refund.html',message="RefundProcessedSuccessfully.") else:

returnrender_template('refund.html',message="BookingIDnotfound.") return

render_template('refund.html')

@app.route('/statement/<booking_id>') def

statement(booking_id):

booking = Booking.query.filter_by(id=booking_id).first()

returnrender_template('statement.html',booking=booking)

@app.route('/booking-stats') def

booking_stats():

data=db.session.query(Booking.date,db.func.count(Booking.id)).group_by(Booking.date).all() dates =

[d[0].strftime('%Y-%m-%d') for d in data]

counts =[d[1]fordindata]

returnrender_template('booking_chart.html',dates=dates,counts=counts) @app.route('/print_ticket/<booking_id>')

def print_ticket(booking_id):

CSE/OOSE RISHIKAC/513322104027
booking=Booking.query.filter_by(booking_id=booking_id).first() if

booking:

returnrender_template('print_ticket.html',booking=booking) else:

flash('BookingIDnotfound.','error')

returnredirect(url_for('cancel'))#Orsomeotherappropriatepage @app.route('/download_ticket/<booking_id>')

def download_ticket(booking_id):

booking=Booking.query.filter_by(booking_id=booking_id).first() if not

booking:

flash('BookingIDnotfoundfordownload.','error')

returnredirect(url_for('cancel'))#Orsomeotherappropriatepage buffer =

io.BytesIO()

p=canvas.Canvas(buffer,pagesize=letter)

textobject=p.beginText(inch,10.5*inch)

textobject.setFont("Helvetica-Bold", 16)

textobject.textLine("Railway Ticket")

textobject.setFont("Helvetica", 12)

textobject.textLine(f"Booking ID: {booking.booking_id}") textobject.textLine(f"Train

ID: {booking.train_id}")

textobject.textLine(f"From:{booking.from_station}to{booking.to_station}")

textobject.textLine(f"Journey Date: {booking.journey_date}")

textobject.textLine(f"Passenger Name: {booking.name}")

textobject.textLine(f"Number of Seats: {booking.seats}") p.drawText(textobject)

p.showPage() p.save()

buffer.seek(0)

CSE/OOSE RISHIKAC/513322104027
returnsend_file(buffer,as_attachment=True,download_name=f"ticket_{booking.booking_id}.pdf",
mimetype='application/pdf')

if name =="main":

init_db()

print("StartingFlaskApp...")

app.run(debug=True)

index.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>RailwayReservation -RailEase</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

</head>

<body>

<header>

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseLogo"class="logo">

<h1>RailEase</h1>

</header>

<nav>

<ul>

<li><ahref="{{url_for('search_train')}}">SearchTrain</a></li>

<li><ahref="{{url_for('book')}}">BookTicket</a></li>

<li><ahref="{{url_for('cancel')}}">CancelTicket</a></li>

<li><ahref="{{url_for('refund')}}">Refund</a></li>

</ul>

</nav>

<divclass="container">

CSE/OOSE RISHIKAC/513322104027
<sectionclass="hero-section">

<h2>DiscoverSeamlessTrainJourneyswith RailEase</h2>

<p>Bookyourtrainticketswitheaseand exploredestinationsacrossthecountry. Ouruser-friendly system ensures a


smooth and hassle-free reservation experience.</p>

<ahref="{{url_for('search_train')}}"class="call-to-action">SearchTrainsNow</a>

</section>

<divclass="logo-background"></div>

</div>

<footer>

<p>&copy;2025RailEase</p>

</footer>

</body>

</html>

book.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>BookTicket</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseLogo"class="logo">

</div>

<h1>ConfirmYourBooking</h1>

</header>

CSE/OOSE RISHIKAC/513322104027
<divclass="booking-container">

<formmethod="POST">

<divclass="form-section">

<h3>PassengerDetails</h3>

<divclass="form-group">

<labelfor="name">FullName:</label>

<inputtype="text"id="name"name="name"placeholder="Enteryourfullname"required>

</div>

<divclass="form-group">

<labelfor="email">Email:</label>

<inputtype="email"id="email"name="email"placeholder="Enteryouremailaddress"
required>

</div>

<divclass="form-group">

<labelfor="phone">PhoneNumber:</label>

<inputtype="tel"id="phone"name="phone"placeholder="Enteryourphonenumber"
required>

</div>

</div>

<divclass="form-section">

<h3>JourneyDetails</h3>

<divclass="form-group">

<labelfor="train_id">TrainID:</label>

<inputtype="text"id="train_id"name="train_id"value="{{request.args.get('train_id','')}}"
readonly>

</div>

<divclass="form-group">

<labelfor="from">FromStation:</label>

<inputtype="text"id="from"name="from"value="{{request.args.get('from','')}}"readonly>

CSE/OOSE RISHIKAC/513322104027
</div>

<divclass="form-group">

<labelfor="to">ToStation:</label>

<inputtype="text"id="to"name="to"value="{{request.args.get('to','')}}"readonly>

</div>

<divclass="form-group">

<labelfor="journeyDate">JourneyDate:</label>

<inputtype="text"id="journeyDate"name="journeyDate"value="{{request.args.get('date','')
}}"readonly>

</div>

<divclass="form-group">

<labelfor="seats">NumberofSeats:</label>

<inputtype="number"id="seats"name="seats"min="1"placeholder="Enternumberofseats"
required>

</div>

</div>

<divclass="form-group">

<buttontype="submit">ConfirmBooking</button>

</div>

</form>

</div>

<ahref="{{url_for('index')}}"class="back-link">Back toHome</a>

<footer>

<p>&copy;2025RailEaseTravels</p>

</footer>

</body>

</html>

confirmation.html

<!DOCTYPEhtml>

CSE/OOSE RISHIKAC/513322104027
<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>BookingConfirmation</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseLogo"class="logo">

</div>

<h1>BookingSuccessful!</h1>

</header>

<divclass="confirmation-container">

<h2class="confirmation-heading">YourTrainTicketisConfirmed</h2>

<divclass="confirmation-details">

<divclass="detail-row">

<spanclass="detail-label">BookingID:</span>{{booking_id}}

</div>

<divclass="detail-row">

<spanclass="detail-label">Train:</span>{{train_id }}

</div>

<divclass="detail-row">

CSE/OOSE RISHIKAC/513322104027
<spanclass="detail-label">From:</span>{{from_station}}

</div>

<divclass="detail-row">

<spanclass="detail-label">To:</span>{{to_station}}

</div>

<divclass="detail-row">

<spanclass="detail-label">JourneyDate:</span>{{journey_date }}

</div>

<divclass="detail-row">

<spanclass="detail-label">Seats:</span>{{seats}}

</div>

</div>

<divclass="action-links">

<ahref="{{url_for('print_ticket',booking_id=booking_id)}}">View/DownloadTicket</a>

</div>

</div>

<ahref="{{url_for('index')}}"class="back-link">Back toHome</a>

<footer>

<p>&copy;2025RailEase Travels</p>

</footer>

</body>

</html>

cancel.html

<!DOCTYPEhtml>

CSE/OOSE RISHIKAC/513322104027
<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>CancelTicket-RailEase</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

<linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/font-

awesome/6.0.0/css/all.min.css"integrity="sha512-
9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg=="

crossorigin="anonymous"referrerpolicy="no-referrer"/>

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseColorfulLogo"class="logo">

</div>

<h1>CancelYourTicket</h1>

</header>

<divclass="cancel-container">

<h2class="cancel-heading"><iclass="fasfa-bantext-warningmr-2"></i>TicketCancellation</h2>

<formmethod="POST">

<divclass="form-group">

<labelfor="booking_id"><iclass="fas fa-ticket-altmr-2"></i>EnterBookingIDtoCancel:</label>

CSE/OOSE RISHIKAC/513322104027
<inputtype="text"id="booking_id"name="booking_id"placeholder="e.g., ABC-123456"required>

</div>

<divclass="form-group">

<buttontype="submit"><iclass="fas fa-times-circlemr-2"></i>CancelTicket</button>

</div>

</form>

{%ifmessage %}

<pclass="message"><iclass="fasfa-info-circlemr-2"></i>{{message }}</p>

{%endif%}

</div>

<ahref="{{url_for('index')}}"class="back-link"><iclass="fasfa-arrow-leftmr-2"></i>Back toHome</a>

<footer>

<p>&copy;2025RailEase Travels-EnsuringYourPlansChange Smoothly</p>

</footer>

</body>

</html>

refund.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>RefundRequest-RailEase</title>

CSE/OOSE RISHIKAC/513322104027
<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

<link rel="stylesheet"

href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"

integrity="sha512-
9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg=="
crossorigin="anonymous" referrerpolicy="no-referrer"/>

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseColorfulLogo"class="logo">

</div>

<h1>RefundRequest</h1>

</header>

<divclass="refund-container">

<h2><iclass="fasfa-exclamation-triangletext-dangermr-2"></i>InitiateRefund</h2>

<formmethod="POST">

<divclass="form-group">

<labelfor="booking_id"><iclass="fas fa-ticket-altmr-2"></i>EnterYourBookingID:</label>

<inputtype="text"id="booking_id"name="booking_id"placeholder="e.g.,ABC-123456"required>

</div>

<divclass="form-group">

<buttontype="submit"><iclass="fas fa-undo-altmr-2"></i>Request Refund</button>

</div>

CSE/OOSE RISHIKAC/513322104027
</form>

{%ifmessage %}

<pclass="message"><iclass="fasfa-info-circlemr-2"></i>{{message }}</p>

{%endif%}

</div>

<ahref="{{url_for('index')}}"class="back-link"><iclass="fasfa-arrow-leftmr-2"></i>Back toHome</a>

<footer>

<p>&copy;2025RailEaseTravels-YourTrustedJourneyPartner</p>

</footer>

</body>

</html>

Schedule.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>TrainSchedule -RailEase</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-


awesome/6.0.0/css/all.min.css"integrity="sha512-
9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />

</head>

<body>

CSE/OOSE RISHIKAC/513322104027
<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseColorfulLogo"class="logo">

</div>

<h1>AvailableTrains</h1>

</header>

<main>

<table>

<thead>

<tr>

<th>TrainID</th>

<th>FromStation</th>

<th>ToStation</th>

<th>Departure</th>

<th>AvailableSeats</th>

<th>Action</th>

</tr>

</thead>

<tbody>

{%iftrains %}

{%fortrainintrains %}

<tr>

<td>{{train.train_id}}</td>

<td>{{train.from_station}}</td>

CSE/OOSE RISHIKAC/513322104027
<td>{{train.to_station}}</td>

<td>{{train.departure}}</td>

<td>{{train.available_seats}}</td>

<td>

<ahref="{{url_for('book',train_id=train.train_id,

from=train.from_station,

to=train.to_station,

date=train.departure.split()[0])}}">

BookNow

</a>

</td>

</tr>

{%endfor%}

{%else%}

<tr>

<tdcolspan="6"class="no-trains">Notrainsavailableforyoursearchcriteria</td>

</tr>

{%endif%}

</tbody>

</table>

</main>

<ahref="{{url_for('index')}}"class="back-link"><iclass="fasfa-arrow-left"></i>Backto Home</a>

<footer>

<p>&copy;2025RailEase Travels-YourColorfulJourneyAwaits!</p>

CSE/OOSE RISHIKAC/513322104027
</footer>

</body>

</html>

Info.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>PassengerInformation</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseLogo"class="logo">

</div>

<h1>EnterPassengerDetails</h1>

</header>

<divclass="passenger-info-container">

<h2>YourInformation</h2>

<formmethod="POST">

<divclass="form-group">

<labelfor="name">FullName:</label>

CSE/OOSE RISHIKAC/513322104027
<inputtype="text"id="name" name="name" placeholder="Enteryourfullname"required>

</div>

<divclass="form-group">

<labelfor="email">Email:</label>

<inputtype="email"id="email"name="email"placeholder="Enteryouremailaddress" required>

</div>

<divclass="form-group">

<labelfor="phone">PhoneNumber:</label>

<inputtype="tel"id="phone"name="phone"placeholder="Enteryourphonenumber" required>

</div>

<divclass="form-group">

<buttontype="submit">Continue</button>

</div>

</form>

</div>

<ahref="{{url_for('index')}}"class="back-link">Back toHome</a>

<footer>

<p>&copy;2025RailEaseTravels</p>

</footer>

</body>

</html>

Print_ticket.html

<!DOCTYPEhtml>

<htmllang="en">

CSE/OOSE RISHIKAC/513322104027
<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>PrintTicket</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

</head>

<body>

<divclass="ticket">

<divclass="ticket-header">

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseLogo"class="logo">

</div>

<divclass="company-name">RailEaseTravels</div>

</div>

<divclass="ticket-details">

<divclass="detail-row">

<divclass="detail-label">BookingID:</div>

<div>{{booking.booking_id }}</div>

</div>

<divclass="detail-row">

<divclass="detail-label">Train:</div>

<div>{{booking.train_id}}</div>

</div>

<divclass="detail-row">

CSE/OOSE RISHIKAC/513322104027
<divclass="detail-label">From:</div>

<div>{{booking.from_station}}</div>

</div>

<divclass="detail-row">

<divclass="detail-label">To:</div>

<div>{{booking.to_station}}</div>

</div>

<divclass="detail-row">

<divclass="detail-label">JourneyDate:</div>

<div>{{booking.journey_date}}</div>

</div>

<divclass="detail-row">

<divclass="detail-label">Seats:</div>

<div>{{booking.seats}}</div>

</div>

<divclass="detail-row">

<divclass="detail-label">PassengerName:</div>

<div>{{booking.name}}</div>

</div>

</div>

<divclass="barcode">

||||||||||||||||||||||

</div>

<divclass="important-info">

CSE/OOSE RISHIKAC/513322104027
<p>Pleasekeepthisticketsafe.Itisrequiredfortravel.</p>

<p>Reportto theboardingstationatleast30minutespriorto departure.</p>

</div>

</div>

<divclass="button-container">

<buttononclick="window.print()"class="print-button">PrintTicket</button>

<ahref="{{url_for('download_ticket',booking_id=booking.booking_id)}}"class="download- button">Download
Ticket</a>

</div>

<footer>

<p>&copy;2025RailEaseTravels</p>

</footer>

</body>

</html>

Search_train.html

<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<metaname="viewport"content="width=device-width,initial-scale=1.0">

<title>SearchTrain</title>

<linkrel="stylesheet"href="{{url_for('static',filename='styles.css')}}">

<linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/6.0.0/css/all.min.css"integrity="sha512-

CSE/OOSE RISHIKAC/513322104027
9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />

</head>

<body>

<header>

<divclass="logo-container">

<imgsrc="{{url_for('static',filename='logo.jpeg')}}"alt="RailEaseColorfulLogo"class="logo">

</div>

<h1>FindYourTrain</h1>

</header>

<divclass="search-container">

<formmethod="POST">

<divclass="form-group">

<labelfor="from"><iclass="fasfa-train-station"></i>FromStation:</label>

<inputtype="text"id="from"name="from"placeholder="Enterdeparturestation"required>

</div>

<divclass="form-group">

<labelfor="to"><iclass="fasfa-map-marker-alt"></i>ToStation:</label>

<inputtype="text"id="to"name="to"placeholder="Enterdestinationstation"required>

</div>

<divclass="form-group">

<labelfor="journeyDate"><iclass="farfa-calendar-alt"></i>JourneyDate:</label>

<inputtype="date"id="journeyDate"name="journeyDate"required>

</div>

CSE/OOSE RISHIKAC/513322104027
<divclass="form-group">

<buttontype="submit"><iclass="fas fa-search"></i>SearchTrains</button>

</div>

</form>

{%withmessages=get_flashed_messages(with_categories=true)%}

{%ifmessages%}

<divclass="flash-messages">

{%forcategory,messageinmessages %}

<divclass="flash{{category}}">{{message}}</div>

{%endfor%}

</div>

{%endif%}

{%endwith%}

</div>

<ahref="{{url_for('index')}}"class="back-link"><iclass="fasfa-arrow-left"></i>Backto Home</a>

<footer>

<p>&copy;2025RailEase Travels-EnjoyYourColorfulJourney!</p>

</footer>

</body>

</html>

Style.css

body{

font-family:Arial,sans-serif;

background-color: #f4f4f4;

CSE/OOSE RISHIKAC/513322104027
margin:0;

padding:0;

header{

background-color:#333;

color: white;

text-align:center;

padding: 1em;

.logo{

height:50px; margin-

right:10px;

vertical-align:middle;

navul{

list-style:none;

padding: 0;

text-align:center;

nav li{

display: inline;

margin:015px;

nav a{

CSE/OOSE RISHIKAC/513322104027
color:rgb(156,114,240);

text-decoration: none;

font-weight: bold;

footer{

text-align: center; margin-

top: 20px; padding: 1em;

background-color:#333;

color: white;

form{

max-width:600px;

margin:50pxauto;

padding: 20px;

background-color:rgb(164,157,248);

box-shadow:0010pxrgba(0,0,0,0.1);

form input,

formbutton{

width: 100%;

padding: 10px;

margin: 10px 0;

border-radius:4px;

CSE/OOSE RISHIKAC/513322104027
border:1pxsolid #ccc;

button{

background-color:#4CAF50;

color: rgb(251, 113, 189);

border: none;

cursor: pointer;

button:hover{

background-color:#45a049;

/*Addtostyles.css*/

.flash-messages {

margin:20pxauto;

max-width:600px;

.flash{

padding: 10px;

margin: 10px 0;

border-radius:4px;

.flash.error{

background-color:#ffebee;

color: #c62828;

CSE/OOSE RISHIKAC/513322104027
}

.flash.info{

background-color:#e3f2fd;

color: #1565c0;

table{

width:100%;

border-collapse:collapse;

margin: 20px 0;

th,

td{

padding:12px;

text-align: left;

border-bottom: 1pxsolid#ddd;

th{

background-color:#333;

color: white;

tr:hover{

background-color:#f5f5f5;

/*schedule.htmlstyles*/

CSE/OOSE RISHIKAC/513322104027
body{

font-family:'Poppins',sans-serif;

background-image:linear-gradient(135deg,#e0f7fa,#b2ebf2); margin: 0;

padding:20px;

display: flex;

flex-direction:column;

align-items: center; min-

height: 100vh; color:

#37474f;

header{

background-color:#81d4fa;/*Lightblueheader*/ color:

#fff;

padding: 20px;

text-align:center;

border-bottom:3pxsolid#4fc3f7;

margin-bottom: 30px;

display:flex;

justify-content:center;

align-items: center;

box-shadow:02px5pxrgba(0,0,0,0.1);

header.logo{

CSE/OOSE RISHIKAC/513322104027
height:50px; margin-

right:20px;

header h1 {

margin:0;

font-size: 2.5em;

font-weight:700;

table{

width:90%;

max-width: 900px;

background-color: #fff;

border-collapse:collapse;

box-shadow:04px10pxrgba(0,0,0,0.1);

border-radius: 12px;

overflow:hidden;/*Tocontaintheborder-radius*/ margin-

bottom: 30px;

th,td{

padding:15px;

text-align: left;

border-bottom: 1pxsolid#e0e0e0;

th{

CSE/OOSE RISHIKAC/513322104027
background-color:#29b6f6;/*Brightblueheaderrow*/ color: #fff;

font-weight:600;

text-transform:uppercase;

tbodytr:nth-child(even){

background-color:#f5f5f5;/*Lightgreyforevenrows*/

tbody tr:hover{

background-color:#e1f5fe;/*Lightblueonhover */

tda{

display:inline-block;

padding:10px15px;

background-color:#ff9800;/*Orangebookbutton*/ color: #fff;

text-decoration:none;

border-radius: 6px; font-

size: 1em;

transition:background-color0.3sease;

td a:hover{

background-color:#f57c00;

CSE/OOSE RISHIKAC/513322104027
.no-trains {padding:

20px; text-

align:center; font-

size: 1.1em; color:

#d32f2f;

background-color:#ffebee;

border: 1px solid #e57373;

border-radius: 8px;

margin-bottom:20px;

.back-link{

color:#1e88e5;

text-decoration:none;

margin-top: 20px; font-

size: 1em;

transition:color0.3sease;

.back-link:hover {

color:#0d47a1;

footer{

background-color:#37474f;

color: #fff;

text-align:center;

CSE/OOSE RISHIKAC/513322104027
padding:20px0;

width: 100%;

margin-top:auto;

font-size: 0.9em;

box-shadow:0-2px5pxrgba(0,0,0,0.1);

/*info.htmlstyles*/ body

font-family:'Arial',sans-serif;

background-color: #f4f4f4;

margin: 0;

padding: 0;

display:flex;

flex-direction:column;

align-items: center; min-

height: 100vh;

header{

background-color:#007bff;/*Blue,acommonprimarycolor*/ color: white;

padding: 20px 0;

text-align:center;

width: 100%;

margin-bottom:20px;

CSE/OOSE RISHIKAC/513322104027
display:flex;

justify-content:center;

align-items: center;

.logo-container {

margin-right:20px;

height:40px;/* Adjustsizeasneeded*/

.logo{

max-height:100%;

header h1 {

margin:0;

font-size:2em;

.passenger-info-container{

background-color: #fff;

padding: 30px;

border-radius:8px;

box-shadow:02px10pxrgba(0,0,0,0.1);

width:80%;

max-width: 500px;

margin-bottom:20px;

CSE/OOSE RISHIKAC/513322104027
.form-group{

margin-bottom:20px;

text-align: left;

width:100%;

.form-group label {

display: block; margin-

bottom:8px; font-

weight: bold; color:

#555;

.form-groupinput[type="text"],

.form-groupinput[type="email"],

.form-groupinput[type="tel"]{

width: calc(100% - 22px);

padding: 10px;

border:1pxsolid#ccc;

border-radius: 4px;

font-size: 1em;

.form-groupbutton{

background-color:#007bff;/*Bluesubmitbutton*/ color: white;

padding:12px20px;

CSE/OOSE RISHIKAC/513322104027
border: none;

border-radius:5px;

cursor: pointer; font-

size: 1em;

transition:background-color0.3sease;

width: 100%;

.form-group button:hover {

background-color:#0056b3;

.back-link

{color:#007bff;

text-decoration:none;

margin-top: 15px; font-

size: 0.9em;

transition:color0.3sease;

.back-link:hover {

color:#0056b3;

footer{

background-color:#333;

color: white;

text-align:center;

CSE/OOSE RISHIKAC/513322104027
padding:15px0;

width: 100%;

margin-top:auto;

font-size: 0.8em;

/*print_ticket.htmlstyles*/ body {

font-family:'Arial',sans-serif;

background-color:#f0f0f0;/*Lightgreybackgroundforviewing*/ margin:

20px;

.ticket{

background-color:#fff;/*Whitebackgroundfortheticketitself*/ border: 1px

solid #ccc;

border-radius:10px;

padding: 20px;

box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);

width:80%;/*Adjustwidthasneeded*/ max-

width: 600px;

margin:20px auto;

color:#333;/*Darktextcolor */

.ticket-header{ display:

flex;

CSE/OOSE RISHIKAC/513322104027
justify-content:space-between;

align-items: center;

border-bottom:2pxsolid#ddd;

padding-bottom: 10px;

margin-bottom:15px;

.logo-container{

/*Adjustlogosizeasneeded*/

height:50px;

.logo{

max-height:100%;

.company-name {

font-size: 1.5em;

font-weight:bold;

color:#007bff;/*Acommonrailwaycolor*/

.ticket-details{

margin-bottom:15px;

.detail-row {

display:flex;

justify-content:space-between;

CSE/OOSE RISHIKAC/513322104027
margin-bottom:8px;

font-size: 0.9em;

.detail-label{

font-weight:bold;

color: #555;

.barcode{

text-align:center;

margin-top:20px;

font-size:1.2em;/*Placeholderforarealbarcode */ color: #888;

.important-info {

margin-top:20px;

padding: 10px;

border: 1px solid #eee;

background-color:#f9f9f9;

border-radius: 5px;

font-size:0.8em; color:

#777;

.button-container {

text-align:center;

CSE/OOSE RISHIKAC/513322104027
margin-top:20px;

.button-containerbutton,.button-containera{ padding: 10px

20px;

margin: 0 10px;

border: none;

border-radius:5px;

cursor: pointer;

text-decoration:none;

color: white;

font-weight:bold;

.print-button{

background-color:#007bff;

.download-button { background-

color:#28a745;

/*Stylesspecificallyforprinting*/ @media

print {

body{

background-color:#fff;/*Whitebackgroundforprinting*/ margin:

0;

padding:0;

CSE/OOSE RISHIKAC/513322104027
font-size:10pt;/* Adjustfont size forprinting*/

.ticket {

box-shadow:none;

border:1pxsolid#000;/*Blackborderforprinting*/ width:

100%;

max-width:none;

margin: 0;

border-radius:0;

padding:10px;/* Adjustpaddingforprinting*/

.button-container {

display:none;/*Hidebuttons when printing*/

/*search_train.htmlstyles*/ body

font-family:'Poppins',sans-serif;

background-image:linear-gradient(135deg,#e0f7fa,rgb(140,149,250));/*Lightbluegradient*/ margin: 0;

padding: 0;

display:flex;

flex-direction:column;

align-items: center;

CSE/OOSE RISHIKAC/513322104027
min-height:100vh;

color:#37474f;/*Darkgreytext*/

header{

background-color:#64b5f6;/*Lightblueheader*/ color:

#fff;

padding: 20px 0;

text-align:center;

width: 100%;

margin-bottom:30px; display:

flex;

justify-content:center;

align-items: center;

box-shadow:02px5pxrgba(0,0,0,0.1);

.logo-container {

margin-right:20px;

height:50px;/*Adjustsize */

.logo{

max-height:100%;

header h1 {

margin:0;

CSE/OOSE RISHIKAC/513322104027
font-size: 2.5em;

font-weight:700;

.search-container {

background-color:#fff;

padding: 40px;

border-radius:12px;

box-shadow:04px10pxrgba(0,0,0,0.1);

width:85%;

max-width: 600px;

margin-bottom:30px;

.form-group{

margin-bottom:25px;

.form-grouplabel{

display: block;

margin-bottom:10px;

font-weight: 600;

color:#546e7a;/*Slategreylabel*/ font-

size: 1.1em;

.form-groupinput[type="text"],

.form-groupinput[type="date"]{

CSE/OOSE RISHIKAC/513322104027
width:calc(100%-22px);

padding: 12px;

border:1pxsolid#a7b1b8;/*Lightgreyborder*/ border-

radius: 6px;

font-size:1em;

color:#37474f;

.form-groupbutton{

background-color:#29b6f6;/*Brightbluebutton*/ color:

#fff;

padding:15px25px;

border: none; border-

radius: 8px; cursor:

pointer; font-size:

1.2em;

transition:background-color0.3sease;

width: 100%;

box-shadow:02px4pxrgba(0,0,0,0.1);

.form-groupbutton:hover{

background-color:rgb(54,131,189);/*Darkerbrightblue*/

.flash-messages {

margin-top:30px;

CSE/OOSE RISHIKAC/513322104027
width:85%;

max-width:600px;

.flash {

padding: 18px; border-

radius: 8px; margin-

bottom:15px; font-size:

1.1em;

.flash.error{

background-color:#ffcdd2;/*Lightred*/ color:

#d32f2f; /* Dark red */

border:1pxsolid #e57373;

.flash.info{

background-color:#c8e6c9;/*Lightgreen*/ color:

#388e3c; /* Dark green */

border:1pxsolid #81c784;

.back-link{

color:#1e88e5;/*Anothershadeofblue*/ text-

decoration: none;

margin-top:20px;

font-size: 1em;

CSE/OOSE RISHIKAC/513322104027
transition:color0.3sease;

.back-link:hover{

color:#0d47a1;/*Darkerblue*/

footer{

background-color:#37474f;

color: #fff;

text-align:center;

padding: 20px 0;

width: 100%;

margin-top:auto;

font-size: 0.9em;

box-shadow:0-2px5pxrgba(0,0,0,0.1);

Style.css

/*GeneralStyles*/ body {

font-family:'Arial',sans-serif;

background-color: #f4f4f4;

margin: 0;

padding: 0;

display:flex;

flex-direction:column;

CSE/OOSE RISHIKAC/513322104027
min-height:100vh;

color: #333;

header{

background-color:#fff; color:

#007bff;

text-align:center;

padding: 20px;

border-bottom:1pxsolid#ddd; display:

flex;

justify-content:center;

align-items: center;

width: 100%;

margin-bottom:30px;

box-shadow:02px5pxrgba(0,0,0,0.1);

.logo-container {

margin-right:20px;

height:40px;

.logo{

height:50px; margin-

right:10px;

vertical-align:middle;

CSE/OOSE RISHIKAC/513322104027
max-height:100%;

headerh1{

margin:015px00;

font-size: 2.5em;

font-weight: bold;

nav {

background-color:#007bff;

color: white;

padding:15px0;

border-bottom: 2pxsolid#0056b3;

navul{

list-style:none;

padding: 0;

margin:0;

text-align:center;

nav li{

display: inline;

margin:015px;

nav a{

CSE/OOSE RISHIKAC/513322104027
color:white;

text-decoration: none; font-

size: 1.1em;

transition:color0.3sease;

font-weight: bold;

nav a:hover {

color:#ddd;

.container {

flex-grow:1;

padding: 20px;

text-align:center;

footer{

text-align: center; margin-

top: 20px; padding: 1em;

background-color:#333;

color: white;

width: 100%;

font-size:0.9em;

box-shadow:0-2px5pxrgba(0,0,0,0.1);

CSE/OOSE RISHIKAC/513322104027
form{

max-width:600px;

margin:50pxauto;

padding: 20px;

background-color:rgb(164,157,248);

box-shadow:0010pxrgba(0,0,0,0.1);

form input,

formbutton{

width: 100%;

padding: 10px;

margin: 10px 0;

border-radius:4px;

border:1pxsolid #ccc;

button{

background-color:#4CAF50;

color: rgb(251, 113, 189);

border: none;

cursor: pointer;

button:hover{

background-color:#45a049;

CSE/OOSE RISHIKAC/513322104027
.back-link

{color:#007bff;

text-decoration:none;

margin-top: 15px; font-

size: 0.9em;

transition:color0.3sease;

.back-link:hover {

color:#0056b3;

/*Specific Styles */

.hero-section{

background-color:#e9ecef;

padding: 40px;

border-radius: 8px;

margin-bottom:20px;

.hero-section h2 {

font-size:2.2em;

color: #333;

margin-bottom:15px;

.hero-section p {

font-size:1.1em;

CSE/OOSE RISHIKAC/513322104027
color:#555;

line-height: 1.6;

margin-bottom:20px;

.call-to-action {

display:inline-block;

padding:12px25px;

background-color:#28a745;

color: white;

text-decoration:none;

border-radius: 5px; font-

size: 1.1em;

transition:background-color0.3sease;

.call-to-action:hover {

background-color:#1e7e34;

.logo-background{/* Newclassforthebackground*/

background-image:url('/static/railway.jpg');/*Pathtoyourimage*/

background-repeat: no-repeat;

background-position:centerbottom;/*Positionatthebottomcenter*/

background-size: contain; /* Ensure the image scales correctly */

padding-bottom:600px;/*Addpaddingatthebottomtomakespacefortheimage. Adjustasneeded*/ background-size:

2100px 900px;

CSE/OOSE RISHIKAC/513322104027
}

/*book.htmlstyles*/

.booking-container {

background-color:#fff;

padding: 30px;

border-radius:8px;

box-shadow:02px10pxrgba(0,0,0,0.1);

width:80%;

max-width: 600px;

margin-bottom:20px;

.form-section{

margin-bottom: 25px;

padding-bottom:15px;

border-bottom: 1pxsolid#eee;

.form-section:last-child{

border-bottom:none;

.form-sectionh3{ color:

#333;

margin-top: 0;

margin-bottom:15px;

font-size: 1.5em;

CSE/OOSE RISHIKAC/513322104027
}

.form-group{

margin-bottom:15px;

text-align: left;

width:100%;

.form-group label {

display: block; margin-

bottom:8px; font-

weight: bold; color:

#555;

.form-groupinput[type="text"],

.form-groupinput[type="email"],

.form-groupinput[type="tel"],

.form-groupinput[type="number"]{

width: calc(100% - 22px);padding:

10px;

border:1pxsolid#ccc;

border-radius: 4px;

font-size: 1em;

.form-groupinput[readonly]{

CSE/OOSE RISHIKAC/513322104027
background-color:#f9f9f9;

color: #777;

cursor:not-allowed;

.form-groupbutton{

background-color:#28a745;/*Greenbuttonforbooking*/ color:

white;

padding:12px20px;

border: none; border-

radius: 5px; cursor:

pointer; font-size:

1em;

transition:background-color0.3sease;

width: 100%;

.form-group button:hover {

background-color:#1e7e34;

/*confirmation.htmlstyles*/

.confirmation-container{

background-color:#fff;

padding: 30px;

border-radius:8px;

box-shadow:02px10pxrgba(0,0,0,0.1);

CSE/OOSE RISHIKAC/513322104027
width:80%;

max-width: 500px;

margin-bottom:20px;

text-align: center;

.confirmation-heading{ color:

#28a745;

font-size: 1.8em;

margin-bottom:20px;

.confirmation-details {

text-align: left; margin-

bottom:20px;

.detail-row{

margin-bottom:10px;

font-size: 1em;

color: #333;

display:flex;

justify-content:space-between;

.detail-label{

font-weight: bold;

margin-right:10px;

CSE/OOSE RISHIKAC/513322104027
color:#555;

.action-links { margin-

top:20px;

.action-links a {

display:inline-block;

padding:10px20px;

margin: 0 10px;

border:1pxsolid#007bff; color:

#007bff;

text-decoration:none;

border-radius: 5px;

transition:background-color0.3sease,color0.3sease;

.action-links a:hover {

background-color:#007bff;

color: white;

/*cancel.htmlstyles*/ body {

font-family:'SegoeUI',Tahoma,Geneva,Verdana,sans-serif;

background-color: #f8f9fa;

margin:0;

CSE/OOSE RISHIKAC/513322104027
padding:20px;

display: flex;

flex-direction:column;

align-items: center; min-

height: 100vh; color:

#495057;

header{

background-color:#ffc107;/*Bootstrapwarningyellow*/ color:

#212529; /* Dark text for contrast */

headerh1{

font-size: 2.2em;

font-weight:500;

.cancel-container {

background-color:#fff;

padding: 30px;

border-radius:8px;

box-shadow:0010pxrgba(0,0,0,0.1);

width:90%;

max-width: 500px;

margin-bottom:30px;

CSE/OOSE RISHIKAC/513322104027
.cancel-heading{

color: #ffc107;

font-size:1.8em;

margin-bottom:20px;

text-align: center;

.message{

margin-top: 20px;

padding: 15px;

border-radius:5px;

background-color:#fff3cd;/*Lightyellowbackground*/ color:

#85640a; /* Dark yellow text */

border:1pxsolid#ffeeba;/*Lightyellowborder*/ text-

align: center;

/*refund.htmlstyles*/

header {

background-color:#dc3545;/*Bootstrapdangerred*/ color:

#fff;

.refund-container {

background-color:#fff;

padding: 30px;

CSE/OOSE RISHIKAC/513322104027
border-radius:8px;

box-shadow:0010pxrgba(0,0,0, 0.1);

width:90%;

max-width: 500px;

margin-bottom:30px;

/*schedule.htmlstyles*/

body {

font-family:'Poppins',sans-serif;

background-image:linear-gradient(135deg,#e0f7fa,#b2ebf2); color:

#37474f;

header{

background-color:#81d4fa;/*Lightblueheader*/ color:

#fff;

border-bottom: 3pxsolid#4fc3f7;

headerh1{

font-size: 2.5em;

font-weight:700;

table{

width:90%;

max-width:900px;

CSE/OOSE RISHIKAC/513322104027
background-color: #fff;

border-collapse:collapse;

box-shadow:04px10pxrgba(0,0,0,0.1);

border-radius: 12px;

overflow:hidden;/*Tocontaintheborder-radius*/ margin-

bottom: 30px;

th,td{

padding:15px;

text-align: left;

border-bottom:1pxsolid#e0e0e0;

th{

background-color:#29b6f6;/*Brightblueheaderrow*/ color: #fff;

font-weight:600;

text-transform:uppercase;

tbodytr:nth-child(even){

background-color:#f5f5f5;/*Lightgreyforevenrows*/

tbody tr:hover{

background-color:#e1f5fe;/*Lightblueonhover */

CSE/OOSE RISHIKAC/513322104027
tda{

display:inline-block;

padding:10px15px;

background-color:#ff9800;/*Orangebookbutton*/ color: #fff;

text-decoration:none;

border-radius: 6px; font-

size: 1em;

transition:background-color0.3sease;

td a:hover{

background-color:#f57c00;

.no-trains {padding:

20px; text-

align:center; font-

size: 1.1em; color:

#d32f2f;

background-color:#ffebee;

border: 1px solid #e57373;

border-radius: 8px;

margin-bottom:20px;

/*info.html styles*/

CSE/OOSE RISHIKAC/513322104027
.passenger-info-container{

background-color: #fff;

padding: 30px;

border-radius:8px;

box-shadow:02px10pxrgba(0,0,0,0.1);

width:80%;

max-width: 500px;

margin-bottom:20px;

/*print_ticket.htmlstyles*/ body {

font-family:'Arial',sans-serif;

background-color:#f0f0f0;/*Lightgreybackgroundforviewing*/ margin:

20px;

.ticket{

background-color:#fff;/*Whitebackgroundfortheticketitself*/ border: 1px

solid #ccc;

border-radius:10px;

padding: 20px;

box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);

width:80%;/*Adjustwidthasneeded*/ max-

width: 600px;

margin:20px auto;

CSE/OOSE RISHIKAC/513322104027
color:#333;/*Darktextcolor */

.ticket-header{

justify-content:space-between;

align-items: center;

border-bottom:2pxsolid#ddd;

padding-bottom: 10px;

margin-bottom:15px;

.company-name {

font-size: 1.5em;

font-weight:bold;

color:#007bff;/*Acommonrailwaycolor*/

.ticket-details{

margin-bottom:15px;

.detail-row{

margin-bottom:8px;

font-size: 0.9em;

.detail-label{

font-weight:bold;

color: #555;

CSE/OOSE RISHIKAC/513322104027
}

.barcode{

text-align:center;

margin-top:20px;

font-size:1.2em;/*Placeholderforarealbarcode*/ color: #888;

.important-info {

margin-top:20px;

padding: 10px;

border: 1px solid #eee;

background-color:#f9f9f9;

border-radius: 5px;

font-size:0.8em; color:

#777;

.button-container {

text-align:center;

margin-top:20px;

.button-containerbutton,.button-containera{ padding: 10px

20px;

margin:010px; border:

none;

CSE/OOSE RISHIKAC/513322104027
border-radius:5px;

cursor: pointer;

text-decoration:none;

color: white;

font-weight:bold;

.print-button{

background-color:#007bff;

.download-button { background-

color:#28a745;

/*Stylesspecificallyforprinting*/ @media

print {

body{

background-color:#fff;/*Whitebackgroundforprinting*/ margin:

0;

padding:0;

font-size:10pt;/* Adjustfont size forprinting*/

.ticket {

box-shadow:none;

border:1pxsolid#000;/*Blackborderforprinting*/ width:

100%;

CSE/OOSE RISHIKAC/513322104027
max-width:none;

margin: 0;

border-radius:0;

padding:10px;/* Adjustpaddingforprinting*/

.button-container {

display:none;/*Hidebuttonswhen printing*/

/*search_train.htmlstyles*/ body

font-family:'Poppins',sans-serif;

background-image:linear-gradient(135deg,#e0f7fa,rgb(140,149,250));/*Lightbluegradient*/ color: #37474f; /*

Dark grey text */

header{

background-color:#64b5f6;/*Lightblueheader*/

headerh1{

font-size: 2.5em;

font-weight:700;

.search-container {

background-color:#fff;

CSE/OOSE RISHIKAC/513322104027
padding: 40px;

border-radius:12px;

box-shadow:04px10pxrgba(0,0,0,0.1);

width:85%;

max-width: 600px;

margin-bottom:30px;

.form-grouplabel{

display: block;

margin-bottom:10px;

font-weight: 600;

color:#546e7a;/*Slategreylabel*/ font-

size: 1.1em;

.form-groupinput[type="text"],

.form-groupinput[type="date"]{

width: calc(100% - 22px); padding:

12px;

border:1pxsolid#a7b1b8;/*Lightgreyborder*/ border-

radius: 6px;

font-size:1em;

color:#37474f;

.form-groupbutton{

CSE/OOSE RISHIKAC/513322104027
background-color:#29b6f6;/*Brightbluebutton*/ color:

#fff;

padding:15px25px;

border: none; border-

radius: 8px; cursor:

pointer; font-size:

1.2em;

transition:background-color0.3sease;

width: 100%;

box-shadow:02px4pxrgba(0,0,0,0.1);

.form-groupbutton:hover{

background-color:rgb(54,131,189);/*Darkerbrightblue*/

.flash-messages {

margin-top:30px;

width: 85%;

max-width:600px;

.flash {

padding: 18px; border-

radius: 8px; margin-

bottom:15px; font-size:

1.1em;

CSE/OOSE RISHIKAC/513322104027
}

.flash.error{

background-color:#ffcdd2;/*Lightred*/ color:

#d32f2f; /* Dark red */

border:1pxsolid #e57373;

.flash.info{

background-color:#c8e6c9;/*Lightgreen*/ color:

#388e3c; /* Dark green */

border:1pxsolid #81c784;

CSE/OOSE RISHIKAC/513322104027

You might also like