Đồ án Thiết kế Website hỗ trợ nộp và chấm bài thí nghiệm Online

Kết quả đạt được Sau quá trình tìm hiểu lý thuyết, nghiên cứu, và tiến hành thực hiện đề tài đồ án tốt nghiệp, chúng em đã tiếp thu được nhiều kiến thức bổ ích, kinh nghiệm thực hành thực tế. Nhóm em đã hoàn thành phần cơ bản đề tài nghiên cứu. Giao diện khá trực quan với người dùng, dễ dàng thao tác. Tốc độ xử lý khá nhanh và ổn định, chính xác. Thao tác rành mạch, có thông báo phản hồi khi một tác vụ hoàn thành. Khó khăn gặp phải Bên cạnh những kết quả đạt được, trong quá trình thực hiện đề tài, chúng em đã gặp phải những khó khăn nhất định ảnh hưởng tới kết quả, những với sự cố gắng của chúng em thì cũng đã hoàn thành một phần của đề tài. Đề xuất và hướng phát triển Đề tài mới dừng lại ở mức hoàn hiện căn bản, còn cần nhiều cải tiến để thực sự hữu dụng khi đưa vào thực tiễn như: -Thiết kế lại cấu trúc của các model. -Hệ thống có thể chấm điểm tự động và thông báo kết quả cho giáo viên, sinh viên. -Tạo App mobile giúp giáo viên theo dõi quá trình làm việc của sinh viên, giúp sinh viên có thể làm bài mọi lúc, mọi nơi.

docx63 trang | Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 464 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế Website hỗ trợ nộp và chấm bài thí nghiệm Online, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5 4 Có kết quả mô phỏng/thưc nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5 Có khả năng phân tích và đánh giá kết quả (15) 5 Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống 1 2 3 4 5 6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều được phân tích và đánh giá thỏa đáng. 1 2 3 4 5 7 Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề xuất hướng giải quyết có thể thực hiện trong tương lai. 1 2 3 4 5 Kỹ năng viết quyển đồ án (10) 8 Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và được giải thích hay đề cập đến trong đồ án, có căn lề, dấu cách sau dấu chấm, dấu phẩy v.v), có mở đầu chương và kết luận chương, có liệt kê tài liệu tham khảo và có trích dẫn đúng quy định 1 2 3 4 5 9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận logic và có cơ sở, từ vựng sử dụng phù hợp v.v.) 1 2 3 4 5 Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp) 10a Có bài báo khoa học được đăng hoặc chấp nhận đăng/đạt giải SVNC khoa học giải 3 cấp Viện trở lên/các giải thưởng khoa học (quốc tế/trong nước) từ giải 3 trở lên/ Có đăng ký bằng phát minh sáng chế 5 10b Được báo cáo tại hội đồng cấp Viện trong hội nghị sinh viên nghiên cứu khoa học nhưng không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích trong các kỳ thi quốc gia và quốc tế khác về chuyên ngành như TI contest. 2 10c Không có thành tích về nghiên cứu khoa học 0 Điểm tổng /50 Điểm tổng quy đổi về thang 10 Nhận xét khác của cán bộ phản biện Ngày: / / 20 Người nhận xét (Ký và ghi rõ họ tên) Lời nói đầu Từ xưa đến nay, nhân loại đã không ngừng học hỏi, tìm tòi và nghiên cứu để tạo ra những sản phẩm nhằm phục vụ cho sinh hoạt hằng ngày hay phục vụ cho mục đích nghiên cứu. Cùng với sự phát triển nhanh của công nghệ, hàng loạt ứng dụng được nghiên cứu và đưa vào sử dụng. Không chỉ giúp khắc phục các hạn chế về mặt thời gian, không gian, nó còn được xem là trợ thủ đắc lực để chúng ta làm việc nhanh, hiệu quả và chính xác. Qua những trải nghiệm thực tế suốt quá trình học tập tại trường Đại học Bách Khoa Hà Nội, kèm theo đó là mong muốn được học tập, nghiên cứu và vận dụng kiến thức đã được học, chúng em đã lựa chọn đề tài:“ Thiết kế website hỗ trợ nộp và chấm bài thí nghiệm online ” để làm đồ án tôt nghiệp của mình. Với những chức năng mà hệ thống mang lại, nó có thể giúp đỡ các bạn sinh viên trong quá trình học tập, cũng như các thầy cô làm việc hiệu quả hơn. Chúng em xin gửi lời cảm ơn chân thành tới ThS. Vũ Song Tùng, Viện Điện tử - Viễn thông, trường Đại học Bách Khoa Hà Nội đã định hướng nghiên cứu, động viên và hướng dẫn tận tình và tạo điều kiện tốt nhất cho chúng em trong suốt quá trình thực hiện đề tài. Sau một khoảng thời gian nghiên cứu và thực hiện đề tài, sản phẩm đã có những kết quả đạt được bước đầu. Dù đã rất cố gắng nhưng vì kiến thức còn hạn chế cho nên hệ thống không tránh khỏi những thiếu sót và hạn chế nhất định. Vì vậy, chúng em rất mong nhận được sự góp ý, bổ sung của các thầy cô để đề tài được hoàn thiện hơn. Chúng em xin chân thành cảm ơn! Hà Nội, ngày 09 tháng 06 năm 2019 LỜI CAM ĐOAN Chúng tôi là Hà Huy Đông, mã số sinh viên 20141062, sinh viên lớp điện tử 4, khóa K59; Đỗ Toàn Thắng, mã số sinh viên 20144184, sinh viên lớp điện tử 5, khóa K59. Người hướng dẫn là ThS. Vũ Song Tùng. Chúng tôi xin cam đoan toàn bộ nội dung được trình bày trong đồ án Thiết kế website hỗ trợ nộp và chấm bài thí nghiệm online là kết quả quá trình tìm hiểu và nghiên cứu của chúng tôi. Các kết quả được nêu trong đồ án là hoàn toàn trung thực, phản ánh đúng kết quả thực tế. Mọi thông tin trích dẫn đều tuân thủ các quy định về sở hữu trí tuệ; các tài liệu tham khảo được liệt kê rõ ràng. Chúng tôi xin chịu hoàn toàn trách nhiệm với những nội dung được viết trong đồ án này. Hà Nội, ngày 09 tháng 06 năm 2019 Người cam đoan Hà Huy Đông Đỗ Toàn Thắng Mục lục Danh mục ký hiệu và chữ viết tắt Từ viết tắt Tên đầy đủ Ý nghĩa MVC Model-View-Controller Mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính TN Thí nghiệm SV Sinh viên GV Giáo viên ASP.NET Active Server Pages .NET framework Là nền tảng ứng dụng web của Microsoft cho phép tạo ta trang web động. SQL Structured Query Language Ngôn ngữ truy vấn cấu trúc NoSQL Non Structured Query Language Ngôn ngữ truy vấn phi cấu trúc XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng JSON JavaScript Object Notation Kiểu dữ liệu mở trong Javascript có dạng text BSON Binary JSON Định dạng trao đổi dữ liệu máy tính dạng nhị phân RDBMS Relational Database Management System Hệ quản trị cơ sở dữ liệu quan hệ Danh mục hình vẽ Hình 1. 1 Mô hình tổng quan hệ thống 5 Hình 1. 2 Các mô hình lập trình web 7 Hình 1. 3 Mô hình MVC 7 Hình 1. 4 Sự phát triển của ASP 8 Hình 1. 5 ASP.NET với Web Forms và MVC 8 Hình 1. 6 Sự phát triển của ASP.NET MVC 9 Hình 1. 7 Mô phỏng cơ chế hoạt động của ASP.NET MVC 10 Hình 1. 8 Sự gia tăng của dữ liệu 11 Hình 1. 9 Tỉ lệ sử dụng của các hệ quản trị cơ sở dữ liệu. 14 Hình 1. 10 MongoDB 14 Hình 2. 1 Sơ đồ chức năng hệ thống17 Hình 2. 2 Usecase đăng nhập 18 Hình 2. 3 Usecase quản lý danh sách 19 Hình 2. 4 Usecase soạn thảo thí nghiệm 20 Hình 2. 5 Usecase làm thí nghiệm 21 Hình 2. 6 Biểu đồ đăng nhập 23 Hình 2. 7 Biểu đồ lập danh sách sinh viên 24 Hình 2. 8 Biểu đồ hoạt động thêm giáo viên 25 Hình 2. 9 Biểu đồ lập danh sách môn học 26 Hình 2. 10 Biểu đồ kiểm tra kết quả thí nghiệm 27 Hình 2. 11 Biểu đồ đánh giá kết quả 28 Hình 2. 12 Thuật toán thêm các trường bài tập 30 Hình 2. 13 Thuật toán xóa trường thêm bài tập 31 Hình 2. 14 Thuật toán upload dữ liệu bài tập 32 Hình 2. 15 Lưu đồ thuật toán chuẩn hóa họ tên 33 Hình 2. 16 Sơ đồ cơ sở dữ liệu theo cấu trúc SQL 34 Hình 2. 17 Các colection 35 Hình 3. 1 Giao diện trang chủ.37 Hình 3. 2 Giao diện Login 38 Hình 3. 3 Giao diện Admin 38 Hình 3. 4 Giao diện giáo viên thêm mới bài thí nghiệm 39 Hình 3. 5 Giao diện sinh viên 40 Hình 3. 6 Giao diện sinh viên làm bài thí nghiệm 40 Hình 3. 7 Giao diện giáo viên xem bài làm của sinh viên 41 Danh mục bảng biểu Bảng 1. 1 Một số lệnh cơ bản trên MongoDB và MySQL 15 Bảng 2. 1 Mô tả usecase đăng nhập ở hình 3.218 Bảng 2. 2 Bảng mô tả usecase quản lý danh sách ở hình 3.3 19 Bảng 2. 3 Bảng mô tả usecase soạn thảo thí nghiệm 20 Bảng 2. 4 Bảng mô tả usecase làm thí nghiệm 21 Tóm tắt đồ án Nội dung chính của đề tài là trình bày các vấn đề liên quan hệ thống thí nghiệm online, sau đó đưa ra phương hướng giải quyết vấn đề. Đồ án được viết dựa trên nền tảng của ASP.NET MVC và cơ sở dữ liệu MongoDB. Nội dung chi tiết được trình bày qua 3 phần của báo cáo: Chương 1. Tổng quan hệ thống: Chương này sẽ giới thiệu tổng quan về hệ thống thí nghiệm online, mô tả hệ thống và các tính năng của hệ thống, đồng thời nêu ra lý thuyết về ASP.NET MVC và MongoDB, so sánh giữa SQL và NoSQL, giữa MongoDB và MySQL để thấy những ưu điểm rõ rệt của MongoDB Chương 2. Phân tích và thiết kế hệ thống: Trong chương này sẽ trình bày chi tiết các sơ đồ cần có của hệ thống, bao gồm: sơ đồ chức năng, các sơ đồ usecase và các biểu đồ hoạt động, đồng thời cũng nêu ra thuật toán xủa lý để đưa dữ liệu lên hệ thống. Chương 3. Kết quả đạt được và thử nghiệm: trình bày cơ bản về chức năng của hệ thống thông qua giao diện ABSTRACT The main content of the topic is to present issues related to the online testing system, then give directions to solve the problem. The project is based on the foundation of ASP.NET MVC and MongoDB database. Detailed content will be presented in 3 parts of the report: Chapter 1: Overview of systems: This chapter will give an overview of the system to support reporting and scoring online experiments, describe the system and features of the system, and describe the theory of ASP.NET MVC and MongoDB, and compare between SQL and NoSQL, between MongoDB and MySQL to see the obvious advantages of MongoDB Chapter 2: Analysis and design system: In this chapter, present detailed diagrams of the system, including: functional diagrams, usecase diagrams and operational diagrams, as well as outlined the algorithm to put data on the system. Chapter 3. Achievements and testing: basic presentation of the system's functions through the interface Phần mở đầu Đặt vấn đề Hiện nay, trong môi trường giáo dục của Việt Nam ngày càng tiên tiến, hiện đại, song song với các bài giảng lý thuyết trên lớp thì việc thực hành ngày càng được chú trọng hơn. Các bài thực hành không những giúp sinh viên tiếp thu, áp dụng kiến thức trên lớp tốt hơn, nâng cao khả năng sáng tạo, nhớ kiến thức lâu hơn mà còn giúp cán bộ giảng viên có thể đánh giá năng lực, kỹ năng của sinh viên tốt hơn, để từ đó có những điều chỉnh phù hợp trong công tác dạy, nâng cao chất lượng giáo dục. Đặc biệt trong các trường đại học về kỹ thuật và công nghệ như Đại học Bách khoa Hà Nội, Đại học Khoa học Tự nhiên, thì việc thực hành lại càng quan trọng và cần thiết. Tuy nhiên hiện phần lớn các trường đều chỉ áp dụng phương pháp thực hành truyền thống, đó là thực hành tại các phòng thí nghiệm, đôi khi việc thực hành như vậy là không cần thiết, điều này không chỉ gây lãng phí về tài nguyên, mà còn dẫn tới mất thời gian của sinh viên và các cán bộ, giảng viên khi mà họ có thể làm nhiều công việc khác như nghiên cứu, học tập, Là một sinh viên viện Điện tử viễn thông, với những kiến thức đã được học cùng với mong muốn thiết kế một hệ thống thí nghiệm giúp cho cán bộ giảng viên và sinh viên có thể tiết kiệm được thời gian, công sức, tiền bạc, cùng với sự hướng dẫn của ThS. Vũ Song Tùng chúng em đã chọn đề tài: “Thiết kế website hỗ trợ nộp và chấm bài thí nghiệm online " làm đồ án tốt nghiệp. Mục đích nghiên cứu Đề tài được nghiên cứu và thực hiện với mục đích áp dụng các kiến thức đã học trên ghế nhà trường để thiết kế ra một sản phẩm để làm đồ án tốt nghiệp cũng như giúp đỡ được một phần nào đó các bạn sinh viên và giảng viên hướng dẫn trong quá trình nộp và chấm bài báo cáo thí nghiệm. Phương pháp nghiên cứu Trong đề tài này, chúng em đã sử dụng các phương pháp nghiên cứu: Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí về thiết kế website và từ mạng internet. Phương pháp quan sát: khảo sát một số website hiện có như: giaovu, vst ... Nhiệm vụ Từ những trải nghiệm thực tế sau những lần nộp báo cáo thí nghiệm, chúng em nghĩ tới ý tưởng thiết một trang web hỗ trợ cho cả sinh viên lẫn giáo viên hướng dẫn. Website có một số nhiệm vụ như: + Hỗ trợ sinh viên làm và nộp online các bài báo cáo thí nghiệm + Hỗ trợ giảng viên phụ trách thí nghiệm trong việc chấm bài và thống kê kết quả PHÂN CÔNG CÔNG VIỆC Thời gian Sinh viên thực hiện Công việc 4/3 Đỗ Toàn Thắng Nhận đề tài: Thiết kế website hỗ trợ nộp và chấm bài thí nghiệm online Hà Huy Đông 4/3- 15/3 Đỗ Toàn Thắng Tìm hiểu đề tài đưa ra một số giải pháp để thực hiện đề tài. Hà Huy Đông 15/3- 31/3 Đỗ Toàn Thắng Bước đầu xây dựng các View, Controller cơ bản Hà Huy Đông 1/4- 12/5 Đỗ Toàn Thắng Xây dựng các thuật toán tạo bài tập, upload và làm bài tập Hà Huy Đông Xây dựng mô hình hệ thống và cấu trúc cơ sở dữ liệu 12/5- 31/5 Đỗ Toàn Thắng Xây dựng thuật toán chuẩn hoá và sửa lỗi hệ thống Hà Huy Đông Hoàn thiện layout, giao diện hệ thống 1/6- 9/6 Đỗ Toàn Thắng Hoàn thiện báo cáo Hà Huy Đông Chương 1. Tổng quan hệ thống Trong chương này mô tả tổng quan về hệ thống và các hoạt đông trên hệ thống, các ưu điểm của hệ thống so với hệ thống thí nghiệm truyền thống. Đồng thời, trình bày cơ sở lý thuyết về ASP.NET MVC và những điểm mạnh của nó, trình bày về NoSQL và MongoDB cũng như so sánh với các ngôn ngữ truy vấn SQL. Sau đây là nội dung chi tiết. 1.1 Tổng quan 1.1.1 Mô tả hệ thống và các hoạt động trên hệ thống Thí nghiệm là hoạt động bắt buộc của một số môn đặc thù, yêu cầu sinh viên tìm hiểu và thực hành các kiến thức được học trong quá trình học lý thuyết. Các đối tượng liên quan đến hoạt động thí nghiệm gồm có: Sinh viên thí nghiệm (ĐT1): Đối tượng cần thực hiện các bài thí nghiệm theo chương trình môn học. Theo truyền thống, việc thực hiện được tiến hành trên phòng thí nghiệm chỉ định của Viện. Người quản lý Thí nghiệm (ĐT2): Là người có nhiệm vụ thực hiện giờ thực hành thí nghiệm, quản lý cấp phát trang thiết bị, trông quản phòng thí nghiệm, điểm danh theo dõi lớp và chấm điểm kết quả thí nghiệm. Là người nắm chuyên môn, đảm trách thao tác vận hành các thiết bị thí nghiệm, giải đáp thắc mắc, hướng dẫn tiến trình để sinh viên có thể hoàn thành các bước thí nghiệm. Người soạn thảo chương trình thí nghiệm. Là người soạn các bước, các tiến trình để sinh viên thực hiện. Người quản trị hệ thống (ĐT3): Là người có nhiệm vụ tạo và cập nhật dữ liệu cho hệ thống. Đối tượng này có chức năng thêm bớt danh sách các môn học, tạo ra danh sách các lớp sinh viên (ĐT1) và giáo viên phụ trách (ĐT2). Dưới đây (Hình 1.1) là mô hình tổng quan hệ thống, từ đó xác định được nhiệm vụ cần thực hiện trong hệ thống, giúp xác định rõ đầu vào cũng như đầu ra. Mô tả hoạt động Đối với đối tượng sinh viên: Đăng nhập: Mỗi sinh viên đăng kí học phần có yêu cầu thí nghiệm sẽ được quản trị viên (admin) cung cấp 1 account để đăng nhập vào hệ thống. Sau khi đăng nhập sinh viên có thể tham khảo tài liệu TN của học phần tương ứng mà GV quản lí lớp thí nghiệm đã up lên. Làm báo cáo thí nghiệm: Khi kết thúc quá trình thí nghiệm (3 buổi), sinh viên đăng nhập vào hệ thống và hoàn thành mẫu báo cáo thí nghiệm ứng với từng môn học. Sau khi nộp bài, hệ thống sẽ hiển thị kết quả mà sinh viên đạt được. Đối với đối tượng giáo viên quản lí thí nghiệm: Đăng nhập: Mỗi giáo viên quản lí thí nghiệm sẽ được quản trị viên (admin) cung cấp 1 account để đăng nhập vào hệ thống. Account này phù hợp với danh sách phân công công việc của Viện đã phân công. Gửi tài liệu thí nghiệm: Sau khi soạn thảo chương trình thí nghiệm, đối tượng soạn các bước, các tiến trình để sinh viên thực hiện sau đó tổng hợp thành tài liệu thí nghiệm và form báo cáo thí nghiệm mẫu đối với từng học phần và gửi lên hệ thống. Khi thời hạn hoàn thành báo cáo thí nghiệm của sinh viên kết thúc, hệ thống sẽ tổng hợp và gửi kết quả của sinh viên cho đối tượng. Đối với đối tượng admin Dựa vào danh sách đăng kí lớp học của sinh viên và danh sách phân công công việc của mỗi học kì, admin sẽ thực hiện các chức năng: Tạo danh sách học phần: Thêm các danh sách học phần mới và xóa đi các học phần kì này không mở đăng kí. Tạo danh sách lớp sinh viên: Xóa các acc cũ sau mỗi học kì. Tạo mới acc cho các sinh viên và giáo viên quản lí và phân quyền cho phù hợp. Hệ thống: Nhận dữ liệu từ các đối tượn trên và xử lí kết quả. Sau khi các đối tượng thực hiện nhiệm vụ của mình, hệ thống xử lí và đưa ra kết quả của sinh viên giúp cho giáo viên quản lí thí nghiệm thực hiện công việc của mình nhanh hơn. Hình 1. 1 Mô hình tổng quan hệ thống 1.1.2 Ưu điểm so với hoạt động thí nghiệm truyền thống Từ những chức năng trên, có thể thấy Hệ thống nộp và chấm điểm báo cáo thí nghiệm online có các ưu điểm sau so với hoạt động thí nghiệm truyền thống: Hiệu quả hơn về mặt thời gian với sinh viên làm thí nghiệm. Hiệu quả hơn về truyền đạt thông tin, kỹ năng và kiến thức. Giảm thời gian đánh giá kết quả, theo dõi tiến trình đối với Cán bộ quản lý lớp thí nghiệm. Hiệu quả giảng dạy và hướng dẫn đối với Cán bộ hướng dẫn. Đánh giá sinh viên chính xác hơn. Sinh viên có điều kiện thực hiện bài thí nghiệm linh hoạt hơn về thời gian, và kế hoạch học tập. Tiết kiệm các chi phí in ấn tài liệu trong quá trình báo cáo, hướng dẫn thí nghiệm. 1.1.3 Các tính năng hỗ trợ bài thí nghiệm Kiểm tra tức thời kết quả làm thí nghiệm trong các hoạt động; tính toán, mô phỏng, đo lường và trả lời tương tác kiến thức. Lưu trữ và thể hiện cho sinh viên các nội dung hướng dẫn, chỉ dẫn thực hành. Truy xuất tham khảo đến nội dung kiến thức lý thuyết. Kho lưu trữ và thể hiện cho sinh viên các sơ đồ mạch là đối tượng thí nghiệm và các tính toán liên quan. Kho lưu trữ học liệu về hướng dẫn sử dụng thiết bị thí nghiệm, sử dụng phần mềm mô phỏng và phần mềm thiết kế. Môi trường chia sẻ thông tin và hướng dẫn thực hiện đề tài có ứng dụng mạch điện tử. Hỗ trợ soạn thảo chương trình, bài thí nghiệm và cập nhật các yêu cầu và hướng dẫn thí nghiệm với sinh viên. 1.2 Cơ sở lý thuyết 1.2.1 Giới thiệu về ASP.NET MVC Những ai yêu thích lập trình web sử dụng công nghệ ASP.NET của Microsoft thì chắc chắn một điều là ai cũng phải biết đến Webform, một công nghệ khá cũ của Microsoft giúp lập trình web. Tuy nhiên với công nghệ ASP.Net webform thì có rất nhiều nhược điểm và một trong nhược điểm đáng chú ý là giao diện webform phải sử dụng toolbox sẵn có, do đó mất linh hoạt trong việc điều khiển giao diện. Vì vậy, “ông lớn” Microsoft đã cho ra đời 1 công nghệ lập trình web mới đó là ASP.NET MVC với rất nhiều ưu điểm. Tổng quan mô hình MVC Trước khi đi vào tìm hiểu về mô hình MVC cần tìm hiểu khái quát cấu trúc cơ bản của mô hình lập trình web hiện nay Cấu trúc lập trình web được minh họa trong hình 1.2 Trong lập trình web chia ra 3 tầng như sau: - Presentation Layer (tầng 3): tầng này giúp hiển thị giao diện - Business Logic Layer (tầng 2): tầng này chứa các hàm thực thi, giúp xử lý sự kiện xảy ra trên tầng Presentation Layer. - Data Access Layer (tầng 1): tầng này chứa hàm kết nối với các hệ quản trị cở sở dữ liệu như SQL Server, Mysql, Oracle Theo như hình mô tả, cấu trúc cổ điển là 3 tầng này trộn vào nhau hay còn gọi là cấu trúc One – Tier. Khi làm việc với cấu trúc One – Tier khó khăn trong việc chỉnh sửa code hay chỉnh sửa giao diện vì các tầng này bi trộn vào nhau. Tiếp đó, cấu trúc Two – Tier ra đời, tuy nhiên vẫn chưa giải quyết vấn đề của cấu trúc One – Tier gặp phải đó là việc chỉnh sửa code hay giao diện gặp khó khăn vì tầng 2 và tầng 3 vẫn chưa tách biệt khỏi nhau. Vì vậy cấu trúc Three – Tier đã ra đời và giải quyết tất cả các vần đề mà One – Tier, Two – Tier gặp phải. Lúc này 3 tầng đã tách biệt nhau ra do đó việc chỉnh sửa code hay giao diện sẽ trở nên dễ dàng hơn giúp cho ứng dụng tối ưu hóa nhất Hình 1. 2 Các mô hình lập trình web Hình 1. 3 Mô hình MVC Hình 1.3 mô tả cấu trúc của mô hình MVC. MVC (Model – View - Controller) là một design partern đã tồn tại rất lâu trong ngành công nghệ phần mềm. Một ứng dụng viết theo mô hình MVC sẽ bao gồm 3 thành phần tách biệt nhau đó là Model, View, Controller. Giống như trong cấu trúc Three – Tier, mô hình MVC giúp tách biệt 3 tầng trong mô hình lập trình web, vì vậy giúp tối ưu ứng dụng, dễ dàng thêm mới và chỉnh sửa code hoặc giao diện Model: ở phần trước đã nhắc lại về 3 tầng trong mô hình Three – Tier thì trong đó gồm có 2 tầng Data Access Layer và tầng Business Logic Layer. Hai tầng này là hai tầng tương đương với tầng model trong mô hình MVC. View: là tầng giao diện, hiển thị dữ liệu được truy xuất từ tầng model. Tầng này tương đương với tầng Presentation Layer trong cấu trúc Three – Tier. Controller: đây là tầng giúp kết nối giữa tầng model và tầng view trong mô hình MVC, có nghĩa là nếu phía client yêu cầu hiển thị dữ liệu thì controller gọi giữ liệu từ model và trả về cho view vì view tương tác trực tiếp với client Ví dụ: User yêu cầu hiển thị thông tin cá nhân của user User gửi một yêu cầu tới controller. Controller nhận yêu cầu, xử lý yêu cầu, nếu yêu cầu cần truy xuất dữ liệu thì controller sẽ gửi yêu đó xuống tầng model để truy xuất dữ liệu Tầng model sẽ lấy dữ liệu từ database sau đó truyền dữ liệu qua tầng view thông qua tầng controller để tầng view hiển thị dữ liệu cho User User sẽ thấy thông tin hiển thị ở giao diện và cụ thể ở đây là tầng view 1.2.1.2 Tổng quan về mô hình lập trình web ASP.NET MVC Hình 1. 4 Sự phát triển của ASP Hình mô tả phía trên cho thấy trước khi ASP.NET MVC ra đời thì ASP.NET webform là 1 framework lập trình web khá quen thuộc đối với những tín đồ của ASP.NET. Tuy nhiên, khi ASP.NET MVC xuất hiện thì dường như ASP.NET webform bị lãng quên. -Khái niệm về ASP.NET Hình 1. 5 ASP.NET với Web Forms và MVC ASP.NET là 1 framwork lập trình web được cung cấp bởi Microsoft và nó sử dụng ngôn ngữ C# làm ngôn ngữ phát triển. ASP.NET bao gồm 2 model đó là Web Forms và MVC. Nhược điểm khi lập trình với ASP.NET Web Forms: Web Forms không có sự tách biệt rõ ràng 3 tầng trong mô hình lập trình web. Trong Web Forms có sử dụng 1 đối tượng View State mà đối tượng này làm cho trang web bị tăng kích thước vì vậy làm giảm hiệu năng của ứng dụng. Giao diện của Web Forms được thiết kế dựa trên những toolbox có sẵn mà web forms cung cấp mà hiện nay đa phần designer sử dụng html, css để thiết kế website vì nó gây khó khăn trong việc thiết kế web hiện nay, việc thiết kế trở nên mất linh hoạt. Với những khó khăn như vậy thì Microsoft đã cho ra đời ASP.NET MVC. + Cơ chế hoạt động và những ưu điểm trong lập trình web với ASP.NET MVC ASP.NET MVC là 1 framework lập trình web mới của microsoft, công nghệ này ứng dụng mô hình MVC vào trong ASP.NET. Hình 1. 6 Sự phát triển của ASP.NET MVC Qua hình mô tả phía trên cho thấy tuy ASP.NET MVC ra đời năm 2009 nhưng mà tính tới năm 2013 thì nó đã được update lên tới phiên bản ASP.NET MVC 5, đây cũng là 1 trong những ưu điểm của ông lớn Microsoft cập nhật công nghệ liên tục. Và mới đây thì ASP.NET cũng đã cho ra đời 1 công nghệ mới đó là ASP.NET core 1.0. Với sự cập nhật thường xuyên như vậy đã giúp cho ASP.NET MVC ngày nay phát triển mạnh mẽ không thua kém gì các công nghệ lập trình web sử dụng Java và Php. -Cơ chế hoạt động của ASP.NET MVC Hình 1. 7 Mô phỏng cơ chế hoạt động của ASP.NET MVC -Dựa vào hình mô phỏng phía trên khái quát sơ qua cơ chế hoạt động của ASP.NET MVC Bước 1: User gửi 1 yêu cầu tới server bằng cách truyền vào 1 URL trong browser Bước 2: Yêu cầu đó được gửi tới controller đầu tiên, controller sẽ xử lý yêu cầu, nếu yêu cầu cần truy xuất dữ liệu thì controller sẽ chuyển qua tầng model Bước 3: Tại tầng model, dữ liệu được truy xuất từ database và sau đó truyền qua view thông qua controller Bước 4: Controller sẽ giúp dữ liệu được chuyển từ model qua view Bước 5: View là tầng cuối cùng giao tiếp với User, mọi dữ liệu sẽ được hiển thị cho User thông qua tầng View -Những ưu điểm mà ASP.NET MVC mạng lại: +Do sử dụng mô hình MVC nên trong ASP.Net MVC đã tách biệt được các tầng trong mô hình lập trình web vì vậy giúp tối ưu ứng dụng và dễ dàng trong việc viết code, giao diện +Giao diện trong ASP.Net MVC sử dụng công nghệ thiết kế web HTML, CSS nền việc thiết kế giao diện trở nên dễ dàng và giúp cho designer linh hoạt trong việc thiết kế +ASP.Net MVC không sử dụng view state vì vậy trang web không bị tăng kích thước do đó hiệu năng hoạt động không bị bị giảm ASP.Net MVC đã khắc phục được các nhược điểm của web forms vì vậy web forms hiện nay không còn được dùng phổ biến nữa. 1.2.2 Giới thiệu về NoSQL và MongoDB. 1.2.2.1 Giới thiệu về NoSQL Khi làm việc với database, đã quá quen với SQLServer, MySQL, PostgreSQL, Oracle ... Điểm chung của những database này là sử dụng ngôn ngữ SQL để truy vấn dữ liệu. Nhưng có 1 dạng database khác với những đặc tính khác biệt được gọi chung dưới cái tên là NoSQL. Hãy cùng tìm hiểu xem nó là cái gì, và tại sao nó lại rất phát triển và được nhiều người quan tâm đến vậy. a. Khái niệm về NoSQL. Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọi chung cho các lightweight open source relational database (cơ sở dữ liệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn. Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc). Đây là 2 đặc tính quan trọng nhất. -Tại sao lại cần phải có NoSQL: Sở dĩ người ta phát triển NoSQL xuất phát từ yêu cầu cần những database có khả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ liệu với tốc độ cao mà không đòi hỏi quá nhiều về năng lực phần cứng cũng như tài nguyên hệ thống và tăng khả năng chịu lỗi. Đây là những vấn đề mà các relational database không thể giải quyết được. Lượng dữ liệu mà các hệ thống cần phải xử lý giờ đây ngày 1 lớn. Ví dụ như Google, Facebook phải lưu trữ và xử lý một lượng dữ liệu cực lớn mỗi ngày. Hình 1. 8 Sự gia tăng của dữ liệu b. Một số đặc điểm chung. High Scalability: Gần như không có một giới hạn cho dữ liệu và người dùng trên hệ thống. High Availability: Do chấp nhận sự trùng lặp trong lưu trữ nên nếu một node (commodity machine) nào đó bị chết cũng không ảnh hưởng tới toàn bộ hệ thống. Atomicity: Độc lập data state trong các operation. Consistency: chấp nhận tính nhất quán yếu, có thể không thấy ngay được sự thay đổi mặc dù đã cập nhật dữ liệu. Durability: dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu trữ lại đĩa cứng. Deployment Flexibility: việc bổ sung thêm/loại bỏ các node, hệ thống sẽ tự động nhận biết để lưu trữ mà không cần phải can thiệp bằng tay. Hệ thống cũng không đòi hỏi cấu hình phần cứng mạnh, đồng nhất. Modeling flexibility: Key-Value pairs, Hierarchical data (dữ liệu cấu trúc), Graphs. Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa vào một dãy các khóa). c. Phân loại NoSQL database. Có bốn loại chung (loại phổ biến nhất) của cơ sở dữ liệu NoSQL. Mỗi loại đều có các thuộc tính và giới hạn riêng. Không có một giải pháp duy nhất nào tốt hơn tất cả các giải pháp khác, tuy nhiên có một số cơ sở dữ liệu tốt hơn để giải quyết các vấn đề cụ thể. +Key-value stores. Lưu trữ kiểu key-value là kiểu lưu trữ dữ liệu NoSQL đơn giản nhất sử dụng từ một API. Có thể nhận được giá trị cho khóa, đặt một giá trị cho một khóa, hoặc xóa một khóa từ dữ liệu. Ví dụ, giá trị là ‘blob’ được lưu trữ thì không cần quan tâm hoặc biết những gì ở bên trong. Từ các cặp giá trị được lưu trữ luôn luôn sử dụng truy cập thông qua khóa chính và thường có hiệu năng truy cập tốt và có thể dễ dàng thu nhỏ lại. Một vài cơ sở dữ liệu key-value phổ biến là Riak, Redis (thường dùng phía server), memcached, Berkeley DB, HamsterDB, Amazon DynamoDB (mã nguồn đóng), Project Voldemort và Couchbase. Tất cả các cơ sở dữ liệu kiểu key-value đều không giống nhau, có rất nhiều điểm khác nhau giữa các sản phẩm. Ví dụ, dữ liệu của memcached không được nhất quán trong khi ngược lại với Riak. Đấy là những điểm nổi bật quan trọng khi chọn giải pháp phù hợp để sử dụng. Cụ thể hơn là khi cần cài đặt caching cho nội dung yêu thích của người dùng, cài đặt sử dụng memcached có nghĩa là khi các nút hỏng hết dẫn tới dữ liệu bị mất và cần phải làm mới lại từ hệ thống nguồn. Tuy nhiên, nếu lưu trữ cùng dữ liệu đó trong Riak, không cần lo lắng về việc mất dữ liệu nhưng cần phải xem xét việc cập nhật trạng thái của dữ liệu như thế nào. Điều này là quan trọng không chỉ cho chọn cơ sở dữ liệu key-value cho hệ thống và còn quan trọng cho việc chọn cơ sở dữ liệu key-value nào. +Column-oriented databases (column-family). Cơ sở dữ liệu column-family lưu trữ dữ liệu trong nhiều cột trong mỗi dòng với key cho từng dòng. Column families là một nhóm các dữ liệu liên quan được truy cập cùng với nhau. Ví dụ, với khách hàng, thường xuyên sử dụng thông tin cá nhân trong cùng một lúc chứ không phải hóa đơn của họ. Cassandra là một trong số cơ sở dữ liệu column-family phổ biến. Ngoài ra còn có một số cơ sở dữ liệu khác như HBase, Hypertable và Amazon DynamoDB. Cassandra có thể được miêu tả nhanh và khả năng mở rộng dễ dàng với các thao tác viết thông qua các cụm. Các cụm không có node master, vì thế bất kỳ việc đọc và ghi nào đểu có thể được xử lý bởi bất kỳ node nào trong cụm. +Graph databases Kiểu đồ thị này cho phép lưu trữ các thực thể và quan hệ giữa các thực thể. Các đối tượng này còn được gọi là các nút, trong đó có các thuộc tính. Mỗi nút là một thể hiện của một đối tượng trong ứng dụng. Quan hệ được gọi là các cạnh, có thể có các thuộc tính. Cạnh có ý nghĩa định hướng; các nút được tổ chức bởi các mối quan hệ. Các tổ chức của đồ thị cho phép các dữ liệu được lưu trữ một lần và được giải thích theo nhiều cách khác nhau dựa trên các mối quan hệ. Thông thường, khi lưu trữ một cấu trúc đồ thị giống như trong RDBMS, nó là một loại duy nhất của mối quan hệ. Việc tăng thêm một mối quan hệ có nghĩa là rất nhiều thay đổi sơ đồ và di chuyển dữ liệu, mà không phải là trường hợp khó khi đang sử dụng cơ sở dữ liệu đồ thị. Trong cơ sở dữ liệu đồ thị, băng qua các thành phần tham gia hoặc các mối quan hệ là rất nhanh. Các mối quan hệ giữa các node không được tính vào thời gian truy vấn nhưng thực sự tồn tại như là một mối quan hệ. Đi qua các mối quan hệ là nhanh hơn so với tính toán cho mỗi truy vấn. Có rất nhiều cơ sở dữ liệu đồ thị có sẵn, chẳng hạn như Neo4J, Infinite Graph, OrientDB, hoặc FlockDB (đó là một trường hợp đặc biệt: một cơ sở dữ liệu đồ thị mà chỉ hỗ trợ các mối quan hệ duy nhất chuyên sâu hoặc danh sách kề, nơi mà không thể đi qua nhiều hơn một mức độ sâu sắc đối với các mối quan hệ). +Document Oriented databases Tài liệu là nguyên lý chính của cơ sở dữ liệu kiểu dữ liệu. Dữ liệu lưu trữ và lấy ra là các tài liệu với định dạng XML, JSON, BSON, Tài liệu miêu tả chính nó, kế thừa từ cấu trúc dữ liệu cây. Có thể nói cơ sở dữ liệu tài liệu là 1 phần của key-value. Cơ sở dữ liệu kiểu tài liệu như MongoDB cung cấp ngôn ngữ truy vấn đa dạng và cấu trúc như là cơ sở dữ liệu như đánh index, Một số cơ sở dữ liệu tài liệu phổ biến mà hay gặp là MongoDB, CouchDB, Terastore, OrientDB, RavenDB. d. So sánh giữa hê quản trị cơ sở dữ liệu quan hệ RDBMS (Relational database management system) và Hệ quản trị cơ sở dữ liệu phi quan hệ NoSQL. -Hệ quản trị cơ sở dữ liệu quan hệ Dữ liệu có cấu trúc và tổ chức Sử dụng ngôn ngữ SQL để truy vấn dữ liệu Dữ liệu và các mối quan hệ của nó được lưu trữ trong các bảng riêng biệt. Có tính chặt chẽ -Hệ quản trị cơ sở dữ liệu phi quan hệ Không sử dụng SQL Không khai báo ngôn ngữ truy vấn dữ liệu Không định nghĩa schema Có 1 số nhóm dạng: Key-Value pair storage, Column Store, Document Store, Graph databases Dữ liệu phi cấu trúc và không thể đoán trước Ưu tiên cho hiệu năng cao, tính sẵn sàng cao và khả năng mở rộng e. Thống kê tỉ lệ sử dụng của NoSQL. Hình 1. 9 Tỉ lệ sử dụng của các hệ quản trị cơ sở dữ liệu. 1.2.2.2 Giới thiệu về MongoDB. Hình 1. 10 MongoDB a. Khái niệm. MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, thuộc NoSQL và được hàng triệu người sử dụng. MongoDB là một hệ quản trị cơ sở dữ liệu hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như cơ sở dữ liệu quan hệ nên truy vấn sẽ rất nhanh Với cơ sở dữ liệu quan hệ có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server...) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS. Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định. Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB. b. Một số câu lệnh cơ bản trên MongoDB Bảng 1. 1 Một số lệnh cơ bản trên MongoDB và MySQL CSDL MySQL MongoDB Tạo csdl CREATE DATABASE test; use test; Tạo bảng CREATE TABLE students (ten_cot - kieu_du_lieu); db.createCollection ('students'); Tạo bản ghi INSERT INTO studetns ('name','gender') VALUES ('thanh', 'male'); db.students.insert({name:'thanh',gender: 'male'}); Cập nhật UPDATE students SET name = 'thanh update' WHERE id = 1; db.students.update({ _id: 1 },{$set:{ name: 'thanh update' }}); Xóa bản ghi DELETE FROM students Where id = 1; db.students.remove({ _id: 1}); Tìm kiếm all SELECT * FROM students; db.students.find({}); Tìm kiếm SELECT * FROM students WHERE name = 'thanh'; db.students.find({ name: 'thanh' }); c. Ưu điểm và nhược điểm của mongoDB. -Ưu điểm. Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái. Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS. MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster: Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất. Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng. Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.  -Nhược điểm. Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận. Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dư thừa dữ liệu. Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện... 1.3 Kết luận Trong chương 1 này đã trình bày tổng quan về hệ thống, mô tả hệ thống và các hoạt động trên hệ thống, nhưng ưu điểm của hệ thống so với hoạt động thí nghiệm truyền thống, các tính năng chính của hệ thống đồng thời trình bày khái quát lý thuyết về ASP.NET MVC , những ưu việt của ASP.NET MVC so với những mô hình lập trình web khác như ASP.NET Webform, trình bày lý thuyết về NoSQL và MongoDB, so sánh nó với các hệ quản trị cơ sở khác như SQL. Chương 2 Phân tích và thiết kế hệ thống Trong chương 2 này, hệ thống sẽ được phân tích một cách chi tiết qua sơ đồ chức năng, các lược đồ usecase cũng như các biểu đồ hoạt động. Đồng thời là chương này cũng sẽ trình bày một số thuật toán được áp dụng trong hệ thống. Phần cuối chương sẽ là thiết kế cơ sở dữ liệu theo 2 cấu trúc SQL và NoSQL rồi so sánh ưu nhược điểm để thấy được điểm mạnh của việc thiết kế theo cấu trúc NoSQL. Sau đây là nội dung chi tiết. 2.1 Phân tích về hệ thống thí nghiệm online. 2.1.1 Sơ đồ phân cấp chức năng Sơ đồ chức năng được trình bày ở hình: Hình 2. 1 Sơ đồ chức năng hệ thống Mô tả chi tiết chức năng: -Quản lý người dùng: Có thể thêm, sửa, xóa và phân quyền cho người dùng gồm người quản trị, sinh viên, giáo viên. -Quản lý môn học: Người quản trị có thể có thể thêm, sửa, xóa môn học. -Quản lý bài thí nghiệm: Giáo viên có thể thêm, chỉnh sửa nội dung, xóa bài thí nghiệm, sinh viên có thể làm bài thí nghiệm, sửa bài làm. 2.1.2 Sơ đồ Usecase 2.1.2.1 Usecase quản lý đăng nhập Usecase quản lý đăng nhập được mô tả như hình: Hình 2. 2 Usecase đăng nhập Bảng 2. 1 Mô tả usecase đăng nhập ở hình 3.2 Tên Đăng nhập Tác nhân Người dùng Mô tả Usecase cho phép người dùng đăng nhập vào hệ thống để thực hiện chức năng của mình Điều kiện Khi người dùng chọn vào chức năng đăng nhập trên trang chủ của hệ thống Luồng hoạt động 1.Hệ thống hiển thị màn hình đăng nhập 2.Người dùng nhập tên đăng nhập và mật khẩu 3.Hệ thống kiểm tra thông tin đăng nhập 4.Nếu thành công, hệ thống hiển thị màn hình đăng nhập thành công 5.Kết thúc Usecase 2.1.2.2 Usecase quản lý danh sách Hình 2. 3 Usecase quản lý danh sách Bảng 2. 2 Bảng mô tả usecase quản lý danh sách ở hình 3.3 Tên Quản lý danh sách Tác nhân Admin Mô tả Khi Admin đăng nhập hệ thống thành công, thì có thể tiến hành thêm mới, cập nhật xóa danh sách sinh viên, thêm, cập nhật, xóa giáo viên, thêm, cập nhật, xóa môn học Điều kiện Khi Admin chọn chức năng quản lý sinh viên, quản lý giáo viên, quản lý môn học. Luồng hoạt động 1.Hệ thống hiển thị màn hình quản lý của Admin bao gồm: quản lý sinh viên, quản lý giáo viên, quản lý môn học. 2.Admin chọn thành phần cần quản lý (sinh viên, giáo viên, môn học), sau đó tiến hành thêm mới, cập nhật, xóa. 3.Hệ thống hiển thị lên màn hình thành phần đã thay đổi. 4. Kết thúc Usecase. 2.1.2.3 Usecase soạn thảo thí nghiệm Usecase soan thảo thí nghiệm được mô tả như hình 2.4: Hình 2. 4 Usecase soạn thảo thí nghiệm Bảng 2. 3 Bảng mô tả usecase soạn thảo thí nghiệm Tên Soạn thảo thí nghiệm Tác nhân Giáo viên Mô tả Khi giáo viên đăng nhập thành công, thì có thể tiến hành soạn bài thí nghiệm mới, hoặc chỉnh sửa bài thí nghiệm đã có, ngoài ra còn có thể đăng hướng dẫn và tài liệu tham khảo Điều kiện Khi giáo viên chọn vào chức năng thêm mới hoặc chỉnh sửa bài thí nghiệm Luồng hoạt động 1.Hệ thống hiển thị chức năng màn hình của giáo viên với các môn học 2.Giáo viên chọn vào một trong các chức năng thêm mới bài thí nghiệm hoặc chỉnh sửa hoặc chỉnh sửa bài thí nghiệm rồi thực hiện thay đổi 3. Hệ thống hiển thị thay đổi trên màn hình của giáo viên 4.Kết thúc Usecase 2.1.2.4 Usecase sinh viên làm thí nghiệm Usecase sinh viên làm thí nghiệm được mô tả như hình 2.5: Hình 2. 5 Usecase làm thí nghiệm Bảng 2. 4 Bảng mô tả usecase làm thí nghiệm Tên Làm bài thí nghiệm Tác nhân Sinh viên Mô tả Khi sinh viên đăng nhập thành công, thì có thể tiến hành thực hành thí nghiệm gồm: chuẩn bị thí nghiệm, làm thí nghiệm và nộp báo cáo thí nghiệm, đồng thời có thể tìm thấy tài liệu tham khảo do giáo viên đăng lên Điều kiện Khi sinh viên chọn chức năng thực hành thí nghiệm và xem tài liệu tham khảo Luồng hoạt động 1.Hệ thống hiển thị màn hình chức năng của sinh viên với các môn học, trong mỗi môn học lại bao gồm các bài thí nghiệm khác nhau 2.Sinh viên chọn một trong các bài thí nghiệm rồi sau đó tiến hành các bước chuẩn bị thí nghiệm, làm thí nghiệm và nộp báo cáo 3.Hệ thống hiển thị thay đổi trên màn hình của sinh viên 4.Kết thúc Usecase 2.1.3 Biểu đồ hoạt động 2.1.3.1 Biểu đồ đăng nhập Hình 2.6 mô tả biểu đồ đăng nhập như sau: người dùng nhập thông tin vào 2 ô Username và Password. Hệ thống sẽ kiểm tra thông tin từ cơ sở dữ liệu. Nếu sai 1 trong 2 thông tin hoặc Username hoặc Password, hệ thống sẽ báo lỗi tương ứng không có Username hoặc sai Password đồng thời sẽ không cho phép đăng nhập và yêu câu đăng nhập lại. Nếu đúng cả 2 thì sẽ được đăng nhập. 2.1.3.2 Biểu đồ lập danh sách sinh viên Hình 2.7 mô tả hoạt động lập danh sách sinh viên: người quản lý sẽ đăng nhập vào hệ thống, sau đó tiến hành thêm mới sinh viên, sinh viên được thêm mới sẽ bao gồm 2 thông tin: tên sinh viên và mã số sinh viên, sinh viên sau khi thêm mới thì thông tin sẽ được lưu vào cơ sở dữ liệu của hệ thống. Hình 2. 6 Biểu đồ đăng nhập Hình 2. 7 Biểu đồ lập danh sách sinh viên 2.1.3.3 Biểu đồ hoạt động thêm giáo viên Hình 2.8 mô tả hoạt động lập danh sách giáo viên: người quản lý sẽ đăng nhập vào hệ thống, sau đó tiến hành thêm mới giáo viên, giáo viên được thêm mới sẽ bao gồm 2 thông tin: tên giáo viên và email sinh viên, sau khi nhấn thêm mới thì thông tin sẽ được lưu vào cơ sở dữ liệu của hệ thống. Hình 2. 8 Biểu đồ hoạt động thêm giáo viên 2.1.3.4 Biểu đồ lập danh sách môn học Hình 2. 9 Biểu đồ lập danh sách môn học Hình 2.9 mô tả hoạt động lập danh sách môn học: người quản lý sẽ đăng nhập vào hệ thống, sau đó tiến hành thêm mới môn học, môn học được thêm mới sẽ bao gồm 2 thông tin: tên môn học và mã môn học, sau khi nhấn thêm mới thì thông tin về môn học sẽ được lưu vào cơ sở dữ liệu của hệ thống. 2.1.3.5 Biểu đồ kiểm tra kết quả thí nghiệm Hình 2. 10 Biểu đồ kiểm tra kết quả thí nghiệm Trong hình 2.10, hoạt động kiểm tra kết quả thí nghiệm 2.1.3.6 Biểu đồ đánh giá kết quả Hình 2. 11 Biểu đồ đánh giá kết quả Hình 2.11 mô tả hoạt động đánh giá kết quả. 2.2 Một số thuật toán được sử dụng 2.2.1 Thuật toán tạo bài tập Mô tả thuật toán: - Ba biến toàn cụ idcount, VanDeId, _listdata. - Khi nhấn button “ADD PARAGRAPH”: + Tạo ra một div element với class là “Paragraph” gán id cho div và VanDEid là chỗi “Vande” + idcount + Tạo ra một textarea và nhúng vào div, đồng thời tăng idcount lên 1 + Các biến rows và cols lấy giá trị lần lượt từ các input có id là “rows” và “cols” + Tạo vòng lặp kép để nhúng các cell với id là giá trị của rows để có thể lưu trữ dữ liệu sau này, kết quả tạo ra một ma trận các cell thay thế cho bảng + Nhúng cả div vào một element cha có id là “footer” - Khi nhấn button “DELETE PARAGRAPH” + Tạo ra một list chứa các div với class là “paragraph” + Gán VanDeId bằng “Vande” + idcount đồng thời giảm idcount đi 1 - Khi nhấn button “Create and update” + Xoá giá trị _listdata + Tạo một object _databaitap có dạng json như sau: { header: null, value: null, bang: [], rows: 0, cols: 0, }; + Duyệt qua lần lượt các div có class là “paragraph”, với mỗi lần duyệt thực hiện các việc sau Gán header bằng id của div Gán value bằng giá trị của textarea Duyệt qua tất cả các cell, lấy gái trị của mỗi cell vào chuỗi “bang” Push _databaitap vào _listdata + Chuyển _listdata về chuỗi string json và submit Hình 2. 12 Thuật toán thêm các trường bài tập Hình 2. 13 Thuật toán xóa trường thêm bài tập Hình 2. 14 Thuật toán upload dữ liệu bài tập 2.2.2 Thuật toán chuẩn hóa họ tên Hình 2. 15 Lưu đồ thuật toán chuẩn hóa họ tên Hình 2.12 mô tả chi tiết thuật toán chuẩn hóa họ tên Giải thích: -_text: Chuỗi các element - .length: Độ dài chuỗi - .value: Giá trị của phần tử - .toLowerCase(): Chuyển thành kí tự thường - .toUpperCase(): Chuyển thành kí tự hoa - .toString(): Chuyển mảng các kí tự thành chuỗi kí tự - .replace(/,/g,’’): Xoá tất cả dấu phẩy 2.3 Thiết kế cơ sở dữ liệu. 2.3.1 Thiết kế cơ sở dữ liệu theo cấu trúc SQL Sơ đồ cơ sở dữ liệu theo cấu trúc SQL được mô tả như hình 2.16. Trong hình 2.12 các bảng dữ liệu cần có được lữu trữ dữ liệu dạng SQL, trong mỗi bảng đều có khóa chính, các bảng đều được liên kết với nhau thông qua các khóa ngoại nên dữ liệu ở các bảng được ràng buộc với nhau khá chặt chẽ, theo một trình tự nhất định. Nếu muốn thêm dữ liệu vào bảng cũng cần tuân theo trình tự, bảng nào phải được thêm trước, bảng nào phải thêm dữ liệu sau, để tránh phát sinh lỗi trong quá trình truy vấn dữ liệu sau này. Hình 2. 16 Sơ đồ cơ sở dữ liệu theo cấu trúc SQL 2.3.2 Thiết kế cơ sở dữ liệu theo cấu trúc NoSQL Cơ sở dữ liệu được tạo bằng MongoDB, được lưu trữ dưới dạng BSON. Từ hình 2.17, mỗi colection có nhiều document, trong mỗi document lại có một ID riêng biệt và hoàn toàn không giống bất kỳ ID nào khác, các colection không có liên hệ ràng buộc với nhau, việc thêm document vào colection này không hệ ảnh hưởng đến dữ liệu trong document các colection khác. Hình 2. 17 Các colection 2.3.3 So sánh 2 phương pháp thiết kế cơ sở dữ liệu Trong cơ sở dữ liệu SQL, các bảng liên kết với nhau theo khóa chính và khóa ngoại có mối liên hệ chặt chẽ với nhau nên việc truy vấn phức tạp và mất thời gian hơn. Trong cơ sở dữ liệu NoSQL, để lưu trữ và truy suất cần phải lồng ghép các model dữ liệu với nhau theo hình 2.17 có thể thấy: - Model người dùng có chứ model account - Trong một môn học có nhiều bài thí nghiệm, mỗi bài thí nghiệm sẽ có một bản câu hỏi và nhiều báo cáo của sinh viên, để truy suất dữ liệu lưu trữ như sau: + Model môn học có một dictionary cái bài thí nghiệm với key là tên bài thí nghiệm và value là ThiNghiem. + ThiNghiem là một object với 2 thuộc tính là Name và paragraph, trong đó paragraph là object có 2 thuộc tính, 1 là bài tập và còn lại là dictionary của các câu trả lời, chúng được phân biệt với nhau bởi key là MSSV, value của chúng chính là chuỗi string dạng json của các câu trả lời có cấu trúc định trước. Vì vậy việc sử dụng cơ sở dữ liệu theo cấu trúc NoSQL sẽ không mất nhiều thời gian, hợp với các dự án có dữ liệu lớn. 2.4 Kết luận Trong chương này đã trình bày chi tiết các vấn đề cơ bản của hệ thống bao gồm: sơ đồ chức năng, các sơ đồ usecase, các biểu đồ hoạt động, một số thuật toán được dùng trong hệ thống cũng như xây dựng cơ sở dữ liệu theo 2 cấu trúc khác nhau để tìm ra những ưu điểm khi hệ thống sử dụng cơ sở dữ liệu NoSQL. Chương 3. Kết quả đạt được và kiểm thử Chương 3 sẽ thể hiện một số giao diện cơ bản, các kết quả đạt sau khi lập trình dựa trên nền tảng ASP.NET MVC và cơ sở dữ liệu MongoDB. Sau đây là những hình ảnh và giải thích cụ thể cho từng hình ảnh đó. 3.1 Một số hình ảnh giao diện Hình 3. 1 Giao diện trang chủ Hình 3.1 thể hiện giao diện trang chủ . Trang chủ được thiết kế đơn giản bằng chỉ gồm các một vài button. Trong giao diện có button Login để khi nhấn vào, màn hình đăng nhập sẽ được hiện ra để người dùng có thể truy cập. Ngoài ra ở màn hình trang chủ còn 2 phần là thông báo bài tập mới khi giáo viên thêm bài tập và phần danh sách sinh viên chưa đạt yêu cầu thí nghiệm để sinh viên có thể tiện theo dõi. Khi nhấn vào nút Home thì hệ thống sẽ hiển thị lại màn hình đăng nhập. Hình 3. 2 Giao diện Login Hình 3.2 mô tả giao diện đăng nhập. Trong màn hình đăng nhập sẽ có 2 ô nhập đó là Username và Password, để có thể đăng nhập, người dùng bắt buộc phải nhập cả 2 ô. Nếu nhập sai một trong hai ô thì trên giao diên sẽ hiện ra lỗi người dùng chưa có hoặc sai mật khẩu, nếu nhập đúng cả hai thì người dùng sẽ đăng nhập thành công và đi đến màn hình thực hiện chức năng của mình. Hình 3. 3 Giao diện Admin Trong hình 3.3, giao diện người quản lý được thể hiện gồm 3 phần: quản lý môn học, quản lý sinh viên, quản lý giảng viên. Khi nhấn vào một trong các đường dẫn, người quản lý sẽ truy cập vào phần quản lý với mỗi đối tượng tương ứng. Tại đây, người quản lý có thể thêm mới, cập nhật, xóa bất kỳ trong đối tượng. Trong hình 3.4, giao diện giáo viên tạo mới bài thí nghiệm. Sau khi đăng nhập thành công, hệ thống sẽ hiển thị giao diện chức năng của giáo viên, tại đây, với mỗi môn học, giáo viên sẽ có quyền thêm mới, cập nhật, xóa bài thí nghiệm. Khi nhấn thêm mới bài thí nghiệm, hệ thống hiển thị màn hình như hình 6, giáo viên sẽ thêm tên bài thí nghiệm, sau đó là add paragraph để hiện ra một ô nhập đề bài vào trong ô đó, nếu đề bài là dạng bảng, thì có thể nhập số hàng và số cột của bảng vào 2 ô bên trái button Add paragraph, hệ thống sẽ hiển thị số hàng và cột tương ứng để giáo viên có thể nhập dữ liệu. Ngoài ra còn có chức năng xóa paragraph khi giáo viên nhập thừa ô hoặc hàng. Sau khi kết thúc công việc nhập dữ liệu, giáo viên chỉ cần nhấn button Create and update để tạo bài thí nghiệm, hệ thống sẽ lưu dữ liệu. Hình 3. 4 Giao diện giáo viên thêm mới bài thí nghiệm Hình 3. 5 Giao diện sinh viên Hình 3. 6 Giao diện sinh viên làm bài thí nghiệm Hình 3.5 mô tả giao diện sinh viên sau khí sinh viên đăng nhập thành công, hệ thống sẽ hiển thị màn hình chức năng của sinh viên, sau đó sinh viên chọn môn học cần làm bài thí nghiệm như ở hình 3.5, hệ thống sẽ hiển thị màn hình làm bài thí nghiệm như hình 3.6, tại đây, sinh viên sẽ tiến hành làm bài băng cách nhập câu trả lời vào các ô tương ứng,khi làm bài xong, sinh viên có thể submit để nộp bài làm của mình, hệ thống sẽ tự động chuẩn hóa bằng cách loại bỏ tất cả dấu cách thừa và viết hoa đầu dòng rồi lưu lại dữ liệu. Ở hình 3.7, sau khi sinh viên đã hoàn thành các câu trả lời và gửi lên hệ thống, giáo viên có thể xem bài làm theo mã số sinh viên của sinh viên, ở màn hình này, giáo viên chỉ có thể xem mà không thể chỉnh sửa bất kỳ giá trị nào trong bài làm. Hình 3. 7 Giao diện giáo viên xem bài làm của sinh viên 3.2 Kết luận Chương này đã trình bày sơ bộ về kết quả đạt được và thử nghiệm của quá trình thiết kế và xây dựng trang web. Đây là kết quả của quá trình nghiên cứu và thực hiện đề tài. Kết luận Kết quả đạt được Sau quá trình tìm hiểu lý thuyết, nghiên cứu, và tiến hành thực hiện đề tài đồ án tốt nghiệp, chúng em đã tiếp thu được nhiều kiến thức bổ ích, kinh nghiệm thực hành thực tế. Nhóm em đã hoàn thành phần cơ bản đề tài nghiên cứu. Giao diện khá trực quan với người dùng, dễ dàng thao tác. Tốc độ xử lý khá nhanh và ổn định, chính xác. Thao tác rành mạch, có thông báo phản hồi khi một tác vụ hoàn thành. Khó khăn gặp phải Bên cạnh những kết quả đạt được, trong quá trình thực hiện đề tài, chúng em đã gặp phải những khó khăn nhất định ảnh hưởng tới kết quả, những với sự cố gắng của chúng em thì cũng đã hoàn thành một phần của đề tài. Đề xuất và hướng phát triển Đề tài mới dừng lại ở mức hoàn hiện căn bản, còn cần nhiều cải tiến để thực sự hữu dụng khi đưa vào thực tiễn như: -Thiết kế lại cấu trúc của các model. -Hệ thống có thể chấm điểm tự động và thông báo kết quả cho giáo viên, sinh viên. -Tạo App mobile giúp giáo viên theo dõi quá trình làm việc của sinh viên, giúp sinh viên có thể làm bài mọi lúc, mọi nơi. Danh mục tài liệu tham khảo [1] https://www.c-sharpcorner.com/article/simple-crud-operation-using-asp-net-mvc-and-mongodb/ truy câp ngày cuối 06/03/2019 [2] https://techmaster.vn/posts/33728/aspnet-mvc-la-gi-and-tai-sao-ban-nen-su-dung-no truy cập ngày cuối 07/03/2019 [3] https://viblo.asia/p/mongodb-la-gi-co-so-du-lieu-phi-quan-he-bJzKmgoPl9N truy cập ngày cuối 08/04/2019 [4] https://stackoverflow.com/ truy cập ngày cuối 06/06/2019 [5] https://www.w3schools.com/css/ truy cập ngày cuối 01/06/2019 [6] https://docs.microsoft.com/ truy cập ngày cuối 07/06/2019 [7] https://www.w3schools.com/js/js_json_syntax.asp truy cập ngày cuối 05/05/2019

Các file đính kèm theo tài liệu này:

  • docxdo_an_thiet_ke_website_ho_tro_nop_va_cham_bai_thi_nghiem_onl.docx