GIỚI THIỆU BÀI TOÁN
Đặt vấn đề
Công nghệ thông tin đã thay đổi cách chúng ta làm việc và quản lý thông tin Trong lĩnh vực quản lý bán vé tàu hỏa, việc sử dụng phần mềm giúp tăng cường tốc độ giao dịch, đảm bảo tính chính xác và hiệu quả, cũng như giảm thiểu sự nhầm lẫn và tối ưu hóa quá trình quản lý thông tin khách hàng và doanh thu Điều này đặc biệt quan trọng khi số lượng vé bán ra mỗi ngày lớn và việc quản lý thông tin truy xuất phức tạp Sự hỗ trợ của phần mềm trong việc này giúp tự động hóa các nhiệm vụ, cải thiện tốc độ xử lý và bảo đảm tính chính xác cho công việc hàng ngày
Mục tiêu của quản lý bán vé tàu hỏa thường xoay quanh việc cung cấp dịch vụ tốt nhất cho khách hàng, tối ưu hóa quá trình bán vé và quản lý thông tin để đạt được hiệu quả và tiết kiệm chi phí Dưới đây là một số mục tiêu cụ thể:
• Tăng trải nghiệm khách hàng:
Cung cấp một nền tảng dễ sử dụng, thuận tiện để khách hàng có thể tra cứu thông tin, đặt và mua vé một cách nhanh chóng và hiệu quả
• Tối ưu hóa quá trình bán vé:
Tăng cường quy trình bán vé, giảm thiểu thủ tục phức tạp, cung cấp các tùy chọn thanh toán linh hoạt và nhanh chóng
• Quản lý thông tin linh hoạt:
Tạo cơ sở dữ liệu chính xác và linh hoạt về hành khách, chuyến tàu, vé và doanh thu để quản lý hiệu quả
• Tối ưu hóa doanh thu và tài nguyên:
Tổ chức dữ liệu để tối ưu hóa doanh thu từ việc bán vé, quản lý số lượng vé và tình trạng ghế trống
• Quản lý chất lượng dịch vụ:
Theo dõi và cải thiện chất lượng dịch vụ dựa trên thông tin từ phản hồi của khách hàng và dữ liệu giao dịch
• Bảo mật và phân quyền: Đảm bảo an ninh thông tin và quản lý phân quyền người dùng để bảo vệ thông tin cá nhân và dữ liệu quan trọng.
Công cụ sử dụng
Trong quá trình thực hiện, nhóm đã sử dụng một số phần mềm phục vụ cho việc tìm và xây dựng đề tài:
• Flowchart Maker & Online Diagram Software
PHÂN TÍCH BÀI TOÁN
Các đối tượng cần quản lý và ràng buộc
Bài toán quản lý hệ thống thông tin vận hành tàu hỏa liên quan đến các đối tượng cần quản lý sau:
• Thông tin chuyến tàu (THONGTINCHUYENTAU)
2 Mối quan hệ và ràng buộc
• Mỗi nhân viên có một tài khoản, một tài khoản chỉ thuộc về một nhân viên
• Mỗi tài khoản chỉ thuộc về một hành khách và có duy nhất một nhân viên quản lý
• Mỗi hành khách có nhiều tài khoản, một tài khoản chỉ thuộc về một hành khách
• Mỗi hành khách tham gia một hoặc nhiều chuyến tàu
• Mỗi chuyến tàu được thực hiện bởi một tàu nhất định
• Mỗi thông tin chuyến tàu chỉ thuộc về một chuyến tàu và một chuyến tàu có một thông tin chuyến tàu
• Mỗi đặt vé thuộc về một tài khoản, một hành khách và một chuyến tàu
• Mỗi dịch vụ chỉ thuộc về một chuyến tàu và một chuyến tàu có thể có nhiều dịch vụ đi kèm
• Ràng buộc trên THONGTINCHUYENTAU đảm bảo rằng số vé còn lại không âm và không vượt quá số vé ban đầu
• Ràng buộc trên DATVE kiểm tra số vé đặt không được vượt quá số vé còn lại của chuyến tàu tương ứng
• Ràng buộc ngày tháng và tuổi khi chèn dữ liệu vào các bảng tương ứng.
Mô hình ERD
Hình 1: Mô hình ERD quản lý bán vé tàu hỏa
THIẾT KẾ CƠ SỞ DỮ LIỆU
Lược đồ quan hệ và giải thích
Dựa trên mô hình ERD (Mô hình Thực thể Liên kết), chúng ta có thể phân tách thành các lược đồ quan hệ cụ thể, mỗi lược đồ tương ứng với một bảng trong
• Lược đồ quan hệ cho bảng NHANVIEN o PK: ID_NHANVIEN (Primary Key) o HoTen: Tên đầy đủ của nhân viên o NgaySinh: Ngày sinh của nhân viên o SoDienThoai: Số điện thoại của nhân viên o Email: Địa chỉ email của nhân viên o NgayVaoLam: Ngày bắt đầu làm việc o NhiemVu: Nhiệm vụ của nhân viên trong công ty
Giải thích: Bảng NHANVIEN lưu trữ thông tin về nhân viên của công ty, bao gồm các thông tin như ID, họ tên, ngày sinh, liên lạc và thông tin công việc
• Lược đồ quan hệ cho bảng TAIKHOAN o PK: ID_TAIKHOAN (Primary Key) o FK: ID_NHANVIEN (Foreign Key tham chiếu đến NHANVIEN.ID_NHANVIEN) o SoDienThoai: Số điện thoại được liên kết với tài khoản o Email: Địa chỉ email được liên kết với tài khoản
Giải thích: Bảng TAIKHOAN lưu trữ thông tin đăng nhập của khách hàng được quản lý bởi nhân viên thông qua liên kết đến bảng NHANVIEN thông qua khóa ngoại ID_NHANVIEN
• Lược đồ quan hệ cho bảng HANHKHACH o PK: ID_HANHKHACH (Primary Key) o FK: ID_TAIKHOAN (Foreign Key tham chiếu đến TAIKHOAN.ID_TAIKHOAN) o HoTen: Tên đầy đủ của hành khách o NgaySinh: Ngày sinh của hành khách o QuocTich: Quốc tịch của hành khách o GioiTinh: Giới tính của hành khách o SoDienThoai: Số điện thoại của hành khách
Giải thích: Bảng HANHKHACH chứa thông tin về các hành khách tham gia các chuyến tàu với thông tin cá nhân và liên lạc
• Lược đồ quan hệ cho bảng TAU o PK: ID_TAU (Primary Key) o TenTau: Tên của tàu o SoGhe: Số lượng ghế trên tàu o HangSanXuat: Hãng sản xuất của tàu
Giải thích: Bảng TAU lưu trữ thông tin về các tàu vận chuyển bao gồm tên, số ghế và hãng sản xuất
• Lược đồ quan hệ cho bảng CHUYENTAU o PK: ID_CHUYENTAU (Primary Key) o FK: ID_TAU (Foreign Key tham chiếu đến TAU.ID_TAU) o TuyenDuong: Tuyến đường của chuyến tàu o NGAYDI: Ngày khởi hành của chuyến tàu o THOIGIANDI: Thời gian khởi hành của chuyến tàu
Giải thích: Bảng CHUYENTAU lưu thông tin về các chuyến tàu như tuyến đường, ngày và thời gian khởi hành kèm theo thông tin về tàu thực hiện chuyến đi
• Lược đồ quan hệ cho bảng THONGTINCHUYENTAU o PK: ID_THONGTIN (Primary Key) o FK: ID_CHUYENTAU (Foreign Key tham chiếu đến
CHUYENTAU.ID_CHUYENTAU) o GIAVE: Giá vé của chuyến tàu o SOVECONLAI: Số vé còn lại trên chuyến tàu
Giải thích: Bảng THONGTINCHUYENTAU liên kết với CHUYENTAU và lưu trữ thông tin chi tiết về chuyến tàu như giá vé và số vé còn lại
• Lược đồ quan hệ cho bảng DATVE o PK: ID_DATVE (Primary Key) o FK: ID_TAIKHOAN (Foreign Key tham chiếu đến TAIKHOAN.ID_TAIKHOAN), ID_HANHKHACH (Foreign Key tham chiếu đến HANHKHACH.ID_HANHKHACH), ID_CHUYENTAU (Foreign Key tham chiếu đến CHUYENTAU.ID_CHUYENTAU) o SOVEDAT: Số vé được đặt
Giải thích: Bảng DATVE liên kết các thông tin đặt vé với thông tin tài khoản, hành khách và chuyến tàu cùng với số vé đặt
• Lược đồ quan hệ cho bảng DICHVU o PK: ID_DICHVU (Primary Key) o FK: ID_CHUYENTAU (Foreign Key tham chiếu đến CHUYENTAU.ID_CHUYENTAU) o TenDichVu: Tên của dịch vụ o MoTa: Mô tả về dịch vụ o Gia: Giá của dịch vụ
Giải thích: Bảng DICHVU lưu thông tin về các dịch vụ có sẵn đi kèm với chuyến tàu bao gồm tên, mô tả và giá.
Bảng mô tả chi tiết
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_NHANVIEN VARCHAR(20) Định danh duy nhất của nhân viên Khóa chính HoTen VARCHAR(100) Họ và tên đầy đủ của nhân viên
NgaySinh DATE Ngày sinh của nhân viên
SoDienThoai VARCHAR(20) Số điện thoại của nhân viên
Email VARCHAR(100) Địa chỉ email của nhân viên
NgayVaoLam DATE Ngày bắt đầu làm việc tại công ty
NhiemVu VARCHAR(100) Mô tả nhiệm vụ hoặc chức vụ của nhân viên
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_TAIKHOAN VARCHAR(20) Định danh đăng nhập duy nhất Khóa chính
ID_NHANVIEN VARCHAR(20) Liên kết với bảng NHANVIEN thông qua ID_NHANVIEN Khóa phụ SoDienThoai VARCHAR(20) Số điện thoại liên kết với tài khoản
Email VARCHAR(20) Địa chỉ email liên kết với tài khoản
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_HANHKHACH VARCHAR(20) Định danh duy nhất của hành khách Khóa chính
ID_TAIKHOAN VARCHAR(20) Liên kết với bảng TAIKHOAN để xác định người dùng Khóa phụ HoTen VARCHAR(100) Họ tên đầy đủ của hành khách
NgaySinh DATE Ngày sinh của hành khách
QuocTich VARCHAR(50) Quốc tịch của hành khách
GioiTinh VARCHAR(100) Giới tính của hành khách
SoDienThoai VARCHAR(20) Số điện thoại của hành khách
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_TAU VARCHAR(20) Định danh duy nhất của tàu Khóa chính TenTau VARCHAR(100) Tên của tàu
SoGhe NUMBER(*,0) Số lượng ghế trên tàu
HangSanXuat VARCHAR(100) Hãng sản xuất của tàu
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_CHUYENTAU VARCHAR(20) Định danh duy nhất của chuyến tàu Khóa chính
ID_TAU VARCHAR(20) Liên kết với bảng TAU để xác định tàu thực hiện chuyến đi Khóa phụ TuyenDuong VARCHAR(100) Tuyến đường của chuyến tàu
NGAYDI DATE Ngày khởi hành của chuyến tàu
THOIGIANDI DATE Thời gian khởi hành của chuyến tàu
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_THONGTIN VARCHAR(20) Định danh duy nhất cho thông tin chuyến tàu Khóa chính
ID_CHUYENTAU VARCHAR(20) Liên kết với bảng CHUYENTAU để xác định chuyến tàu tương ứng Khóa phụ
GIAVE NUMBER Giá vé của chuyến tàu
SOVECONLAI NUMBER(*,0) Số lượng vé còn lại trên chuyến tàu
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_DATVE VARCHAR(20) Định danh duy nhất cho đặt vé Khóa chính
ID_TAIKHOAN VARCHAR(20) Liên kết với bảng TAIKHOAN để xác định tài khoản người dùng Khóa phụ
ID_HANHKHACH VARCHAR(20) Liên kết với bảng HANHKHACH để xác định hành khách đặt vé Khóa phụ
ID_CHUYENTAU VARCHAR(20) Liên kết với bảng CHUYENTAU để xác định chuyến tàu được đặt vé Khóa phụ SOVEDAT NUMBER(*,0) Số lượng vé đã đặt
Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc
ID_DICHVU VARCHAR(20) Định danh duy nhất cho dịch vụ Khóa chính
ID_CHUYENTAU VARCHAR(20) Liên kết với bảng CHUYENTAU để xác định chuyến tàu Khóa phụ
TenDichVu VARCHAR(100) Tên của dịch vụ
MoTa DATE Mô tả về dịch vụ
Gia NUMBER Giá của dịch vụ.
CÀI ĐẶT CHƯƠNG TRÌNH
Tạo cơ sở dữ liệu
Ở đồ án này, nhóm sẽ tiến hành sử dụng hệ quản trị cơ sở dữ liệu Oracle để quản lý và cài đặt cơ sở dữ liệu
2 Dữ liệu mẫu Ở đây chúng em tiến hành tự xây dựng các dữ liệu mẫu nhằm phục vụ nhiệm vụ kiểm thử các chức năng của đồ án.
Trigger
STT Tên Thao tác Bảng Nội dung
1 TRG_AUTO_ID_CHUYENTAU INSERT CHUYENTAU Tự động cập nhật ID chuyến tàu
2 TRG_AUTO_ID_DATVE INSERT DATVE Tự động cập nhật ID đặt vé
3 TRG_AUTO_ID_DICHVU INSERT DICHVU Tự động cập nhật ID dịch vụ
4 TRG_AUTO_ID_HANHKHACH INSERT HANHKHACH Tự động cập nhật ID hành khách
5 TRG_AUTO_ID_NHANVIEN INSERT NHANVIEN Tự động cập nhật ID nhân viên
6 TRG_AUTO_ID_TAIKHOAN INSERT TAIKHOAN Tự động cập nhật ID tài khoản
7 TRG_CHECK_SOVECONLAI INSERT TTCT Kiểm tra số vé còn lại
8 TRG_CheckAge INSERT NHANVIEN Kiểm tra tuổi của nhân viên
UPDATE CHUYENTAU Kiểm tra ngày đi phải sau hiện tại
UPDATE TTCT Kiểm tra số vé còn lại không thể "Database Export"
Bước 4: Điền thông tin yêu cầu như: o Chọn loại đối tượng (tables, procedures, functions, etc.) o Đường dẫn cho file backup o Cấu hình các tùy chọn khác nếu cần
Bước 5: Nhấn "Next" và sau đó "Finish" để bắt đầu quá trình backup
Bước 1: Mở SQL Developer và kết nối vào cơ sở dữ liệu mà bạn muốn phục hồi
Bước 2: Chọn cơ sở dữ liệu đó từ cửa sổ "Connections"
Bước 3: Nhấn chuột phải và chọn "Tools" > "Database Import"
Bước 4: Chọn file backup mà bạn muốn phục hồi
Bước 5: Điều chỉnh các tùy chọn khác nếu cần
Bước 6: Nhấn "Next" và sau đó "Finish" để bắt đầu quá trình phục hồi.
HƯỚNG PHÁT TRIỂN VÀ KẾT LUẬN
Quản lý bán vé tàu hỏa là một phần quan trọng trong hệ thống giao thông vận tải công cộng, và việc phát triển nó thành một trang web mang lại nhiều lợi ích về tiện lợi, truy cập và quản lý dữ liệu Trong báo cáo này, em sẽ trình bày các hướng phát triển, dự định cho vấn đề quản lý bán vé tàu hỏa trên nền tảng trang web
Dưới đây là một số giao diện được nhóm thiết kế:
Giao diện chính của trang web
Giao diện đăng nhập / đăng ký
Giao diện tiến hành đặt vé
Giao diện tìm kiếm chuyến tàu
Giao diện cập nhật thông tin cá nhân
Thông tin cá nhân khách hàng
Giao diện làm việc của nhân viên quản lý chuyến tàu
Giao diện làm việc của nhân viên quản lý doanh thu
Trong suốt quá trình thực hiện đồ án, nhóm đã đạt được những thành công quan trọng sau đây:
Thiết Kế và Hoàn Thiện Dự Án Nhỏ:
Nhóm đã thành thạo trong việc thiết kế và hoàn thiện một dự án nhỏ với các yêu cầu cụ thể
Kỹ Năng Làm Việc Nhóm:
Nhóm đã phát triển kỹ năng phân chia công việc, sắp xếp thời gian và làm việc nhóm một cách hiệu quả Áp Dụng Kiến Thức Hệ Quản Trị Cơ Sở Dữ Liệu:
Nắm vững kiến thức về hệ quản trị cơ sở dữ liệu, đặc biệt là làm việc trên Oracle
Hiểu và vận dụng thành công các khái niệm như PL/SQL, Trigger,
Mở Rộng Kiến Thức Về Web Development:
Trang bị thêm kiến thức về HTML, CSS, và JS để xây dựng giao diện người dùng
Giải Quyết Vấn Đề Khó Khăn:
Xử lý thành công các thách thức và vấn đề khó khăn xuất phát từ quá trình thực hiện dự án
Tuy nhiên, do thời gian ngắn và yêu cầu công việc ban đầu khá lớn, nhóm đã gặp phải một số hạn chế:
Giao Diện Chưa Được Chăm Chút:
Giao diện người dùng chưa được chăm chút, không đạt được sự cụ thể và thẩm mỹ mong muốn
Cú Pháp Trigger, Function, Stored Procedure Chưa Tối Ưu:
Cú pháp của các Trigger, Function, Stored Procedure chưa được tối ưu hóa và có thể được cải thiện
Bảo Mật Chưa Đảm Bảo Cao:
Chưa đảm bảo được tính bảo mật cao trong quá trình xây dựng bài toán
Thời gian thực hiện đồ án ngắn hạn, ảnh hưởng đến sự chi tiết và độ hoàn thiện của sản phẩm.