Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
4,36 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN Đề tài: Xây dựng ứng dụng xem trước review phim Giảng viên hướng dẫn: Trần Thị Hồng Yến Nhóm thực hiện: 19521747 – Phan Tiến Lào 19521828 – Phan Huy Mạnh TP HỒ CHÍ MINH, 2022 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……., ngày… tháng……năm 2022 Người nhận xét (Ký tên ghi rõ họ tên) LỜI CẢM ƠN Trong trình học tập, nghiên cứu phát triển đề tài “Xây dựng ứng dụng xem trước review phim” chúng em nhận giúp đỡ, bảo nhiệt tình để hồn thành đồ án Nhóm em xin chân thành gửi lời cảm ơn đến cô Trần Thị Hồng Yến – Giảng viên Trường Đại học Công nghệ thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh – giảng viên dạy hướng dẫn môn Đồ án 1, tận tình hướng dẫn giúp đỡ kiến thức, phương pháp cho chúng em suốt trình thực hoàn thành đồ án Hi vọng với bảo góp ý từ cơ, nhóm đề tài tiếp tục phát triển để ứng dụng ngày mở rộng phục vụ tốt cho người dùng Mặc dù có nhiều cố gắng suốt trình thực đề tài, song khơng thể tránh khỏi hạn chế, thiếu sót Chúng em mong nhận đóng góp nhận xét chân thành từ thầy, bạn sinh viên người dùng trình sử dụng phần mềm để phần mềm ngày hoàn thiện Mọi đóng góp xin vui lịng gửi địa email: 19521747@gm.uit.edu.vn Mỗi ý kiến đóng góp bạn nguồn động lực to lớn chúng em để chúng em cải thiện phần mềm tốt xây dựng phần mềm hữu ích người dùng Chúng em xin trân trọng cảm ơn Thành phố Hồ Chí Minh, ngày 10 tháng năm 2022 Nội dung Chương 1: GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Giải pháp 1.3 Mục tiêu Chương 2: TỔNG QUAN 2.1 Tổng quan đồ án 2.1.1 Tên đồ án: 2.1.2 Link github quản lý source code 2.2 Công nghệ sử dụng 2.2.1 Ngơn ngữ lập trình C# 2.2.2 Visual Studio 2.2.3 Dịch vụ GitHub 2.2.4 WPF Frameword Chương 3: PHÂN TÍCH, THIẾT KẾ 10 3.1 Cơ sở liệu 10 3.1.1 Sơ đồ lớp 10 3.1.2 Chi tiết thuộc tính 11 3.2 Yêu cầu chức 13 3.2.1 Sơ đồ use case 13 3.2.2 Mô tả tác nhân 14 3.2.3 Mô tả use case 15 3.3 Đặc tả use case 16 UC1_Đăng ký 16 UC2_Đăng nhập 17 UC3_Đổi mật 18 UC4_Thiết lập tài khoản 19 UC5_Tìm kiếm phim 20 UC6_Tìm kiếm theo thể loại 21 UC7_Thêm vào watchlist 22 UC8_Đánh giá phim 23 UC9_Bình luận phim 24 UC10_Thêm phim 25 UC11_Sửa phim 26 UC12_Xoá phim 27 UC13_Thêm đạo diễn 28 UC14_Sửa đạo diễn 29 UC15_Xoá đạo diễn 30 UC16_Thêm diễn viên 31 UC17_Sửa diễn viên 32 UC18_Xoá diễn viên 33 UC19_Xoá tài khoản 34 3.4 Thiết kế giao diện 35 Chương 4: BẢNG PHÂN CÔNG CÔNG VIỆC 51 Chương 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN 53 5.1 Nhận xét 53 5.1.1 Kết đạt 53 5.1.2 Đánh giá ứng dụng 53 5.2 Hướng phát triển mở rộng 53 Chương 6: YÊU CẦU CÀI ĐẶT 54 TÀI LIỆU THAM KHẢO 55 Chương 1: GIỚI THIỆU 1.1 Đặt vấn đề Ngày nay, nhu cầu giải trí người cao Việc xem phim trực tuyến hoạt động giải trí phổ biến khơng thành phố lớn giới trẻ mà nông thơn người lớn tuổi u thích Nhưng có nhiều phim mắt kể từ thập kỷ trước khiến người xem khó chọn cho phim muốn xem 1.2 Giải pháp Nhận thấy tình hình trên, nhóm em lên ý tưởng xây dựng ứng dụng xem trước review phim, nhằm tìm cho người phim vừa ý 1.3 Mục tiêu • Xây dựng phần mềm hỗ trợ người dùng sử dụng dễ dàng, thoải mái • Xây dựng giao diện phần mềm cách trực quan, sinh động, dễ sử dụng, thẩm mỹ • Các xử lý thành phần hoạt động cách mượt mà để mang đến trải nghiệm thú vị tiện ích cho người dùng Chương 2: TỔNG QUAN 2.1 Tổng quan đồ án 2.1.1 Tên đồ án: • Tên tiếng việt: Xây dựng ứng dụng xem trước review phim 2.1.2 Link github quản lý source code - Link github ứng dụng dành cho User: https://github.com/UIT19521828/ReviewYourFilms.git - Link github ứng dụng dành cho quản trị viên: https://github.com/laophan74/MovieApp_Admin.git 2.2 Công nghệ sử dụng 2.2.1 Ngôn ngữ C# C# (hay C sharp) ngơn ngữ lập trình đơn giản, phát triển đội ngũ kỹ sư Microsoft vào năm 2000 C# ngơn ngữ lập trình đại, hướng đối tượng xây dựng tảng hai ngôn ngữ mạnh C++ Java Lịch sử hình thành C# C# thiết kế chủ yếu Anders Hejlsberg kiến trúc sư phần mềm tiếng với sản phẩm Turbo Pascal, Delphi, J++, WFC Vào năm 2000, Microsoft muốn phát triển ngơn ngữ lập trình hoạt động tảng khung NET họ thành cơng Đó ngơn ngữ C# Điều lý giải ngôn ngữ C# chạy Windows có cài NET Framework Tuy nhiên với ứng dụng nhược điểm vấn đề lớn Chỉ sau thời gian cho mắt, ngôn ngữ trở nên tiếng Và nay, nằm top 10 ngơn ngữ lập trình hàng đầu giới Ưu nhược điểm C# Ưu điểm C# C# loại ngôn ngữ lập trình an tồn khơng cho phép việc chuyển đổi kiểu liệu để giảm tránh vấn đề sai lệch xảy ra. Trong C# cho kết trả thuộc hàm đa phần object Các lỗi lập trình phổ biến như: gõ nhầm tên, viết sai cấu trúc… hệ thống cảnh báo mà không cần phải chờ đến lúc chạy. Hiện nay, việc học #C trở nên dễ dàng cộng đồng #C phát triển rộng mở Chính vậy, nhà phát triển lập trình viên ngơn ngữ #C hỗ trợ, giúp đỡ phát triển kỹ kinh nghiệm #C Nhược điểm C# C# chạy Windows có cài NET Framework Nên xem nhược điểm lớn C# Ngoài ra, thao tác phần cứng hầu hết phải dựa vào windows 2.2.2 Visual Studio Tổng quan Visual studio Visual studio công cụ hỗ trợ lập trình website tiếng Mcrosoft chưa có phần mềm thay Visual Studio viết ngơn ngữ C# VB+ Đây ngơn ngữ lập trình giúp người dùng lập trình hệ thống dễ dàng nhanh chóng thơng qua Visual Studio Visual Studio phần mềm lập trình hệ thống sản xuất trực tiếp từ Microsoft Từ đời đến nay, Visual Studio có nhiều phiên sử dụng khác Điều đó, giúp cho người dùng lựa chọn phiên tương thích với dịng máy cấu hình sử dụng phù hợp Bên cạnh đó, Visual Studio cịn cho phép người dùng tự chọn lựa giao diện cho máy tùy thuộc vào nhu cầu sử dụng Lịch sử hình thành Visual studio Visual Studio sáng tạo Microsoft Vào năm 1997, ông lớn cho mắt hai phiên Visual Studio Professional Enterprise Trải qua nhiều lần phát triển, đến nay, Visual Studio sở hữu nhiều phiên khác VS 2005, VS 2008, VS 2010, VS 2012, VS 2013 Trong đó, phiên Visual Studio 2015 thức phát hành vào tháng năm 2015 Theo đó, với phiên phát hành mình, Visual Studio lại tích hợp thêm nhiều tính năng, cơng nghệ mẻ hấp dẫn Ưu điểm Visual studio Phát triển tích cực với hỗ trợ Microsoft Các tài liệu thức trì tốt Có hỗ trợ tích cực cộng đồng với tất plugin bạn cần Nếu gửi lỗi repo GitHub, bạn thường nhận phản hồi vòng ngày Đối với ứng dụng electron, tốc độ VSCode cao, gần tương đương với ST3 xây dựng nguyên Nhược điểm Visual studio Yêu cầu Native code Các phím tắt mặc định khơng có ý nghĩa người dùng phải cấu hình lại gần tất chúng Khơng có git merge, điều mà nhiều người mong đợi, ST3 Atom có khả làm điều 2.2.3 Dịch vụ GitHub GitHub dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa tảng web cho dự án phát triển phần mềm GitHub cung cấp phiên trả tiền lẫn miễn phí cho tài khoản Các dự án mã nguồn mở cung cấp kho lưu trữ miễn phí Tính đến tháng năm 2016, GitHub có 14 triệu người sử dụng với 35 triệu kho mã nguồn, làm cho trở thànhmáy chủ chứa mã nguồn lớn giới Sự phát triển tảng GitHub bắt đầu vào ngày 19 tháng 10 năm 2007 Trang web đưa vào tháng năm 2008 Tom Preston-Werner, Chris Wanstrath, PJ Hyett thực sau hồn thành vài tháng trước đó, xem giai đoạn beta Github trở thành yếu tố có sức ảnh hưởng cộng đồng phát triển mã nguồn mở Thậm chí nhiều nhà phát triển bắt đầu xem thay cho sơ yếu lý lịch số nhà tuyển dụng yêu cầu ứng viên cung cấp liên kết đến tài khoản Github để đánhgiá ứng viên Dự án Github truy cập thao tác sử dụng giao diện dòng lệnh làm việc với tất lệnh Git tiêu chuẩn Github cho phép người dùng đăng ký không đăng ký để duyệt kho công cộng trang web Github tạo nhiều client plugin cho máy tính để bàn 2.2.4 WPF Framework Tổng quan WPF Framework WPF, viết tắt Windows Presentation Foundation, hệ thống API hỗ trợ việc xây dựng giao diện đồ hoạ Windows Được xem hệ WinForms, WPF tăng cường khả lập trình giao diện lập trình viên cách cung cấp API cho phép tận dụng lợi đa phương tiện đại Là phận NET Framework 3.0, WPF sẵn có Windows Vista Windows Server 2008 Đồng thời, WPF hoạt động Windows XP Service Pack hơn, Windows Server 2003 Lịch sử hình thành WPF Framework Ngày 12/2/2002 đánh dấu mốc quan trọng ngành công nghệ thơng tin Microsoft thức mắt tảng cơng nghệ có tên NET Framework phiên 1.0 với Visual Studio.NET 2002 Sau thập kỷ phát triển, NET bước dài, trở thành tảng công nghệ mạnh mẽ phổ biến Từ phiên NET Framework 1.1, HĐH Windows cài đặt sẵn phiên NET Framework Windows Server 2003 tiên phong với phiên 1.1, sau Windows Vista với NET 3.0, gần Windows 7/Server 2008 với NET 3.5 SP1 .NET Framework 3.0 mắt với hệ điều hành Windows Vista vào cuối năm 2006 Ba “điểm nhấn” lần nâng cấp thành phần kỳ vọng thay Winform – Windows Presentation Foundation – WPF, Windows Communitcation Foundation – WCF, Windows Workflow Foundation – WF, Windows Card Space Ưu điểm WPF Framework • WPF mang đến cho việc lập trình trở nên đơn giản việc thiết kế giao diện, xử lý liệu giúp việc lập trình dễ dàng mạnh mẽ hẳn Windows Forms • Tất thuộc tính đối tượng WPF xử lý để trở nên sinh động • XAML giúp dễ dàng tạo chỉnh sửa GUI bạn cho phép công việc phân chia nhà thiết kế (XAML) lập trình viên (C #, VB.NET, v.v.) Nhược điểm WPF Framework Nhược điểm lớn WPF phức tạp, khó học, khó thành thạo (nếu so với Windows Forms) AccountManager việc lưu trữ thông tin database: public class AccountManager { private static AccountManager instance; public static FirebaseAuthProvider authProvider = new FirebaseAuthProvider(new FirebaseConfig("FIREBASE_SECRET_KEY")); public FirebaseAuthLink link; public static bool isSignOut = false; public static FirestoreDb db = null; public static AccountManager Instance() { if (instance == null) instance = new AccountManager(); return instance; } public FirestoreDb LoadDB() { if(db == null) { string path = AppDomain.CurrentDomain.BaseDirectory + @"filmreview.json"; Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path); db = FirestoreDb.Create("filmreview-de9c4"); } return db; } public async Task SignIn(string email, string pass) { db = LoadDB(); try { link = await authProvider.SignInWithEmailAndPasswordAsync(email, pass); var client = new FirebaseClient( "https://filmreview-de9c4-default-rtdb.asia-southeast1.firebasedatabase.app", new FirebaseOptions { AuthTokenAsyncFactory = () => Task.FromResult(link.FirebaseToken) } ); Client.email = link.User.Email; Client.uid = link.User.LocalId; Client.token = link.FirebaseToken; Client.refreshToken = link.RefreshToken; DocumentReference docRef = db Collection("Users").Document(link.User.LocalId); DocumentSnapshot ss = await docRef.GetSnapshotAsync(); 42 if (ss.Exists) { DataUser user = ss.ConvertTo(); Client.userName = user.name; Client.uid = link.User.LocalId; Client.imageURL = user.imageURL; Client.bio = user.bio; Client.email = user.email; Client.watchlist = user.watchlist; Client.followed = user.followed; } isSignOut = false; await link.RefreshUserDetails(); link.FirebaseAuthRefreshed += AuthLink_FbAuthRefreshAsync; return true; } catch { MessageBox.Show("Fail to Sign In!"); return false; } } public async Task SignUp(string email, string pass, string displayN) { db = LoadDB(); try { link = await authProvider.CreateUserWithEmailAndPasswordAsync(email, pass); var client = new FirebaseClient( "https://filmreview-de9c4-default-rtdb.asia-southeast1.firebasedatabase.app", new FirebaseOptions { AuthTokenAsyncFactory = () =>Task.FromResult(link.FirebaseToken) }); await authProvider.SendEmailVerificationAsync(link.FirebaseToken); string userid = link.User.LocalId; List array = new List(); DocumentReference docRef = db.Collection("Users").Document(userid); Dictionary user = new Dictionary { { "name", displayN }, { "email", email }, { "bio", "" }, { "imageURL", "" }, { "watchlist", array }, { "followed", array } }; await docRef.SetAsync(user); 43 return true; } catch { return false; } } public bool SignOut() { try { Client.email = link.User.Email; Client.token = ""; Client.refreshToken = ""; isSignOut = true; return true; } catch { return false; } } public async void ChangeEmail(string email) { db = LoadDB(); try { await authProvider.ChangeUserEmail(Client.token, email); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } • Màn hình chi tiết phim 44 Thơng tin film review lấy từ firestore lưu class DataFirestore nhằm không cần phải yêu cầu tập tin Media nhiều lần đồng thông tin film, review lần gọi khác người dùng tương tác INotifyPropertyChanged public class DataFirestore { private static DataFirestore instance; private Dictionary data = new Dictionary(); private Dictionary reviewArr = new Dictionary(); public static DataFirestore Instance() { if(instance == null) instance = new DataFirestore(); return instance; } public void AddFirestore(DataFilm film, string fID) { if (!data.ContainsKey(fID)) { data.Add(fID, film); } } public DataFilm GetFirestore(string fID) { return data[fID]; } 45 public bool IsFetch(string id) { return (data.ContainsKey(id)); } public void AddReview(DataReview rv, string rID) { if (!reviewArr.ContainsKey(rID)) { reviewArr.Add(rID, rv); } } public DataReview GetReview(string rID) { return reviewArr[rID]; } public bool IsReviewFetch(string rID) { return (reviewArr.ContainsKey(rID)); } } public class DataFilm : INotifyPropertyChanged { //Các trường liệu lấy … [FirestoreProperty] public string poster { get; set; } … // private BitmapImage bit = null; public BitmapImage GetImage() { if(bit == null) { bit = new BitmapImage(new Uri(poster)); } return bit; } 46 PropertyChanged; public event PropertyChangedEventHandler private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public int TotalScore { get { return totalPoint; } set { totalPoint = value; NotifyPropertyChanged(nameof(TotalScore)); } } } • Màn hình bình luận đánh giá 47 • Màn hình danh sách xem sau Dùng Setter Property Total film đánh dấu Watchlist để thêm, xóa film nhanh chóng, 48 đồng mà khơng cần phải load lại trang public partial class WatchList : Page { public int Total { get { return total; } set { total = value; txtTotalItem.Text = total.ToString(); LoadPanel(); } } private void LoadPanel() { panelWL.Children.Clear(); foreach (var item in list) { panelWL.Children.Add(item); } } } Khi thêm xóa khỏi Watchlist private async void WatchList_Click(object sender, RoutedEventArgs e) { DocumentSnapshot userSS = await userRef.GetSnapshotAsync(); if (!Client.watchlist.Contains(fid)) { await userRef.UpdateAsync("watchlist", FieldValue.ArrayUnion(fid)); MessageBox.Show("Added to your watchlist!"); Client.watchlist.Add(fid); btnWL.Foreground = BaseColor.redBrush; wl.list.Add(new ComListFilm(this.film, fid)); wl.Total++; } else { await userRef.UpdateAsync("watchlist", FieldValue.ArrayRemove(fid)); MessageBox.Show("Removed from watchlist"); Client.watchlist.Remove(fid); btnWL.Foreground = BaseColor.defaultBrush; wl.list.RemoveAll(a => a.fID == fid); wl.Total ; } 49 } • Màn hình top 100 Movie • Màn hình top 100 TV series • Màn hình thơng tin người dùng 50 • Màn hình thơng tin người dùng 51 Chương 4: BẢNG PHÂN CÔNG CÔNG VIỆC Tên MSSS 19521747 Cơng việc thực • Authentication (Admin) Phan Tiến Lào Mức độ Đánh đóng góp giá 50% Hồn thành • Profile (Admin) • UI (Admin) • Film (Thêm, sửa, xố) (Admin) • Actors (Thêm, sửa, xố) (Admin) • Directors (Thêm, sửa, xố) (Admin) • Account (Thêm, sửa, xố) (Admin) • UI (User) • Chi tiết Film (User) • Đánh giá (User) 52 19521828 • UI (User) Phan Huy Mạnh • Màn hình (User) 50% • Watchlist (User) • Top 100 (User) • Chi tiết Film (User) • Authentication (User) • Profile (User) • Đánh giá (User) • Review (User) • Followed (User) • Film (Thêm, sửa, xố) (Admin) 53 Hồn thành Chương 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN 5.1 Nhận xét 5.1.1 Kết đạt Phần mềm đạt mục tiêu đề xây dựng ứng dụng cho phép xem trước review phim Ứng đụng có nhiều chức hữu ích hỗ trợ cho người dùng việc lựa chọn phim phù hợp theo nhu cầu cá nhân gợi ý phim, phân chia phim theo mục, tìm kiếm phim… Ngồi ra, người dùng cịn có nhìn trực quan phim thơng qua bình luận người dùng xem trải nghiệm thông qua mục Review 5.1.2 Đánh giá ứng dụng Ưu điểm: • Giao diện đơn giản, trực quan, dễ tiếp cận, dễ sử dụng • Ứng dụng có dung lượng nhỏ, tốn nhớ • Tích hợp chức đánh giá phim, người dùng dễ dàng chia sẻ tiếp nhận thơng tin phim • Thơng tin phim cụ thể, súc tích chi tiết • Tích hợp cơng cụ cho người quản trị liệu thêm liệu Khuyết điểm: • Ứng dụng cịn giai đoạn hoàn thiện mặt trải nghiệm người dùng • Dữ liệu hình ảnh cịn hạn chế 5.2 Hướng phát triển mở rộng • Tiếp tục phát triển ứng dụng theo hướng thương mại hóa • Khảo sát người dùng để hoàn thiện chức có phát triển thêm chức • Phát triển công cụ hỗ trợ người quản trị sở liệu • Phát triển giao diện nâng cao trải nghiệm người dùng • Tối ưu hóa code 54 TÀI LIỆU THAM KHẢO Ngôn ngữ C#: https://hiepsiit.com/detail/csharp/ngon-ngu-c/lichsuphattrienc https://codegym.vn/blog/2020/06/29/c-la-gi-tim-hieu-ve-ngon-ngu-lap-trinhc/#:~:text=C%23%20(hay%20C%20sharp)%20l%C3%A0,nh%E1%BA%A5t%20l%C3%A0%20 C%2B%2B%20v%C3%A0%20Java Visual Studio https://bizfly.vn/techblog/visual-studio-la-gi.html http://bugnetproject.com/visual-studio-lagi/#:~:text=Visual%20studio%20l%C3%A0%20m%E1%BB%99t%20trong%20nh%E1%BB% AFng%20c%C3%B4ng%20c%E1%BB%A5%20h%E1%BB%97%20tr%E1%BB%A3,ch%C3 %ADnh%20l%C3%A0%20C%23%20v%C3%A0%20VB%2B Github https://vi.wikipedia.org/wiki/GitHub#:~:text=S%E1%BB%B1%20ph%C3%A1t%20tri%E1%BB %83n%20c%E1%BB%A7a%20n%E1%BB%81n,xem%20nh%C6%B0%20giai%20%C4%91o% E1%BA%A1n%20beta WPF Framework https://chiasekinang.com/wpf-lagi/#:~:text=M%E1%BB%99t%20s%E1%BB%91%20t%C3%ADnh%20n%C4%83ng%20n%E1 %BB%95i%20tr%E1%BB%99i%20c%E1%BB%A7a%20WPF,WPF%20mang%20%C4%91%E1%BA%BFn&text=NET%204.5%20h%E1%BB%97%20tr%E1 %BB%A3%20Web,h%E1%BB%97%20tr%E1%BB%A3%20c%E1%BB%A7a%20l%E1%BB% 9Bp%20Animation https://phohen.com/post-detail/uu-diem-cua-wpf-so-voi-c -c-can-ban/372456902 Firebase https://firebase.google.com/docs UI https://www.youtube.com/c/RJCodeAdvanceEN 55 56 ... muốn xem 1.2 Giải pháp Nhận thấy tình hình trên, nhóm em lên ý tưởng xây dựng ứng dụng xem trước review phim, nhằm tìm cho người phim vừa ý 1.3 Mục tiêu • Xây dựng phần mềm hỗ trợ người dùng sử dụng. .. việt: Xây dựng ứng dụng xem trước review phim 2.1.2 Link github quản lý source code - Link github ứng dụng dành cho User: https://github.com/UIT19521828/ReviewYourFilms.git - Link github ứng dụng. .. kiếm phim theo tên Thêm vào watchlist Thêm phim muốn xem vào watchlist Tìm kiếm phim Chức cho phép User tìm kiếm phim theo thể loại theo thể loại Đánh giá phim Chức cho phép người dùng đánh giá phim