Với cách tiếp cận này, một hệ thống được chia tương ứng các thành phần nhỏgọi là các đối tượng, mỗi đối tượng bao gồm đầy đủ cả dữ liệu và hành độngliên quan đến đối tượng đó.. Đây chí
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM – ĐẠI HỌC ĐÀ NẴNG
KHOA TIN HỌC
BÁO CÁOKHÓA LUẬN TỐT NGHIỆP
Trang 2LỜI CẢM ƠN
Trong suốt quá trình thực hiện khóa luận, em đã may mắn có được sự hỗ trợ, giúp đỡ từ phía thầy cô, bạn bè, gia đình Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở khoa CNTT Trường Đại học Sư phạm Đà Nẵng, lời cảm ơn chân thành nhất, vì những tâm huyết và thời gian mà quý Thầy Cô đã bỏ ra để truyền đạt lại vốn kiến thức quý báu cho chúng em trong suốt quãng thời gian học tại trường.
Đầu tiên, em xin chân thành gửi lời cảm ơn đến Tiến sĩ Nguyễn Hoàng Hải, thầy đã tận tình hướng dẫn và giúp đỡ em trong quá trình thực hiện khóa luận này.
Sự hiểu biết sâu sắc về khoa học cũng như kinh nghiệm của thầy chính là tiền đề giúp em hoàn thành khóa luận này.
Em xin trân trọng cảm ơn.
Đà Nẵng, ngày 26 tháng 04 năm 2019
Sinh viên thực hiện
Phùng Thị Mỹ Nhung
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan:
1 Những nội dung trong báo cáo này là do em thực hiện dưới sự hướng dẫn trực tiếp của TS Nguyễn Hoàng Hải.
2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm.
Sinh viên thực hiện
Phùng Thị Mỹ Nhung
Trang 4MỤC LỤC
LỜI CẢM ƠN 2
LỜI CAM ĐOAN 3
DANH MỤC CÁC BẢNG 8
DANH MỤC HÌNH ẢNH 9
PHẦN 1: TỔNG QUAN ĐỀ TÀI 10
1 Lý do chọn đề tài 10
2 Mục tiêu và nhiệm vụ đề tài 10
2.1 Mục tiêu 10
2.2 Nhiệm vụ 10
3 Đối tượng và phạm vi nghiên cứu 10
3.1 Đối tượng nghiên cứu 10
3.2 Phạm vi nghiên cứu 11
4 Phương pháp nghiên cứu 11
4.1 Phương pháp lý thuyết 11
4.2 Phương pháp thực tiễn 11
5 Phương tiện, công cụ triển khai 11
6 Kết quả dự kiến 11
6.1 Lý thuyết 11
6.2 Thực tiễn 11
7 Bố cục của khóa luận 13
PHẦN 2: NỘI DUNG ĐỀ TÀI 14
CHƯƠNG I: CƠ SỞ LÝ THUYẾT 14
1.1 Phân tích thiết kế hệ thống 14
1.1.1 Định nghĩa 14
1.1.2 Ưu điểm 14
1.2 Phân tích và thiết kế hệ thống hướng đối tượng (OOAD) 14
1.2.1 Sơ lược về phân tích và thiết kế hướng cấu trúc 14
Trang 51.2.3 Các khái niệm cơ bản của hướng đối tượng 15
1.2.4 Các nguyên tắc cơ bản của phương pháp hướng đối tượng 15
1.3 Tìm hiểu về UML 16
1.3.1 Định nghĩa 16
1.3.2 Thiết kế hướng đối tượng sử dụng UML 16
1.4 Nền tảng công nghệ 17
1.4.1 Tổng quan về MySQL 17
1.4.2 Tổng quan ngôn ngữ lập trình Java 17
1.4.3 Tổng quan về framework Spring 18
1.4.3.1 Spring là gì? 18
1.4.3.2 Sự ra đời của Spring 18
1.4.3.3 Ưu điểm khi dùng Spring Framework: 19
1.4.3.4 Kiến trúc, các module của Spring Framework 19
1.4.3.5 Các dự án trong Spring Framework 21
1.4.4 Tổng quan về Spring Boot 21
1.4.5 Tổng quan về Thymeleaf 22
1.4.4.1 Thymeleaf là gì? 22
1.4.4.2 Ưu điểm khi sử dụng Thymeleaf 22
1.5 Các công cụ hỗ trợ 23
1.5.1 Spring Tool Suite 23
1.5.2 MySQL Workbench 23
1.5.2.1 MySQL Workbench là gì? 23
1.5.2.2 MySQL workbench - Công cụ dựng hình và thiết kế 23
1.5.2.3 MySQL workbench – Công cụ phát triển SQL 24
1.5.2.4 MySQL workbench – Công cụ quản trị 25
1.5.3 GitLab 25
1.5.3.1 Gitlab là gì? 25
1.5.3.2 Lịch sử hình thành GitLab 26
Trang 6CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ 28
2.1 Phân tích hiện trạng 28
2.2 Phân tích thiết kế 28
2.2.1 Biểu đồ ca sử dụng 28
2.2.1.1 Mở đầu 28
2.2.1.2 Mô tả các tác nhân (Actor) có trong hệ thống 29
2.2.1.3 Biểu đồ ca sử dụng tổng quát 30
2.2.1.4 Biểu đồ ca sử dụng của quản lý hệ thống 31
2.2.1.5 Biểu đồ ca sử dụng cho quản lý rạp 31
2.2.1.6 Biểu đồ ca sử dụng cho nhân viên 32
2.2.1.7 Biểu đồ ca sử dụng cho người dùng 33
2.2.1.8 Đặc tả các ca sử dụng 33
2.2.2 Phân tích và thiết kế cơ sở dữ liệu 51
2.2.2.1 Biểu đồ cơ sở dữ liệu quan hệ 51
2.2.2.2 Dữ liệu các bảng 51
CHƯƠNG III THỬ NGHIỆM VÀ ĐÁNH GIÁ 58
3.1 Môi trường triển khai 58
3.2 Giao diện hệ thống 58
3.2.1 Giao diện trang đăng nhập 58
3.2.2 Giao diện đăng ký 59
3.2.3 Giao diện trang chủ 59
3.2.4 Giao diện trang quản lý hệ thống 60
3.2.5 Giao diện trang quản lý rạp 60
PHẦN 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61
1 Kết luận 61
1.1 Ưu điểm 61
1.2 Nhược điểm 61
1.3 Kết luận 61
Trang 7TÀI LIỆU THAM KHẢO 62
Trang 8DANH MỤC CÁC BẢNG
Bảng 1: Mô tả các tác nhân trong hệ thống 29
Bảng 2: Đặc tả ca sử dụng “Đăng nhập” 34
Bảng 3: Đặc tả ca sử dụng “Đăng ký” 35
Bảng 4: Đặc tả ca sử dụng “Đăng xuất” 36
Bảng 5: Đặc tả ca sử dụng “Quản lý tài khoản” 37
Bảng 6: Đặc tả ca sử dụng “Quản lý rạp” 38
Bảng 7: Đặc tả ca sử dụng “Quản lý người dùng” 39
Bảng 8: Đặc tả ca sử dụng “Quản lý quốc gia” 40
Bảng 9: Đặc tả ca sử dụng “Quản lý thể loại” 41
Bảng 10: Đặc tả ca sử dụng “Quản lý phim” 42
Bảng 11: Đặc tả ca sử dụng “Quản lý phòng chiếu” 44
Bảng 12: Đặc tả ca sử dụng “Quản lý ghế” 45
Bảng 13: Đặc tả ca sử dụng “Quản lý phòng chiếu” 46
Bảng 14: Đặc tả ca sử dụng “Quản lý danh sách vé” 47
Bảng 15: Đặc tả ca sử dụng “Quản lý nhân viên” 48
Bảng 16: Đặc tả ca sử dụng “Tìm kiếm thông tin vé xe” 49
Bảng 17: Đặc tả ca sử dụng “Chọn ghế” 50
Bảng 18: Đặc tả ca sử dụng “Xem lịch sử đặt vé” 50
Bảng 19: Bảng "Roles" 52
Bảng 20: Bảng "User" 52
Bảng 21: Bảng "User_Role" 53
Bảng 22: Bảng "Token" 53
Bảng 23: Bảng "Cinema" 54
Bảng 24: Bảng "Auditorium" 54
Bảng 25: Bảng "Movie" 55
Bảng 26: Bảng "Country" 55
Bảng 27: Bảng "Category" 55
Bảng 28: Bảng "Seat" 56
Bảng 29: Bảng "Showtimes" 56
Bảng 30: Bảng "Ticket" 57
Trang 9DANH MỤC HÌNH ẢNH
Hình 1: Hình kiến trúc tổng thể của Spring Framework 19
Hình 2: Cửa sổ dựng hình của MySQL Workbench 23
Hình 3: cửa sổ phát triển SQL của MySQL Workbench 24
Hình 4: Biểu đồ ca sử dụng tổng quát 29
Hình 5: Biểu đồ ca sử dụng của quản lý hệ thống 30
Hình 6: Biểu đồ ca sử dụng cho quản lý rạp 31
Hình 7: Biểu đồ ca sử dụng cho nhân viên 31
Hình 8: Biểu đồ ca sử dụng cho người dùng 32
Hình 9: Biểu đồ ca đăng nhập 32
Hình 10: Biểu đồ ca sử dụng cho đăng ký 33
Hình 11: Biểu đồ ca sử dụng cho đăng xuất 34
Hình 12: Biểu đồ ca sử dụng cho quản lý tài khoản 35
Hình 13: Biểu đồ ca sử dụng cho quản lý rạp 36
Hình 14: Biểu đồ ca sử dụng cho quản lý người dùng 37
Hình 15: Biểu đồ ca sử dụng cho quản lý quốc gia 38
Hình 16: Biểu đồ ca sử dụng cho quản lý thể loại 39
Hình 17: Biểu đồ ca sử dụng cho quản lý phim 41
Hình 18: Biểu đồ ca sử dụng cho quản lý phòng chiếu 42
Hình 19: Biểu đồ ca sử dụng cho quản lý ghế 43
Hình 20: Biểu đồ ca sử dụng cho quản lý lịch chiếu 44
Hình 21: Biểu đồ ca sử dụng cho quản lý danh sách vé 45
Hình 22: Biểu đồ ca sử dụng cho quản lý nhân viên 46
Hình 23: Biểu đồ ca sử dụng cho quản lý tìm kiếm vé 47
Hình 24: Biểu đồ ca sử dụng cho chọn ghế 48
Hình 25: Biểu đồ ca sử dụng cho quản lý danh sách vé 49
Hình 26: Biểu đồ cơ sở dữ liệu quan hệ 50
Hình 27: Màn hình trang đăng nhập 57
Hình 28: Màn hình trang đăng ký 58
Hình 29: Màn hình trang chủ 58
Hình 30: Màn hình trang quản lý hệ thống 59
Hình 31: Màn hình trang quản lý rạp 59
Trang 10PHẦN 1: TỔNG QUAN ĐỀ TÀI
1 Lý do chọn đề tài
Với sự phát triển không ngừng của Internet, chúng ta có thể dễ dàng đặt mộtmón đồ yêu thích qua mạng Chính sự phát triển này đã đem đến sự ra đời của nhiềuwebsite giúp chúng ta chỉ cần ở nhà cũng có thể lựa chọn được mà không cần đếntận nơi
Hiện nay, mọi người thích đến xem phim ở các rạp Xem phim giúp họ giải tỏamệt mỏi hay là nơi thích hợp để nhiều bạn trẻ hẹn hò, cả gia đình vui vẻ cùng nhauvới nhiều bộ phim hài thú vị Ngoài ra, ở Đà Nẵng, các rạp phim đều chỉ có hệthống đặt vé và bán vé riêng lẻ, mà chưa có hệ thống nào vừa cung cấp thông tin véxem phim của nhiều rạp đồng kết hợp luôn chức năng hỗ trợ khách hàng đặt vé Vìviệc mua vé tại các rạp tốn khá nhiều thời gian, web đặt vé xem phim trước có thểgiúp mọi người tiết kiệm thời gian, lựa chọn được bộ phim thích hợp trong khunggiờ thích hợp Đó là lí do của đề tài “Xây dựng website đặt vé xem phim ở các rạptại Đà Nẵng sử dụng Java Spring”
2 Mục tiêu và nhiệm vụ đề tài
Để đạt được mục tiêu trên, thì nhiệm vụ đặt ra của đề tài là:
- Thu nhập dữ liệu từ thực tế, tổng hợp phân tích dữ liệu cho vấn đề nhữngrạp phim ở Đà Nẵng, những bộ phim đang chiếu và đặt vé xem phim
- Nghiên cứu các công nghệ và phần mềm cần thiết để xây dựng và phát triểnweb đặt vé xem phim
- Nghiên cứu các web đặt vé xem phim có trên thị trường
- Xây dựng các chức năng hỗ trợ người sử dụng có thể dễ dàng đặt vé và cungcấp những thông tin cần thiết về các rạp, các bộ phim đã lựa chọn
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Ngôn ngữ lập trình Java
Trang 11- Hệ quản trị cơ sở dữ liệu MySQL.
- Thông tin dữ liệu của các rạp chiếu phim, bộ phim
- Framework Spring
3.2 Phạm vi nghiên cứu
- Nghiên cứu dữ liệu thông tin của các bộ phim, rạp chiếu phim ở Đà Nẵng
- Các chức năng của trang web cho người dùng như: đăng nhập, hiển thịthông tin các rạp, bộ phim, thời gian chiếu phim, thực hiện đặt vé và đăng
kí chỗ ngồi phù hợp
- Nghiên cứu các chức năng quản lí: thêm, sửa, xóa các rạp phim, bộ phim
và thống kê doanh thu
4 Phương pháp nghiên cứu
4.1 Phương pháp lý thuyết
- Tiến hành thu thập và nghiên cứu các tài liệu có liên quan đến đề tài
- Nghiên cứu ngôn ngữ lập trình Java
- Nghiên cứu hệ quản trị cơ sở dữ liệu MySQL
- Nghiên cứu HTML, CSS, Javascript, Jquery
4.2 Phương pháp thực tiễn
- Web hỗ trợ đầy đủ tính năng đặt vé, chuyển đổi vé, hủy vé cho người dùng
- Ngoài ra người dùng còn có thể lưu các thông tin cá nhân, xem lại lịch sửmua vé
5 Phương tiện, công cụ triển khai
- Ngôn ngữ lập trình Java
- Hệ quản trị cơ sở dữ liệu MySQL
6 Kết quả dự kiến
6.1 Lý thuyết
- Nắm được lý thuyết nền tảng về ngôn ngữ lập trình Java và công nghệ web
- Nắm vững lý thuyết về hệ quản trị cơ sở dữ liệu MySQL
6.2 Thực tiễn
- Đưa ra được web đặt vé xe phim giúp người dùng lựa chọn được những rạpphim và bộ phim phù hợp
Trang 127 Bố cục của khóa luận
Phần 1: Giới thiệu đề tài
Mở đầu
Phần 2: Nội dung đề tài
Chương I: Cơ sở lý thuyết
Chương II: Phân tích thiết kế hệ thống
Chương III: Thử nghiệm và đánh giá
Phần 3: Kết luận và hướng phát triển
Trang 13PHẦN 2: NỘI DUNG ĐỀ TÀI CHƯƠNG I: CƠ SỞ LÝ THUYẾT 1.1 Phân tích thiết kế hệ thống
1.1.1 Định nghĩa
Là quá trình tìm hiểu và mô phỏng lại hiện tượng, quy trình nghiệp vụ trongthế giới thực từ đó xây dựng hệ thống để giải quyết bài toán đặt ra trên máytính
Để xây dựng một hệ thống tốt và đáp ứng được yêu cầu từ phía người dùng,chúng ta cần tiến hành phân tích thiết kế hệ thống cho website Đây chính lànhân tố quyết định cho chất lượng phần mềm
Có hai cách tiếp cận phân tích và thiết kế hệ thống :
Hướng cấu trúc/chức năng
Hướng đối tượng
1.1.2 Ưu điểm
Có cái nhìn đầy đủ, đúng đắn và chính xác về hệ thống đang được xây dựng
Tránh sai lầm trong thiết kế và cài đặt
Dễ dàng thay đổi yêu cầu
Dễ kiểm thử
Dễ bảo trì
Có tính tiến hóa cao
Có khả năng tái sử dụng cao
1.2 Phân tích và thiết kế hệ thống hướng đối tượng (OOAD)
1.2.1 Sơ lược về phân tích và thiết kế hướng cấu trúc
Phân chia chương trình chính thành nhiều chương trình con, mỗi chươngtrình con nhằm đến thực hiện một công việc xác định
Cách thực hiện: phương pháp thiết kế từ trên xuống (top-down) Phươngpháp này tiến hành phân rã bài toán thành các bài toán nhỏ hơn, rồi tiếp tụcphân rã các bài toán con cho đến khi nhận được các bài toán có thể cài đặtđược ngay sử dụng các hàm của ngôn ngữ lập trình hướng cấu trúc
Trang 141.2.2 Định nghĩa về phân tích và thiết kế hướng đối tượng
Khác với phương pháp hướng cấu trúc chỉ tập trung vào dữ liệu hoặc vàohành động, phương pháp hướng đối tượng tập truung và cả hai khía cạnh của
hệ thống là dữ liệu và hành động
Hệ thống = tập hợp các đối tượng + quan hệ giữa các đối tượng
Là một lối tư duy theo cách ánh xạ các thành phần trong bài toán vào các đốitượng ngoài đời thực
Với cách tiếp cận này, một hệ thống được chia tương ứng các thành phần nhỏgọi là các đối tượng, mỗi đối tượng bao gồm đầy đủ cả dữ liệu và hành độngliên quan đến đối tượng đó
1.2.3 Các khái niệm cơ bản của hướng đối tượng
Đối tượng: một đối tượng biểu diễn môt thực thể vật lý, một thực thể kháiniệm hoặc một thực thể phần mềm Có thể định nghĩa một đối tượng là mộtkhái niệm, sự trừu tượng hoặc một vật với giới hạn rõ ràng và có ý nghĩa vớimột ứng dụng cụ thể
Lớp: mô tả một tập hợp các đối tượng có cùng một cấu trúc, cùng hành vi và
có cùng những mối quan hệ với các đối tượng khác Như vậy, một đối tượng
là thể hiện của một lớp và một lớp là một định nghĩa trừu tượng của đốitượng
Gói: là một cách tổ chức các thành phần, phần tử trong hệ thống thành cácnhóm Nhiều gói có thể được kết hợp với nhau để trở thành một hệ thốngcon
Kế thừa: trong phương pháp hướng đối tượng, một lớp có thể sử dụng lại cácthuộc tính và phương thức của một hoặc nhiều lớp khác
1.2.4 Các nguyên tắc cơ bản của phương pháp hướng đối tượng
Trừu tượng hóa (abstraction):
Các thực thể phần mềm được mô hình hoá dưới dạng các đối tượng
Các đối tượng được trừ tượng hóa ở mức cao hơn dựa trên thuộc tính
và phương thức mô tả đối tượng để tạo thành lớp
Các lớp được trừu tượng hóa ở mức cao hơn nữa để tao thành mộtBiểu đồ các lớp được kế thừa lẫn nhau Trong phương pháp hướng đốitượng có thể tồn tại những lớp không có đối tượng tương ứng gọi làlớp trừu tường
Trang 15 Tính bao đóng (encapsulation): che dấu mọi chi tiết hiện thực của đối tượngkhông cho bên ngoài thấy và truy xuất Đây chính là tính độc lập cao giữacác đối tượng.
Che dấu các thuộc tính dữ liệu: nếu cần cho phép truy xuất một thuộctính dữ liệu, ta tạo hai phương thức set/get tương ứng để giám sát việctruy xuất và che dấu chi tiết hiện thực bên trong (thuộc tính private)
Che dấu chi tiết hiện thực các phương thức
Che dấu các hàm và sự hiện thực của chúng
Tính modul hóa (modularity): các bài toán sẽ được phân chia thành nhữngvấn đè nhỏ hơn, đơn giản và quản lý được
Tính phân cấp (hierarchy): cấu trúc chung của một hệ thống hướng đối tượng
là dạng phân cấp theo các mức độ trừu tượng từ cao đến thấp
1.3 Tìm hiểu về UML
1.3.1 Định nghĩa
Là ngôn ngữ mô hình hóa hợp nhập dùng để biểu diễn hệ thống Nói mộtcách đơn giản là nó dùng để tạo ra các bản vẽ nhằm mô tả thiết kế hệ thống.Các bản vẽ này được sử dụng để các nhóm thiết kế trao đổi với nhau cũngnhư dùng phát triển hệ thống, thuyết phục khách hàng, các nhà đầu tư,… vv
1.3.2 Thiết kế hướng đối tượng sử dụng UML
Thiết kế hướng đối tượng sử dụng UML bao gồm các thành phần sau:
Góc nhìn (View):
- Góc nhìn ca sử dụng: cung cấp góc nhìn về các ca sử dụng giúpchúng ta hiểu hệ thống có gì, ai dùng và dùng nó như thế nào
- Góc nhìn logic: cung cấp góc nhìn về cấu trúc hệ thống, xem nóđược tổ chức như thế nào Bên trong nó có gì
- Góc nhìn tiến trình: cung cấp góc nhìn động về hệ thống, xem cácthành phần trong hệ thống tương tác với nhau như thể nào
Trang 16 Bản vẽ (Diagram): các bản vẽ được sử dụng để thể hiện các góc nhìncủa hệ thống.
- Bản vẽ ca sử dụng: mô tả về ca sử dụng của hệ thống Giúp chochúng ta biết được ai sử dụng hệ thống, hệ thông có nhữngchức năng gì Lập được bản vẽ này chúng ta sẽ hiểu được yêu cầucủa hệ thống cần xây dựng
- Bản vẽ lớp: mô tả cấu trúc của hệ thống, tức hệ thống được cấu tạo
từ những thành phần nào Mô tả khía cạnh tĩnh của hệ thống
- Bản vẽ đối tượng: tương tự như bản vẽ lớp nhưng nó mô tả đếnđối tượng thay vì lớp
- Bản vẽ tuần tự: mô tả sự tương tác của các đối tượng trong hệthống với nhau được mô tả tuần tự các bước tương tác theo thờigian
- Bản vẽ kết hợp: tương tự như bản vẽ tuần tự nhưng nhấn mạnh về
sự tương tác thay vì tuần tự theo thời gian
- Bản vẽ trạng thái: mô tả sự thay đổi trạng thái của một đối tượng,thường được sử dụng để hiểu về nghiệp vụ của hệ thống
- Bản vẽ hoạt động: bản vẽ mô tả các hoạt động của đối tượng,thường được sử dụng để hiểu về nghiệp vụ của hệ thống
- Bản vẽ thành phần: mô tả về việc bố trí các thành phần của hệthống cũng như việc sử dụng các thành phần đó
- Bản vẽ triển khai: mô tả việc triển khia của hệ thống như việc kếtnối, cài đặt, hiệu năng của hệ thống…
Ký hiệu (Notations): các ký hiệu để vẽ nó như từ vựng trong ngônngữ tự nhiên
Quy tắc, cơ chế (Mechanisms): các quy tắc để lập nên bản vẽ, mỗi bản
vẽ có quy tắc riêng và bạn phải nắm được để tạo nên các bản thiết kếđúng
1.4 Nền tảng công nghệ
1.4.1 Tổng quan về MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do, mã nguồn mở phổ biến nhất thếgiới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứngdụng
Ưu điểm :
Về tốc độ: MySQL rất nhanh
Trang 17 Dễ sử dụng: MySQL tuy có tính năng cao nhưng thực sự là một hệthống cơ sở dữ liệu rất đơn giản và ít phức tạp khi cài đặt và quản trịhơn các hệ thống lớn.
Kết nối và bảo mật: MySQL được nối mạng một cách đầy đủ, các cơ
sở dữ liệu có thể được truy cập từ bất kỳ nơi nào trên Internet Do đóbạn có thể chia sẽ dữ liệu của bạn với bất kỳ ai, bất kỳ nơi nào.NhưngMySQL kiểm soát quyền truy cập cho nên người không được cấpquyền thì sẽ không thấy được cơ sở dữ liệu của bạn
Tính linh động: MySQL chạy trên nhiều hệ thống Windows, Linux,Mac OS…
1.4.2 Tổng quan ngôn ngữ lập trình Java
- Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems doJames Gosling khởi xướng và phát hành vào năm 1995 (Java 1.0 [J2SE]).Tính đến thời điểm này (tháng 2/2015) phiên bản mới nhất của Java StandardEdition (JSE) là 8 Với ưu thế về đa nền tảng (multi platform) Java càng lúccàng được ứng dụng rộng rãi trên nhiều thiết bị từ máy tính đến mobile vànhiều thiết bị phần cứng khác
- Ngôn ngữ lập trình Java là một ngôn ngữ lập trình hướng đối tượng (OOP,dựa trên các lớp Khác với phần lớn ngôn ngữ lập trình thông thường, thay vìbiên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Javađược thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽđược môi trường thực thi (runtime enviroment) chạy Trước đây, Java chạychậm hơn những ngôn ngữ dịch thẳng ra mã máy như C và C++, nhưng saunày nhờ công nghệ "biên dịch tại chỗ" - Just in time compilation, khoảngcách này đã được thu hẹp, và trong một số trường hợp đặc biệt Java có thểchạy nhanh hơn Java chạy nhanh hơn những ngôn ngữ thông dịch nhưPython, Perl, PHP gấp nhiều lần Java chạy tương đương so với C#, mộtngôn ngữ khá tương đồng về mặt cú pháp và quá trình dịch/chạy
- Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướngđối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viếtmột chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn
- Trong Java, hiện tượng rò rỉ bộ nhớ hầu như không xảy ra do bộ nhớ đượcquản lí bởi Java Virtual Machine (JVM) bằng cách tự động "dọn dẹp rác".Người lập trình không phải quan tâm đến việc cấp phát và xóa bộ nhớ như C,C++ Tuy nhiên khi sở dụng những tài nguyên mạng, file IO, database (nằmngoài kiểm soát của JVM) mà người lập trình không đóng (close) cácstreams thì rò rỉ dữ liệu vẫn có thể xảy ra
Trang 181.4.3 Tổng quan về framework Spring
1.4.3.1 Spring là gì?
- Spring là một Framework phát triển các ứng dụng Java được sử dụng bởihàng triệu lập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểmthử, sử dụng lại code…
- Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng2MB; trong suốt: hoạt động một cách trong suốt với lập trình viên)
- Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng ngườidùng rất lơn
- Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là:Dependency Injection và Aspect Oriented Programming
- Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triểnJava Desktop, ứng dụng mobile, Java Web Mục tiêu chính của Spring là giúpphát triển các ứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sửdụng POJO (Plain Old Java Object)
1.4.3.2 Sự ra đời của Spring
- Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi RodJohnson Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và dễdàng hơn Rod Johnson đã cho xuất bản một cuốn sách được phổ biến rộngrãi có nhan đề “J2EE Development without EJB” Điều này đã cho SpringFramework rất nhiều động lực để thay thế EJB
- Ngày nay, Spring đã trở thành framework mã nguồn mở phổ biến nhất để xâydựng các ứng dụng doanh nghiệp Cách tiếp cận thực tế ban đầu của RodJohnson tiếp tục được phát triển và hướng tới một bộ công cụ hoàn chỉnhdành cho xây dựng các ứng dụng doanh nghiệp Theo một số nguồn, trên50% các ứng dụng web Java hiện nay đang sử dụng Spring
Để ngăn chặn sự phức tạp trong phát triển các ứng dụng, Spring Framework thườngdựa trên các quan điểm như sau:
Đơn giản hóa công việc phát triển thông qua việc sử dụng các đối tượngJava đơn giản hay còn được gọi là POJO (Plain Old Java Object)
Nới lỏng ràng buộc giữa các thành phần thông qua việc sử dụngDependency Injection và viết các interface
Tiếp cận lập trình khai báo bằng cách sử dụng các quy tắc (convention) vàcác khía cạnh (aspect) chung
Giảm thiểu các mã nghi thức và soạn sẵn (boilerplate) thông qua việc sửdụng các khuôn mẫu (template) và các khía cạnh
Trang 191.4.3.3 Ưu điểm khi dùng Spring Framework:
- Xác định Tempale trước: Spring Framework cung cấp những template choHibernate, Struts, JDBC, v.v Vì vậy, lập trình viên không cần phải viết quánhiều code và có thể bỏ qua những bước cơ bản
- Dễ dàng kiểm thử: Dependency Injection làm cho việc kiểm thử phầnmềm, ứng dụng được tiến hành dễ dàng hơn Nếu như ứng dụng EJB yêucầu máy chủ phải chạy lại ứng dụng thì Spring Framework thì không
- Dung lương nhỏ: Spring Framework có dung lượng nhỏ nhờ vào mô hìnhPOJO Spring Framework không bắt lập trình viên phải kế thừa các lớp haythực hiện qua bất kì giao diện nào Đó là lí do Spring Framework được coi
là bất khả xâm phạm
- Phát triển nhanh: Dependency Injection tạo nên tính năng đặc biệt củaSpring Framework giúp hỗ trợ các framework khác và giúp cho việc pháttriển ứng dụng JavaEE dễ dàng hơn
- Hỗ trợ khai báo: Spring Framework cung cấp những hỗ trợ khai báo về bộnhớ đệm, xác nhận, giao dịch và định dạng
- Tính trừu tượng: Nó cung cấp sự trừu tượng hóa cao cho các chi tiếtJavaEE như JMS, JDBC, JPA và JTA
1.4.3.4 Kiến trúc, các module của Spring Framework
Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát triển ứngdụng mà ta dùng 1 trong các module đó
Trang 20Dưới đây là kiến trúc tổng thể của Spring Framework.
Hình 1: Hình kiến trúc tổng thể của Spring Framework
- Test
+ Tầng này cung cấp khả năng hỗ trợ kiểm thử với JUnit và TestNG
- Spring Core Container
Bao gồm các module spring core, beans, context và expression languate (EL)+ Spring core, bean cung cấp tính năng IOC và Dependency Injection
+ Spring Context hỗ trợ đa ngôn ngữ (internationalization), các tính năng Java
EE như EJB, JMX
+ Expression Language được mở rộng từ Expresion Language trong JSP Nócung cấp hỗ trợ việc setting/getting giá trị, các method cải tiến cho phép truycập collections, index, các toán tử logic…
- AOP, Aspects and Instrumentation
+ Những module này hỗ trợ cài đặt lập trình hướng khía cạnh (Aspect OrientedProgramming), hỗ trợ tích hợp với AspectJ
- Data Access / Integration
+ Nhóm này bao gồm JDBC, ORM, OXM, JMS và module Transaction Nhữngmodule này cung cấp khả năng giao tiếp với database
- Web
+ Hay còn gọi là Spring MVC Nhóm này gồm Web, Web-Servlet… hỗ trợ việctạo ứng dụng web
Trang 211.4.3.5 Các dự án trong Spring Framework
Trên thực tế Spring Framework là một tập hợp của nhiều dự án con Spring Corenhư chúng ta đã tìm hiểu là nền tảng của các dự án trong Spring Framework Mộtmột dự án sẽ đảm nhận một chức năng riêng trong việc xây dựng các ứng dụngdoanh nghiệp Chúng ta sẽ cùng điểm qua các dự án lớn trong Spring
1.4.4 Tổng quan về Spring Boot
Spring Boot là một dự án nổi bật trong hệ sinh thái Spring Framework Nếunhư trước đây, công đoạn khởi tạo một dự án Spring khá vất vả từ việc khai báo cácdependency trong file pom.xml cho đến cấu hình bằng XML hoặc annotation phứctạp, thì giờ đây với Spring Boot, chúng ta có thể tạo các ứng dụng Spring một cách
Trang 22Dưới đây là một số tính năng nổi bật của Spring Boot:
- Đóng gói ứng dụng Spring dưới dạng một file JAR (stand-alone application).Chúng ta có thể dễ dàng start ứng dụng Spring chỉ với câu lệnh quenthuộc java -jar
- Tối ưu công đoạn cấu hình cho ứng dụng Spring, không sinh code cấu hình
và không yêu cầu phải cấu hình bằng XML
- Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự án lớnnhư nhúng trực tiếp web server như Tomcat, Jetty, vào ứng dụng, bảo mật,health check
Hiện tại, Spring Boot có 2 version chính là:
Thymeleaf có thể sử dụng để thay thế cho JSP trên tầng View (View Layer) của ứngdụng Web MVC Thymeleaf là phần mềm mã nguồn mở, được cấp phép theo giấyphép Apache 2.0
1.4.4.2 Ưu điểm khi sử dụng Thymeleaf
Đầu tiên, trên trang chủ của spring framework người ta khuyến cáo nên sử dụngthymeleaf cùng với sping và tất nhiên đã khuyến cáo thì có những ưu điểm như mìnhvừa nói ở trên Với Thymeleaf, nó đã viết sẵn một documentation Thymeleaf từ a- zgiúp các bạn có thể học nó
- Thân thiện và gần gũi với các develop
Vì nó có thể sử dụng HTML làm view, với html thì bất kỳ các lập trình viên nàocũng biết, và tất nhiên ta chỉ sử dụng các file file HTML làm view, thymeleaf sẽtham gia vào file HTML dưới dạng các thuộc tính của các thẻ HTML Ta không cầnphải thêm bất cứ loại thẻ non-HTML nào cả (Ví dụ như jsp thì muốn sử dụng cácthẻ chuẩn của jsp như JSTL thì cần có taglib, với thymeleaf thì không cần sử dụngbất kỳ loại thẻ nào khác html nên được gọi là NON-HTML)
- Không cần phải restart lại web
Thông thường với các view chúng ta sử dụng với Java như jsp, jsf muốn nhìn thấyđược sự thay đổi của giao diện ta phải F5 lại trang web Tuy nhiên với thymeleaf ta
Trang 23không cần F5 (tải lại) lại trang cũng có thể xem các thay đổi trên giao diện, mặc địnhvới thymeleaf nó không thể xử lý được vấn đề này.
1.5 Các công cụ hỗ trợ
1.5.1 Spring Tool Suite
Spring tool suite (STS) là một extension mở rộng cho Eclipse, chuyên dùng
để hỗ trợ phát triển các ứng dụng bằng Spring Framework
Nó cung cấp một môi trường để thực thi, gỡ lỗi, chạy và triển khai các ứngdụng Spring, bao gồm tích hợp cho Pivotal tc Server, Pivotal Cloud Foundry, Git,Maven, AspectJ, và các bản phát hành Eclipse mới nhất
1.5.2 MySQL Workbench
1.5.2.1 MySQL Workbench là gì ?
MySQL Workbench là một công cụ truy cập cơ sở dữ liệu được mô hình hóa vàthiết kế trực quan sử dụng cho cơ sở dữ liệu quan hệ MySQL server MySQLWorkbench giúp tạo ra các mô hình dữ liệu vật lý mới và hỗ trợ sửa đổi các cơ sở
dữ liệu MySQL hiện có với các kỹ thuật đảo ngược / chuyển tiếp, các chức năngquản lý tùy chọn
1.5.2.2 MySQL workbench - Công cụ dựng hình và thiết kế
- Mô hình (modeling) là yếu tố cốt lõi của hầu hết các cơ sở dữ liệu có hiệu suấtcao MySQL workbench có các công cụ cho phép nhà phát triển và quản trị viên cóthể tạo ra các thiết kế mô hình cơ sở dữ liệu vật lý trực quan Các mô hình này cóthể dễ dàng dịch sang cơ sở dữ liệu MySQL khi sử dụng kỹ thuật chuyển tiếp
- MySQL workbench hỗ trợ việc tạo nhiều mô hình trong cùng một môi trường
- Hỗ trợ tất cả các đối tượng như bảng biểu, trình xem, phương pháp lưu trữ, trìnhkích hoạt, vv để tạo một cơ sở dữ liệu
- MySQL workbench có một tiện ích xác thực mô hình được tích hợp sẵn, tiện íchnày sẽ báo cáo bất kỳ vấn đề nào được tìm thấy trong trình mô hình hóa dữ liệu
- MySQL workbench cũng cho phép các biểu diễn mô hình khác nhau và có thể mởrộng bằng cách sử dụng ngôn ngữ kịch bản LUA
Trang 24Hình 2: Cửa sổ dựng hình của MySQL Workbench 1.5.2.3 MySQL workbench – Công cụ phát triển SQL
Structured Query Language (SQL) cho phép chúng ta thao tác cơ sở dữ liệu quan
hệ trong đó, SQL là trung tâm của tất cả các cơ sở dữ liệu quan hệ
- MySQL workbench, tích hợp sẵn trình soạn thảo trực quan SQL
- Trình soạn thảo Visual SQL cho phép các nhà phát triển xây dựng, chỉnh sửa vàchạy các truy vấn đối với cơ sở dữ liệu của MySQL server Công cụ cũng có cáctiện ích để xem dữ liệu và xuất dữ liệu
- Các cú pháp đánh dấu bằng màu cho phép các nhà phát triển dễ dàng viết vàdebug các câu lệnh SQL
- Có thể chạy nhiều truy vấn và sau đó kết quả sẽ được tự động hiển thị trong cáctab khác nhau
- Các truy vấn cũng được lưu lại trong lịch sử để truy xuất và chạy sau này
Trang 25Hình 3: cửa sổ phát triển SQL của MySQL Workbench 1.5.2.4 MySQL workbench – Công cụ quản trị
Quản trị server đóng một vai trò quan trọng trong việc đảm bảo an toàn dữ liệu chodoanh nghiệp Các vấn đề chủ yếu liên quan đến quản trị server bao gồm quản lýngười dùng, cấu hình máy chủ, nhật ký máy chủ và nhiều tính năng khác…MySQL Workbench có các tính năng giúp đơn giản hóa quá trình quản trị máy chủMySQL sau đây:
- Quản trị người dùng: tiện ích trực quan giúp quản lý người dùng Tiện ích chophép quản trị viên cơ sở dữ liệu dễ dàng thêm mới và xóa người dùng hiện tại khicần; cấp, hủy phân quyền cũng như xem hồ sơ người dùng
- Cấu hình server: hỗ trợ cấu hình máy chủ nâng cao và cho phép tinh chỉnh để tối
ưu hiệu suất
- Sao lưu và phục hồi dữ liệu: công cụ trực quan sử dụng cho xuất / nhập các dumpfile trong MySQL Dumb file trong MySQL chứa các SQL script để tạo cơ sở dữliệu, bảng biểu, trình xem, các phương pháp lưu trữ và chèn dữ liệu
- Nhật ký server: công cụ trực quan cho phép xem nhật ký MySQL server Nhật ký
sẽ bao gồm danh sách lỗi, bản ghi nhị phân và bản ghi InnodDB Lợi ích của cácnhật ký này là giúp đưa ra các chẩn đoán cho server
1.5.3 GitLab
1.5.3.1 Gitlab là gì ?
GitLab là mô ăt phần mềm có nhiệm vụ quản lý kho code Git Gitlab sở hữu các tínhnăng đơn giản, góp phần to lớn trong việc giúp các doanh nghiê ăp, cá nhân, tổ chứclưu trữ code mô ăt cách nhanh chóng vô cùng, người dùng hoàn toàn có thể truy câ ăpmọi lúc mọi nơi miễn là có kết nối Internet
Trang 26Gitlab cũng có khá nhiều điểm tương đồng với GitHub nhưng GitHub đi theohướng kinh doanh nhiều hơn, bởi vì nếu bạn sở hữu kho code riêng và muốn ẩnchúng khỏi cô ăng đồng hoă ăc mở rô ăng hơn nữa thì bạn sẽ phải trả phí cho dịch vụnày Gitlab hoàn toàn ngược lại, bạn có thể ẩn kho code của mình, không công khaichúng cho bất kỳ ai, trong trường hợp vượt quá ngưỡng miễn phí thì bạn mới phảimất phí để mua thêm dịch vụ.
1.5.3.2 Lịch sử hình thành GitLab
Gitlab được phát triển bởi Dmitriy Zaporozhets, người Ukraine và hiê ăn là giám đốcđiều hành Sytse Sijbrandij có trụ sử được đặt tại Utrecht Gitlab viết bằng ngôn ngữRuby với giấy phép phần mềm tự do và nguồn mở MIT Tính đến thời điểm này,Gitlab đã được nhận tài trợ từ các nhà đầu tư như Alibaba Group, IBM, Spacex vàKhosla Ventures
Hiện nay Gitlab được sử dụng bởi hơn 100.000 tổ chức bao gồm Trung tâm nghiêncứu Jülich Research Center, NASA, Alibaba, Invincea, O'Reilly Media, Leibniz-Rechenzentrum (LRZ), CERN, … Các tổ chức thày thường sử dụng Gitlab để làmnơi lưu trữ cho mình và hiê ăn đã tồn tại hơn 1000 mã nguồn mở có mă ăt trên Gitlab
1.5.3.3 Điểm đă ăc biê ăt của Gitlab
Đặc điểm không thể không nhắc tới của Gitlab là bạn hoàn toàn có thể tải về gói cài
đă ăt và cài lên máy chủ riêng Điều này hỗ trợ doanh nghiệp rất nhiều trong việcquản lý sử dụng thuận tiện cũng như đảm bảo tốc đô ă kết nối theo khuôn khổ riêng.Không chỉ hữu ích cho người dùng là các tổ chức, GitLab còn hoàn toàn phù hợpcho người dùng cá nhân Nếu bạn sở hữu VPS sử dụng để làm kho code thì việc cài
đă ăt GitLab không hề phức tạp, bạn chỉ cần đảm bảo rằng hê ă điều hành máy chủLinux có thể cài đă ăt được
1.5.3.4 Ưu điểm của GitLab
- GitLab là open core
GitLab là một sản phẩm open-core trong khi sản phẩm của các đối thủ cạnh tranhcủa Gitlab chủ yếu là các sản phẩm closed-source GitLab Community Edition là
mã nguồn mở hoàn chỉnh và phiên bản Enterprise là open-core (độc quyền)
- Truy cập vào source code
Không giống như phần mềm closed source, bạn có thể xem và sửa đổi source codecủa GitLab Community Edition và Enterprise Edition bất kỳ lúc nào Có thể là trênserver hoặc bằng cách giả tạo kho lưu trữ của Gitlab, bạn có thể thêm các tính năng
và thực hiện các tùy chỉnh Gitlab khuyên bạn nên cố gắng hợp nhất các thay đổi trởlại source code chính để những người khác có thể hưởng lợi từ những thay đổi này
và những thay đổi này vẫn dễ để duy trì và cập nhật
- Tính khả thi lâu dài (Viable long term)
GitLab có một cộng đồng vững chắc với hàng trăm nghìn tổ chức sử dụng và đónggóp cho phần mềm Điều này có nghĩa là GitLab có khả năng sử dụng lâu dài hơn vì
sẽ không đáng tin cậy nếu chỉ có duy nhất một công ty hỗ trợ cho phần mềm
Trang 27- Xây dựng với cộng đồng
GitLab được xây dựng bởi hàng trăm người mỗi tháng Khách hàng, người dùng vàGitLab, Inc đều có sự đóng góp cho mọi bản phát hành Điều này góp phần tạo nêncác tính năng mà các tổ chức thực sự cần, chẳng hạn như quản lý người dùng thật
dễ dàng nhưng không hề kém phần mạnh mẽ
- Phiên bản ổn định mới mỗi tháng
GitLab phát hành phiên bản ổn định mới mỗi tháng, đầy đủ các cải tiến, tính năng
và bản sửa lỗi Điều này khiến cho GitLab phát triển rất nhanh và luôn đáp ứng yêucầu của khách hàng theo cách cực kỳ nhanh chóng
Trang 28CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ 2.1 Phân tích hiện trạng
Xây dựng một website hỗ trợ đặt vé xem phim cho người dùng, quản trị viên,quản lý và nhân viên gồm các thành phần cơ bản như sau:
- Một màn hình đăng nhập để người dùng, nhân viên, quản lý mỗi rạp và quảntrị viên có thể truy cập vào hệ thống với quyền của mỗi người
- Một màn hình đăng ký dành cho người dùng đăng ký
- Trang chủ của website bao gồm danh sách các rạp chiếu phim, các bộ phimđang chiếu hoặc sắp chiếu, lịch chiếu phim theo ngày của từng bộ phim
- Trang đặt vé của người dùng bao gồm lựa chọn thông tin phim, ngày chiếu,giờ bắt đầu chiếu, chọn ghế
- Trang lịch sử đặt vé giúp người dùng xem lại thông tin vé đã đặt hoặc lựachọn hủy vé
- Trang quản lý của nhân viên có thể cập nhật trạng thái vé đã được nhận haychưa được nhận của người dùng
- Trang quản lý của mỗi rạp có thể quản lý thông tin phim, lịch chiếu và danhsách vé đã được đặt
- Trang quản lý của cả hệ thống để quản lý thông tin của rạp chiếu phim vàngười dùng (thêm)
tả hệ thống như thế nào Tập hợp tất cả Use Case của hệ thống sẽ mô tả cáctrường hợp mà hệ thống có thể sử dụng Mỗi Use Case mô tả cách thức Actortương tác với hệ thống để đạt được mục tiêu
Trang 292.2.1.2 Mô tả các tác nhân (Actor) có trong hệ thống
Quản lý hệ thống
Admin đăng nhập vào hệ thống, có quyền quản lý ngườidùng (thêm quản lý rạp), quản lý các rạp Sau khi thực hiệnxong công việc sẽ đăng xuất ra khỏi hệ thống
Quản lý rạp
Admin của rạp đăng nhập vào hệ tống, có quyền quản lýnhân viên, quản lý phim, quản lý quốc gia, quản lý thể loại,quản lý phòng chiếu, quản lý lịch chiếu, quản lý ghế, danhsách đặt vé
Nhân viên thái của vé.Nhân viên đăng nhập vào hệ thống có quyền thay đổi trạng
User
Người dùng đăng nhập vào hệ thống, có quyền tìm kiếm
vé và thực hiện đặt vé, có thể xem lịch sử đặt vé và hủy vé.Sau khi thực hiện xong công việc sẽ đăng xuất ra khỏi hệthống
Bảng 1: Mô tả các tác nhân trong hệ thống
Trang 302.2.1.3 Biểu đồ ca sử dụng tổng quát
Hình 4: Biểu đồ ca sử dụng tổng quát
Trang 312.2.1.4 Biểu đồ ca sử dụng của quản lý hệ thống
Hình 5: Biểu đồ ca sử dụng của quản lý hệ thống 2.2.1.5 Biểu đồ ca sử dụng cho quản lý rạp