TUẦN 1,2I Tìm hiểu về ASP.NET CORE WEB API I.1 Cài đặt cấu hình ASP.NET WEB API - Hướng dẫn cách tạo trang web API đầu tiên và thử nghiệm trên Swagger - Hướng dẫn cài đặt các chức nă
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KỸ THUẬT PHẦN MỀM
BÁO CÁO THỰC TẬP DOANH NGHIỆP
Công ty TNHH INFOdation VIỆT NAM
Tầng 10, Toà nhà VCN Tower, Số 2 Tố Hữu, Khu đô thị VCN, Phường Phước Hải, Thành phố Nha
Trang, Tỉnh Khánh Hòa, Việt Nam
Sinh viên thực tập: Nguyễn Duy Tân - 62131842 GVHD: HÀ THỊ THANH NGÀ
NHA TRANG, KHÁNH HÒA
1
Trang 2MỤC LỤC
TUẦN 1,2 4
I Tìm hiểu về ASP.NET CORE WEB API 4
I.1 Cài đặt cấu hình ASP.NET WEB API 4
I.2 Cách sử dụng mẫu Repository trong ASP.NET CORE WEB API 4
I.3 Cách sử dụng Service trong ASP.NET CORE WEB API 4
I.4 Cài đặt và ứng dụng trên FrontEnd 4
I.5 Sử dụng Unit of work trong bài tập thực hành 5
TUẦN 3 6
I Sercurity 6
I.1 Học được như thế nào là Filter 6
I.2 Học được như thế nào là middleware 6
II Đăng kí vào tạo service để sử dụng link API cho Angular 6
TUẦN 4 7
I Csv Helper 7
II.Sercure 7
II.1 Access Token 7
III.Upload File 7
IV Angular 7
TUẦN 5 8
I Các khái niệm cơ bản được công ty đề xuất 8
2
Trang 3II Json Web Token (JWT) 8
II Giao diện (Angular) 8
Chương 1: Phân Tích Thiết Kế 9
I.Tìm hiểu về quy trình bán vé hệ thống 9
II.Các chức năng có trong một web bán vé xem phim 9
II.1 Đặc tả hệ thống 9
II.1.1 Yêu cầu chức năng của hệ thống 9
II.1.2 Yêu cầu chức năng và phi chức năng của hệ thống 9
II.2 Thiết kế dữ liệu 9
Chương 2: Tình bày sản phẩm web 18
I Công nghệ ASP.NET CORE WEB API 18
II AngularJS 18
III Trình bày sản phẩm 19
3
Trang 4TUẦN 1,2
I Tìm hiểu về ASP.NET CORE WEB API
I.1 Cài đặt cấu hình ASP.NET WEB API
- Hướng dẫn cách tạo trang web API đầu tiên và thử nghiệm trên Swagger
- Hướng dẫn cài đặt các chức năng cơ bản như CRUD trong API
- Hướng cách kết nối cơ sở dữ liệu (SQL SERVER) bằng hai cách theo kiểu codefirst và data first
- Hướng dẫn sử dụng POST MAN
- Tìm hiểu về các cấu trúc cơ bản trong C# để tạo ra chức năng
- Tìm hiểu được cách sử dụng API thế nào trong cuộc sống
I.2 Cách sử dụng mẫu Repository trong ASP.NET CORE WEB API
- Tìm hiểu được công dụng của mẫu qua các bước
- Áp dụng trực tiếp vào bài thực tập trên công ty
- Sử dụng một cách hiệu quả vào các chức năng CRUD cãi thiện code
- Tìm hiểu lại cách đặt tên cho các biến, các hàm trong C#
I.3 Cách sử dụng Service trong ASP.NET CORE WEB API
- Hiểu được cách thức hoạt động của Service
- Mối liên hệ giữa mẫu Repository với Service trong API
- Cải thiện code rõ ràng và chỉnh chu đáng kể
- Biết được cách đăng kí dịch vụ
I.4 Cài đặt và ứng dụng trên FrontEnd
- Tìm hiểu được Angular 17
4
Trang 5- Gắn và cài đặt API để web có cơ sở dữ liệu
- Cách đăng kí dịch vụ CORS để liên hệ từ máy chủ đến máy khách
I.5 Sử dụng Unit of work trong bài tập thực hành
- Tìm hiểu được cấu trúc của Unit of work
5
Trang 6TUẦN 3
I Sercurity
I.1 Học được như thế nào là Filter
- Tài liệu kham thảo:
https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters
- Được hướng dẫn áp dụng trực tiếp vào dự án ASP.NET CORE WEB API
- Hiểu đường dùng Filter để hiện được quá trình thực thi theo ý muốn
- Hiểu được trong Filter có rrast nhiều loại
I.2 Học được như thế nào là middleware
- Tài liệu kham thảo:
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware
- Hiểu được lý thuyết của middlewware và cách hoạt động của chúng
II Đăng kí vào tạo service để sử dụng link API cho Angular
- Hiểu được các đăng kí dịch vụ cho API bên angular áp dụng vào FrontEnd
- Dựa vào API hiện tại BackEnd đã gần xong và đã áp dụng bên Angular thànhcông
- Đối với dự án nhóm trên công ty hiện tại đã hoàn thành 60%
- Tài liệu kham thảo : https://www.youtube.com/@QuaNhanhCodingMusic
6
Trang 7TUẦN 4
I Csv Helper
- Csv helper là thư viện hỗ trợ dành cho khi viết file csv Học cách thêm vào file
csv tạo file csv ngoài ra còn hỗ trợ làm xuất nhập phần mềm exel
II.Sercure
II.1 Access Token
- Được tìm hiểu lí thuyết về Access Token, áp dụng trực tiếp vào bài, vàauthentication (Xác thực người dùng)
III.Upload File
- Tạo chức năng upload file cho các bảng cần dữ liệu ảnh được tìm hiểu và ápdụng vào bài tập lớn, lấy được link máy chủ vào cơ sở dữ liệu mối quan hệ giửamáy chủ và máy khách để không bị sai link (thường bị lỗi đường link nhưnghiện đã fix được)
IV Angular
- Hiện tại đã có sự phân chia các chức năng người dùng bên quản lí và bên lànhân viên
- Đang trong quá trình hoàn thiện và gắn các chức năng API
Tài liệu kham thảo:
- https://www.youtube.com/watch?v=z3BwMlcGdhg (CSV Helper)
- aspnet-web-api (Access Token)
https://www.dotnettricks.com/learn/webapi/token-based-authentication-in Asp-Net-web-api/ (Upload File)
https://www.c-sharpcorner.com/UploadFile/2b481f/uploading-a-file-in-7
Trang 8TUẦN 5
Hiện đã hoàn thành xong các thao tác củng như các bài học cơ bản liên quan đếnASP.NET WEB API nhưng vẫn còn một số khái niệm chuyên sâu về ASP.NET WEBAPI cần được học và cải thiện thêm
I Các khái niệm cơ bản được công ty đề xuất
- Oauth2
- Google cloud storage
- Rabbitmq
II Json Web Token (JWT)
- Đã áp dụng thành công lẫn backend và front end về đăng nhập và đăng xuất cho
dự án web ở công ty
- Asp dụng vào angular và thành công bảo mật dữ liệu dưới dạng JWT
- Trong quá trình làm thì bị lỗi Authen (401) nhưng hiện đã được fix và thànhcông
II Giao diện (Angular)
- Hiện đã làm xong hoàn thành 80% vẫn có một số lỗi cần cải thiện ở giao diện Tài liệu kham thảo:
Trang 9Chương 1: Phân Tích Thiết Kế
I.Tìm hiểu về quy trình bán vé hệ thống
- Trong thời gian thực tập em quyết định chủ đề là quản lí bán vé xem phim
- Trong phầm mềm quản lí bán vé xem phim cho khách hàng thì gồm hai người sử dụng chính là quản lí và nhân viên gồm các quy trình như sau:
+ Về quản lí: Có nhiệm vụ thêm sửa xóa các dữ liệu liên quan đến rạp chiếu phim như phòng chiếu, ghế, Phim, …và có thể bán vé hoặc xuất lại vé, Thống kê doanh thu+ Về nhân viên: Có nhiệm vụ tìm lịch chiếu theo ý của khách hàng, đặt ghế cho khách hàng, kiểm tra thông tin khách hàng đã đặkt có đúng hay chưa Cuối cùng là thanh toán cho khách hàng
II.Các chức năng có trong một web bán vé xem phim
II.1 Đặc tả hệ thống
II.1.1 Yêu cầu chức năng của hệ thống
Chức năng hệ thống Mô tả yêu cầu chức năng hệ
thống
lý thông tin về các phim đang chiếu vàsắp chiếu, bao gồm tên phim, thể loại, thời lượng và mô tả, ảnh, trailer, banner, ngày khởi chiếu Nó cũng cần
hỗ trợ cập nhật thông tin phim và thêmmới, chỉnh sửa hoặc xóa phimQuản lý suất chiếu Hệ thống phải có khả năng quản
lý lịch chiếu các suất phim, bao gồm ngày, giờ, phòng chiếu và phim được 9
Trang 10chiếu Nó cần hỗ trợ cập nhật lịch chiếu, bao gồm thêm mới, chỉnh sửa hoặc hủy bỏ suất chiếu
năng đặt vé trực tuyến cho khách hàng Người dùng cần có khả năng xem lịch chiếu, chọn suất phim, chọn ghế ngồi và hoàn tất quá trình đặt vé
Hệ thống cần kiểm tra tính khả dụng của ghế và giữ chỗ cho người dùng trong thời gian giới hạn để hoàn tất thanh toán
thức thanh toán an toàn và tiện lợi nhưthẻ tín dụng, ví điện tử hoặc thanh toán trực tiếp tại quầy Nó cần xác nhận thanh toán và cung cấp vé điện
tử hoặc mã vé cho người dùngQuản lý thông tin khách hàng Hệ thống cần lưu trữ và quản lý
thông tin cá nhân của khách hàng, bao gồm tên, địa chỉ, số điện thoại và email,giới tính Để gửi mail về thông tin vé cho khách hàng nếu khách hàng cần hoặc vé lỗi sẽ đền bù bằng cách xác thực tên và số điện thoại nếu có trường hợp này
10
Trang 11II.1.2 Yêu cầu chức năng và phi chức năng của hệ thống
11
Trang 12Danh sách yêu cầu chức năng
Nhóm người dùng Yêu cầu chức năng
- Quản lí thông tin khách hàng
- Quản lí thông tin phim
-Quản lí phòng chiếu phim
-Quản lí thể loại-Quản lí quốc gia-Quản lí giá vé-Quản lí quảng cáo-Quản lí thông tin nhân viên
-Quản lí ghế-Quản lí người dùngTra cứu:
- Xem thông tin khách hàng
- Xem thông tin lịch chiếu
- Xem thông tin phim-Xem thông tin vé-Xem thông tin phòng chiếu
Phân quyền:
- Phân quyền sử dụng giữa quản lý, nhân viên
và khách hàng.Sao lưu:
- Sao lưu, phục hồi dữ liệu
Trang 13III Phân tích thiết kế hệ thống
II.2 Thiết kế dữ liệu
Tiến hành thiết kế các bảng dữ liệu chưa có khóa ngoại và các bảng sau thể hiện trình tự đó:Bảng QUOCGIA lưu trữ thông tin quốc gia
tính
Kiểu dữ liệu
Miền giá trị
Trang 14giaBảng THELOAI lưu trữ thông tin thể loại
liệu
Miền giátrị
Diễn giải
là khóa chính
Bảng NHANVIEN lưu trữ thông tin nhân viên
tính
Kiểu dữ liệu
Miền giá trị
Diễn giải
viên là khóa chính
Trang 155 Gioitinh Tinyint Giới tính (0
là nữ, 1 là nam)Bảng LICHCHIEU dùng để lưu trữ thông tin lịch chiếu
tính
Kiểu dữ liệu
Miền giá trị
Diễn giải
chiếu là khóa chính
chiếu sẽ bằng ngày hiện tại
sẽ là giờ trong ngày đó
Bảng PHONG lưu trữ thông tin phòng chiếu
tính
Kiểu dữ liệu
Miền giá trị
Diễn giải
khóa chính
15
Trang 162 TenPhong Chuỗi ≤50 Tên phòng
Miền giá trị
phải lớn hơn không khách hàng không được nhập số âm
Bảng GHE lưu trữ thông tin ghế
16
Trang 17tính liệu trị
khóa chính
là khóa ngoạiBảng PHIM để lưu trữ thông tin phim
liệu
Miền giátrị
17
Trang 18là khóa ngoại
gia là khóa ngoại
Bảng LICHCHIEUPHIM dùng để lưu trữ thông tin lịch chiếu của bộ phim đó
STT Tên thuộc tính Kiểu dữ liệu Miền giá trị Diễn giải
khóa chính dùngđịnh danh tỏng lịch chiếu phim
liệu
Miền giátrị
Trang 193 MaPhong Chuỗi ≤11 Mã phòng là
khóa ngoại
khóa ngoạiBảng TTDATVE lưu trữ thông tin đặt vé
liệu
Miền giátrị
ngày hiện tại
Bảng CTDATVE lưu trữ thông tin chi tiết đặt vé
tính
Kiểu dữ liệu
Miền giá trị
19
Trang 20STT Tên thuộc tính Kiểu dữ liệu Miền giá trị Diễn giải
phương thức khách hàng muốn thanh toán
Bảng NGUOIDUNG lưu trữ thông tin người dùng
liệu
Miền giátrị
Diễn giải
là khóa chính
20
Trang 214 role bit Loại người dùng
(0 là nhân viên, 1
là quản lí)
21
Trang 22Chương 2: Tình bày sản phẩm web
I Công nghệ ASP.NET CORE WEB API
Ngoài các chức năng CRUD từng bảng ra còn có các chức năng CRUD phụ để bổ sung chức năng khác như hiển thị lịch chiếu theo ngày, thêm 1 lần vào nhiều bảng, tự tạo ghế cho phòng chiếu khi tạo được phòng chiếu dựa vào số chỗ ngồi, khi có nhân viên mới vàothêm thông tin thì tự động tạo ra tài khoản cho nhân viên tất cả sẻ được chi tiết ở phần trình bày sản phẩm
Trong ngữ cảnh của Web API, AngularJS và Web API có thể hoạt động cùng nhau để tạo
ra một ứng dụng web hoàn chỉnh AngularJS được sử dụng phía client (trình duyệt) để xây dựng giao diện người dùng tương tác, trong khi Web API đóng vai trò là phía server (máy chủ) cung cấp dữ liệu và xử lý logic
Cụ thể, khi sử dụng AngularJS với Web API, bạn có thể thực hiện các tác vụ sau:
Giao tiếp với Web API: AngularJS cung cấp các công cụ và tính năng để thực hiện các yêu cầu HTTP (GET, POST, PUT, DELETE) đến Web API từ phía client Bằng cách sử
22
Trang 23dụng các service và $http module của AngularJS, bạn có thể gửi yêu cầu đến các endpoint của Web API và nhận lại dữ liệu từ phản hồi.
Hiển thị dữ liệu: AngularJS cho phép bạn gắn kết dữ liệu trả về từ Web API vào các thành phần giao diện người dùng Bằng cách sử dụng các biểu thức (expressions) và các directives của AngularJS, bạn có thể hiển thị dữ liệu từ Web API trên trang web, ví dụ như danh sách, bảng, form, v.v
Xử lý sự kiện và tương tác: AngularJS cung cấp các công cụ và tính năng để xử lý sự kiện từ người dùng và tương tác với Web API Bạn có thể định nghĩa các hàm xử lý sự kiện trong controller của AngularJS và sử dụng các service để gửi yêu cầu đến Web API khi người dùng thực hiện các tương tác như nhấn nút, điền form, v.v
Định tuyến (Routing): AngularJS cung cấp hệ thống định tuyến để quản lý việc chuyển đổi giữa các trang hoặc các phần trong ứng dụng Bạn có thể định nghĩa các route để xác định URL và hiển thị các view tương ứng, kết hợp với Web API để lấy dữ liệu từ server khi chuyển đổi giữa các route
III Trình bày sản phẩm
+ Trang Admin (Vĩnh tiến ): Ngoài các chức năng cơ bản thêm, sửa, xóa, hiển thị cho từng bảng thì có các chức năng phụ khác để giúp người quản trị sẽ dễ dàng hơn khi sử dụng.
23
Trang 24 Giao diện trang admin
- Thêm sửa xóa bao gồm các bảng được nêu trên
- Ngoài các chức năng mỗi bảng còn có các chức năng khác như:
Hình 1 Chức năng thêm phòng tự động thêm ghế của phòng
Khi người dùng thêm một phòng bất kì nào đó thì nó sẻ dựa vào số chỗ ngồi và tự động rand ra các ghế tương ứng theo mã phòng theo hàng và thoe cột như sau:
24
Trang 25- Chức năng tự động thêm tài khoản người dùng khi thêm thông tin nhân viên
25
Trang 26 Khi thêm thông tin một nhân viên bất kì thì sẽ tự động thêm vào bảng người dùng và từ đó quản lí có thể chỉnh sửa phù hợp để đưa tài khoản
và mật khẩu cho nhân viên:
Hình 4 Bảng người dùng
Tự động rand ra username (khóa chính) bởi vì đăng nhập bằng email và mật khẩu nên quản lí sẽ đưa cho nhân viên tài khoản và mật khẩu mặc định.
- Ngoài các chức năng phụ liên quan đến CRUD ra còn có các chức khác như:
26
Trang 27+ Đăng nhập: Ở đây em dùng JWT (Json web Token) để xử lí việc đăng nhập và phân quyền như sau:
Hình 5 Giao diện đăng nhập
Khi đăng nhập hệ thống sẽ gửi một Access Token từ bên máy chủ bằng Link Api sau đó dùng đoạn mã đó để đăng nhập và truy cập dữ liệu mỗi role là mỗi chức năng khác nhau trong hệ thống được phân chia ra.
Hình 6 Gửi mã token và xác thực đăng nhập
Nó xác thực đăng nhập bằng cách khi người dùng nhấn vào một bảng tức là một link Api để hiển thị dữ liệu thì nó xác thực xem liệu có đúng
mã đó không hay không có mã đó và tiếp tục truy cập vào dữ liệu không thì nó sẽ báo lỗi truy cập quyền
+ Phân trang: Em phân trang dựa vào bên FE để có thể hiển thị dữ liệu theo yêu cầu
27
Trang 28+ Upload file: Về phần upload file em làm chức năng này bên BE là chính cònbên FE chủ yếu là lấy lại link hình ảnh (duy tân)
Hình 8 Giao diện bảng phim
Khi thêm phim có chức năng upload file và gửi về máy chủ tuy nhiên gửi vềmáy chủ vẩn chưa được nên phải có thêm một chức năng đó là update lấylink từ danh sách trong BE và cập nhật lên database chủ yếu sử dụngwwwroot để lưu ảnh và tải ảnh lên
28
Trang 29+ Chức năng thống kê: Thống kê dựa vào bảng thanh toán để thống kê tổng doanh thu số vé bán được.
Có bảng thông tin đặt vé dùng để lưu trữ tin đặt vé của khách hàng để nhở có trường hợp nếu khách làm mất vé mà vẩn còn mã thì có thể tìm
và in lại vé cho khách hàng
29
Trang 30+ Trang nhân viên bán hàng:
Hình 9 Trang chủ
Ở trang dành cho nhân viên bán hàng trang chủ để dùng cho màn hình thứhai để khách hàng có thể kham thảo củng như biết được đang chiếu và sắpchiếu phim nào trong tương lai củng như hiện tại (duy tân)
Chức năng phân chia phim đang chiếu và phim sắp chiếu em chủ yếu làmchức năng này ở bên Angularjs với định hướng chức năng như sau: Đó chính
là đối với phim đang chiếu thì phải bé hơn ngày hiện tại và phim sắp chiếuphải lớn hơn ngày hiện tại (duy tân)
30
Trang 31 Chức năng hiển thị lịch chiếu phim như sau: Dùng một link Api riêng để hiểnthị showtime theo đúng định dạng mà em đề ra đó là Tên phim, giờ chiếu với
có chức năng bao gồm bên FE khi các giờ chiếu có cùng bộ phim thì nó sẽxếp chung một bộ phim và tách lẻ lịch chiếu phim (duy tân)
Hình 11 Hiển thị lịch chiếu phim
Chức năng hiển thị phòng và ghế theo bảng lịch chiếu phim: Em làm một chức năng này bằng một link Api khác để hiển thị bằng cách truy vấn từ bảng lịch chiếu phim đến các bảng phòng và ghế để có thể hiển thị đúng phòng và ghế của bộ phim đó trong showtime (Vĩnh tiến)
31