This presentation summarizes a distributed airline reservation system created by a group of students. The system allows customers to make, cancel, and view flight reservations, and allows airline representatives and administrators to manage flights and user accounts. Key aspects include a MySQL database to store user and flight data, .NET sockets for the client interface, BSD sockets for the server, and C# code to build the graphical user interface. The presentation demonstrates screenshots and discusses challenges in integrating the different programming languages and databases.
3. Presentation Overview:
Objective - To develop and design a distributed airline
reservation system.
C# (for GUI), .NET sockets (client), BSD sockets (server) with
C programming, MYSQL database, UNIX environment.
5/15/12 3
4. System Functionality:
Login required for all.
System Administrator:
- Add airline database/representative
Airline Representative:
- Add/Delete specific flights
- View its own flights
- List all customers for specific flight
- Update the airline information (email, airline name, password etc.)
Customers:
- Register as a new user
- Make/Cancel/View reservations
- Update personal information
5/15/12 4
5. Database Design:
S y ste m
a d m in is tra to r
A ir lin e r e p r e s e n t a t iv e
U se rs/ C u sto m e rs
5/15/12 5
7. Project Features:
BSD sockets (server): – well integrated with OS.
.NET sockets (client)
I/O multiplexing “select ()” used:
- application needs data sharing.
- less switching time between process.
“MySQL” database.
Encryption using MD5 algorithm.
Multi-user authentication: – Login required.
Data passed in binary format
- less BW usage, fast transmission of signals.
5/15/12 7
8. Project implementation code:
GUI: Login Example (Form - new_user_form.cs)
1 button_login_click() /* function called upon Click of login button*/
2 String username = textBox_login_username.Text.Trim().ToString(); /* read the username string
from the textbox */
3 String password = textBox_login_password.Text.Trim().ToString();
/* read the password string from the textbox */
5/15/12 8
9. Project implementation code (contd):
GUI: Login Example (contd)
4 if (flight_resv_client.attempt_login(username, password, user_info) == true)
{ /* user was authentication successfully */
}
/* Do not do anything, authentication failed */
5. attempt_login() /* form a message that will sent to the server */
6. msg.msg_id = HTON(MSG_ID_LOGIN_USER)
7. msg.username = username
8. msg.password = password
9. Steam s = tcp_client.GetStream(); /* get TCP client data stream */
10. s.write(msg, msg.Length); /* send the message to the server */
11. s.Flush(); /* flush the buffer now */
12. s.Read(user_info, sizeof(user_info)
if (user_info.success != 0 ) {
/* user was authenticated was successfully */ return (true);
} else { /* user was not authenticated */
MessageBox.Show(user_info.error); return (false);
}
5/15/12 9
1
18. Challenges:
Implementing C# and linking it with client
MYSQL database
Encrypting password using MD5
5/15/12 18
19. References:
1. http://zetacode.com/tutorials/mysqlcapitutorial/(For entire MYSQL
database implementation)
2. http://en.wikipedia.org/wiki/MySQL
3. http://www.pantz.org/software/mysql/mysqlcommands.html(for
commands)
4. TCP/IP Volume III Client server programming and application by
Stevens and Comer
5. UNIX Network Programming by Stevens and Fenner
5/15/12 19