Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
3,01 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH KHOA TIN HỌC QUẢN LÝ -oOo - CHUYÊN ĐỀ TỐT NGHIỆP Đề tài: Hệthốnghỗtrợdạyhọctrựctuyến E-Comm GVHD: Đoàn Thiện Ngân SVTH: Lê Tâm Ân Lớp : TH1 Khóa: 34 MSSV: 108201402 Niên khóa: 2008-2012 LỜI CẢM ƠN Em xin chân thành cảm ơn thầy cô khoa Tin Học Quản Lý, trường Đại Học Kinh Tế Thành Phố Hồ Chí Minh cung cấp cho em kiến thức tảng lĩnh Tin Học – HệThốngThông Tin Quản Lý Đây kiến thức vô hữu ích cho em công việc sau Em xin chân thành cảm ơn thầy Đoàn Thiện Ngân tận tình hướng dẫn, giúp đỡ em trình thực đề tài Sinh Viên Lê Tâm Ân Hệthốnghỗtrợdạyhọctrựctuyến E-Comm Chƣơng 1.Tổng quan: 1.1 Các đối tƣợng tham gia hệ thống: Học viên: đối tượng mà hệthống phục vụ, hoạt động học viên tham gia vào khóa học: trực tiếp tham gia vào lớp học(sử dụng hệthống để giao tiếp với giảng viên,các học viên khác,các nguồn tài liệu), thực kiểm tra đánh giá kết quả… Giảng viên: đối tượng tương ứng với lớp học, giảng viên tham gia vào lớp học với vai trò giảng dạy, sử dụng hệthống để truyền đạt kiến thức đến học viên đồng thời người thiết kế kiểm tra ứng với môn học Nhân viên quản lý: đối tượng quản lý hệ thống: quản lý thông tin tài khoản người sử dụng hệ thống, quản lý quyền truy cập hệthống đối tượng người sử dụng,thiết kế khóa học, xếp bố trí giảng viên – lớp học, mở lớp học để học viên giảng viên tham gia vào hoạt động dạy học… 1.2 Tổng quan chức hệ thống: Hệthống E-comm hệthống phẩn mềm, công cụ hỗtrợ cho công tác dạyhọchệthống máy tính nối mạng Chức hệthống tạo trường cộng tác, mà người sử dụng(ở học viên giảng viên) truyền thông mà không phụ thuộc vào vị trí địa lý (trong hệthống tạo môi trường cộng tác lớp học truyển thống) 1.3 Phƣơng pháp phân tích thiết kế: phân tích thiết kế hướng đối tượng 1.4 Công nghệ lập trình: -Ngôn ngữ lập trình: C# (IDE: Visual Studio 2010 ultimate) -Giao diện người dùng: Microsoft Windows Presentation Foundation (WPF) tuân theo thiết kế MVVM(Model-View-ViewModel) -Mô hình Client-Server: dùng công nghệ WCF để tổ chức truyền thông Client Server -Hệ quản trị sở liệu: SQL Server 2008 Chƣơng Cơ sở lý thuyết: 2.1.Dependency Injection (DI): “Dependency Injection quy tắc thiết kế phần mềm giúp cho viết dòng code có liên hệ lỏng lẻo với mà không làm thay đổi hiệu kết hợp đối tượng.” Trang 4,Manning Dependency Injection in NET Có thể nói thân ngữ nghĩa giải thích “dependency injection” – dependency injection “loại bỏ phụ thuộc” Mục đích DI gì? Mục đích kỹ thuật lập trình nói để tạo phần mềm hoạt động có hiệu Một mục đích khác tạo đoạn code trì mở rộng cách dễ dàng.Một cách để đạt điều sử dụng quy tắc “loose coupling” ”loose coupling” loại bỏ kết hợp chặt chẽ mối quan hệ đối tượng DI không là kỹ thuật áp dụng “loose coupling” “ Lập trình với “Interface” với thể đối tượng.” (Erich Gamma ctv,1994) “Loose coupling” giúp cho dòng code dễ dàng thay đổi mở rộng http://www.berchtel.com/archive/diplomathesis/html/04-fundamentals.html “Dependency Injection” biết đến nhiều từ cộng đồng Java họ cố gắng tìm kiếm cách thức khác để tạo phần mềm lớn phức tạp Việc ứng dụng DI giúp cho việc kết nối thành phần lớp(layer) lại với Các thành phần thường phát triển đội khác với cách thức riêng họ Một nhiệm vụ phổ biến “kiến trúc sư phần mềm” kết nối thành phần lại thành ứng dụng thống Một số mẫu qui tắc thiết kế (Design Patterns) “Factory Method”, “Abstract Factory”, “Builder”, đề nghị để hỗtrợ cho việc Một cách khác để cài đặt mẫu thiết kế sử dụng tảng(framework) đáng tin cậy Một vài tảng có nhiệm vụ kết nối thành phần để tạo nên hệthống hoàn chỉnh biết đến hệthống lõi chứa đựng tất thành phần (Inversion of Control (IoC) container) Trong đề tài hệthống xây dựng tuân theo mô hình MVVM dựa tảng “Wpf Application Framework” (link:waf.codeplex.com) sử dụng MEF (Managed Extensibility Framework, liên kết : mef.codeplex.com) để cài đặt “dependency injection” 2.2 Mô hình MVVM 2.2.1 Giới thiệu mô hình Model-View-ViewModel Tại bạn nên sử dụng mẫu thiết kế Model – View – ViewModel? Thực tế việc sử dụng pattern trình phát triển ứng dụng WPF Silverlight mang lại cho nhà phát triển nhiều lợi ích, kể đến tương tác hiệu người thiết kế giao diện lập trình viên, khả sử dụng lại thành phần hay việc thay đổi giao diện chương trình mà không cần thiết phải viết lại code nhiều 2.2.2 Giải thích thuật ngữ MVVM viết tắt Model –View – ViewModel Hình ảnh mô tả mối quan hệ thành phần pattern 2.2.2.1 Model Trong giới lập trình, model đại diện cho liệu, thông tin mà cần thao tác Một ví dụ model contact (thông tin liên lạc), bao gồm tên, số điện thoại, địa chỉ, … Đơn vị Model Class Như xét ví dụ model contact, có class Contact, hay ví dụ khác class Customer dùng để lưu trữ thông tin khách hàng, class Supplier lưu trữ thông tin nhà cung cấp… Các class Model MVVM giống class bình thường khác, chúng có số phương thức, properties… hay khả tự động lưu liệu sở liệu Tuy nhiên cần phải lưu ý model lưu giữ thông tin mà thôi, không quan tâm đến hoạt động hay dịch vụ thay đổi, điều khiển thông tin Tuy nhiên ta định nghĩa thêm thuộc tính(attribute) nhằm phục vụ cho việc hiển thị giao diện sử dụng Type Converter chuyển đổi model kiểu liệu mà ngôn ngữ lập trình hỗtrợ để tối ưu hóa giao diện người dùng 2.2.2.2 ViewModel ViewModel class định nghĩa cách liệu tương tác với người dùng thông qua view Nói cách khác ViewModel model View Một lưu ý quan trọng ViewModel không mô tả giao diện trông Nó mô tả cách mà view hoạt động thông tin cung cấp cho người dùng Vấn đề cần bàn luận là, liệu ViewModel ảnh hưởng đến phần hiển thị View, ví dụ việc xác định nội dung label, bạn sử dụng View hay ViewModel? Điều tùy thuộc hoàn toàn vào đối tượng dự án mà bạn làm Đôi label có nội dung ViewModel quy định (bởi bạn cần thay đổi nội dung label tùy theo kiện xảy ra), hay có designer định label hiển thị Nói chung, không phụ thuộc vào sở liệu thuộc thẩm quyền designer – tức định nghĩa View ViewModel 2.2.2.3 View View thành phần mà người dùng tương tác chương trình, thành phần mô tả liệu Trong WPF, view UserControl, lưu ý View UserControl không thiết UserControl phải làView Vậy làm để phân biệt được? Rất đơn giản Ban đầu bạn khởi tạo class ViewModel trước, bạn cóViewModel để quản lí chức cần thiết, việc cuối tạo class View nhằm cho phép người dùng sử dụng chức Nếu tính hiển thị nằm view phần ViewModel khai báo trước đó, lại ViewModel riêng đơn UserControl Ví dụ, class CustomerEditViewModel mô tả trên, địa khách hàng hiển thị thay đổi người dùng Ta đưa việc hiển thị thay đổi nội dung vào UserControl nhất, nhiên UserControlnày sử dụng data source từ class CustomerEditViewModel class CustomerAddressViewModel hayAddressViewModel 2.2.3 Kết nối thành phần MVVM Ý tưởng MVVM tạo mẫu cho phần View (model the views), giữ cho View class tách biệt khỏi ViewModel Về lí thuyết, việc cho phép thay đổi giao diện ứng dụng mà cần viết lại phần View, tính View định nghĩa ViewModel tiếp tục giữ lại trước Chính lẽ nên View cần phải biết rõ ViewModel nó, nhiên ViewModel „hầu như‟ không nên biết View Với việc sử dụng MVVM pattern, bạn giao phần View lại cho designer thực công việc họHọ thay đổi giao diện tùy thích (tất nhiên phải theo quy định đó) data source tính tương tác giao diện với người dùng ViewModel giữ nguyên cũ hoạt động cách xác Ở sử dụng WPF thứ cụ thể mà cần phải quan tâm DataContext phần View Nói rõ hơn, element nằm View kết nối tới properties ViewModel data binding ViewModel lại lấy liệu từ Model (chính class Customer) liên kết properties thay đổi user vào Observable properties Observable properties properties ViewModel, chúng tự động thông báo cho giao diện chương trình biết giá trị thay đổi cách cài đặt INotifyPropertyChanged interface 2.2.4 Điều khiển hoạt động toàn ứng dụng Trong hầu hết ứng dụng WPF có cửa sổ khởi tạo gọi MainWindow – hầu hết ứng dụng MVVM xem View tạo class ViewModel tương ứng gọi MainWindowViewModel Trong mô hình MVVM mà tác giả viết xây dựng có sử dụng “thứ” gọi Controller Nó class bình thường (không liên quan đến giao diện) có nhiệm vụ điều khiển hoạt động ứng dụng Đối với ứng dụng lớn, có nhiều Controllers với vài chức Tuy nhiên ViewModel phải có Controller tương ứng Có thể gói gọn nhiệm vụ Controller là: Khởi tạo View với ViewModel tương ứng Gởi yêu cầu liệu Quản lí việc cập nhật liệu Quản lí hoạt động View phù hợp theo thời điểm kiện xảy Như vậy, ứng dụng khởi chạy, đối tượng Controller khởi tạo Nó truyền tham chiếu vào ViewModel, cho phép ViewModel sử dụng chức cung cấp Controller Phần View mà Controller tạo có nhiều view (child view) khác định vị lúc thiết kế – trường hợp ViewModel cần phải tạo ViewModel tương ứng Như vậy, Controller vừa có khả đẩy liệu đến ViewModel, ViewModel có khả yêu cầu liệu từController Việc tùy thuộc vào sở thích suy nghĩ người Đi sâu vào ví dụ yêu cầu ông chủ trình bày trên, nội dung yêu cầu mô tả chi tiết hơn: “Hiển thị danh sách khách hàng cho người dùng cho phép họ phép sửa đổi thông tin Khi item lựa chọn, họ thay đổi sau lưu lại chúng” Công việc Controller lúc là: Khởi tạo đối tượng CustomerSelectionViewModel Cung cấp danh sách đối tượng Customer để CustomerSelectionViewMode sử dụng thao tác Khởi tạo đối tượng CustomerSelectionView gán giá trị thuộc tính DataContext CustomerSelectionViewModel Hiển thị CustomerSelectionView Bây giờ, người dùng lựa chọn customer từ danh sách View hiển thị, send command đếnViewModel ViewModel lại báo với Controller vừa có đối tượng Customer select (và tất nhiên phải biết xác đối tượng nào) Lúc này, Controller sẽ: Lấy liệu cho đối tượng Customer yêu cầu (trong trường hợp chưa lấy toàn thông tin) Khởi tạo CustomerEditViewModel truyền cho thông tin đối tượng Customer chọn Khởi tạo CustomerEditView gán DataContext cho CustomerEditViewModel Hiển thị CustomerEditView 2.2.5 Giao tiếp ViewModel Tất nhiên có lúc ta gặp phải trường hợp có nhiều ViewModel dự án, thay đổi nội dung ViewModel ViewModel phải thay đổi tương ứng Trong ví dụ Selection/Edit Customer mà quan tâm, Selection cần phải refresh liệu lưu lại sau Edit xong Trong trường hợp này, nhiều kiểu mô hình MVVM sử dụng giải pháp tạo class Messenger Mediator Nó cho phép cácViewModel yêu cầu thông báo có thông điệp gởi từ ViewModel khác đó, tất nhiên cho phép ViewModel gởi thông điệp cho ViewModel lại Quay trở lại với ví dụ chúng ta, CustomerSelection yêu cầu thông báo CustomerUpdated message gởi CustomerEdit gởi thông điệp CustomerUpdated update liệu Customerobject Tuy nhiên, ViewModel lại không nên có quyền gởi thông điệp Khi ViewModel muốn thực chức đó, yêu cầu Controller thực thi chức Controller sau lại xử lí việc gởi thông điệp Nói ngắn gọn Controller nơi thực việc gởi thông điệp ViewModel Một ví dụ cụ thể để hiểu rõ vấn đề này, đối tượng CustomerEdit ViewModel biết người dùng vừa cập nhật liệu Customer object, thông báo cho Controller biết ‘Khách hàng 123 vừa cập nhật liệu xong’ 2.2.6 Kết nối với liệu(Data Binding) Là kĩ thuật dùng để tạo gắn kết phần giao diện (UI) liệu thông qua phần business logic Nhờ Data Binding, UI tự động cập nhật lại để hiển thị thay đổi liệu.Ngoài ra, Data Binding WPF hỗtrợ chiều khác nhau, nghĩa thay đổi cập nhật từ UI vào liệu Một Binding bao gồm thành phần là: binding target, target property, binding source path (đường dẫn) đến giá trị cần thiết binding source, thông thường path source property Ví dụ ta muốn gắn property Name đối tượng Person cho property Text TextBox Khi đó: - Binding target: TextBox - Target property: property Text TextBox - Binding source: đối tượng Person -Path: đường dẫn đếnproperty Name đối tượng Person Mô hình Data Binding WPF theo hình minh họa sau: Cần lưu ý target property phải dependency property Đa số property lớp UIElement dependency property Đối với binding source, bạn sử dụng đối tượng NET nào, chẳng hạn đối tượng ADO.NET, XML hay control WPF Binding Mode Binding mode hướng mà liệu cập nhật Bao gồm giá trị từ enum BindingMode là: Name Description OneWay Cập nhật target property theo source property TwoWay Cập nhật hai chiều target property source property OneTime Khởi tạo target property từ source property Sau việc cập nhật liệu không thực OneWayToSource Giống OneWay theo hướng ngược lại: cập nhật từ target property sang source property Default Hướng binding dựa target property Với target property mà người dùng thay đổi giá trị (như TextBox.Text) TwoWay, lại OneWay Update Source Trigger Với Binding Mode TwoWay OneWayToSource, bạn xác định thời điểm mà binding source cập nhật lại thông qua property Binding.UpdateSourceTrigger Enum UpdateSourceTrigger gồm giá trị: Member name Description Default Đa số dependency property dùng giá trị PropertyChanged, với property Text có giá trị LostFocus PropertyChanged Cập nhật binding source binding target property thay đổi 50 51 4.2.3.BachelorThesis.Client.Views 52 4.2.4.BachelorThesis.Server.Application BachelorThesis.Server.Communication BachelorThesis.Server.Repository 53 54 4.2.5.BachelorThesis.Server.Domain (Các lớp sinh từ sở liệu phuc vụ cho Entity Framework) 3.5 Sơ đồ liệu: 55 MessageHistory Right Control RightID int RightName nvarchar(20) ControlID int ControlName nvarchar(50) ControlType nvarchar(50) MessageID Content ConnectionID UserID Received SendDate ReceivedDate GroupRightDetail GroupID int RightID int GroupControl Connection int nvarchar(max) int int bit datetime datetime ConnectionID UserID BeginDate EndDate int int datetime datetime ControlID int GroupID int UserFriend Group UserFriendID UserID FriendID IsSendable User GroupID int GroupName nvarchar(20) DisplayName nvarchar(20) UserID UserTypeID UserName Password Status RegisteredDate SecretQuestion SecretAnswer FirstName LastName Email PhoneNumber IdentityCard Address Birthday UserGroupDetail UserGroupID int GroupID int UserID int UserType UserTypeID int UserTypeName nvarchar(50) int int nvarchar(50) varchar(128) int datetime nvarchar(500) nvarchar(500) nvarchar(200) nvarchar(200) nvarchar(200) nvarchar(20) nvarchar(50) nvarchar(200) datetime Participant int int int bit ClassHistoryID int ConnectionID int JoinIn datetime Course CourseID UserID CourseName StartDate EndDate IsStarted int int nvarchar(200) datetime datetime bit ClassHistory CourseDetail CourseDetailID LecturerSubjectID CourseDetailID int ClassID UserID int CourseID RegisteredDate Datetime Price Paid bit AvailableSeats TakenAssessmentHistory TakenAssessmentID AssessmentViewID UserID TakenDate Score RegistrationDetail int int int datetime int LecturerSubject Assessment AssessmentID LecturerSubjectID AssessmentName PassScore Period PrivateAccess NumberOfQuestions int int nvarchar(20) int time bit int LecturerSubjectID SubjectID UserID StartDate EndDate int int int datetime datetime QuestionRecordViewID AssessmentViewID QuestionRecordID QuestionRecordViewOrderNumber AssessmentHistoryDetail AssessmentHistoryDetailID TakenAssessmentID QuestionRecordViewID Mark UserRank UserDifficulty int int int int smallint smallint int int int int int int tinyint time(0) time(0) Class QuestionRecordID LecturerSubjectID QuestionRecordContent Illustration PrivateAccess Rank Difficulty Section CheckNumberOfSelected OrderNumber int nvarchar(200) nvarchar(max) nvarchar(200) AssessmentQuestions QuestionRecordView ClassDetail ClassDetailID ClassID DayOfWeek Begin End QuestionRecord SubjectID SubjectName SubjectContent SubjectDisplayName AssessmentView int int int int datetime ClassID int ClassName nvarchar(20) Subject AssessmentViewID int AssessmentID int int int int int float int ClassHistoryID ConnectionID ClassDetailID CourseDetailID Date AssessmentQuestionID int QuestionRecordID int AssessmentID int Choice ChoiceView ChoiceViewID ChoiceID QuestionRecordViewID ChoiceViewOrderNumber int int nvarchar(20) image tinyint smallint smallint tinyint bit int int int int tinyint ChoiceID QuestionRecordID ChoiceContent RightChoice OrderNumber int int nvarchar(20) bit byte StudentAnswer StudentAnswerID int AssessmentHistoryDetailID int ChoiceViewID int 56 Table Assessment Assessment Assessment Assessment Assessment Assessment Assessment AssessmentHisto ryDetail AssessmentHisto ryDetail AssessmentHisto ryDetail AssessmentHisto ryDetail AssessmentHisto ryDetail AssessmentHisto ryDetail AssessmentQues tions AssessmentQues tions AssessmentQues tions AssessmentView AssessmentView Choice Choice Choice Choice Choice Name Is Key PrivateAccess FAL SE Period FAL SE PassScore FAL SE NumberOfQuestions FAL SE AssessmentName FAL SE LecturerSubjectID TRU E AssessmentID TRU E UserRank FAL SE UserDifficulty FAL SE Mark FAL SE TakenAssessmentID TRU E QuestionRecordViewID TRU E AssessmentHistoryDetail TRU ID E QuestionRecordID TRU E AssessmentQuestionID TRU E AssessmentID TRU E AssessmentViewID TRU E AssessmentID TRU E RightChoice FAL SE OrderNumber FAL SE ChoiceContent FAL SE QuestionRecordID TRU E ChoiceID TRU E Data Type bit time int int nvarchar( 20) int int smallint smallint int int int int int int int int int bit byte nvarchar( 20) int int Ident ity FALS E FALS E FALS E FALS E FALS E FALS E TRUE Prim ary FALS E FALS E FALS E FALS E FALS E FALS E TRUE Foreign Key FALSE Mandat ory FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALS E TRUE FALS E TRUE TRUE TRUE FALSE TRUE FALS E TRUE FALS E TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E FALS E TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE 57 ChoiceView ChoiceView ChoiceViewOrderNumb er QuestionRecordViewID ChoiceView ChoiceViewID ChoiceView ChoiceID Class ClassName Class ClassID ClassDetail End ClassDetail DayOfWeek ClassDetail Begin ClassDetail ClassID ClassDetail ClassDetailID ClassHistory Date ClassHistory CourseDetailID ClassHistory ConnectionID ClassHistory ClassHistoryID ClassHistory ClassDetailID Connection EndDate Connection BeginDate Connection UserID Connection ConnectionID Control ControlType Control ControlName Control ControlID Course StartDate FAL SE TRU E TRU E TRU E FAL SE TRU E FAL SE FAL SE FAL SE TRU E TRU E FAL SE TRU E TRU E TRU E TRU E FAL SE FAL SE TRU E TRU E FAL SE FAL SE TRU E FAL SE tinyint FALS E FALS E TRUE FALS E FALS E TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E TRUE FALS E FALS E TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E TRUE FALS E FALS E FALS E TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE int FALS E FALS E FALS E FALS E TRUE FALSE TRUE nvarchar( 50) nvarchar( 50) int FALS E FALS E TRUE FALS E FALS E TRUE FALSE FALSE FALSE TRUE FALSE TRUE datetime FALS E FALS E FALSE TRUE int int int nvarchar( 20) int time(0) tinyint time(0) int int datetime int int int int datetime datetime int 58 Course IsStarted Course EndDate Course CourseName Course UserID Course CourseID CourseDetail Price CourseDetail AvailableSeats CourseDetail LecturerSubjectID CourseDetail CourseID CourseDetail CourseDetailID CourseDetail ClassID Group DisplayName Group GroupName Group GroupID GroupControl GroupID GroupControl ControlID GroupRightDetail RightID GroupRightDetail GroupID LecturerSubject StartDate LecturerSubject EndDate LecturerSubject UserID LecturerSubject SubjectID LecturerSubject LecturerSubjectID MessageHistory SendDate FAL SE FAL SE FAL SE TRU E TRU E FAL SE FAL SE TRU E TRU E TRU E TRU E FAL SE TRU E TRU E TRU E TRU E TRU E TRU E FAL SE FAL SE TRU E TRU E TRU E FAL SE bit datetime nvarchar( 200) int int float int int int int int nvarchar( 20) nvarchar( 20) int int int int int datetime datetime int int int datetime FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E TRUE FALS E FALS E FALS E TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALSE TRUE 59 MessageHistory ReceivedDate MessageHistory Received MessageHistory Content MessageHistory UserID MessageHistory MessageID MessageHistory ConnectionID Participant JoinIn Participant ConnectionID Participant ClassHistoryID QuestionRecord Section QuestionRecord Rank QuestionRecord QuestionRecordContent QuestionRecord PrivateAccess QuestionRecord OrderNumber QuestionRecord Illustration QuestionRecord Difficulty QuestionRecord QuestionRecord CheckNumberOfSelecte d AllowShuffleChoices QuestionRecord QuestionRecordID QuestionRecord LecturerSubjectID QuestionRecordV iew QuestionRecordV iew QuestionRecordV iew QuestionRecordV iew QuestionRecordViewOr derNumber QuestionRecordViewID QuestionRecordID AssessmentViewID FAL SE FAL SE FAL SE TRU E TRU E TRU E FAL SE TRU E TRU E FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE TRU E TRU E FAL SE TRU E TRU E TRU E datetime bit nvarchar( max) int int int datetime int int tinyint smallint nvarchar( 20) tinyint int image smallint bit bit int int int int int int FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALS E FALS E TRUE FALS E FALS E TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALS E FALS E FALS E FALS E TRUE TRUE TRUE TRUE 60 RegistrationDetai l RegistrationDetai l RegistrationDetai l RegistrationDetai l Right RegisteredDate Right RightID StudentAnswer StudentAnswerID StudentAnswer ChoiceViewID StudentAnswer Subject AssessmentHistoryDetail ID SubjectName Subject SubjectDisplayName Subject SubjectContent Subject SubjectID TakenAssessmen tHistory TakenAssessmen tHistory TakenAssessmen tHistory TakenAssessmen tHistory TakenAssessmen tHistory User TakenDate User Status User SecretQuestion User SecretAnswer User RegisteredDate User PhoneNumber Paid UserID CourseDetailID RightName Score UserID TakenAssessmentID AssessmentViewID UserName FAL SE FAL SE TRU E TRU E FAL SE TRU E TRU E TRU E TRU E FAL SE FAL SE FAL SE TRU E FAL SE FAL SE TRU E TRU E TRU E FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE Datetime bit int int nvarchar( 20) int int int int nvarchar( 200) nvarchar( 200) nvarchar( max) int datetime int int int int nvarchar( 50) int nvarchar( 500) nvarchar( 500) datetime nvarchar( 20) FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALS E TRUE FALSE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E FALS E TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALS E FALS E FALS E TRUE FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE 61 User Password User LastName User IdentityCard User FirstName User Email User Birthday User Address User UserTypeID User UserID UserFriend IsSendable UserFriend UserID UserFriend UserFriendID UserFriend FriendID UserGroupDetail UserID UserGroupDetail UserGroupID UserGroupDetail GroupID UserType UserTypeName UserType UserTypeID FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE FAL SE TRU E TRU E FAL SE TRU E TRU E TRU E TRU E TRU E TRU E FAL SE TRU E varchar(1 28) nvarchar( 200) nvarchar( 50) nvarchar( 200) nvarchar( 200) datetime nvarchar( 200) int int bit int int int int int int nvarchar( 50) int FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E FALS E FALS E FALS E FALS E FALS E FALS E TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E FALS E FALS E FALS E TRUE FALS E FALS E TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALS E FALS E TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALS E FALS E TRUE FALS E FALS E TRUE TRUE FALSE FALSE FALSE FALSE TRUE 62 Danh mục tài liệu tham khảo: -“ An introduction to the Model-View-ViewModel (MVVM) pattern” Liên kết :http://www.codeproject.com/Articles/173618/MVVM-Episode-1 -" Diploma Thesis: Evaluation of Plug-In Architectures for a Test Suite “Jürgen Berchtel Liên kết: http://www.berchtel.com/archive/diplomathesis/html/index.html 63 MụC LụC CHƢƠNG 1.TổNG QUAN: 1.1 CÁC ĐốI TƢợNG THAM GIA TRONG Hệ THốNG: 1.2 TổNG QUAN CHứC NĂNG CủA Cả Hệ THốNG: 1.3 PHƢƠNG PHÁP PHÂN TÍCH THIếT Kế: PHÂN TÍCH THIếT Kế HƢớNG ĐốI TƢợNG 1.4 CÔNG NGHệ LậP TRÌNH: CHƢƠNG CƠ Sở LÝ THUYếT: 2.1.DEPENDENCY INJECTION (DI): 2.2 MÔ HÌNH MVVM CHƢƠNG 3.PHÂN TÍCH THIếT Kế: 3.1.SƠ Đồ USECASE: 3.2.SƠ Đồ HOạT ĐộNG: 3.3 SƠ Đồ TUầN Tự: 3.4 SƠ Đồ CLASS: 3.5 SƠ Đồ Dữ LIệU: DANH MụC CÁC TÀI LIệU THAM KHảO: 2 2 3 11 11 12 23 40 55 63 64 ... properties ViewModel data binding ViewModel lại lấy liệu từ Model (chính class Customer) liên kết properties thay đổi user vào Observable properties Observable properties properties ViewModel,... giảng viên tham gia vào hoạt động dạy học 1.2 Tổng quan chức hệ thống: Hệ thống E- comm hệ thống phẩn mềm, công cụ hỗ trợ cho công tác dạy học hệ thống máy tính nối mạng Chức hệ thống tạo trường... (link:waf.codeplex.com) sử dụng MEF (Managed Extensibility Framework, liên kết : mef.codeplex.com) để cài đặt “dependency injection” 2.2 Mô hình MVVM 2.2.1 Giới thiệu mô hình Model-View-ViewModel Tại