Skip to main content

Online Bus Booking System

Language

This is an online bus ticket/booking system. With this system bus company owners can easily manage the bookings/reservations for seats in their buses. Company owners can manage bus routes, bus availability and list all the buses and seats. With this system customers cannot book for seats that have already been booked. Customers can not also create double reservation. For example if a customer has booked seat A10:DATE:today BUS:1 The same customer cannot also go and book SEAT A20:DATE:today BUS:1 same departure time. Customers can only make reservations for buses and routes that are made available by admin or company management. This is to avoid confusions and enable proper planning and descition making. The system admin can view summary reports of all and or fundamental activities within the system and be able to tell how the system is working from the rich insights from the summaries. Customers can print receipts upon successfull booking and or can go to the booking agent to print the receipt and confirm payment. --------INSTALLATION-------- After extracting the zip file in the root directory of your local server/online server. Go to the folder named INSTALL. Find a file named busbooking.sql. Go to phpmyadmin and create a database named busbooking. Import the file we named above busbooking.sql to create all the required tables for our system. After successfull import you can now use the system. ==LOGIN DETAILS== ADMIN user:admin pass:admin ==CUSTOMER== create a new customer account using the sign up button on the login page!!!

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Comments

Submitted bytestakdoc (not verified)on Mon, 12/03/2018 - 09:29

hello guys any way to bypass the trial so I can add on lists?
Submitted byblec (not verified)on Wed, 05/29/2019 - 11:59

thank you ronnie nice project
Submitted byVanso (not verified)on Fri, 09/11/2020 - 05:46

  1. <?php
  2. // This script and data application were generated by AppGini 5.71
  3. // Download AppGini for free from https://bigprof.com/appgini/download/
  4.  
  5. $currDir=dirname(__FILE__);
  6. include("$currDir/defaultLang.php");
  7. include("$currDir/language.php");
  8. include("$currDir/lib.php");
  9. @include("$currDir/hooks/seats.php");
  10. include("$currDir/seats_dml.php");
  11.  
  12. // mm: can the current member access this page?
  13. $perm=getTablePermissions('seats');
  14. if(!$perm[0]){
  15. echo error_message($Translation['tableAccessDenied'], false);
  16. echo '<script>setTimeout("window.location=\'index.php?signOut=1\'", 2000);</script>';
  17. }
  18.  
  19. $x = new DataList;
  20. $x->TableName = "seats";
  21.  
  22. // Fields that can be displayed in the table view
  23. $x->QueryFieldsTV = array(
  24. "`seats`.`id`" => "id",
  25. "`seats`.`name`" => "name"
  26. );
  27. // mapping incoming sort by requests to actual query fields
  28. $x->SortFields = array(
  29. 1 => '`seats`.`id`',
  30. 2 => 2
  31. );
  32.  
  33. // Fields that can be displayed in the csv file
  34. $x->QueryFieldsCSV = array(
  35. "`seats`.`id`" => "id",
  36. "`seats`.`name`" => "name"
  37. );
  38. // Fields that can be filtered
  39. $x->QueryFieldsFilters = array(
  40. "`seats`.`id`" => "ID",
  41. "`seats`.`name`" => "Name"
  42. );
  43.  
  44. // Fields that can be quick searched
  45. $x->QueryFieldsQS = array(
  46. "`seats`.`id`" => "id",
  47. "`seats`.`name`" => "name"
  48. );
  49.  
  50. // Lookup fields that can be used as filterers
  51. $x->filterers = array();
  52.  
  53. $x->QueryFrom = "`seats` ";
  54. $x->QueryWhere = '';
  55. $x->QueryOrder = '';
  56.  
  57. $x->AllowSelection = 1;
  58. $x->HideTableView = ($perm[2]==0 ? 1 : 0);
  59. $x->AllowDelete = $perm[4];
  60. $x->AllowMassDelete = true;
  61. $x->AllowInsert = $perm[1];
  62. $x->AllowUpdate = $perm[3];
  63. $x->SeparateDV = 1;
  64. $x->AllowDeleteOfParents = 0;
  65. $x->AllowFilters = 1;
  66. $x->AllowSavingFilters = 0;
  67. $x->AllowSorting = 1;
  68. $x->AllowNavigation = 1;
  69. $x->AllowPrinting = 1;
  70. $x->AllowCSV = 1;
  71. $x->RecordsPerPage = 20;
  72. $x->QuickSearch = 1;
  73. $x->QuickSearchText = $Translation["quick search"];
  74. $x->ScriptFileName = "seats_view.php";
  75. $x->RedirectAfterInsert = "seats_view.php?SelectedID=#ID#";
  76. $x->TableTitle = "Seats";
  77. $x->TableIcon = "resources/table_icons/chair.png";
  78. $x->PrimaryKey = "`seats`.`id`";
  79. $x->DefaultSortField = '1';
  80. $x->DefaultSortDirection = 'desc';
  81.  
  82. $x->ColWidth = array( 150);
  83. $x->ColCaption = array("Name");
  84. $x->ColFieldName = array('name');
  85. $x->ColNumber = array(2);
  86.  
  87. // template paths below are based on the app main directory
  88. $x->Template = 'templates/seats_templateTV.html';
  89. $x->SelectedTemplate = 'templates/seats_templateTVS.html';
  90. $x->TemplateDV = 'templates/seats_templateDV.html';
  91. $x->TemplateDVP = 'templates/seats_templateDVP.html';
  92.  
  93. $x->ShowTableHeader = 1;
  94. $x->TVClasses = "";
  95. $x->DVClasses = "";
  96. $x->HighlightColor = '#FFF0C2';
  97.  
  98. // mm: build the query based on current member's permissions
  99. $DisplayRecords = $_REQUEST['DisplayRecords'];
  100. if(!in_array($DisplayRecords, array('user', 'group'))){ $DisplayRecords = 'all'; }
  101. if($perm[2]==1 || ($perm[2]>1 && $DisplayRecords=='user' && !$_REQUEST['NoFilter_x'])){ // view owner only
  102. $x->QueryFrom.=', membership_userrecords';
  103. $x->QueryWhere="where `seats`.`id`=membership_userrecords.pkValue and membership_userrecords.tableName='seats' and lcase(membership_userrecords.memberID)='".getLoggedMemberID()."'";
  104. }elseif($perm[2]==2 || ($perm[2]>2 && $DisplayRecords=='group' && !$_REQUEST['NoFilter_x'])){ // view group only
  105. $x->QueryFrom.=', membership_userrecords';
  106. $x->QueryWhere="where `seats`.`id`=membership_userrecords.pkValue and membership_userrecords.tableName='seats' and membership_userrecords.groupID='".getLoggedGroupID()."'";
  107. }elseif($perm[2]==3){ // view all
  108. // no further action
  109. }elseif($perm[2]==0){ // view none
  110. $x->QueryFields = array("Not enough permissions" => "NEP");
  111. $x->QueryFrom = '`seats`';
  112. $x->QueryWhere = '';
  113. $x->DefaultSortField = '';
  114. }
  115. // hook: seats_init
  116. $render=TRUE;
  117. if(function_exists('seats_init')){
  118. $args=array();
  119. $render=seats_init($x, getMemberInfo(), $args);
  120. }
  121.  
  122. if($render) $x->Render();
  123.  
  124. // hook: seats_header
  125. $headerCode='';
  126. if(function_exists('seats_header')){
  127. $args=array();
  128. $headerCode=seats_header($x->ContentType, getMemberInfo(), $args);
  129. }
  130. if(!$headerCode){
  131. include_once("$currDir/header.php");
  132. }else{
  133. ob_start(); include_once("$currDir/header.php"); $dHeader=ob_get_contents(); ob_end_clean();
  134. echo str_replace('<%%HEADER%%>', $dHeader, $headerCode);
  135. }
  136.  
  137. echo $x->HTML;
  138. // hook: seats_footer
  139. $footerCode='';
  140. if(function_exists('seats_footer')){
  141. $args=array();
  142. $footerCode=seats_footer($x->ContentType, getMemberInfo(), $args);
  143. }
  144. if(!$footerCode){
  145. include_once("$currDir/footer.php");
  146. }else{
  147. ob_start(); include_once("$currDir/footer.php"); $dFooter=ob_get_contents(); ob_end_clean();
  148. echo str_replace('<%%FOOTER%%>', $dFooter, $footerCode);
  149. }
  150. ?>

Add new comment