Upload
lokesh-gautam
View
203
Download
7
Tags:
Embed Size (px)
Citation preview
A
Report on
“Railway Reservation System”
Submitted to
University of Kota, Kota
In Partial Fulfillment of the requirement for the award of the
Degree of
“Bachelor of Computer Application”
2011-2012
Guide by: Submitted by:
Mrs. Rashmi Shrivastav Shakti Singh ( Faculty LBS College) Mayur Nama
Prakash Jhala Neeraj Nagar Ravi Pathak Manish Gautam
1
ACKNOWLEDGEMENT
The extensive endeavor, bliss euphoria that accompanies the successful completion of any
task would not be complete without the expression of gratitude to the people whose guidance
and encouragement helped us in winding up this project.
We would like to thanks Miss. Bahavana jain Co-Ordinetor of LBS College Kota, Who
proved to be perennial source of inspiration to us.
We are deeply indebted to Mrs. Rashmi Shrivastav for their able guidance, cooperation and
constant encouragement throughout the period of compilation of dissertation work. We got
not only technical support from them but a lot of moral support also. We will be thankful to
them forever.
Shakti Singh Mayur Nama Prakash Jhala Neeraj Nagar Ravi Pathak Manish Gautam (BCA Final yr)
2
CERTIFICATE
This is to certify that the Minor project entitled “Railway Reservation System” has been
submitted to University of Kota, Kota in partial fulfillment of the requirements for the
award of the degree of Bachelor of Computer Application by following student of BCA final
year.
Shakti Singh Mayur Nama
Prakash Jhala Neeraj Nagar Ravi Pathak
Manish Gautam (BCA Final yr)
Guide: Principle: Mrs. Rashmi Shrivastav Dr.Vijya Kumari Singh ( faculty LBS College ) ( LBS College)
3
ABSTRACT
This system is basically concerned with the reservation and cancellation of railway tickets to
the passengers. The need of this system arose because as is the known fact that India has the
largest railway network in the whole of the world and to handle it manually is quite a tough
job. By computerizing it, we will be able to overcome many of its limitations and will be able
to make it more efficient. The handling of data and records for such a vast system is a very
complex task if done manually but it can be made much easier if the system is computerized.
It reserves and cancels seats for the passenger.
It contains information about the trains.
It contains information about the passenger.
It contains the details of reservation fees, any concessions etc.
It makes entries for reservation, waiting, cancelled tickets.
It will update for uptime and downtime trains.
4
SYNOPSIS
Objective: - Desingning a Database that gives us information about railway reservation of
tickets. This database helps railways to retrieve data as and when required in future.
Introduction:- Layout of railway reservation form and connection of this form with the
database required to store information.
PASSENGERS DATABASE: database of passengers contains following fields.
1. Name…………………………
2. Age…………………
3. Gender……………..
4. Total Number Of Passengers Travelling………
Number of Adults………..
Number Of children……..
Senior Citizen……………
5. Date Of Travel…………………
6. Class of Travel……………….
TRAIN DATABASE : database of train contains following fields.
1. Train Name………………………………..
2. Train Number……………………………..
3. Route…From…………..To………………..
4. Train Time…………………………………
5. Number of Compartments…………………..
1ST AC …………………………
2ND AC…………………………
3RD AC…………………………
Sleeper……………………………..
General……………………………
5
INTRODUCTION TO THE
ORGANIZATION
Indian Railways have been divided into 9 Zones - Western, Central, Eastern, Northern, North
Eastern, Northeast Frontier, Southern, South Central & South Eastern covering the largest
route length of over 63000 Kms of total Indian boundary. The last stations of the four
directional boundaries are West-Mumbai, South-Kanyakumari, East-Guwahati,North-Jammu.
It is the most convenient way of travelling if you are travelling on a budget. The railways
have one of the most efficient communication systems between 2 stations. The types of class
available are 1st class,AC 2tier, AC 3tier, 2nd class sleeper & chair car. The 1st class being
phased out being converted in to AC 2 tier/AC 3 tier (recently being introduced in some of
the trains).
6
INTRODUCTION TO THE RESERVATION
SYSTEM
The Indian Railways (IR) carries about 5.5 lakh passengers in reserved accommodation every
day. The computerized Passenger Reservation System (PRS) facilitates booking and
cancelling of tickets from any of the 4000 terminals (i.e. PRS booking windows) all over the
country. These tickets can be booked or cancelled for journeys commencing in any part of
India and ending in any other part, with travel times as long as 72 hours and distances up to
several thousand kilometers.
The pilot project of PRS was launched on 15 November 1985, over Northern
Railway with the installation of the Integrated Multiple Train Passenger
Reservation System (IMPRESS), an online transaction processing system
developed by the Indian Railways in association with Computer Maintenance
Corporation (CMC) Ltd., at New Delhi. The objective was to provide r e s e r v e d
a c c o m m o d a t i o n o n a n y t r a i n f r o m a n y c o u n t e r , p r e p a r a t i o n o f
t r a i n c h a r t s a n d accounting of the money collected. This application was
subsequently implemented in 1987, at Mumbai, Chennai, Kolkata and
Secunderabad. With the addition of new locations and many redefinitions, the
IMPRESS system fell short of growing expectations of the travelling public.
Hence a new application software, i.e., Country Wide Network for Computerized
Enhanced Reservation and Ticketing (CONCERT) was developed by the Centre for
Railway Information Systems (CRIS), New Delhi primarily using ‘C’ and also using
‘FORTRAN’. The application was first implemented at the Secunderabad PRS site in
September 1994 and subsequently at the o the r f ou r PRS s i t e s .
.
7
Communica t i on o f a l l t he t e rmin a l s w i th t he i r s e r ve r was e s t ab l i sh ed
u s ing Railway/Department of Telecommunication (DOT) channel lines, fibre
optic cable/microwave cha nne l s , sw i t ch es , modem, mu l t i p l ex e r s e t c . The
i n t e r -ne two rk ing o f f i ve PR S nodes was completed in April 1999.
Interconnectivity is established between the five PRS centres over 2mbps leased
Bharat Sanchar Nigam Limited (BSNL) lines. The system has the capability
of issuing reserved tickets from anywhere to anywhere, in any train, date or class between
any pair of stations from any booking terminal of the PRS. The main modules of the PRS
are the Reservation module, the Cancellation and Modification M o d u l e , t h e
C h a r t i n g M o d u l e , t h e A c c o u n t i n g M o d u l e , a n d t h e D a t a b a s e
M o d u l e .
passengers’ request for reservation, cancellation and modification of journey are handled by
the system through requisition slips. Major outputs generated by the system are Reservation
cum- journey tickets, Cancellation/Modification tickets, Reservation Charts and Daily
Terminal Cash Summary. The system is also capable of generating different types of
Management Information System (MIS) Reports. Indian railway is having ten zonal railways
namely Eastern Railway (ER), Northern Railway (NR), Southern Railway (SR), Central
Railway(CR), Western Railway (WR), South Central Railway (SCR), North Eastern Railway
(NER),South Eastern Railway (SER), North East Frontier Railway (NFR) and East Central
Railway(ECR).
8
RAILWAY RESERVATION METHODS
Online Booking
Counter Booking
ONLINE BOOKING:
This facility is given to general public by railway department. With the help of
this facility people can book their tickets through internet, sitting in their home by a single
click of the mouse. Using their credit card people can easily get their tickets done within
minutes. There are certain charges for online booking as well.
COUNTER BOOKING:
This is oldest method of booking the ticket. The reservation counters are there at
railway departments from where people can get the tickets to their respective destinations.
Nowadays there are various ticket counters, apart from railway station counters where tickets
are available.
9
MAIN OBJECTIVES OF THE PROJECT
1. The acquisition and maintenance of a relational database with the help of hardware,
communication network and software including system design.
2. To assess if the system chosen in the project operates in an adequately controlled
environment.
3. Whether the application’s controls are adequate and if the system is in
compliance with rules.
4. Adequate security from possibilities of fraud.
5. To show an effective mechanism to ensure most economic usage of available
resources.
6. The control mechanism for credit card transactions were adequate.
10
Technical Details: -
Hardware Requirement: -
- Intel Pentium processor
- Mother Board: - 845 OR 915,995
FOR PENTIUM or VIA K8M800+8237R
PLUS CHIPSET FOR AMD ATHALON
- Free Space in Hard Disk 2 GB (Minimum)
Software Requirement: -
-Front End: - Microsoft Visual Basic 6.0
-Back End: - Microsoft Access
11
Data Flow Diagram: -
Reservation
Process
Reservation
Process
Passenger
EnquiryEnquiry
Ticket generation process
Ticket generation process
Report To Admin
Report To Admin
Reservation storage file
CancellationProcessCancellationProcess
SearchingSearching
Reservation Table
Cancellation TableRailway
dept
ConfirmationProcessConfirmationProcess
Ticket Generationprocess
Ticket Generationprocess
Generate Ticket
Waiting Process
Waiting Process
Waiting
Generate report
FrmSplash
Private Sub Form_Load()
Prgbar.Value = 0
End Sub
Private Sub Timer1_Timer()
If Prgbar.Value < 100 Then
Prgbar.Value = Prgbar.Value + 2
Else
frmLogin.Show
End If
End Sub
35
frmLogin
Private Sub cmdCancel_Click()
End
End Sub
Private Sub cmdOk_Click()
If txtUserName.Text = "kota" And txtPassword.Text = "1234" Then
Unload Me
Unload frmSplash
MDIFORM1.Show
Else
MsgBox "enter correct password"
End If
End Sub
Private Sub Form_Resize()
Label1.Width = frmLogin.Width
End Sub
36
MDIFORM1
Private Sub MNU_RAIL_Click()
FRM_ABT_RAIL.Show
End Sub
Private Sub mnucan_Click()
frmcancel.Show
End Sub
Private Sub mnuExit_Click()
End
End Sub
Private Sub mnuF_Cfare_Click()
frmreserve.Show
End Sub
Private Sub mnuI_trains_Click()
frmT_SDpair.Show
End Sub
Private Sub mnuIf_detail_Click()
frmFare_enq.Show
End Sub
Private Sub mnuISCode_Click()
frmScode_enq.Show
End Sub
Private Sub MNUMAP_Click()
frmmap.Show
End Sub
37
Private Sub mnuMod_Click()
frmT_modify.Show
End Sub
Private Sub mnuR_ref_Click()
frmRefund.Show
End Sub
Private Sub mnuR_res_Click()
frmreserve.Show
End Sub
Private Sub MNUREPORT_Click()
frmReport.Show
End Sub
Private Sub mnures_Click()
frmres.Show
End Sub
Private Sub mnuT_sch_Click()
frmTschedule.Show
End Sub
Private Sub mnuT_type_Click()
frmT_detail.Show
End Sub
Private Sub mnuUser_Click()
frmUser_detail.Show
End Sub
Private Sub report_Click()
frmReport.Show
38
End Sub
Private Sub ttime_Click()
Dim temp As New ADODB.Recordset
originname = InputBox("Enter Source Name", "Source")
originname = UCase(originname)
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT * FROM STATION WHERE STATION_NAME='" &
originname & "'", db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
origincode = temp.Fields(0)
frmT_time.Show
Else
MsgBox "Source does not exist", vbInformation, "Not Exist"
Exit Sub
End If
End Sub
39
frmres
Dim rs As New ADODB.Recordset
Private Sub Combo1_Click()
rs.Open "select * from TRAINS where TRAIN_NO=" & Val(Combo1.Text), db,
adOpenDynamic
Text1.Text = rs(1)
rs.Close
End Sub
Private Sub Command1_Click()
rs.Open "select * from RESERVATION", db, adOpenDynamic, adLockOptimistic
rs.AddNew
rs.Fields(1) = Val(Combo1.Text)
rs.Fields(2) = Text1
rs.Fields(3) = Text2
rs.Fields(4) = Text3
rs.Fields(5) = Combo2.Text
rs.Fields(6) = Text4.Text
rs.Fields(7) = Text5.Text
rs.Fields(8) = Combo3
rs.Fields(9) = Check1.Value
rs.Fields(10) = DTPicker1.Value
rs.Fields(11) = "Reserv"
rs.Update
rs.Close
frmres.Hide
frmconfirm.Show
End Sub
Private Sub Command3_Click()
Unload Me
MDIFORM1.Show
End Sub
40
Private Sub Command4_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Text5 = ""
End Sub
Private Sub Form_Load()
rs.Open "select Train_No from TRAINS", db, adOpenDynamic
While Not rs.EOF
Combo1.AddItem rs(0)
rs.MoveNext
Wend
rs.Close
rs.Open "select * from COACHES", db, adOpenDynamic, adLockOptimistic
While Not rs.EOF
Combo2.AddItem (rs(1))
rs.MoveNext
Wend
rs.Close
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = onlychar(KeyAscii)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
KeyAscii = onlychar(KeyAscii)
End Sub
41
Private Sub Text3_KeyPress(KeyAscii As Integer)
KeyAscii = onlychar(KeyAscii)
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
KeyAscii = onlychar(KeyAscii)
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
KeyAscii = onlydigit(KeyAscii)
End Sub
42
frmconfirm
Dim i As Integer
Dim rs As New ADODB.Recordset
Private Sub cmdconfirm_Click()
rs.Open "SELECT * FROM FARE_DETAIL WHERE TRAIN_NO =" &
frmres.Combo1, db, adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
Label7.Caption = rs.Fields(4)
End If
rs.Close
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Unload Me
frmticket.Show
End Sub
Private Sub Form_Load()
Label14.Caption = Val(frmres.Combo1)
Label5.Caption = frmres.Text2
Label6.Caption = frmres.Text3
i = frmres.Text5
If i > 14 And i < 60 Then
Text1.Text = 1
ElseIf i And i < 14 Then
Text2.Text = 1
ElseIf i >= 60 Then
Text3.Text = 1
End If
Command2.Enabled = False
End Sub
43
frmticket
Dim rs As New ADODB.Recordset
Dim p As Integer
Private Sub Form_Load()
Text1.Text = Val(frmres.Combo1)
Text4.Text = frmres.Combo2
Label9.Caption = Val(frmconfirm.Label7)
Label11.Caption = Val(frmconfirm.Text1)
Label13.Caption = Val(frmconfirm.Text2)
Label15.Caption = Val(frmconfirm.Text3)
Text18.Text = frmres.Text1
Text19.Text = frmres.Text2
Text20.Text = frmres.Text3
Text2.Text = frmres.DTPicker1.Value
Label22.Caption = frmres.DTPicker1.Value
rs.Open "select PNR_NO from RESERVATION", db, adOpenDynamic
rs.MoveLast
Text3.Text = rs(0)
rs.Close
s_grid
f_grid
rs.Open "SELECT * FROM FARE_DETAIL WHERE TRAIN_NO =" &
frmres.Combo1, db, adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
Label9.Caption = rs.Fields(4)
End If
rs.Close
rs.Open "select * from TRAIN_SCHEDULE WHERE TRAIN_NO=" & Text1.Text, db,
adOpenDynamic
If Not rs.EOF Then
Label20.Caption = rs.Fields(1)
Label24.Caption = rs.Fields(2)
44
End If
rs.Close
End Sub
Public Sub s_grid()
With Grid
.Rows = 1
.Cols = 5
.Row = 0
.Col = 0
.Text = "Name"
.Col = 1
.Text = "Age"
.Col = 2
.Text = "Sex"
.Col = 3
.Text = "Senior Citizen"
.Col = 4
.Text = "Seat No."
End With
End Sub
Public Sub f_grid()
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * from RESERVATION WHERE PNR_NO =" &
Val(Text3.Text), db, adOpenDynamic
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = rs.Fields(6)
Grid.TextMatrix(Grid.Rows - 1, 1) = rs.Fields(7)
Grid.TextMatrix(Grid.Rows - 1, 2) = rs.Fields(8)
Grid.TextMatrix(Grid.Rows - 1, 3) = rs.Fields(9)
45
rs.MoveNext
Wend
End If
rs.Close
End Sub
Private Sub Command1_Click()
Command1.Visible = False
Dim Beginpage, EndPage, NumCopies, orientation, i
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
CommonDialog1.ShowPrinter
Beginpage = CommonDialog1.FromPage
EndPage = CommonDialog1.ToPage
NumCopies = CommonDialog1.Copies
orientation = CommonDialog1.orientation
For i = 1 To NumCopies
Form7.PrintForm
Next
Exit Sub
ErrHandler:
Exit Sub
End Sub
46
frmcancel
Dim rs As New ADODB.Recordset
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Command2_Click()
Dim cmd As New Command
cmd.ActiveConnection = db
cmd.CommandText = "Update Reservation set Status='Cancel' where PNR_NO=" &
Text1.Text
cmd.Execute
MsgBox "Cancelled"
Unload Me
Form7.Show
End Sub
Private Sub Command3_Click()
f_grid
End Sub
Private Sub Form_Load()
s_grid
End Sub
Public Sub s_grid()
With Grid
.Rows = 1
.Cols = 5
.Row = 0
.Col = 0
.Text = "Name"
.Col = 1
47
.Text = "Age"
.Col = 2
.Text = "Sex"
.Col = 3
.Text = "Senior Citizen"
.Col = 4
.Text = "Seat No."
End With
End Sub
Public Sub f_grid()
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * from RESERVATION WHERE PNR_NO =" &
Val(Text1.Text) & "and Status='Reserv'", db, adOpenDynamic
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = rs.Fields(6)
Grid.TextMatrix(Grid.Rows - 1, 1) = rs.Fields(7)
Grid.TextMatrix(Grid.Rows - 1, 2) = rs.Fields(8)
Grid.TextMatrix(Grid.Rows - 1, 3) = rs.Fields(9)
rs.MoveNext
Wend
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = onlydigit(KeyAscii)
End Sub
48
form7
Private Sub Command1_Click()
Command1.Visible = False
Dim Beginpage, EndPage, NumCopies, orientation, i
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
CommonDialog1.ShowPrinter
Beginpage = CommonDialog1.FromPage
EndPage = CommonDialog1.ToPage
NumCopies = CommonDialog1.Copies
orientation = CommonDialog1.orientation
For i = 1 To NumCopies
Form7.PrintForm
Next
Exit Sub
ErrHandler:
Exit Sub
End Sub
Private Sub Form_Load()
Label9.Caption = "Rs. 60"
Text3.Text = frmcancel.Text1
Text5.Text = frmcancel.Text1
End Sub
49
frmScode _enq
Dim rs As New ADODB.Recordset
Private Sub cmdClear_Click()
txtSname.Text = ""
End Sub
Private Sub cmdGet_Click()
txtSname.Text = UCase(txtSname.Text)
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * FROM STATION WHERE STATION_NAME='" &
txtSname.Text & "'", db, adOpenKeyset, adLockReadOnly
If rs.EOF Then
MsgBox "Sorry! no matching station found", vbInformation, "Sorry!!!!"
Exit Sub
End If
frmSname.Show
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 4470
Me.Width = 6000
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
50
Private Sub txtSname_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
End If
End Sub
51
frmSname
Dim rs As New ADODB.Recordset
Private Sub Cmdhome_Click()
Unload Me
frmScode_enq.Show
End Sub
Private Sub Form_Load()
Me.Height = 5055
Me.Width = 7470
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
Dim name As String
name = frmScode_enq.txtSname.Text
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * FROM STATION WHERE STATION_NAME='" & name & "'",
db, adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
TxtScode.Text = rs.Fields(0)
txtSname.Text = rs.Fields(1)
End If
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
52
frmT_SDpair
Private Sub cmdClear_Click()
txtDscode.Text = ""
txtSscode.Text = ""
End Sub
Private Sub cmdGet_Click()
Dim rs As New ADODB.Recordset
If rs.State = adStateOpen Then rs.Close
txtSscode.Text = UCase(txtSscode.Text)
txtDscode.Text = UCase(txtDscode.Text)
rs.Open "SELECT *FROM STATION WHERE STATION_NO='" & txtSscode.Text &
"' OR STATION_NO='" & txtDscode.Text & "'", db, adOpenKeyset, adLockReadOnly
If rs.EOF Then
MsgBox "STATION CODE DOES NOT EXIST ", vbInformation, "Not Exist"
Exit Sub
End If
frmT_Stpair.Show
End Sub
Private Sub cmdScode_Click()
frmS_detail.Show
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 6735
Me.Width = 7515
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
53
lblTime.Caption = Format(Time(), "hh:mm:ss")
fill_combo
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
Private Sub fill_combo()
Dim temp As New ADODB.Recordset
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT CLASS FROM COACHES", db, adOpenKeyset,
adLockReadOnly
If Not temp.EOF Then
temp.MoveFirst
While Not temp.EOF
cmbClass.AddItem (temp.Fields(0))
temp.MoveNext
Wend
End If
End Sub
Private Sub txtDscode_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
End If
End Sub
Private Sub txtSscode_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
End If
End Sub
54
frmT_Stpair
Dim rs As New ADODB.Recordset
Dim class As String
Dim scode As String
Dim dcode As String
Private Sub Cmdhome_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 6645
Me.Width = 8655
CenterForm Me
scode = frmT_SDpair.txtSscode.Text
dcode = frmT_SDpair.txtDscode.Text
class = frmT_SDpair.cmbClass.Text
lblEorigin.Caption = scode
lblEdest.Caption = dcode
lblEclass.Caption = class
set_grid
fill_grid
End Sub
Sub set_grid()
With grid
.Rows = 1
.Cols = 6
.Row = 0
.Col = 0
.Text = "Train No"
.Col = 1
.Text = "Train Name"
55
.Col = 2
.Text = "Origin"
.Col = 3
.Text = "Dep.Time"
.Col = 4
.Text = "Destination"
.Col = 5
.Text = "Arr.Time"
.RowHeight(0) = 650
.ColWidth(0) = 1000
.ColWidth(1) = 1800
End With
End Sub
Sub fill_grid()
Dim temp As New ADODB.Recordset
Dim TNM As New ADODB.Recordset
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT * FROM TRAIN_SCHEDULE WHERE SOURCE ='" & scode &
"' and DESTINATION = '" & dcode & "'", db, adOpenKeyset, adLockReadOnly
If TNM.State = adStateOpen Then TNM.Close
TNM.Open "SELECT A.TRAIN_NAME FROM TRAINS A , TRAIN_SCHEDULE B
WHERE A.TRAIN_NO=B.TRAIN_NO AND SOURCE ='" & scode & "' and
DESTINATION = '" & dcode & "'", db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
temp.MoveFirst
TNM.MoveFirst
While Not temp.EOF
grid.Rows = grid.Rows + 1
grid.TextMatrix(grid.Rows - 1, 0) = temp.Fields(0)
grid.TextMatrix(grid.Rows - 1, 2) = temp.Fields(3)
grid.TextMatrix(grid.Rows - 1, 3) = temp.Fields(2)
grid.TextMatrix(grid.Rows - 1, 4) = temp.Fields(4)
grid.TextMatrix(grid.Rows - 1, 5) = temp.Fields(1)
56
frmfare _enq
Dim rs As New ADODB.Recordset
Private Sub cmdClear_Click()
txtT_no.Text = ""
txtOs_code.Text = ""
txtDs_code.Text = ""
txtAge.Text = ""
End Sub
Private Sub cmdGet_Click()
CHECK_SCODE
check_tno
Me.Hide
frmF_detail.Show
End Sub
Private Sub cmdScode_Click()
frmS_detail.Show
End Sub
Private Sub cmdTno_Click()
frmT_detail.Show
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 8055
Me.Width = 7500
CenterForm Me
58
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
clear_controls
FILL_CMBCLASS
fill_cmbcatg
End Sub
Private Sub FILL_CMBCLASS()
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT CLASS FROM COACHES", db, adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
cmbClass.AddItem (rs.Fields(0))
rs.MoveNext
End If
cmbClass.ListIndex = 0
End Sub
Private Sub txtAge_KeyPress(KeyAscii As Integer)
If (KeyAscii < Asc(0) Or KeyAscii > Asc(9)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub fill_cmbcatg()
cmbCatg.AddItem ("GENERAL")
cmbCatg.AddItem ("MINISTER")
cmbCatg.AddItem ("BHARAT SCOUTS/GUIDES")
cmbCatg.AddItem ("BLIND")
cmbCatg.AddItem ("CANCER PATIENT")
cmbCatg.ListIndex = 0
End Sub
Private Sub CHECK_SCODE()
Dim temp As New ADODB.Recordset
59
temp.Open "SELECT STATION_NO FROM STATION WHERE STATION_NO='" &
txtOs_code.Text & "'", db, adOpenKeyset, adLockReadOnly
If temp.EOF Then
MsgBox "ORIGINATING STATION CODE DOES NOT EXIST ", vbInformation,
"Not Exist"
Exit Sub
End If
temp.Close
temp.Open "SELECT STATION_NO FROM STATION WHERE STATION_NO='" &
txtDs_code.Text & "'", db, adOpenKeyset, adLockReadOnly
If temp.EOF Then
MsgBox "DESTINATION STATION CODE DOES NOT EXIST ", vbInformation, "Not
Exist"
Exit Sub
End If
End Sub
Private Sub check_tno()
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT TRAIN_NAME FROM TRAINS WHERE TRAIN_NO=" &
Val(txtT_no.Text), db, adOpenKeyset, adLockReadOnly
If rs.EOF Then
MsgBox "Sorry Train Number for which you are queried is not exist", vbInformation,
"Not Exist"
Exit Sub
End If
End Sub
Private Sub clear_controls()
txtAge.Text = ""
txtDs_code.Text = ""
txtOs_code.Text = ""
txtT_no.Text = ""
End Sub
60
Private Sub txtDs_code_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
End If
End Sub
Private Sub txtOs_code_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
End If
End Sub
Private Sub txtT_no_KeyPress(KeyAscii As Integer)
If (KeyAscii < Asc(0) Or KeyAscii > Asc(9)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
61
frmF_detail
Dim rs As New ADODB.Recordset
Dim tno As Integer
Dim scode As String
Dim dcode As String
Dim class As String
Dim age As Integer
Dim cat As String
Dim total As Long
Private Sub Cmdhome_Click()
Unload Me
frmFare_enq.Show
End Sub
Private Sub Form_Load()
Dim c_no As String
Dim temp As New ADODB.Recordset
Me.Height = 7200
Me.Width = 8000
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
tno = Val(frmFare_enq.txtT_no.Text)
scode = frmFare_enq.txtOs_code.Text
dcode = frmFare_enq.txtDs_code.Text
class = frmFare_enq.cmbClass.Text
cat = frmFare_enq.cmbCatg.Text
If frmFare_enq.txtAge.Text <> "" Then
age = Val(frmFare_enq.txtAge.Text)
End If
set_grid
fill_grid
62
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT COACH_NO FROM COACHES WHERE CLASS ='" & class & "'",
db, adOpenKeyset, adLockReadOnly
c_no = rs.Fields(0)
rs.Close
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT * FROM FARE_DETAIL WHERE COACH_NO = '" & c_no & "'
AND TRAIN_NO =" & tno, db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
txtB_ch.Text = temp.Fields(2)
txtR_fare.Text = temp.Fields(3)
End If
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT AMOUNT FROM STATION_DETAIL WHERE SOURCE='" &
scode & "' AND DESTINATION='" & dcode & "'", db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
txtDist_ch.Text = temp.Fields(0)
End If
total = Val(txtB_ch.Text) + Val(txtR_fare.Text) + Val(txtDist_ch.Text)
If age < 12 Then
If cat = "BLIND" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
ElseIf cat = "CANCER PATIENT" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
ElseIf cat = "BHARAT SCOUTS/GUIDES" Then
txtTot.Text = total / 2
txtCsn.Text = "50%"
Else
txtTot.Text = total / 2
txtCsn.Text = "50%"
End If
ElseIf age <= 60 Then
63
If cat = "BLIND" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
ElseIf cat = "CANCER PATIENT" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
ElseIf cat = "BHARAT SCOUTS/GUIDES" Then
txtTot.Text = total / 2
txtCsn.Text = "50%"
Else
txtTot.Text = total
txtCsn.Text = "NIL"
End If
ElseIf age > 60 Then
If cat = "BLIND" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
ElseIf cat = "CANCER PATIENT" Then
txtTot.Text = total * 0.75
txtCsn.Text = "75%"
Else
txtTot.Text = total / 2
txtCsn.Text = "50%"
End If
End If
End Sub
64
Sub fill_grid()
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = tno
Grid.TextMatrix(Grid.Rows - 1, 1) = scode
Grid.TextMatrix(Grid.Rows - 1, 2) = dcode
Grid.TextMatrix(Grid.Rows - 1, 3) = class
Grid.TextMatrix(Grid.Rows - 1, 4) = age
Grid.TextMatrix(Grid.Rows - 1, 5) = cat
End Sub
Sub set_grid()
With Grid
.Rows = 1
.Cols = 6
.Row = 0
.Col = 0
.Text = "Train No."
.Col = 1
.Text = "Source"
.Col = 2
.Text = "Destination"
.Col = 3
.Text = "Class"
.Col = 4
.Text = "Age"
.Col = 5
.Text = "Category"
.RowHeight(0) = 650
.ColWidth(0) = 900
.ColWidth(1) = 1200
.ColWidth(2) = 1200
.ColWidth(3) = 1200
.ColWidth(4) = 1200
65
frmTschedule
Dim rs As New ADODB.Recordset
Dim temp As New ADODB.Recordset
Private Sub cmdClear_Click()
txtDs_code.Text = ""
txtOs_code = ""
txtTno.Text = ""
End Sub
Private Sub cmdClick_Click()
frmS_detail.Show
End Sub
Private Sub cmdGet_Click()
If rs.State = adStateOpen Then rs.Close
If temp.State = adStateOpen Then temp.Close
txtOs_code.Text = UCase(txtOs_code.Text)
txtDs_code.Text = UCase(txtDs_code.Text)
rs.Open "SELECT TRAIN_NAME FROM TRAINS WHERE TRAIN_NO=" &
Val(txtTno.Text), db, adOpenKeyset, adLockReadOnly
temp.Open "SELECT STATION_NO FROM STATION WHERE STATION_NO='" &
txtOs_code.Text & "'", db, adOpenKeyset, adLockReadOnly
If temp.EOF Then
MsgBox "ORIGINATING STATION CODE DOES NOT EXIST ", vbInformation,
"Not Exist"
Exit Sub
End If
temp.Close
temp.Open "SELECT STATION_NO FROM STATION WHERE STATION_NO='" &
txtDs_code.Text & "'", db, adOpenKeyset, adLockReadOnly
If temp.EOF Then
67
MsgBox "DESTINATION STATION CODE DOES NOT EXIST ", vbInformation,
"Not Exist"
Exit Sub
End If
If rs.EOF Then
MsgBox "Sorry Train Number for which you are queried is not exist", vbInformation,
"Not Exist"
Exit Sub
Else
frmT_route.Show
End If
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 6285
Me.Width = 7470
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
End Sub
Private Sub txtDs_code_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
KeyAscii = 0
Else
End If
End Sub
Private Sub txtOs_code_KeyPress(KeyAscii As Integer)
If KeyAscii >= 48 And KeyAscii <= 57 Then
68
KeyAscii = 0
End If
End Sub
Private Sub txtTno_KeyPress(KeyAscii As Integer)
If (KeyAscii < Asc(0) Or KeyAscii > Asc(9)) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
69
frmT_route
Dim rs As New ADODB.Recordset
Dim temp As New ADODB.Recordset
Dim tno As Integer
Dim Source As String
Dim desc As String
Private Sub Cmdhome_Click()
frmTschedule.Show
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 5670
Me.Width = 10785
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
tno = Val(frmTschedule.txtTno.Text)
Source = frmTschedule.txtOs_code.Text
desc = frmTschedule.txtDs_code.Text
lblETno.Caption = tno
If rs.State = adStateOpen Then rs.Close
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT STATION_NAME FROM STATION", db, adOpenKeyset,
adLockReadOnly
rs.Open "SELECT TRAIN_NAME FROM TRAINS WHERE TRAIN_NO=" & tno, db,
adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
lblETname.Caption = rs.Fields(0)
lblEScode.Caption = Source
End If
If Not temp.EOF Then
70
lblESource.Caption = temp.Fields(0)
lblESname.Caption = temp.Fields(0)
End If
runs_on
End Sub
Private Sub runs_on()
Dim trs As New ADODB.Recordset
If trs.State = adStateOpen Then trs.Close
trs.Open "SELECT * FROM TRAIN_SCHEDULE WHERE TRAIN_NO = " & tno &
"AND SOURCE='" & Source & "' AND DESTINATION= '" & desc & "'", db,
adOpenKeyset, adLockReadOnly
If Not trs.EOF Then
If trs.Fields("MON").Value = "T" Then
lblM.Caption = "MON"
Else
lblM.Caption = ""
End If
If trs.Fields("TUE").Value = "T" Then
lblT.Caption = "TUE"
Else
lblT.Caption = ""
End If
If trs.Fields("WED").Value = "T" Then
lblW.Caption = "WED"
Else
lblW.Caption = ""
End If
If trs.Fields("THU").Value = "T" Then
lblTh.Caption = "THU"
Else
lblTh.Caption = ""
End If
If trs.Fields("FRI").Value = "T" Then
71
lblF.Caption = "FRI"
Else
lblF.Caption = ""
End If
If trs.Fields("SAT").Value = "T" Then
lblSat.Caption = "SAT"
Else
lblSat.Caption = ""
End If
If trs.Fields("SUN").Value = "T" Then
lblSun.Caption = "SUN"
Else
lblSun.Caption = ""
End If
lblEAtime.Caption = trs.Fields("ARRIVAL_TIME").Value
lblEDtime.Caption = trs.Fields("DEPARTURE_TIME").Value
End If
If trs.State = adStateOpen Then trs.Close
trs.Open "SELECT DISTANCE FROM STATION_DETAIL WHERE SOURCE='" &
Source & "' AND DESTINATION='" & desc & "'", db, adOpenKeyset, adLockReadOnly
If Not trs.EOF Then
lblEDist.Caption = trs.Fields(0)
End If
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
72
frmT_detail
Private Sub Cmdhome_Click()
Unload Me
End Sub
Private Sub Form_Load()
set_grid
fill_grid
Me.Height = 5500
Me.Width = 7210
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
End Sub
Sub fill_grid()
Dim temp As New ADODB.Recordset
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT * FROM TRAINS", db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
temp.MoveFirst
While Not temp.EOF
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = temp.Fields(0)
Grid.TextMatrix(Grid.Rows - 1, 1) = temp.Fields(1)
Grid.TextMatrix(Grid.Rows - 1, 2) = temp.Fields(2)
temp.MoveNext
Wend
End If
End Sub
Sub set_grid()
With Grid
73
.Rows = 1
.Cols = 3
.Row = 0
.Col = 0
.Text = "Train No."
.Col = 1
.Text = "Train Name"
.Col = 2
.Text = "Train Type"
.RowHeight(0) = 650
.ColWidth(0) = 1000
.ColWidth(1) = 2500
.ColWidth(2) = 2500
End With
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
74
frmT_time
Private Sub Cmdhome_Click()
Unload Me
End Sub
Private Sub Form_Load()
lblSource.Caption = originname
set_grid
fill_grid
Me.Height = 5000
Me.Width = 10000
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
End Sub
Private Sub set_grid()
With Grid
.Rows = 1
.Cols = 11
.Row = 0
.Col = 0
.Text = "Train No."
.Col = 1
.Text = "Train Name"
.Col = 2
.Text = "Arrival Time"
.Col = 3
.Text = "Departure Time"
.Col = 4
.Text = "Mon"
.Col = 5
.Text = "Tue"
75
.Col = 6
.Text = "Wed"
.Col = 7
.Text = "Thu"
.Col = 8
.Text = "Fri"
.Col = 9
.Text = "Sat"
.Col = 10
.Text = "Sun"
.ColWidth(0) = 800
.ColWidth(1) = 1500
.ColWidth(2) = 1800
.ColWidth(3) = 2000
.ColWidth(4) = 450
.ColWidth(5) = 450
.ColWidth(6) = 600
.ColWidth(7) = 450
.ColWidth(8) = 450
.ColWidth(9) = 450
.ColWidth(10) = 450
End With
End Sub
Private Sub fill_grid()
Dim temp As New ADODB.Recordset
If temp.State = adStateOpen Then temp.Close
temp.Open "SELECT
T.TRAIN_NO,T.TRAIN_NAME,TS.ARRIVAL_TIME,TS.DEPARTURE_TIME,
TS.MON,TS.TUE,TS.WED,TS.THU,TS.FRI,TS.SAT,TS.SUN FROM TRAINS
T,TRAIN_SCHEDULE TS WHERE T.TRAIN_NO =TS.TRAIN_NO AND
TS.SOURCE='" & origincode & "'", db, adOpenKeyset, adLockReadOnly
If Not temp.EOF Then
temp.MoveFirst
76
While Not temp.EOF
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = temp.Fields(0)
Grid.TextMatrix(Grid.Rows - 1, 1) = temp.Fields(1)
Grid.TextMatrix(Grid.Rows - 1, 2) = temp.Fields(2)
Grid.TextMatrix(Grid.Rows - 1, 3) = temp.Fields(3)
Grid.TextMatrix(Grid.Rows - 1, 4) = temp.Fields(4)
Grid.TextMatrix(Grid.Rows - 1, 5) = temp.Fields(5)
Grid.TextMatrix(Grid.Rows - 1, 6) = temp.Fields(6)
Grid.TextMatrix(Grid.Rows - 1, 7) = temp.Fields(7)
Grid.TextMatrix(Grid.Rows - 1, 8) = temp.Fields(8)
Grid.TextMatrix(Grid.Rows - 1, 9) = temp.Fields(9)
Grid.TextMatrix(Grid.Rows - 1, 10) = temp.Fields(10)
temp.MoveNext
Wend
End If
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
77
frmreservation
Private Sub Cmdhome_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 5790
Me.Width = 8430
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
Call set_grid
Call fill_grid
End Sub
Sub fill_grid()
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Senior Citizen"
Grid.TextMatrix(Grid.Rows - 1, 1) = "50%"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Minister"
Grid.TextMatrix(Grid.Rows - 1, 1) = "100%"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Cancer Patient"
Grid.TextMatrix(Grid.Rows - 1, 1) = "75% "
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Bharat Scouts/Guides"
Grid.TextMatrix(Grid.Rows - 1, 1) = "50%"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Children Below 12yrs "
Grid.TextMatrix(Grid.Rows - 1, 1) = "50%"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Blind Concession "
78
Grid.TextMatrix(Grid.Rows - 1, 1) = "75%"
End Sub
Sub set_grid()
With Grid
.Rows = 1
.Cols = 2
.Row = 0
.Col = 0
.Text = "Category"
.Col = 1
.Text = "Concession"
.RowHeight(0) = 650
.ColWidth(0) = 3000
.ColWidth(1) = 2500
End With
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
79
frmRefund
Private Sub Cmdhome_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Height = 5925
Me.Width = 9975
CenterForm Me
lblDate.Caption = Format(Date, "dddd,mmmm dd,yyyy")
lblTime.Caption = Format(Time(), "hh:mm:ss")
Call set_grid
Call fill_grid
End Sub
Sub fill_grid()
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Before 3 hours of train departure"
Grid.TextMatrix(Grid.Rows - 1, 1) = "20 Rs."
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Upto 3 hours of train departure"
Grid.TextMatrix(Grid.Rows - 1, 1) = "25% of total amount"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "After 3 hours of train departure"
Grid.TextMatrix(Grid.Rows - 1, 1) = "50% of total amount"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "After 12 hours of train departure"
Grid.TextMatrix(Grid.Rows - 1, 1) = "75% of total amount"
Grid.Rows = Grid.Rows + 1
Grid.TextMatrix(Grid.Rows - 1, 0) = "Otherwise"
Grid.TextMatrix(Grid.Rows - 1, 1) = "None"
End Sub
80
Sub set_grid()
With Grid
.Rows = 1
.Cols = 2
.Row = 0
.Col = 0
.Text = "Time Of Cancellation"
.Col = 1
.Text = "Cancellation Charge"
.RowHeight(0) = 750
.ColWidth(0) = 4000
.ColWidth(1) = 3500
End With
End Sub
Private Sub Timer1_Timer()
lblTime.Caption = Time
End Sub
81
FRM_ABT_RAIL
Private Sub CMDNEXT_Click()
FRMINTRO.Show
End Sub
Private Sub Form_Load()
Height = 11520
Width = 11325
End Sub
82
frmreport
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdShow_Click()
If optres.Value = True Then
resreport.Show
End If
If optcancel.Value = True Then
cancelreport.Show
End If
End Sub
Private Sub Form_Load()
Height = 7725
Width = 10890
End Sub
84
FEATURES OF VISUAL BASIC
Highlights
Addressing and changing Forms,
Controls and records
Responding to clicks, typing and other events.
The VBA-language itself is rather simple and has the same components as many other
programming languages, for instance Java and C++. The difficult part is how the program
cooperates with the built-in objects and how these objects really work. This is our focus in
this chapter
88
The objects in Access
Access concepts: tables, queries, forms, and controls. How do they relate to each other? When we work
with Access, we work with two different systems, the SQL engine and Access. The Access is primarily a
tool for accessing data in databases through user windows (forms). Access can also work with other
SQL engines than Jet, for instance Oracle. When doing this, we may lose some designer features but gain
other qualities, for instance speed and reliability.
Databases: Access can handle and connect to several open databases at the same time.
Recordsets, tables and queries: A database contains a number of recordsets. Some
recordsets are tables, others are queries (shown as subclasses). Each recordset has a
description for each of its fields. The description includes the field name, the field
type, format, etc. A query has also an SQL-property - the text that describes how to
compute the records in the query. Tables and queries play much the same role. Both
of them can for instance be the record source for a Form.
Records and fields: Each recordset contains a number of records, and each record
contains a number of fields. Each field has only one attribute, the value stored in the
field. We can see the records in Datasheet view. We look either directly into a table or
into records selected and computed by a query.
Access instances: Access window has a title bar and a database window inside. The
Access window corresponds to an object in the Access class.
89
Visual Basic tools
The Visual Basic window may contain many frames. In Access 2000 and 2003, 2007 they
may be docked inside the window or undocked , i.e. floating as separate small windows. By
accident it can be docked or undocked, and it may be very frustrating trying to get
them back where it is wanted. The frame will dock somewhere along a side of the
window. Where it docks does not depend on where the frame is when the mouse button is
released. It depends on where the mouse pointer is when we release the button.
Project Explorer: To the left there is a list of all forms in the database. In object-
oriented terminology, each form is a class. The class has a code module with event
procedures for the controls on the form. When you double-click a form on the list,
you will see the code module to the right in the Visual Basic window. The database
may also contain code modules (classes) that are not forms. They are shown at the
bottom of the Project Explorer list. All code modules may contain procedures and
declare variables. VBA offers three kinds of modules:
Form module: A form module has event procedures for all controls on the form, and
it may have ordinary procedures too. It may declare variables. When you open a form,
you get an object based on the form class. The object is a visible form and it has a set
of variables corresponding to the declarations. We get more form objects, appearing
as other open copies of the form. Each copy has its own variables, but the same code.
When the code uses addresses such as Me.txtName , it refers to the controls and
variables of this particular copy of the form.
Class module: A class module corresponds to a class in other object-oriented
languages. It has procedures and declares variables, and you can create multiple
objects based on the class, each with their own variables. The only difference between
form modules and class modules is that the latter are not visible to the user and have
no controls.
Module (simple): A simple module is similar to a class but there is only one object
based on the module. The system creates this object automatically. The first versions
of Visual Basic had no class modules, only simple module.
90
Code window: To the right in the Visual Basic window, there is a code window with
the Visual Basic program. Scroll to other event procedures and controls, or they can
be selected by means of the two combo boxes at the top.
Creating an event procedure: Initially, the event procedures are not in the code, but if we
select one of them by means of the combo boxes,Visual Basic creates it. The same thing
happens if an event procedure is selected through the control's property window. However,
Access doesn't always coordinate these two things. An event procedure may be created in the
code window, but it doesn't appear in the property box. As a result, Access never calls the
event procedure.
91
FEATURES OF MS - ACCESS BASED
USER INTERFACES
Highlights
• Construct user windows ( Forms).
• Add fields, sub-windows, etc. (Controls).
• Construct menus and other details.
An Access-based user interface consists of user windows (called Forms in Access) ,menus,
and all the little things such as error messages (message boxes) and pop up help when the
cursor rests on a field (control tips). These are the things the user sees on the screen. Access
provides a lot of built-in functionality that makes the user interface respond to user actions.
However, for a real system the built-in functionality is rarely sufficient, and you will have to
add program pieces written in Visual Basic.
Forms and simple controls: This window helps the ticket booker to find a passenger
or a booking in the database. Any railways may have more than 100,000 passangers in
the database. In the Access world, the window consists of a Form with various
Controls on it. A control may be a simple field such as Last name, a button such as
Find guest , an area for a list of records such as the list of stays, and several other
things.
Text box, label and command button: The screen should show a toolbox window
where choosing between various controls. If it doesn't, use View -> Toolbox to see it.
The Text Box tool looks like ab | . It should be two grid units high and about ten units
wide. At this stage, the controls may not be properly aligned and sized. Access has
automatically added a label part to the left of the field. If we double click the text
box icon in the toolbox, the draw tool remains selected for many text boxes.
Creating a database:
Transform the data model to a database in M S Access.
Use lookup-fields to enter foreign keys and enumeration types.
92
SCOPE OF THE PROJECT
1. The scope of project included evaluation of the application and was primarily concerned with the
transactions related to booking of tickets from the terminals operated by the railway personnel.
2. Application controls, simulation and online enquiries were used to evaluate data validation and
program logic. The selected data, as made available, for substantive checking of the completeness,
integrity and consistency of data using computer assisted applications such as VB, MS Access and
Structured Query Language (SQL).
3. The records maintained in the database of the railways reservation centre were also reviewed.
Discussions were held with the database users to gain understanding regarding the various functional
aspects of the system.
93
REASONS FOR SELECTING THIS SYSTEM IN PROJECT
Indian Railways is huge. There are umpteen number of database in its system. The use
of MS Access and Visual Basic enables the person at the booking counter a
customized and easy retrieval of information.
An online ticketing database allows the users of the Indian Railways Reservation
System to track the whereabouts of their travel. The passengers who need to know
whether they are in waiting list or confirmed need not travel to the ticket counter or
call railway service system. With the help of an online system they can show the
information in a click.
In case of cancellation, the online system instantly credits the amount from the
passengers’ account.
It updates the changes instantly, thus, the user working on the database will not have
togo to each database and make the changes.
94
MARKET POTENTIAL & COMPETITIVE
ADVANTAGE
No one can easily plan the journey comfortably as the process is efficient and fast with being
easy to access. Reservations can be made through the Indian railways site or at the sample
reservation centers all over the country. Also now there are authorized agencies which
provide reservation facility on behalf of India railways and without waiting in long line one
can easily book a ticket. The booking is done through an E- Ticket issue which has a PNR
number of which one has to take a print and just have to show at the station.
It not only provides reservation but cancellation can also be done through this system at ease
and one can use a credit card to complete the process.
This being a big step in terms of improvement in the railway system it is widely accepted
across the country.
95
CONCLUSION
This project is about the designing the railway reservation database system using
M S Access, and Visual Basic 6.0. This project presents an investigative view of present
railway reservation system including the history of railways and detail of network topology
of PRS. Present system of Indian railway reservation system is having some
shortcoming on which we have tried to work on that to eliminate the disadvantages.
We have made a database for passengers and trains and connected
these two tables from the custom made data entry form built in Visual Basic 6.0.
There are options for new entry which will be stored in M S Access database and
retrieved from database in future.
This project was a small attempt to make the railway reservation database system
using M S Access, and Visual Basic 6.0. We have talked with some of railway
officers about the features and shortcoming of present railway reservation system
after the research with the associated peop l e and o the r sou rce s we we re ab l e
t o found ou t some o f t he ma jo r f a c t s r ega rd ing t he reservation system and
tried to eliminate the shortcoming of system.
I n t he l a s t we conc lude t ha t I nd i an Ra i lway i s
hav ing a s t r ong IT In f r a s t ruc tu r e and a we l l - equipped railway reservation
system but there is some shortcoming in the system on which we have tried to work
on it and successfully completed our project.
96
FUTURE
If anyone wants to extend this project then he or she can make an additional database and
database for updated availability of seats which is available after the cancellation of ticket on
that specific train. Etc.
He or she can also add some more command buttons in the existing software and extend
working of the existing software.
97
REFERENCE
Reference Books: - Steven Holzner-Visual Basic 6 Programming (Black Book) Gary Cornell-Visual Basic 6 form the Ground up- Tata McGraw Hill
Noel Jerke-Visual Basic 6-Tata McGraw Hill
Reference Sites: - http://www.5starsupport.com/info/vb.htm
http://www.devdos.com/vb/Visual_Basic.shtml
http://www.visual-basic-dox.net
http://www.vb6.us/tutorials/conditional-expressions-visual-basic-tutorial
98