1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Hệ thống hỗ trợ dạy và học trực tuyến e comm

65 326 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hệ thống hỗ trợ dạy và học trực tuyến E-Comm Chương 1.Tổng quan: 1.1 Các đối tượng tham gia trong hệ thống: Học viên: là đối tượng chính mà hệ thống phục vụ, hoạt động chính của học vi

Trang 1

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ống hỗ trợ dạy và học trực tuyế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

Trang 2

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy cô trong 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 những kiến thức nền tảng về lĩnh Tin Học – Hệ Thống Thông Tin Quản Lý Đây là những kiến thức vô cùng hữu ích cho em trong công việc sau này

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 trong quá trình thực hiện đề tài

Sinh Viên

Lê Tâm Ân

Trang 3

Hệ thống hỗ trợ dạy và học trực tuyến E-Comm

Chương 1.Tổng quan:

1.1 Các đối tượng tham gia trong hệ thống:

Học viên: là đối tượng chính mà hệ thống phục vụ, hoạt động chính của học viên là tham gia vào các 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 hiện các bài kiểm tra đánh giá kết quả…

Giảng viên: là đối tượng tương ứng với các 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 các học viên đồng thời là người thiết kế các bài kiểm tra ứng với từng môn học

Nhân viên quản lý: 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 của các đối tượng người sử dụng,thiết kế các khóa học, sắp xếp bố trí giảng viên – lớp học, mở các lớp học để học viên và giảng viên tham gia vào hoạt động dạy và học…

1.2 Tổng quan chức năng của cả hệ thống:

Hệ thống E-comm là hệ thống phẩn mềm, một công cụ hỗ trợ cho công tác dạy

và học trên hệ thống máy tính nối mạng Chức năng cơ bản của hệ thống chính là tạo

ra một trường cộng tác, mà trên đó những người sử dụng(ở đây là học viên và giảng viên) có thể truyền thông mà không phụ thuộc vào vị trí địa lý (trong hệ thống này đó chính là tạo ra môi trường cộng tác như một 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 giữa Client và Server

-Hệ quản trị cơ sở dữ liệu: SQL Server 2008

Trang 4

Chương 2 Cơ sở lý thuyết:

2.1.Dependency Injection (DI):

“Dependency Injection là một bộ các quy tắc thiết kế phần mềm giúp cho chúng ta viết

ra những dòng code có sự liên hệ lỏng lẻo với nhau nhất mà không làm thay đổi hiệu quả của sự kết hợp giữa các đối tượng.”

Trang 4,Manning Dependency Injection in NET

Có thể nói ngay bản thân ngữ nghĩa của nó đã giải thích “dependency injection” là gì – dependency injection chính là “loại bỏ sự phụ thuộc”

Mục đích DI là gì? Mục đích của các kỹ thuật lập trình có thể nói là để tạo ra các phần mềm có thể hoạt động có hiệu quả Một trong những mục đích khác đó là tạo ra những đoạn code có thể duy trì và mở rộng một cách dễ dàng.Một trong những cách để đạt được điều đó chính là sử dụng quy tắc “loose coupling” ”loose coupling” chính là loại

bỏ sự kết hợp quá chặt chẽ trong mối quan hệ giữa các đối tượng DI không là gì hơn

là một kỹ thuật áp dụng “loose coupling”

“ Lập trình là với “Interface” chứ không phải với một thể hiện của đối tượng.”

(Erich Gamma và ctv,1994)

“Loose coupling” giúp cho các dòng code dễ dàng được thay đổi và mở rộng

http://www.berchtel.com/archive/diplomathesis/html/04-fundamentals.html

“Dependency Injection” được biết đến nhiều từ cộng đồng Java khi họ cố gắng tìm

kiếm những cách thức khác nhau để tạo ra các phần mềm lớn và phức tạp Việc ứng dụng DI giúp cho việc kết nối các thành phần của các lớp(layer) lại với nhau Các thành phần đó thường được phát triển bởi các đội khác nhau với các cách thức riêng của họ Một trong những nhiệm vụ phổ biến của một “kiến trúc sư phần mềm” đó là kết nối các thành phần đó lại thành một ứng dụng thống nhất Một số mẫu qui tắc thiết

kế (Design Patterns) như “Factory Method”, “Abstract Factory”, “Builder”, đã được

Trang 5

Trong đề tài này hệ thống được xây dựng tuân theo mô hình MVVM dựa trên nền tảng

“Wpf Application Framework” (link:waf.codeplex.com) và 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 sao bạn nên sử dụng mẫu thiết kế Model – View – ViewModel? Thực tế việc sử dụng pattern này trong quá trình phát triển các ứng dụng WPF hoặc Silverlight mang lại cho nhà phát triển nhiều lợi ích, có thể kể đến như sự tương tác hiệu quả giữa người thiết kế giao diện và lập trình viên, khả năng sử dụng lại các 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 quá nhiều

2.2.2 Giải thích thuật ngữ

MVVM là viết tắt của Model –View – ViewModel Hình ảnh dưới đây sẽ mô tả về

mối quan hệ giữa các thành phần trong pattern này

2.2.2.1 Model

Trong thế giới lập trình, model đại diện cho các dữ liệu, thông tin mà chúng ta cần thao tác Một ví dụ về model đó là contact (thông tin liên lạc), nó sẽ bao gồm tên, số điện thoại, địa chỉ, … Đơn vị của Model chính là Class Như vậy xét ví dụ về model contact, chúng ta sẽ có class Contact, hay một ví dụ khác như class Customer dùng để lưu trữ thông tin về khách hàng, class Supplier lưu trữ các thông tin về các nhà cung cấp… Các class trong Model của MVVM đều giống như các class bình thường khác, chúng đều có một số các phương thức, properties… hay khả năng tự động lưu dữ liệu của nó và cơ sở dữ liệu

Tuy nhiên cần phải lưu ý đó là model chỉ lưu giữ thông tin mà thôi, nó không quan tâm đến các hoạt động hay dịch vụ có thể thay đổi, điều khiển các thông tin đó Tuy nhiên ta có thể định nghĩa thêm các thuộc tính(attribute) nhằm phục vụ cho việc hiển thị trên giao diện hoặc là sử dụng các Type Converter chuyển đổi model về các kiểu

dữ liệu mà ngôn ngữ lập trình hỗ trợ để tối ưu hóa giao diện người dùng

Trang 6

2.2.2.2 ViewModel

ViewModel là class định nghĩa cách dữ liệu tương tác với người dùng thông qua view Nói cách khác ViewModel là model của View

Một lưu ý quan trọng đó là ViewModel không mô tả giao diện sẽ trông như thế nào

Nó chỉ mô tả cách mà view hoạt động và thông tin nào sẽ được cung cấp cho người dùng

Vấn đề cần bàn luận ở đây là, liệu ViewModel sẽ ảnh hưởng như thế nào đến phần hiển thị của View, ví dụ như việc xác định nội dung của một label, bạn sẽ sử dụng View hay ViewModel? Điều này tùy thuộc hoàn toàn vào đối tượng cũng như dự

án mà bạn đang làm Đôi khi label đó sẽ có nội dung do ViewModel quy định (bởi vì bạn cần thay đổi nội dung của label tùy theo sự kiện xảy ra), hay có khi designer sẽ quyết định label sẽ hiển thị như thế nào Nói chung, nếu nó không phụ thuộc vào cơ sở

dữ liệu thì nó sẽ thuộc về thẩm quyền của designer – tức là được định nghĩa trong View chứ không phải ViewModel

2.2.2.3 View

View là thành phần duy nhất mà người dùng có thể tương tác được trong chương trình,

nó chính là thành phần mô tả dữ liệu Trong WPF, view là một UserControl, lưu ý mặc dù View chính là UserControl nhưng không nhất thiết UserControl phải làView

Vậy làm thế nào để phân biệt được? Rất đơn giản Ban đầu bạn khởi tạo class ViewModel trước, như vậy bạn đã cóViewModel để quản lí các chức năng cần thiết, việc cuối cùng là tạo class View nhằm cho phép người dùng sử dụng các chức năng đó Nếu một tính năng hiển thị nào đó nằm trên view và là một phần của ViewModel đã được khai báo trước đó, nhưng lại không có ViewModel của riêng

nó thì đó đơn thuần chỉ là một UserControl

Ví dụ, trong class CustomerEditViewModel mô tả ở trên, địa chỉ của khách hàng sẽ được hiển thị và có thể thay đổi được bởi người dùng Ta có thể đưa việc hiển thị và thay đổi nội dung vào trong cùng một UserControl duy nhất, tuy nhiên UserControlnày

Trang 7

cho phép chúng ta thay đổi giao diện của ứng dụng mà chỉ cần viết lại phần View, các tính năng của View được định nghĩa trong ViewModel sẽ vẫn tiếp tục được giữ lại như trước Chính vì lẽ đó nên View cần phải biết rõ về ViewModel của nó, tuy nhiên ViewModel „hầu như‟ không nên biết về View

Với việc sử dụng MVVM pattern, bạn có thể giao phần View lại cho designer thực hiện công việc của họ Họ có thể thay đổi giao diện như thế nào tùy thích (tất nhiên là vẫn phải theo một quy định nào đó) trong khi data source và các tính năng tương tác giữa giao diện với người dùng trong ViewModel vẫn giữ nguyên như cũ và hoạt động một cách chính xác

Ở đây chúng ta sử dụng WPF do đó thứ cụ thể mà chúng ta cần phải quan tâm chính

là DataContext của phần View Nói rõ hơn, mỗi element nằm trong View đều được kết nối tới các properties trong ViewModel bằng data binding ViewModel sẽ lại lấy dữ liệu từ Model (chính là class Customer) và liên kết các properties có thể được thay đổi bởi user vào các Observable properties

Observable properties là các properties của ViewModel, chúng có thể tự động thông báo cho giao diện của chương trình biết mỗi khi giá trị của nó thay đổi bằng cách cài đặt INotifyPropertyChanged interface

2.2.4 Điều khiển hoạt động của toàn bộ ứng dụng

Trong hầu hết các ứng dụng WPF sẽ có một cửa sổ đầu tiên được khởi tạo gọi

là MainWindow – và hầu hết các ứng dụng MVVM xem nó như là một View và tạo ra một class ViewModel tương ứng gọi là MainWindowViewModel

Trong mô hình MVVM mà tác giả của bài viết này xây dựng có sử dụng một “thứ” gọi

là Controller Nó là một class bình thường (không liên quan gì đến giao diện) có nhiệm

vụ điều khiển hoạt động của ứng dụng Đối với các ứng dụng lớn, có thể có nhiều Controllers với một vài chức năng cơ bản Tuy nhiên không phải

Có thể gói gọn các nhiệm vụ chính của Controller đó là:

 Khởi tạo View cùng với ViewModel tương ứng

 Gởi các yêu cầu dữ liệu

 Quản lí việc cập nhật dữ liệu

 Quản lí hoạt động của View phù hợp theo từng thời điểm sự kiện xảy ra

Như vậy, khi ứng dụng được khởi chạy, một đối tượng Controller được khởi tạo Nó sẽ truyền tham chiếu của chính nó vào mọi ViewModel, cho phép các ViewModel đó sử dụng các chức năng được cung cấp bởi Controller

Phần View mà Controller tạo ra cũng có thể có nhiều view con (child view) khác và được định vị ở lúc thiết kế – trong trường hợp này ViewModel cũng sẽ cần phải tạo ra các ViewModel con tương ứng

Như vậy, Controller có thể vừa có khả năng đẩy dữ liệu đến ViewModel, hoặc ViewModel cũng có khả năng yêu cầu dữ liệu từController Việc này tùy thuộc vào sở thích và suy nghĩ của mỗi người

Trang 8

Đi sâu hơn vào ví dụ về yêu cầu của ông chủ được trình bày ở trên, nội dung yêu cầu

bây giờ được mô tả chi tiết hơn: “Hiển thị một danh sách khách hàng cho người dùng

và cho phép họ được phép sửa đổi thông tin đó Khi một item được lựa chọn, họ có thể thay đổi và sau đó lưu lại chúng”

Công việc của Controller lúc này là:

 Khởi tạo một đối tượng CustomerSelectionViewModel

 Cung cấp một danh sách các đối tượng Customer

để CustomerSelectionViewMode có thể sử dụng và thao tác trên đó

 Khởi tạo đối tượng CustomerSelectionView và gán giá trị thuộc tính DataContext của nó là CustomerSelectionViewModel

 Hiển thị CustomerSelectionView

Bây giờ, khi người dùng lựa chọn một customer từ trong danh sách được View hiển thị,

nó sẽ send một command đếnViewModel ViewModel lại báo với Controller rằng vừa

có một đối tượng Customer được select (và tất nhiên là phải biết chính xác đó là đối tượng nào) Lúc này, Controller sẽ:

 Lấy dữ liệu cho đối tượng Customer được yêu cầu (trong trường hợp chưa lấy toàn bộ thông tin)

 Khởi tạo CustomerEditViewModel và truyền cho nó thông tin về đối tượng Customer được chọn

 Khởi tạo CustomerEditView và gán DataContext của nó cho CustomerEditViewModel

 Hiển thị CustomerEditView

2.2.5 Giao tiếp giữa các ViewModel

Tất nhiên sẽ có lúc ta gặp phải trường hợp có nhiều hơn một ViewModel trong dự án,

và mỗi khi thay đổi nội dung trong ViewModel này thì ViewModel cũng phải thay đổi tương ứng Trong ví dụ về Selection/Edit Customer mà nãy giờ chúng ta quan tâm, Selection cần phải được refresh mỗi khi dữ liệu được lưu lại sau khi Edit xong Trong trường hợp này, nhiều kiểu mô hình MVVM sử dụng giải pháp là tạo ra class Messenger hoặc Mediator Nó cho phép cácViewModel yêu cầu được thông báo mỗi khi có một thông điệp được gởi từ một ViewModel khác nào đó, và tất nhiên cũng

Trang 9

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 hiện một chức năng nào đó, nó sẽ yêu cầu Controller thực thi chức năng

đó Controller sau đó lại xử lí việc gởi các thông điệp Nói một ngắn gọn

thì Controller sẽ là nơi thực hiện việc gởi thông điệp chứ không phải là ViewModel

Một ví dụ cụ thể để hiểu rõ hơn về vấn đề này, đối tượng CustomerEdit

ViewModel khi biết được người dùng vừa cập nhật dữ liệu của Customer object, nó sẽ

thông báo cho Controller biết rằng ‘Khách hàng 123 vừa mới cập nhật dữ liệu xong’

2.2.6 Kết nối với dữ liệu(Data Binding)

Là kĩ thuật dùng để tạo gắn kết giữa phần giao diện (UI) và dữ liệu thông qua phần

business logic Nhờ Data Binding, UI có thể tự động cập nhật lại để hiển thị các thay

đổi trong dữ liệu.Ngoài ra, Data Binding trong WPF còn hỗ trợ các chiều khác nhau,

nghĩa là các thay đổi có thể cập nhật từ UI vào dữ liệu

Một Binding bao gồm 4 thành phần chính là: binding target, target property, binding

source và một path (đường dẫn) đến giá trị cần thiết trong binding source, thông

thường path này là một source property

Ví dụ ta muốn gắn property Name của một đối tượng Person cho property Text của

một TextBox Khi đó:

- Binding target: TextBox

- Target property: property Text của TextBox

- Binding source: đối tượng Person

-Path: đường dẫn đếnproperty Name của đối tượng Person

Mô hình Data Binding của WPF theo hình minh họa sau:

Trang 10

Cần lưu ý là target property phải là một dependency property Đa số các property của lớp UIElement đều là các dependency property Đối với binding source, bạn có thể sử dụng bất kì đối tượng NET nào, chẳng hạn như các đối tượng trong ADO.NET, XML hay các control trong WPF

property Sau đó việc cập nhật dữ liệu sẽ không được thực hiện

OneWayToSource Giống OneWay nhưng theo hướng ngược

lại: cập nhật từ target property sang source property

Với target property mà người dùng có thể thay đổi giá trị (như TextBox.Text) thì nó

là TwoWay, còn lại là OneWay

Update Source Trigger

Với Binding Mode là TwoWay hoặc OneWayToSource, bạn có thể xác định thời điểm

mà binding source sẽ được cập nhật lại thông qua property

Binding.UpdateSourceTrigger Enum UpdateSourceTrigger gồm 4 giá trị:

Trang 11

LostFocus Cập nhật binding source khi binding target mất focus

Explicit Cập nhật binding source chỉ khi bạn gọi phương thức UpdateSource

DataContext Property

Khái niệm Data Context tương tự như Data Source, đây là một property của FrameworkElement dùng để lưu dữ liệu cho việc hiển thị lên UI Khi sử dụng cho data binding, DataContext sẽ được gán bằng đối tượng binding source

Trang 12

Chương 3.Phân tích thiết kế:

6:Thực hiện bài kiểm tra

7:Đăng ký tài khoản

8:Xem thư viện đề thi

<<extend>>

8.3 Thêm đề thi 8.2 Xóa đề thi

8.4 Chỉnh sửa đề thi

<<extend>>

<<extend>>

4.2 Tham gia lớp học

Trang 13

3.2.Sơ đồ hoạt động:

3.2.1 Đăng nhập (Usecase 1)

System NguoiDung

Nhập tên đăng nhập và mật khẩu

Xác nhận đăng nhập

Giải mã thông tin đăng nhập kiểm tra mật khẩu

[Mật khẩu hợp lệ]

[Mật khẩu không hợp lệ]

Trang 14

3.2.2 Đăng xuất (Usecase 2)

System NguoiDung

Chọn đăng xuất

Tạo thông tin đăng xuất Xác nhận đăng xuất

Trang 15

3.2.3 Gửi/nhận thông điệp (Usecase 3)

NguoiDung 2System

NguoiDung 1

Nhập thông điệp

Xác nhận gửi thông điệp

Gửi thông điệp

Nhận thông điệp

Hiển thị thông điệp

Xem thông điệp

Trang 16

3.2.4 Chọn lớp học (Usecase 4)

System NguoiDung

Chọn lớp học

Chọn xem chi tiết

Hiển thị thông tin chi tiết lớp học

3.2.5 Tạo lớp học (Usecase 4.1)

System NguoiDung

Chọn mở phòng học

Mở lớp học và tạo lịch sử lớp học

Trang 17

3.2.6 Tham gia lớp học ( Usecase 4.2)

SystemNguoiDung

Chọn tham gia lớp học

Kiểm tra trạng thái lớp học

[Không hợp lệ] Tạo thông tin đăng nhập

[Hợp lệ]

Trang 18

3.2.7 Đăng ký lớp học (Usecase 5)

SystemHocVien

Trang 19

3.2.8 Thực hiện bài kiểm tra(Usecase 6)

Chọn lớp học và môn học

Hiển thị bài kiểm tra cần thực hiện

Chọn tìm kiếm

Hiển thị danh sách kết quả

Chọn bài kiểm tra

Xác nhận

Khởi tạo bài kiểm tra

Nhập câu trả lời

Kết thúc bài kiểm tra

Lưu thông tin bài kiểm tra và xuất kết quả nếu có

Trang 20

3.2.9 Đăng ký tài khoản (Usecase 7)

System HocVien

Nhập thông tin cá nhân

Nhập tên đăng nhập và mật khẩu

Kiểm tra thông tin nhập Xác nhận đăng ký

[Hợp lệ]

Cập nhật hồ sơ học viên [Không hợp lệ]

Trang 21

3.2.10 Xem thƣ viện đề thi (Usecase 8)

System GiangVien

Chọn môn học và loại đề thi

Chọn lọc kết quả

Tìm kiếm và hiển thị danh sách đề

3.2.11 Xem thông tin đề thi (Usecase 8.1)

SystemGiangVien

Chọn đề

Chọn xem thông tin đề thi

Hiển thị thông tin đề thi

Trang 22

3.2.12 Usecase 8.2:Xóa đề thi

SystemGiangVien

Chọn đề

Chọn xóa đề thi

Kiểm tra quyền xóa đề

Yêu cầu xác nhận xóa

[Hợp lệ]

[Không hợp lệ]

Yêu cầu xác nhận xóa

Xóa đề được chọn

Trang 23

3.2.13 Thêm đề thi (Usecase 8.3)

SystemGiangVien

Chọn thêm đề thị

Hiên bảng nhập thông tin đề

Nhập thông tin đề thi

Xác nhận thêm đề

Kiểm tra thông tin nhập

Lưu đề thi mới [Hợp lệ]

[Không hợp lệ]

Trang 24

3.2.14 Chỉnh sửa đề thi (Usecase 8.4)

SystemGiangVien

Chọn đề thi

Chọn thay đổi chi tiết đề thi

Kiểm tra quyền

Trang 25

3.3.2 Đăng xuất:

Trang 26

3.3.3 Gửi/nhận thông điệp:

Trang 32

3.3.6 Thực hiện bài kiểm tra:

Ngày đăng: 24/03/2017, 00:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w