Vì vậy, Doanh nghiệp cần phát triển một ứng dụng online cho phép đặt vé xetrực tuyến; thanh toán vé trực tuyến; thông tin đặt vé, thông tin khách hàng đượccập nhật liên tục; quản lý và n
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
TpHCM, ngày … tháng …… năm ……
Giáo viên hướng dẫn [Ký tên và ghi rõ họ tên]
Trang 2NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
TpHCM, ngày … tháng …… năm ……
Giáo viên hướng dẫn [Ký tên và ghi rõ họ tên]
Trang 3LỜI CẢM ƠNChúng tôi xin chân thành cảm ơn Khoa Công nghệ Thông Tin Trường Đại Học Giao Thông Vận Tải TP.Hồ Chí Minh đã tạo điều kiện cho chúng tôi thực
hiện đề tài luận văn này
Chúng tôi xin chân thành cảm ơn ThS Bùi Trọng Hiếu đã tận tình hướng dẫn,
chỉ bảo chúng tôi trong suốt thời gian thực hiện đồ án Chúng tôi cũng xin cảm ơnquý Thầy Cô đã tận tình giảng dạy, trang bị cho chúng tôi những kiến thức cần thiếttrong suốt quá trình học tập tại trường
Mặc dù đã cố gắng hoàn thành đồ án với tất cả nổ lực của bản thân, nhưng đồ
án chắc chắn không tránh khỏi những thiếu sót nhất định, kính mong sự cảm thông
và tận tình chỉ bảo của quý Thầy Cô
Nhóm thực hiện
Mai Thị Lai & Lê Thị Thanh Hương
Trang 4Khoa Công Nghệ Thông Tin
Bộ môn Hệ Thống Thông Tin
ĐỀ CƯƠNG CHI TIẾT
Tên Đề Tài: XÂY DỰNG WEBSITE QUẢN LÝ ĐẶT VÉ XE CỦA DNVT CÚC TƯ Giáo viên hướng dẫn: ThS Bùi Trọng Hiếu
Thời gian thực hiện: 13/09/2013 đến 27/12/2013
Sinh viên thực hiện:
- Mai Thị Lai - MSV: 11L1120034
- Lê Thị Thanh Hương – MSV: 11L1120029
Loại đề tài: Xây dựng ứng dụng web
Nội Dung Đề Tài: Xây dựng Website Đặt vé xe Online với các phân hệ chính như sau:
Phân hệ đặt vé; phân hệ quản lý, điều hành; phân hệ báo cáo thống kê
Kế Hoạch Thực Hiện:
- Ngày 13/09/2013: Nhận đề tài
- Ngày 15 – 18/09/2013: Thảo luận đề tài và khảo sát thực tế
- Ngày 19 – 26/09/2013: Tìm hiểu mô hình MVC; Tìm hiểu về ASP.NET và C#
- Ngày 27/09 – 16/10/2013: Phân tích thiết kế hệ thống và xây dựng cơ sở dữ liệu
- Ngày 17/10 – 03/11/2013: Viết code xây dựng website
- Ngày 04/11/2013: Báo cáo giữa kỳ
- Ngày 05 – 17/11/2013: Hoàn thiện website
- Ngày 18/11 – 05/12/2013: Viết báo cáo đề tài
- Ngày 06 – 25/12/2013: Tiếp tục hoàn chỉnh đề tài
- Ngày 26/12/2013: In báo cáo
Trang 5MỤC LỤC
MỤC LỤC i
DANH MỤC HÌNH iv
DANH MỤC CÁC TỪ VIẾT TẮT vi
CHƯƠNG I: TỔNG QUAN 1
1 Đặt vấn đề 1
2 Nhiệm vụ đồ án 2
3 Cấu trúc đồ án 3
CHƯƠNG II: LÝ THUYẾT VỀ MÔ HÌNH MVC 5
1 Giới thiệu 5
1.1 Lịch sử ra đời 5
1.2 Mô hình MVC cơ bản 5
1.3 Một vài đặc tính trong ASP.NET MVC 7
2 Sự khác biệt với WebForm 7
3 URL routing (Định tuyến URL) 9
3.1 Nhiệm vụ của hệ thống định tuyến trong ASP.NET MVC 9
3.2 Các quy tắc định tuyến URL mặc định trong ASP.NET MVC Web Application 9
4 Các ưu điểm và nhược điểm của ASP.NET MVC 10
4.1 Ưu điểm: 10
4.2 Nhược điểm: 10
CHƯƠNG III: PHÂN TÍCH & THIẾT KẾ 11
1 Danh sách Actor 11
2 Danh sách Use Case 11
3 Sơ đồ Use Case tổng quát 12
4 Mô tả và biểu đồ Use Case 13
USE CASE ĐĂNG NHẬP 13
USE CASE PHỤC HỒI MẬT KHẨU 14
USE CASE ĐĂNG XUẤT 15
Trang 6USE CASE QUẢN LÝ TÀI KHOẢN 15
USE CASE ĐĂNG KÝ TÀI KHOẢN MỚI 17
USE CASE SỬA THÔNG TIN TÀI KHOẢN 18
USE CASE TRA CỨU VÉ 20
USE CASE ĐẶT VÉ XE 21
USE CASE THANH TOÁN 23
USE CASE HỦY VÉ XE 26
USE CASE XÁC NHẬN VÉ ĐÃ THANH TOÁN 27
USE CASE XỬ LÝ KHÁCH CHỜ 29
USE CASE QUẢN LÝ DANH MỤC ĐỊA ĐIỂM 30
USE CASE TẠO MỚI ĐỊA ĐIỂM 31
USE CASE SỬA THÔNG TIN ĐỊA ĐIỂM 32
USE CASE XÓA THÔNG TIN ĐỊA ĐIỂM 33
USE CASE QUẢN LÝ TUYẾN 34
USE CASE TẠO MỚI TUYẾN 35
USE CASE SỬA THÔNG TIN TUYẾN 36
USE CASE XÓA THÔNG TIN TUYẾN 37
USE CASE QUẢN LÝ XE 38
USE CASE TẠO MỚI XE 39
USE CASE SỬA THÔNG TIN XE 40
USE CASE XÓA THÔNG TIN XE 41
USE CASE QUẢN LÝ LỊCH TRÌNH 42
USE CASE TẠO MỚI LỊCH TRÌNH 43
USE CASE SỬA THÔNG TIN LỊCH TRÌNH 44
USE CASE XÓA THÔNG TIN LỊCH TRÌNH 45
USE CASE QUẢN LÝ LOẠI VÉ 46
USE CASE TẠO MỚI LOẠI VÉ 47
USE CASE SỬA THÔNG TIN LOẠI VÉ 48
USE CASE XÓA THÔNG TIN LOẠI VÉ 49
Trang 7USE CASE QUẢN LÝ LOẠI XE 50
USE CASE TẠO MỚI LOẠI XE 51
USE CASE SỬA THÔNG TIN LOẠI XE 52
USE CASE XÓA THÔNG TIN LOẠI XE 53
USE CASE QUẢN LÝ HÌNH THỨC GIẢM GIÁ 54
USE CASE TẠO MỚI HÌNH THỨC GIẢM GIÁ 55
USE CASE SỬA THÔNG TIN HÌNH THỨC GIẢM GIÁ 56
USE CASE XÓA THÔNG TIN HÌNH THỨC GIẢM GIÁ 57
USE CASE THỐNG KÊ 58
5 Thiết kế Cơ sở dữ liệu: 59
CHƯƠNG IV: HIỆN THỰC 65
1 Cấu trúc website: 65
2 Yêu cầu cài đặt: 66
3 Một số giao diện của Website: 67
CHƯƠNG V: TỔNG KẾT 71
1 Một số kết quả đạt được: 71
2 Hướng phát triển đồ án: 72
TÀI LIỆU THAM KHẢO 73
Trang 8DANH MỤC HÌNH
Hình 1: Mô hình MVC cơ bản 6
Hình 2: Use case Tổng quát 12
Hình 3: Biểu đồ Tuần tự cho Use case Đăng nhập 13
Hình 4: Biểu đồ Tuần tự cho Use case Phục hồi mật khẩu 14
Hình 5: Use Case Quản Lý Tài khoản 15
Hình 6: Biểu đồ Hoạt động của Use Case Quản lý Tài khoản 16
Hình 7: Biểu đồ Tuần tự cho Use case Đăng ký Tài khoản mới 18
Hình 8: Biểu đồ Tuần tự cho Use case Sửa Thông tin Tài khoản 19
Hình 9: Biểu đồ Tuần tự cho Use case Tra cứu vé 20
Hình 10: Biểu đồ Tuần tự cho Use case Đặt vé xe 22
Hình 11: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán trực tiếp) 24
Hình 12: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán qua Ngân hàng) 25
Hình 13: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán Paypal) 25
Hình 14: Biểu đồ Tuần tự cho Use case Hủy Vé 27
Hình 15: Biểu đồ Tuần tự cho Use case Xác nhận Vé đã Thanh toán 28
Hình 16: Biểu đồ Tuần tự cho Use case Xử lý Khách chờ 29
Hình 17: Biểu đồ Hoạt động của Use case Quản lý Danh mục địa điểm 30
Hình 18: Biểu đồ tuần tự cho Use Case Tạo mới Địa điểm 31
Hình 19: Biểu đồ tuần tự cho Use Case Sửa thông tin Địa điểm 32
Hình 20: Biểu đồ tuần tự cho Use Case Xóa thông tin Địa điểm 33
Hình 21: Biểu đồ hoạt động của Use Case Quản lý Tuyến 34
Hình 22: Biểu đồ tuần tự cho Use Case Tạo mới Tuyến 35
Hình 23: Biểu đồ tuần tự cho Use Case Sửa thông tin Tuyến 36
Hình 24: Biểu đồ tuần tự cho Use Case Xóa thông tin Tuyến 37
Hình 25: Biểu đồ Hoạt động của Use Case Quản lý Xe 38
Hình 26: Biểu đồ Tuần tự cho Use case Tạo mới Xe 39
Hình 27: Biểu đồ Tuần tự cho Use case Sửa thông tin Xe 40
Hình 28: Biểu đồ Tuần tự cho Use case Xóa thông tin Xe 41
Trang 9Hình 29: Biểu đồ Hoạt động của Use case Quản lý Lịch trình 42
Hình 30: Biểu đồ tuần tự cho Use Case Tạo mới Lịch Trình 43
Hình 31: Biểu đồ tuần tự cho Use Case Sửa thông tin Lịch Trình 44
Hình 32: Biểu đồ tuần tự cho Use Case Xóa thông tin Lịch Trình 45
Hình 33: Biểu đồ Hoạt động của Use Case Quản lý Loại Vé 46
Hình 34: Biểu đồ tuần tự cho Use case Tạo mới Loại vé 47
Hình 35: Biểu đồ Tuần tự cho Use case Sửa thông tin Loại vé 48
Hình 36: Biểu đồ Tuần tự cho Use case Xóa thông tin Loại vé 49
Hình 37: Biểu đồ hoạt động của Use Case Quản lý Loại Xe 50
Hình 38: Biểu đồ Tuần tự cho Use case Tạo mới Loại Xe 51
Hình 39: Biểu đồ Tuần tự cho Use case Sửa Thông tin Loại Xe 52
Hình 40: Biểu đồ Tuần tự cho Use case Xóa Thông tin Loại Xe 53
Hình 41: Biểu đồ hoạt động Use Case Quản lý Hình thức giảm giá 54
Hình 42: Biểu đồ Tuần tự cho Use case Tạo mới Hình thức giảm giá 55
Hình 43: Biểu đồ Tuần tự cho Use case Sửa thông tin Hình thức giảm giá 56
Hình 44: Biểu đồ Tuần tự cho Use case Xóa Hình thức giảm giá 57
Hình 45: Biểu đồ tuần tự cho Use Case Thống kê 58
Hình 46: Database Diagram Đặt Vé 59
Hình 47: Trang chủ 67
Hình 48: Trang Tra cứu vé 67
Hình 49: Trang Sơ đồ chỗ của Xe 68
Hình 50: Trang Chọn Hình thức Thanh toán 69
Hình 51: Trang Quản lý 69
Hình 52: Trang Quản lý Danh mục Lịch trình 70
Hình 53: Báo cáo Doanh thu Tổng hợp theo ngày 70
Trang 10DANH MỤC CÁC TỪ VIẾT TẮT
ASP.NET : Active Server Pages.NET
CSDL : Cơ sở dữ liệu
CSS : Cascading Style Sheets
DTO : Data Transfer Object
HTML : HyperText Markup Language
MVC : Model View Controller
TDD : Test Driven Developer
UML : Unified Modeling Language
URL : Uniform Resource Locator
UI : User Interface
Trang 11CHƯƠNG I: TỔNG QUAN
1 Đặt vấn đề:
Sau gần 15 năm hoạt động trên tuyến Tp.Tuy Hòa – Tp.Hồ Chí Minh và ngượclại Doanh nghiệp Vận tải và Du lịch Cúc Tư (tiền thân là thành viên HTX vận tải cơgiới đường bộ Phú Yên) chính thức thành lập ngày 25-10-2005 do bà Nguyễn ThịKim Cúc làm chủ và là người sáng lập bằng nguồn vốn tích lũy của gia đình
Hiện nay, do nhu cầu phát triển của Doanh nghiệp, nhằm giúp khách hàng cóthể đặt vé xe khách trực tiếp qua mạng một cách thuận lợi, nhanh chóng và tiết kiệmhơn mà không cần phải đến phòng vé chờ đợi để đến lượt mua vé xe
Vì vậy, Doanh nghiệp cần phát triển một ứng dụng online cho phép đặt vé xetrực tuyến; thanh toán vé trực tuyến; thông tin đặt vé, thông tin khách hàng đượccập nhật liên tục; quản lý và nhân viên có thể theo dõi thông tin khách hàng đặt vébất cứ lúc nào cần
Để đặt vé khách hàng truy cập vào Website của Doanh nghiệp, sau đó chỉ cầnclick vào mục đặt vé, nhập thông tin tìm kiếm bao gồm điểm đi, điểm đến và ngày
đi Hệ thống sẽ hiển thị danh sách các xe, giờ chạy, số lượng chỗ còn trống Lúc nàykhách hàng chọn xe còn chỗ trống có giờ chạy mà mình muốn Hệ thống sẽ hiển thịdanh sách chỗ ngồi của xe được chọn, khách hàng chọn chỗ và xác nhận để đưa vàogiỏ vé Khách hàng có thể chọn đặt vé ở nhiều xe khác nhau của cùng một tuyến,ngày đi và giờ đi
Nếu khách hàng không chọn được chỗ ở xe có giờ đi mong muốn thì kháchhàng có thể chọn chức năng “Đặt chờ vé” ở xe có giờ chạy mình muốn để khi cókhách hàng nào hủy vé thì khách hàng ở danh sách “Đặt vé chờ” sẽ được ưu tiên đi
xe có giờ như mong muốn
Bắt buộc khách hàng phải đăng nhập hệ thống mới có thể đặt vé Vé sau khiđặt phải được thanh toán với doanh nghiệp qua tài khoản ngân hàng hoặc trực tiếptại phòng vé trong khoảng thời gian quy định, nếu quá thời gian quy định thì hệthống sẽ tự động hủy thông tin của vé này và chuyển số ghế của vé này về trạng tháighế trống Website còn hỗ trợ chức năng thanh toán trực tuyến bằng tài khoản
Trang 12Paypal Ngoài ra, khách hàng có thể xem thông tin về những vé mình đã đặt, tra cứulịch sử Đặt vé của mình.
Hệ thống cần phải tạo được tính mềm dẻo và các ràng buộc cho việc đặt vécủa khách hàng, chằng hạn hệ thống sẽ hiển thị các ghế còn trống sau khi ngườidùng chọn xe muốn đi từ danh sách xe của lịch trình đã chọn Hệ thống sẽ khôngcho phép người dùng đăng ký vào ghế đã được người khác đăng ký trước …
Về phía nhân viên quản lý được phép cập nhật lịch trình xe chạy Xem thôngtin của mỗi tuyến xe, ngày giờ để biết ghế nào còn trống, ghế nào đã được đặt chỗ,hiển thị sơ đồ ghế trên xe
2 Nhiệm vụ đồ án:
Xây dựng Website Đặt vé xe Online với các phân hệ chính như sau: Phân hệđặt vé; phân hệ quản lý, điều hành; phân hệ báo cáo thống kê
Các phân hệ có thể được sử dụng tập trung hay riêng lẽ tùy vào quyền truy cập
hệ thống của người dùng Cụ thể như sau:
Phân hệ đặt vé: được sử dụng bởi khách hàng Có các chức năng:
Phân hệ quản lý, điều hành:
Quản lý dữ liệu danh mục: Các danh mục cần quản lý bao gồm:
- Danh mục Địa điểm
- Danh mục Hình thức giảm giá
Trang 13- Xác nhận thanh toán.
- Xử lý khách chờ
Phân hệ báo cáo thống kê:
- Thống kê doanh thu theo ngày
- Thống kê số lượng vé bán, số lượng vé hủy
- Báo cáo doanh thu theo xe, tuyến
Chương 3: Phân tích và Thiết kế
Chương này tiến hành phân tích và thiết kế hệ thống tập trung vào ba vấn đềchính, đó là thiết kế tầng dữ liệu, thiết kế tầng xử lý và thiết kế đối tượng giao tiếpngười dùng
Ứng dụng phương pháp phân tích thiết kế hướng đối tượng để lập ra danh sáchcác use case và actor của hệ thống, phân tích thiết kế các lược đồ use case và đặc tảchi tiết hoạt động của use case
Phần thiết kế dữ liệu của hệ thống được thực hiện bằng cách ánh xạ các bảng
dữ liệu từ các lớp đối tượng của hệ thống, mô tả chi tiết các bảng
Phần thiết kế các hoạt động xử lý chính của các đối tượng trong ứng dụng.Phần này mô tả các hàm xử lý của các lớp đối tượng trong ba tần xử lý của ứngdụng theo mô hình ba lớp Tiếp theo là thiết kế các sơ đồ phối hợp hoạt động tổngthể giữa các đối tượng ở các tầng giao tiếp cơ sở dữ liệu, tầng xử lý và tầng giaotiếp người dùng
Phần thiết kế của chương trình chính là cốt lõi chính cho việc cài đặt và thửnghiệm chương trình trong chương kế tiếp
Trang 14Cuối cùng, là tổng kết những ưu, khuyết điểm của hệ thống, đề xuất phương
án khắc phục nhược điểm và đề ra hướng phát triển của đề tài, tài liệu tham khảo
Trang 15CHƯƠNG II: LÝ THUYẾT VỀ MÔ HÌNH MVC
1 Giới thiệu:
1.1. Lịch sử ra đời:
Vào tháng 11 năm 2007, ở hội thảo ALT.NET tại Austine, Texas, giám đốcđiều hành Scott Guthrie của Microsoft đã công bố và mô tả về nền tảng phát triểnweb MVC mới, xây dựng trên ASP.NET, rõ ràng được thiết kế như là một lời hồiđáp thẳng vào các lời chỉ trích trước đây
ASP.NET MVC cung cấp sự tách biệt rõ ràng giữa các thành phần bất chấpviệc sử dụng lại mô hình MVC mặc dù nó không có gì mới – MVC lần đầu đượccông bố vào năm 1978 trong dự án Smalltalk của Xerox PARC – nhưng ngày nay
nó phổ biến như là một kiến trúc cho các ứng dụng web bởi vì các lý do sau:
Người dùng tương tác với ứng dụng MVC tự nhiên sẽ theo một chu trình: userthực hiện một hành động, và để hồi đáp lại, ứng dụng thay đổi mô hình dữ liệu của
nó và chuyển một trang đã được cập nhật cho người dùng và sau đó vòng xoay lậplại Điều này là thích hợp cho một ứng dụng web phải luân chuyển hàng loạt các lờiyêu cầu cũng như hồi đáp
Những ứng dụng web luôn yêu cầu phải kết hợp một số công nghệ (về cơ sở
dữ liệu, HTML và mã xử lý), luôn chia thành nhiều lớp, và những mẫu đề ra đã nảysinh thành các khái niệm trong MVC ASP.NET MVC thực thi một biến thể hiện đạitrên MVC mà đặc biệt thích hợp với các ứng dụng web
1.2. Mô hình MVC cơ bản:
ASP.NET MVC là 1 framework phát triển ứng dụng web mới của Microsoft,
nó kết hợp tính hiệu quả và nhỏ gọn của mô hình Model – View – Controller(MVC), những ý tưởng và công nghệ hiện đại nhất, cùng với thành phần tốt nhấtcủa nền tảng ASP.NET hiện thời Là một lựa chọn khác bên cạnh nền tảngWebForm khi phát triển một ứng dụng web sử dụng ASP.NET
MVC là viết tắt của các chữ cái đầu của Model – View - Controller
Trang 16Hình 1: Mô hình MVC cơ bản
MVC chia giao diện UI thành 3 phần tương ứng:
Models: trong các ứng dụng dựa trên MVC là những thành phần có nhiệm vụ
lưu trữ thông tin, trạng thái của các đối tượng, thông thường nó là một lớp được ánh
xạ từ một bảng trong cơ sở dữ liệu
Views: là các thành phần chịu trách nhiệm hiển thị các thông tin lên cho người
dùng thông qua giao diện Thông thường, các thông tin cần hiển thị được lấy từthành phần Models
Controllers: chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao
tác đối với models, và cuối cùng là chọn một view thích hợp để hiển thị ra mànhình Trong kiến trúc MVC, view chỉ có tác dụng hiển thị giao diện mà thôi, cònđiều khiển dòng nhập xuất của người dùng vẫn do Controllers đảm trách
Lợi ích của việc sử dụng phương pháp MVC là sự phân đoạn rõ ràng giữamodels, views, controllers bên trong ứng dụng Cấu trúc sạch sẽ giúp cho việc kiểmtra lỗi ứng dụng trở nên dễ dàng hơn
Trang 171.3. Một vài đặc tính trong ASP.NET MVC:
- Tách rõ ràng các mối liên quan, mở rộng khả năng test TDD (test drivendeveloper) Có thể test unit trong ứng dụng mà không cần phải chạy Controllerscùng với tiến trình của ASP.NET và có thể dùng bất kỳ một unit testing frameworknào như NUnit, MBUnit, MS Test, …
- Có khả năng mở rộng, mọi thứ trong MVC được thiết kế cho phép dễ dàngthay thế/tùy biến (ví dụ: có thể lựa chọn sử dụng engine view riêng, routing policy,parameter serialization, …)
- Bao gồm một ánh xạ URL mạnh mẽ cho phép xây dựng ứng dụng với nhữngURL sạch, các URL không cần cs phần mở rộng (ví dụ: có thể ánh xạ địa chỉ/Products/Edit/4 để thực hiện hành động “Edit” của lớp điều khiểnProductControllers hoặc ánh xạ địa chỉ /Blog/SomeTopic để thực hiện hành động
“Display Topic” của lớp điều khiển BlogEngineController)
- ASP.NET MVC Framework cũng hỗ trợ những file ASP.NETnhư ASPX, ASCX và Master, đánh dấu các tập tin này như một “view template”(có thể dễ dàng dùng các tính năng của ASP.NET như lồng các trang Master, <%=
%> snippets, mô tả server controls, template, data-binding, localization, …) Tuynhiên sẽ không còn postback và interactive back server và thay vào đó là interactiveend-user tới một Controller class (không còn viewstate, page lifecycle)
- ASP.NET MVC Framework hỗ trợ đầy đủ các tính năng bảo mật củaASP.NET như form/windows authenticate, URL authorization, membership/roles,output và data caching, session/profile state, configuration system, providerarchitecture,…
2 Sự khác biệt với WebForm:
ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều
có lifecycle, postback và dùng các web controls, các events để thực hiện các hànhđộng cho UI khi có sự tương tác với người dùng nên hầu hết ASP.NET WebForm
xử lý chậm
Trang 18ASP.NET MVC Framework chia ra thành 3 phần: Models, Views, Controllers.Mọi tương tác của người dùng với Views sẽ được thực hiện hành động trongControllers, không còn postback, không còn lifecycle không còn events.
Việc kiểm tra (test), gỡ lỗi (debug) với ASP.NET đều phải chạy tất cả các tiếntrình của ASP.NET và mọi sự thay đổi ID của bất kỳ controls nào cũng ảnh hưởngđến ứng dụng Đối với ASP.NET MVC Framework thì việc có thể sử dụng các unittest có thể thẩm định rất dễ dàng các Controller thực hiện như thế nào
Cú pháp
chương trình
Sử dụng cú pháp của WebForm,tất cả các sự kiện và controls doserver quản lý
Các sự kiện được điều khiểnbởi controllers, các controlskhông do server quản lý
Truy cập dữ
liệu
Sử dụng hầu hết các công nghệtruy cập dữ liệu trong ứng dụng
Phần lớn dùng LINQ to SQLclass để tạo mô hình truy cậpđối tượng
Debug
Debug chương trình phải thựchiện tất cả bao gồm cả lớp truycập dữ liệu, sự hiển thị, điềukhiển các controls
Debug có thể sử dụng các unittest kiểm tra các phương thứctrong controller
Tốc độ phân
tải
Tốc độ phân tải chậm khi trongtrang có quá nhiều các controls vìViewState quá lớn
Phân tải nhanh hơn do khôngphải quản lý các ViewState đểquản lý các control trong trang.Tương tác
với
javascript
Tương tác với javascript khókhăn vì các controls được điềukhiển bởi server
Tương tác với javascript dễdàng vì các đối tượng không doserver quản lý điều khiển
URL
Address
Cấu trúc địa chỉ URL có dạng
<filename>.aspx?&<các thamsố>
Cấu trúc địa chỉ rành mạch theodạng Controllers/Action/Id
3 URL routing (Định tuyến URL):
3.1. Nhiệm vụ của hệ thống định tuyến trong ASP.NET MVC:
Trang 19ASP.NET MVC Framework có một hệ thống định tuyến URL (URL RoutingSystem) linh hoạt cho phép xác định các quy tắc ánh xạ địa chỉ URL bên trong ứngdụng Một hệ thống định tuyến có 2 mục đích:
Xây dựng một tập hợp các URL đi vào ứng dụng và định tuyến chúng tới cácController và thực thi các phương thức Action để xử lý
Xây dựng các URL gửi đi mà có thể gọi ngược trở lại Controllers/Actions (vídụ: form posts, liên kết <a href=“”> và các lời gọi AJAX)
Sử dụng các quy tắc ánh xạ URL để điều khiển URL đi vào và đi ra để tăng tínhmềm dẻo cho việc lập trình ứng dụng, nghĩa là nếu muốn thay đổi cấu trúc URL (ví
dụ /Catalog thành /Products) có thể thay đổi một tập hợp quy tắc ánh xạ mức ứngdụng mà không cần phải viết lại mã lập trình bên trong Controllers và Views
3.2. Các quy tắc định tuyến URL mặc định trong ASP.NET MVC Web Application:
Mặc định khi tạo ứng dụng với ASP.NET MVC Web Application trong VisualStudio sẽ tạo ra một ASP.NET Application class gọi là Global.asax chứa cấu hìnhcác quy tắc định tuyến URL Xây dựng các định tuyến thông qua phương thứcRegisterRoutes (ReouteCollection routes) và khi ứng dụng bắt đầu, phương thứcApplication_Start() trong Global.asax.cs sẽ gọi RegisterRoutes để tạo ra bảng địnhtuyến
Mặc định định tuyến URL trong ASP.NET MVC Framework có cấu trúcdạng: Controllers/ControllerAction/Id
Với ASP.NET MVC Web Application thì mặc định Controllers làHomeController, mặc định ControllerAction là Index, mặc định Id là rỗng Nghĩa làkhi gọi trang web được xây dựng thông qua template ASP.NET Web Applicationthì mặc định http://localhost/ tương đương với http://localhost/Home/Index/
Khi ứng dụng ASP.NET MVC Web Application nhận được một Url, MVCFramework sẽ định giá các quy tắc định tuyến trong tập hợp RouteTable.Routes đểquyết định Controller nào sẽ điều khiển request
Trang 20MVC Framework chọn Controller bằng cách định giá các quy tắc trong bảngđịnh tuyến theo trật tự đã có sẵn.
4 Các ưu điểm và nhược điểm của ASP.NET MVC:
4.1. Ưu điểm:
Phát triển phần mềm: Có tính chuyên nghiệp hóa, có thể chia cho nhiềunhóm được đào tạo nhiều kỹ năng khác nhau, từ thiết kế mỹ thuật cho đến lập trìnhđến tổ chức database
Bảo trì: Với các lớp được phân chia, các thành phần của một hệ thống dễdàng được thay đổi, nhưng sự thay đổi có thể được cô lập trong từng lớp, hoặc chỉảnh hưởng đến lớp ngay gần kề của nó, không phát tán trong cả chương trình
Mở rộng: Với các lớp được chia theo ba lớp như đã nói, việc thêm chức năngvào cho từng lớp sẽ dễ dàng hơn là phân chia theo cách khác
Hỗ trợ tốt hơn cho test-driven development cài đặt các unit tests tự động, xácđịnh và kiểm tra lại các yêu cầu trước khi bắt tay vào viết code
4.2. Nhược điểm:
Đối với dự án nhỏ: Cồng kềnh, tốn thời gian phát triển
Tốn kém nhiều tài nguyên cho sự cân bằng, do tốn thời gian trung chuyểnDTO (Data Transfer Object) giữa các layers
Trang 21CHƯƠNG III: PHÂN TÍCH & THIẾT KẾ
4 Khách viếng thăm Tra cứu Tuyến
2 Danh sách Use Case:
ST
1 Đăng nhập Use case Đăng nhập hệ thống
2 Phục hồi mật khẩu Use case phục hồi lại mật khẩu đăng nhập hệ thống
3 Đăng xuất Use case Đăng xuất hệ thống
4 Tra cứu vé Use case cho phép Tra cứu thông tin để Đặt vé
5 Đặt vé Use case cho phép Đặt vé xe
6 Thanh toán Use case cho phép thực hiện thanh toán tiền vé
7 Hủy vé Use case cho phép Hủy vé xe đã đặt
8 Xác nhận Vé
đã Thanh toán Use case cho phép Xác nhận Vé đã Thanh toán
9 Xử lý Khách chờ Use case cho phép Xử lý Khách hàng đã đặt chờ vé
10 Quản lý Tài khoản Use case cho phép đăng ký tài khoản mới, sửa thông tin Tài
khoản
11 Quản lý Danh
mục địa điểm Use case cho phép thêm, xóa, sửa, xem thông tin Xe.
12 Quản lý Hình
thức giảm giá Use case cho phép thêm, xóa, sửa, xem thông tin Tuyến.
13 Quản lý Lịch trình Use case cho phép thêm, xóa, sửa, xem thông tin Lịch trình
14 Quản lý Loại Vé Use case cho phép thêm, xóa, sửa, xem thông tin Loại Vé
15 Quản lý Loại Xe Use case cho phép thêm, xóa, sửa, xem thông tin Loại Xe
16 Quản lý Tuyến Use case cho phép thêm, xóa, sửa, xem thông tin Hình thức
Trang 223 Sơ đồ Use Case tổng quát:
Trang 23Hình 2: Use case Tổng quát
Trang 244 Mô tả và biểu đồ Use Case:
USE CASE ĐĂNG NHẬP
Description Cách Actor đăng nhập vào hệ thống thông qua tài khoản của
mình
Actor Quản trị, Nhân viên, Khách hàng
Preconditions Actor đã có tài khoản trong hệ thống và chưa đăng nhập vào hệ
3 Hệ thống kiểm tra Tên đăng nhập và Mật khẩu ở DB
4 Đăng nhập thành công, hệ thống chuyển về trang chủ
Exception 3.1 Tên đăng nhập hoặc Mật khẩu sai: hệ thống thông báo đăng
nhập không thành công và yêu cầu nhập lại
Hình 3: Biểu đồ Tuần tự cho Use case Đăng nhập
USE CASE PHỤC HỒI MẬT KHẨU
Trang 25No. UC02
Name Phục hồi mật khẩu
Description Cách Actor phục hồi mật khẩu của mình
1 Actor nhập Tên đăng nhập hoặc Email
2 Hệ thống kiểm tra Tên đăng nhập hoặc Email phải đượcnhập vào Tên đăng nhập không chứa ký tự đặc biệt, Emailđúng cú pháp
3 Hệ thống kiểm tra Tên đăng nhập hoặc Email ở DB
Exception
3.1 Tên đăng nhập hoặc Email tồn tại trong hệ thống, hệ thống
tự động gửi Email chứa mật khẩu mới tới địa chỉ mail đã đăngký
3.2 Tên đăng nhập hoặc Email không tồn tại trong hệ thống,thông báo không tồn tại tài khoản và kết thúc Use Case
Hình 4: Biểu đồ Tuần tự cho Use case Phục hồi mật khẩu
USE CASE ĐĂNG XUẤT
Trang 26No. UC03
Description Cách Actor đăng xuất khỏi hệ thống
Actor Quản trị, Nhân viên, Khách hàng
Preconditions Actor đang đăng nhập hệ thống
Post
Conditions Actor đã đăng xuất ra khỏi hệ thống.
Main flow
1 Actor chọn chức năng Đăng xuất
2 Hệ thống hủy phiên làm việc hiện tại và tự động chuyển vềtrang chủ
Exception
USE CASE QUẢN LÝ TÀI KHOẢN
Hình 5: Use Case Quản Lý Tài khoản
Trang 27Hình 6: Biểu đồ Hoạt động của Use Case Quản lý Tài khoản
Trang 28USE CASE ĐĂNG KÝ TÀI KHOẢN MỚI
Name Đăng ký Tài khoản mới
Description Use case mô tả cách Actor đăng ký tài khoản mới
Actor Khách viếng thăm
Preconditions Actor chưa có tài khoản trong hệ thống
Post
Conditions
Actor đăng ký tài khoản thành công
Main flow 1 Use case sẽ được thực hiện khi Actor chọn chức năng Đăng
ký
2 Hệ thống hiển thị trang Đăng ký
3 Actor nhập vào các thông tin: tên đăng nhập, mật khẩu, xácnhận mật khẩu, họ tên, email, điện thoại, giới tính, ngày sinh,chứng minh thư, địa chỉ, mã xác nhận Sau đó click nút Đăngký
4 Hệ thống kiểm tra thông tin Actor nhập vào
5 Hệ thống lưu thông tin tài khoản mới xuống DB
6 Chuyển qua trang thông báo tạo tài khoản mới thành công và
tự động đăng nhập vào hệ thống, chuyển tới trang Thông báođăng ký tài khoản mới thành công
Exception 4.1 Kiểm tra tên đăng nhập bắt buộc phải nhập, không chứa
ký tự đặc biệt, chưa được đăng ký, nếu không yêu cầu Actorchọn tên đăng nhập khác
4.2 Kiểm tra độ dài mật khẩu phải lớn hơn hoặc bằng 6 ký tự,không chứa ký tự đặc biệt và xác nhận mật khẩu phải giống vớimật khẩu, nếu không yêu cầu nhập lại
4.3 Kiểm tra email phải đúng cú pháp, chưa tồn tại, nếu khôngyêu cầu nhập lại
4.4 Kiểm tra số điện thoại chỉ chứa số, chưa tồn tại, nếukhông yêu cầu nhập lại
Trang 29Hình 7: Biểu đồ Tuần tự cho Use case Đăng ký Tài khoản mới.
USE CASE SỬA THÔNG TIN TÀI KHOẢN
Name Sửa Thông tin Tài khoản
Description Use case mô tả cách Actor Sửa Thông tin tài khoản của mình
Actor Khách hàng, Nhân viên, Quản trị
Preconditions Actor đã đăng nhập vào hệ thống
Post
Conditions
Actor thay đổi thông tin tài khoản thành công
Main flow 1 Use case sẽ được thực hiện khi Actor chọn chức năng Sửa
Thông tin Cá nhân
2 Hệ thống hiển thị trang Sửa Thông tin Cá nhân
3 Actor chỉ được phép sửa các thông tin sau: mật khẩu, email,
họ tên, điện thoại, địa chỉ Sau đó click nút Lưu
4 Hệ thống kiểm tra thông tin Actor nhập vào
5 Hệ thống cập nhật lại thông tin tài khoản xuống DB
6 Thông báo cập nhật thành công
Trang 30Exception 4.5 Kiểm tra độ dài mật khẩu có nhỏ hơn 6 ký tự, có chứa ký
tự đặc biệt và không giống với xác nhận mật khẩu, yêu cầunhập lại Nếu bỏ trống thì không cập nhật lại mật khẩu
4.6 Kiểm tra email chưa đúng cú pháp, đã tồn tại và khônggiống với xác nhận địa chỉ email, yêu cầu nhập lại
4.7 Kiểm tra số điện thoại chưa đúng cú pháp, đã tồn tại, yêucầu nhập lại
4.8 Kiểm tra họ tên, địa chỉ chưa được nhập, yêu cầu nhậpđầy đủ
Hình 8: Biểu đồ Tuần tự cho Use case Sửa Thông tin Tài khoản
USE CASE TRA CỨU VÉ
Description Use case mô tả cách Actor tra cứu vé để đặt vé xe
Trang 31Actor Khách hàng, nhân viên, quản trị.
Preconditions Actor đã đăng nhập
2 Actor chọn điểm đi, điểm đến, ngày đi và nhấn nút tìm kiếm
3 Hệ thống truy vấn dữ liệu thỏa mãn yêu cầu tìm kiếm và hiểnthị ra danh sách các xe, giờ chạy, số lượng chỗ còn trống
4 Actor chọn xe còn chỗ trống có giờ chạy mà mình muốn
5 Hệ thống hiển thị sơ đồ chỗ của xe được chọn
Exception 4.1 Nếu Actor không chọn được chỗ ở xe có giờ chạy mình
muốn, thì có thể chọn chức năng Đặt chờ vé ở xe có giờ chạymình muốn Để được đưa vào danh sách chờ bắt buộc Actorphải đăng nhập vào hệ thống Kết thúc Use case
Hình 9: Biểu đồ Tuần tự cho Use case Tra cứu vé
USE CASE ĐẶT VÉ XE
Description Cách Actor đặt vé xe
Actor Khách hàng, Nhân viên, Quản trị
Trang 32Preconditions Actor đã đăng nhập.
Post
Conditions
Actor tạo được Giỏ vé đặt
Main flow 1 Actor chọn điểm đi, điểm đến, ngày đi và nhấn nút Tìm
kiếm
2 Hệ thống truy vấn dữ liệu thỏa mãn yêu cầu tìm kiếm và hiểnthị ra danh sách các xe, giờ chạy, số lượng chỗ còn trống
3 Actor chọn xe còn chỗ trống có giờ chạy mà mình muốn
4 Hệ thống hiển thị sơ đồ chỗ của xe được chọn
5 Actor chọn chỗ còn trống muốn đặt, có thể chọn nhiều chỗtrống trong một lần đặt Chọn xong nhấn nút Đưa vào Giỏ vé,
để có thể chọn chỗ trống ở xe khác trong cùng điểm đi, điểmđến, ngày đi và giờ đi
6 Chọn xong Giỏ vé, Actor chọn thanh toán giỏ vé, hệ thốngchuyển tới trang hình thức thanh toán và chuyển sang Use casethanh toán Use case kết thúc
Exception 3.1 Nếu Actor không chọn được chỗ ở xe có giờ chạy mình
muốn, thì có thể chọn chức năng Đặt chờ vé ở xe có giờ chạymình muốn Để được đưa vào danh sách chờ bắt buộc Actorphải đăng nhập vào hệ thống Kết thúc Use case
Trang 33Hình 10: Biểu đồ Tuần tự cho Use case Đặt vé xe
Trang 34USE CASE THANH TOÁN
Description Mô tả các hình thức và cách thanh toán tiền vé xe đã đặt
Actor Khách hàng, Nhân viên, Quản trị
Preconditions Actor đã đăng nhập vào hệ thống và giỏ vé đã có
Post
Conditions
Actor thanh toán vé thành công
Main flow Hệ thống hiển thị trang hình thức thanh toán với 3 hình thức
thanh toán sau khi Actor chọn thanh toán giỏ vé Actor sẽ chọn
1 trong 3 hình thức thanh toán sau:
- Trực tiếp khi lấy vé
- Chuyển khoản qua ngân hàng
- Thanh toán trực tuyến bằng Paypal
1 Actor chọn hình thức thanh toán trực tiếp khi lấy vé
1.1 Hệ thống hiển thị Thông tin Khách hàng, quy định về điềukiện vận chuyển và thanh toán, yêu cầu nhập thông tin tênngười sẽ thanh toán tiền, số điện thoại và mã bảo mật của hệthống
1.2 Actor nhập thông tin, mã bảo mật và xác nhận đặt vé.1.3 Hệ thống ghi nhận thông tin đặt vé vào DB
1.4 Hệ thống thực hiện gửi email thông báo đặt vé và hiển thịmẫu phiếu giữ chỗ Actor có thể in phiếu này để thực hiệnthanh toán tại phòng vé
2 Actor chọn hình thức thanh toán chuyển khoản qua ngânhàng
2.1 Hệ thống hiển thị danh sách các tài khoản ngân hàng màActor có thể chuyển khoản thanh toán tiền vé của mình, hệthống yêu cầu chọn Ngân hàng và nhập họ tên, số tài khoản củaActor và mã bảo mật
2.2 Actor nhập thông tin, mã bảo mật và xác nhận đặt vé.2.3 Hệ thống ghi nhận thông tin đặt vé vào DB
2.4 Hệ thống thực hiện gửi email thông báo đặt vé và hiển thị
Trang 35mẫu phiếu giữ chỗ Actor có thể in phiếu này để nhận vé tạiphòng vé.
3 Actor chọn hình thức thanh toán trực tuyến bằng Tài khoảnPaypal
3.1 Hệ thống thực hiện chuyển tiếp thông tin phiếu đặt (hóađơn) đến trang website của dịch vụ thanh toán
3.2 Actor thực hiện thanh toán với dịch vụ thanh toán
Exception 1.2.1 Actor nhập mã bảo mật bị sai, yêu cầu nhập lại
1.2.2 Actor không thực hiện xác nhận đặt vé, hệ thống hủy quátrình đặt vé
2.2.1 Actor nhập mã bảo mật bị sai, yêu cầu nhập lại
2.2.2 Actor không thực hiện xác nhận đặt vé, hệ thống hủy quátrình đặt vé
Hình 11: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán trực tiếp)
Trang 36Hình 12: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán qua Ngân hàng)
Hình 13: Biểu đồ Tuần tự cho Use case Thanh toán (Thanh toán Paypal)
Trang 37USE CASE HỦY VÉ XE
Description Use case mô tả cách Actor hủy vé xe đã đặt
Actor Khách hàng, nhân viên, quản trị
Preconditions Actor đã đăng nhập vào hệ thống
Post
Conditions
Actor hủy vé xe thành công
Main flow A Actor chọn hủy vé.
1 Use case sẽ thực hiện khi Actor chọn hành động hủy vé của
vé cần hủy từ danh sách vé đã đặt
2 Hệ thống xác nhận hành động hủy vé của Actor
3 Actor xác nhận hành động hủy của mình
4 Thông báo thành công
B Hệ thống tự động hủy vé.
Nếu khách hàng không thanh toán vé trước thời gian quy địnhthì hệ thống sẽ tự động hủy vé (tức là chuyển tình trạng của vésang trạng thái hủy)
Exception 3.1 Xác nhận Hủy vé, hệ thống sẽ cập nhật lại tình trạng của Vé
về trạng thái hủy
3.2 Hủy hành động Hủy vé, và kết thúc Use case
Trang 38Hình 14: Biểu đồ Tuần tự cho Use case Hủy Vé
USE CASE XÁC NHẬN VÉ ĐÃ THANH TOÁN
Name Xác nhận vé đã thanh toán
Description Use case mô tả cách Actor xác nhận vé được đặt đã thanh toán
Actor Nhân viên, quản trị
Preconditions Actor đã đăng nhập vào hệ thống
Post
Conditions
Actor xác nhận vé được đặt đã thanh toán thành công
Main flow 1 Use case sẽ thực hiện khi Actor chọn chức năng Xác nhận vé
đã thanh toán
2 Hệ thống hiển thị danh sách vé đã được đặt, có cho phép tìmkiếm theo các điều kiện như: ngày đặt, ngày đi, tên tuyến, tênkhách hàng, số điện thoại của khách hàng
Trang 393 Actor chọn Xem Chi tiết vé đặt từ danh sách để thực hiệnxác nhận thanh toán.
4 Hệ thống hiển thị Chi tiết vé đã được chọn
5 Actor chọn nút Xác nhận để thực hiện Xác nhận thanh toán
6 Hệ thống cập nhật lại tình trạng cho vé là đã thanh toán
Exception
Hình 15: Biểu đồ Tuần tự cho Use case Xác nhận Vé đã Thanh toán
USE CASE XỬ LÝ KHÁCH CHỜ
Trang 40Name Xử Lý Khách Chờ
Description Use case mô tả cách Actor Xử Lý Khách Chờ
Actor Nhân viên, quản trị
Preconditions Actor đã đăng nhập vào hệ thống
Post
Conditions
Main flow 1 Use case sẽ thực hiện khi Actor chọn chức năng Xử Lý
Khách Chờ trên menu Quản lý