z
TRƯỜNG ĐẠI HỌC NỘI VỤ HÀ NỘI
TRUNG TÂM TIN HỌC – NGOẠI NGỮ
KHOÁ LUẬN TỐT NGHIỆP
ĐỀ TÀI: Thiết kế, xây dựng mạng xã hội học tập
Rimtalk Learn
Sinh viên thực hiện đề tài
:Hoàng Thái Sơn
Mã sinh viên
:1705HTTD031
Giảng viên hướng dẫn
:ThS. Nguyễn Thu Huyền
Hà Nội, 2021
LỜI CAM ĐOAN
Khóa luận tốt nghiệp là sản phẩm tổng hợp toàn bộ các kiến thức mà sinh
viên đã học được trong suốt thời gian học tập tại trường đại học. Ý thức được
điều đó, với tinh thần nghiêm túc, tự giác cùng sự lao động miệt mài của bản
thân và sự hướng dẫn tận tình của giảng viên ThS. Nguyễn Thu Huyền, em
đã hồn thành xong khóa luận tốt nghiệp của mình.
Em xin cam đoan: nội dung khóa luận của em không sao chép nội dung cơ
bản từ các khóa luận khác và sản phẩm của khóa luận là của chính bản thân em
nghiên cứu xây dựng lên. Mọi thơng tin sai lệch em xin hồn tồn chịu trách
nhiệm và sự kỷ luật của trung tâm và nhà trường đề ra.
Sinh viên thực hiện
Hoàng Thái Sơn
LỜI CẢM ƠN
Trong suốt q trình thực hiện khóa luận tốt nghiệp, với sự nỗ lực học
hỏi, tự nghiên cứu của bản thân, cùng với sự tạo điều kiện về thời gian, công
việc của các thầy cô giáo trong trung tâm. Đến nay em đã hồn thành khóa
luận tốt nghiệp của mình với đề tài "Thiết kế, xây dựng mạng xã hội học
tập Rimtalk Learn”.
Trước tiên em xin cảm ơn đến ban lãnh đạo trung tâm tin học – ngoại
ngữ, các thầy cô giảng viên đã truyền đạt kiến thức, tạo điều kiện về thời gian,
cơng việc để em có thể hồn thành đề tài khóa luận tốt nghiệp này.
Đề tài của em đã đạt được kết quả như ngày hơm nay là nhờ được sự quan
tâm, tận tình chỉ bảo, hướng dẫn của giảng viên Ths. Nguyễn Thu Huyền, em xin
cảm chân thành cảm ơn cô.
Em cũng xin gửi lời cảm ơn đến công ty công nghệ SNETTECH đã phát
triển nền tảng mạng xã hội Rimtalk, hỗ trợ em về hạ tầng công nghệ, cơ sở dữ
liệu để em có thể hồn thành đề tài này.
Và cuối cùng em xin cảm đến gia đình đã ln động viên em trong suốt
quá trình học tập, người thân, bạn bè, cộng đồng người dùng đã tham gia thử
nghiệm mạng xã hội học tập Rimtalk Learn.
Em xin chân thành cảm ơn!
Hà Nội, ngày
tháng
Sinh viên thực hiện
Hoàng Thái Sơn
năm 2021
MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH MỤC TỪ VIẾT TẮT
DANH MỤC HÌNH VẼ
MỞ ĐẦU .......................................................................................................... 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .............................................................. 3
1.1. GIỚI THIỆU ĐỀ TÀI, THỰC TRẠNG ........................................................... 3
1.1.1. Giới thiệu đề tài ............................................................................... 3
1.1.2. Thực trạng ....................................................................................... 4
1.2. NGƠN NGỮ LẬP TRÌNH PHP, CƠ SỞ DỮ LIỆU MYSQL, NGƠN NGỮ LẬP
TRÌNH HTML5 .............................................................................................. 5
1.2.1. Ngơn ngữ lập trình php................................................................... 5
1.2.2. Tìm hiểu về MySql ......................................................................... 10
1.2.3. Ngơn ngữ lập trình HTML5 ......................................................... 13
1.3. MÁY CHỦ NODE.JS, RIMTALK API VÀ RIMTALK CONFERENCE PLUGIN .. 15
1.3.1. Máy chủ Node.js ............................................................................ 15
1.3.2. Rimtalk API và Rimtalk Conference plugin ................................ 16
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG VÀ CƠ SỞ DỮ
LIỆU ............................................................................................................... 17
2.1. PHÂN TÍCH THIẾT KẾ HỆ THỐNG .......................................................... 17
2.1.1. Các thông tin đầu vào của hệ thống ............................................. 17
2.1.2. Các thông tin đầu ra của hệ thống ............................................... 17
2.1.3. Sơ đồ thông tin vào/ra của Hệ thống ........................................... 18
2.2. THIẾT KẾ HỆ THỐNG ............................................................................. 19
2.2.1. Các chức năng chính của hệ thống.............................................. 19
2.2.2. Biểu đồ phân cấp chức năng ........................................................ 20
2.2.3. Biểu đồ luồng dữ liệu mức khung cảnh....................................... 21
2.2.4. Biểu đồ luồng dữ liệu mức đỉnh ................................................... 22
2.2.5. Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng xác thực
người dùng ............................................................................................... 24
2.2.6. Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng học tập trực
tuyến ......................................................................................................... 26
2.2.7. Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng hỏi đáp kiến
thức........................................................................................................... 28
2.2.8. Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng thư viện tài
liệu ............................................................................................................ 30
2.2.9. Xác định các thực thể, mối quan hệ giữa các thực thể ............... 32
2.3. CƠ SỞ DỮ LIỆU ...................................................................................... 38
CHƯƠNG 3: KẾT QUẢ CHƯƠNG TRÌNH ............................................. 42
3.1. XÁC THỰC NGƯỜI DÙNG ....................................................................... 43
3.1.1. Giao diện đăng ký tài khoản ......................................................... 43
3.1.2. Giao diện đăng nhập ..................................................................... 46
3.2. HỌC TẬP TRỰC TUYẾN .......................................................................... 47
3.2.1. Giao diện tạo lớp học .................................................................... 47
3.2.2. Giao diện tạo phòng học ............................................................... 49
3.2.3. Giao diện tham gia lớp học ........................................................... 50
3.2.4. Giao diện tham gia phòng học ...................................................... 51
3.3. HỎI ĐÁP KIẾN THỨC.............................................................................. 53
3.3.1. Giao diện tạo topic ......................................................................... 53
3.3.2. Giao diện bình luận topic.............................................................. 54
3.4. THƯ VIỆN TÀI LIỆU ............................................................................... 54
3.4.1. Giao diện tải tài liệu lên ................................................................ 54
3.4.2. Giao diện xem tài liệu ................................................................... 56
3.4.3. Giao diện tải tài liệu xuống........................................................... 57
KẾT LUẬN .................................................................................................... 58
TÀI LIỆU THAM KHẢO ............................................................................ 60
DANH MỤC TỪ VIẾT TẮT
STT
Ký hiệu chữ viết tắt
Chữ viết đầy đủ
1
API
Application Programming Interface
2
PHP
Hypertext Preprocessor
3
HTML
Hyper Text Markup Language
4
URL
Uniform Resource Locator
5
CSDL
Cơ sở dữ liệu
DANH MỤC HÌNH VẼ
Hình 2.1: Sơ đồ thơng tin vào/ra của Hệ thống .............................................. 18
Hình 2.2: Biểu đồ phân cấp chức năng ........................................................... 20
Hình 2.3: Biểu đồ luồng dữ liệu mức khung cảnh .......................................... 21
Hình 2.4: Biểu đồ luồng dữ liệu mức đỉnh...................................................... 22
Hình 2.5: Biểu đồ luồng dữ liệu ...................................................................... 24
Hình 2.6: Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng học tập trực
tuyến ................................................................................................................ 26
Hình 2.7: Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng hỏi đáp ........ 28
Hình 2.8: Biểu đồ luồng dữ liệu mức dưới đỉnh của chức năng thư viện tài
liệu ................................................................................................................... 30
Hình 2.9: Mơ hình thực thể kết hợp ................................................................ 32
MỞ ĐẦU
Đi cùng sự phát triển của toàn nhân loại đó chính là cơng nghệ, chúng ta
đã và đang trải qua 4 cuộc cách mạng lớn: cách mạng 1.0 – thời kỳ thô sơ với
đầu máy hơi nước; cách mạng 2.0 – sự ra đời của động cơ điện đã làm các
ngành công nghiệp phát triển mạnh; cách mạng 3.0 – sự phát triển của máy vi
tính điện tử làm cho các ngành được tự động hố, thế giới lồi người dần trở
nên hiện đại, con người có những bước tiến xa hơn vào vũ trụ; cách mạng 4.0
– máy tính khơng cịn bị q khn ép theo sự lập trình trước khi xuất hiện trí
tuệ nhân tạo (AI), các thiết bị được kết nối theo vạn vật kết nối (IOT), điều
khiển máy móc dễ dàng, thơng minh hơn trên nền tảng internet điện tốn đám
mây thơng minh hơn, các thế hệ mạng di động 4G, 5G ra đời càng làm các thiết
bị cầm tay trở nên khả dụng với các kết nối thời gian thực, độ trễ thấp.
Trong thời kỳ cách mạng cơng nghệ 4.0 hiện nay thì cơng nghệ đã phát
triển mạnh như vũ bão, các công nghệ mới, các chuẩn mới được phát triển
nhanh chóng. Những điều đó đã làm cho tồn xã hội trở nên hiện đại, tất cả các
ngành nghề đã và đang chuyển mình, thay đổi theo hướng số hoá.
Đối với Việt Nam chúng ta thì cơng nghệ đã và đang từng giây, từng
phút len lỏi vào mọi ngóc ngách của xã hội, của đời sống từ cơ quan nhà nước,
chính phủ cũng dần số hố, chính phủ điện tử, hành chính cơng trực tuyến…, y
tế, công nghiệp, nông nghiệp, giao thông - vận tải, giải trí, du lịch, kinh doanh,
giáo dục.
Cơng nghệ gần như đã và đang trở thành nền tảng của các ngành, các
nghề. Ứng dụng của nó vơ cùng lớn mà chúng ta không thể phủ nhận. Công
nghệ mang lại sự tiện ích, sự kết nối và nhiều giá trị hữu ích. Và đặc biệt trong
lĩnh vực giáo dục công nghệ mang lại rất nhiều lợi ích. Chúng ta có thể thấy
các nền tảng học trực tuyến, các phần mềm, ứng dụng học tập, học ngoại ngữ,
học văn hố trên mơi trường internet, các cuộc thi trực tuyến như toán học, văn
1
học, lịch sử, địa lý… phần mềm, ứng dụng hỗ trợ giáo dục, phần mềm quản lý
giáo dục như: quản lý sinh viên, quản lý ký túc xá sinh viên, cổng đăng ký học
tín chỉ…. Các thư viện số trực tuyến… Và trong những năm gần đây hình thức
học tập online càng ngày càng trở nên phổ biến và càng thấy rõ lợi ích của việc
giáo dục từ xa qua môi trường internet là không thể thiếu trong lúc dịch bệnh
Covid-19 chúng ta hạn chế tiếp xúc, hạn chế tập trung.
Chính vì vậy, em đã và đang nghiên cứu về đề tài giáo dục online, cố
gắng phát triển một nền tảng học tập trực tuyến. Rimtalk Learn chính là nền
tảng đang được em phát triển với vốn kiến thức hiểu biết về công nghệ của một
sinh viên hệ thống thông tin năm 4. Nền tảng này với các tiêu chí ban đầu được
em hy vọng và đặt ra đó là sự tiện ích, sự kết nối, hiện đại, hiệu suất.
Đề tài gồm có 03 chương:
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích thiết kế hệ thống và cơ sở dữ liệu
Chương 3: Kết quả chương trình
Mặc dù đã rất cố gắng nhưng do hạn chế về mặc thời gian và chưa có
quá nhiều kinh nghiệm về lĩnh vực này trong khi làm đề tài khóa luận tốt nghiệp
nên đề tài khơng tránh khỏi những thiếu sót. Mong được sự đóng góp ý kiến
của mọi người.
Xin chân thành cảm ơn!
Hà Nội, ngày
tháng
Sinh viên thực hiện
Hoàng Thái Sơn
2
năm 2021
Chương 1
CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu đề tài, thực trạng
1.1.1. Giới thiệu đề tài
Như chúng ta đã biết giáo dục là nền tảng của xã hội, gần giống mô hình
của một xã hội thu nhỏ, nên học tập khơng chỉ là học trong giáo trình, trong
sách vở, trên giảng đường, lớp học mà là học cả thực nghiệm, thực tế, học đời
sống, học ở xã hội chính vì vậy việc học tập, giáo dục gắn với xã hội thực tế là
mục đích của em và em đang mơ hình hố lại việc đó thơng qua nền tảng cơng
nghệ, Rimtalk là một nền tảng mạng xã hội cho phép bạn gặp gỡ, giữ liên lạc
với gia đình, bạn bè, đối tác đồng nghiệp, tham gia các cộng đồng trực tuyến.
Còn Rimtalk Learn là một nền tảng học tập, giáo dục online dựa trên nền tảng
của mạng xã hội Rimtalk. Khi sử dụng Rimtalk Learn bạn chỉ cần có tài khoản
của Rimtalk là có thể tham gia học tập mà vẫn giữ kết nối với xã hội, với gia
đình, bạn bè. Trên nền tảng Rimtalk learn sẽ cho phép bạn học tập cũng cho
phép bạn trở thành người chia sẻ kiến thức. Mục đích là Rimtalk Learn kết nối
mọi người lại thành các lớp học online để chia sẻ kiến thức trong thời gian thực
hoặc học không trong thời gian thực với thư viện điện tử với nhiều loại tài liệu
trong tất cả các lĩnh vực được đóng góp từ cộng đồng. ngồi ra bạn cũng có
một cộng đồng lớn để hỏi về kiến thức.
V.I. Lê nin đã từng nói “Học, học nữa, học mãi”. Sự học không dừng lại
ở độ tuổi nào cả, ta học từ khi lọt lòng cho đến cuối đời vì kiến thức của nhân
loại này mênh mông hơn đại dương cho nên lúc nào cũng phải học tập, học tập
mọi lúc, mọi nơi. Vì thế nên Rimtalk Learn được thiết kế để bạn có thể học mọi
lúc, mọi nơi chỉ cần có kết nối internet, thiết bị kết nối internet như laptop, thiết
bị cầm tay thông minh (smart phone…), thiết bị đeo hiện đại (smart watch…).
Các công nghệ và các chuẩn công nghệ hiện đại được em học hỏi, nghiên
cứu, sử dụng để phát triển nền tảng Rimtalk Learn này hy vọng có thể đem lại
3
những trải nghiệm thú vị cho người sử dụng.
1.1.2. Thực trạng
Theo như tìm hiểu của cá nhân em về thực trạng giáo dục trực tuyến hiện
nay tại Việt Nam thì vẫn tồn tại nhiều hạn chế:
Các nền tảng giáo dục trực tuyến đã có như: Hocmai, topica… Nhưng
các nền tảng này chỉ đơn thuần là chia sẻ các khóa học theo video, tài liệu trực
tuyến chưa có khả năng kết nối người học và người dạy trong thời gian thực
một cách thuận tiện.
Học trực tuyến qua hình thức hội họp trực tuyến thì ở Việt Nam cũng được
sử dụng phổ biến như: Zoom, Trans (Sử dụng nhân của Zoom)… Nhưng những
nền tảng này khi kết nối với nhau phải gửi thơng tin phịng hoặc link qua một kênh
liên lạc khác gây mất thời gian và khơng có sự đồng bộ.
Để hy vọng có thể gải quyết được những hạn chế nêu trên em đã nghiên
cứu, triển khai đề tài này và một số điểm mới và tính cấp thiết của đề tài như sau:
- Nền tảng học tập trực tuyến Rimtalk Learn được đồng bộ dữ liệu người
dùng với nền tảng mạng xã hội Rimtalk sẽ giúp cho việc kết nối giữa các cá nhân
trong cộng đồng được thông suốt, đồng bộ. Người sử dụng không cần phải nhớ
quá nhiều tài khoản hoặc phải di chuyển qua lại nhiều nền tảng khác nhau.
- Việc thông báo về lớp học và đăng ký lớp học dễ dàng thuận tiện.
- Việc học chia sẻ kiến thức đơn thuần và học theo hội họp trực tuyến đều
được tích hợp trên cùng một nền tảng, sẽ dễ dàng và tiện lợi cho người sử dụng,
tiết kiệm thời gian hơn.
- Đề tài vô cùng cấp thiết khi đại dịch Covid-19 vẫn chưa kết thúc, việc
giữ khoảng cách được đặt lên hàng đầu thì việc học trực tuyến sẽ là một giải
pháp giúp giáo dục không bị gián đoạn.
Đề tài hướng tới lĩnh vực chính là giáo dục với hy vọng sẽ đem lại cho
nền giáo dục một nền tảng đào tạo trực tuyến hiện đại và thuận tiện.
Những điểm mới của đề tài từ việc mong muốn khắc phục những hạn
4
chế của những nền tảng đang được sử dụng trong lĩnh vực giáo dục trực tuyến
thì một mạng xã hội học tập trực tuyến sẽ phù hợp với thực trạng hiện nay ở
Việt Nam. Thực trạng ở Việt Nam hiện nay gần như chưa xuất hiện một nền
tảng mạng xã hội được tích hợp giáo dục, học tập trực tuyến như Rimtalk Learn.
1.2. Ngơn ngữ lập trình PHP, cơ sở dữ liệu Mysql, ngơn ngữ lập trình
HTML5
Trong thời gian triển khai đề tài cũng như phát triển nền tảng Rimtalk
Learn em đã tìm hiểu và dựa trên các lý thuyết về một số ngơn ngữ lập trình và
cơ sở dữ liệu như: ngơn ngữ lập trình PHP, cơ sở dữ liệu Mysql, ngơn ngữ lập
trình HTML5.
1.2.1. Ngơn ngữ lập trình php
PHP - viết tắt hồi quy của "Hypertext Preprocessor", là một ngơn ngữ
lập trình kịch bản được chạy ở phía server nhằm sinh ra mã html trên
client. PHP đã trải qua rất nhiều phiên bản và được tối ưu hóa cho các ứng dụng
web, với cách viết mã rõ rãng, tốc độ nhanh, dễ học nên PHP đã trở thành một
ngơn ngữ lập trình web rất phổ biến và được ưa chuộng.
PHP chạy trên môi trường Webserver và lưu trữ dữ liệu thông qua hệ
quản trị cơ sở dữ liệu nên PHP thường đi kèm với Apache, MySQL và hệ điều
hành Linux (LAMP).
Apache là một phần mềm web server có nhiệm vụ tiếp nhận request từ
trình duyệt người dùng sau đó chuyển giao cho PHP xử lý và gửi trả lại cho
trình duyệt.
MySQL cũng tương tự như các hệ quản trị cơ sở dữ liệu khác (Postgress,
Oracle, SQL server...) đóng vai trò là nơi lưu trữ và truy vấn dữ liệu.
Linux: Hệ điều hành mã nguồn mở được sử dụng rất rộng rãi cho các
webserver. Thông thường các phiên bản được sử dụng nhiều nhất là RedHat
Enterprise Linux, Ubuntu...
Cú pháp khai báo,hằng và biến trong PHP
5
Cú pháp và ngữ nghĩa các hàm của PHP cũng tương tự như hầu hết các
ngơn ngữ lập trình khác (C, Java, Perl) chỉ khác là mã PHP được chứa trong
một thẻ có dạng theo đặc trưng của ngơn ngữ Lưu ý là nếu sử dụng cách thì trong file php.ini phải cấu
hình short_open_tag=On. Nếu bạn sử dụng sharehosting và muốn ứng dụng
web của mình tương thích với các hosting thì nên khai báo theo cách Để PHP Engine có thể thơng dịch được file chứa mã nguồn PHP phải được lưu
dưới dạng .php thay vì .html
Hằng: Tương tự như trong những ngơn ngữ lập trình khác, hằng trong
PHP cũng là một giá trị được khai báo trước khi sử dụng. Nó phải bắt đầu bằng
chữ cái hoặc dấu gạch dưới _ và không được bắt đầu bằng số, nó có thể là một
chuỗi. Hằng trong PHP được định nghĩa bằng hàm define(). Nó khơng thay đổi
và không được được định nghĩa lại.
Biến: Không giống như hằng, biến khơng cần định nghĩa, có thể thay
đổi trong chương trình. Cách đặt tên của biến cũng giống như cách đặt tên của
hằng. Biến phân biệt chữ hoa và chữ thường. Tất cả biến trong PHP đều bắt
đầu bằng dấu "$". PHP tự động hiểu các kiểu biến nên người dùng không cần
phải khai báo kiểu biến.
Truyền biến giữa các trang: Có bốn cách cơ bản để truyền biến giữa các
trang: truyền biến trong URL, qua session, cookie hoặc với một HTML form.
Các kiểu dữ liệu trong PHP
PHP có tổng cộng tám loại dữ liệu được sử dụng cho các biến, các kiểu
dữ liệu này thường được hiểu ngầm dựa vào giá trị của biến mà không cần phải
khai báo. Để có thể học lập trình php chúng ta cần phải nắm vững các kiểu dữ
liệu và toán tử của PHP.
Integers: là kiểu số ngun, khơng có dấu thập phân, ví dụ 1234.
Doubles: là kiểu số thực, ví dụ 3.64576.
6
Booleans: chỉ có hai giá trị true hoặc false.
NULL: là một kiểu dữ liệu đặc biệt chỉ có một giá trị: NULL.
Strings: là chuỗi ký tự, giống như 'tôi học php'.
Array: kiểu dữ liệu mảng - là một tập hợp các phần tử có cùng kiểu dữ
liệu với nhau.
Object: là 1 thể hiện (instance) của 1 lớp đã được định nghĩa trước -
được sử dụng trong lập trình hướng đối tượng.
Resource: là kiểu dữ liệu đặc biệt dùng để lưu trữ tham chiếu đến các
tài nguyên bên ngoài PHP chẳng hạn như kết nối đến database.
Khơng có giới hạn về độ dài của chuỗi - trong phạm vi giới hạn sẵn có
của bộ nhớ, bạn có thể tạo chuỗi dài tùy ý.
Chuỗi được bao quanh bởi các dấu ngoặc kép (ví dụ "abc") hoặc ngoặc
đơn (ví dụ 'cde'). Để nối các chuỗi lại với nhau chúng ta dùng dấu "." Một số
ký tự bắt đầu bằng dấu gạch chéo ngược (\) được sử dụng để thay thế cho các
ký tự đặc biệt
Một số ký tự đặc biệt trong chuỗi:
\ N được thay thế bằng ký tự xuống dòng
\ R được thay thế bởi ký tự carriage-return (di chuyển con trỏ đến vị
trí bắt đầu của dịng hiện tại mà không thay đổi tọa độ y)
\ T được thay thế bằng ký tự tab
\ $ Được thay thế bằng ký hiệu $
\ "Được thay thế bằng một dấu nháy kép (")
\\ Được thay thế bằng một dấu gạch chéo ngược (\)
Toán tử trong PHP:
PHP hỗ trợ 5 loại toán tử sau:
Toán tử số học (Arithmetic Operators)
Toán tử so sánh (Comparision Operators)
Toán tử logic (Logical Operators)
Toán tử gán (Assignment Operators)
Toán tử điều kiện (Conditional Operators)
7
Các lệnh điều khiển trong PHP
Cú pháp các câu lệnh điều khiển của PHP cũng tương tự như Java và C,
rất đơn giản và dễ học nhưng để vận dụng sao cho hiệu quả thì bên cạnh việc
nắm vững cú pháp bạn cũng cần một chút kiến thức về giải thuật. Dưới đây là
tập hợp các câu lệnh điều khiển trong lập trình PHP.
Câu lệnh if else: câu lệnh này cho phép chúng ta kiểm tra một điều kiện
nào đó, nếu đúng(true) thì thực hiện tiếp những gì trong block của if, nếu sai
thì thực hiện các câu lệnh trong else.
Câu lệnh switch case: nếu có nhiều điều kiện ràng buộc thay vì phải if
else nhiều lần ta có thể sử dụng switch case để thay thế.
Khi câu lệnh switch thực hiện nó sẽ kiểm tra giá trị của expression và so
sánh nó với mỗi một trong các giá trị trong các mệnh đề case. Khi một giá trị
thích hợp được tìm thấy, các câu lệnh kết hợp với case được thực hiện cho đến
khi gặp câu lệnh break. Còn nếu khơng tìm ra được giá trị thích hợp nào thì câu
lệnh default sẽ được thực hiện. Nếu như khơng có câu lệnh break thì chương
trình sẽ chạy tiếp tục xuống phía dưới và thực thi ln cả biểu thức trong
default.
Câu lệnh while: nếu biểu thức trong while trả về giá trị TRUE thì tiếp tục
thực hiện câu lệnh, sau khi thực hiện câu lệnh thì kiểm tra lại biểu thức, nếu vẫn
cịn trả về giá trị TRUE thì lại tiếp tục thực hiện câu lệnh...cứ tiếp tục như vậy cho
tới khi nào biểu thức trả về giá trị FALSE thì thốt khỏi vịng lặp.
Câu lệnh do while: Vịng lặp này giống như vịng lặp while, nhưng thay
vì kiểm tra điều kiện vào lúc đầu của đoạn lệnh cần lặp, thì nó lại kiểm tra giá
trị điều kiện vào cuối vịng lặp. Điều này có nghĩa là nó ln ln thực hiện
đoạn lệnh cần lặp ít nhất một lần.
Câu lệnh for: được sử dụng để lặp với số lần nhất định với điều kiện
được định nghĩa trước.
Mảng trong PHP
Mảng là một danh sách các phần tử có cùng kiểu dữ liệu. Mảng có thể là
8
mảng một chiều hay nhiều chiều. Mảng có 2 thành phần là chỉ mục (key) và
giá trị. Chỉ mục có thể là số nguyên hoặc là chuỗi. Ví dụ nếu bạn muốn lưu 50
số thay vì định nghĩa 50 biến thì bạn có thể lưu nó vào một mảng có chiều dài
là 50 phần tử.
Các loại mảng trong lập trình PHP:
Mảng số (numeric array): có thể được sử dụng để lưu trữ số, chuỗi
và bất cứ đối tượng nào với chỉ mục của phần tử là số, mặc định giá trị của chỉ
mục (index) được bắt đầu từ 0.
Ví dụ: array(1,5,7) hoặc array('ab', 'ac','ad')
Mảng kết hợp (associative array): là loại mảng với chỉ mục là chuỗi,
các phần tử trong mảng sẽ được lưu trữ dưới dạng key-value
Ví dụ: array('name'=>'Richard','age'=>'16','address'=>'US');
Mảng đa chiều: là một mảng chứa một hoặc nhiều mảng bên trong.
Xử lý dữ liệu từ FORM
orm là một thành phần rất phổ biến trong website, đặc biệt đối với các
phần mềm hệ thống (dưới dạng web) hoặc trang quản trị thì form là thành phần
khơng thể thiếu. PHP lấy dữ liệu từ form theo 2 kiểu GET và POST. Để tìm
hiểu về cách thức thao tác với dữ liệu trên form trước tiên chúng ta cần tìm hiểu
về 2 cách thức lấy dữ liệu trên.
Phương thức GET: phương thức này gửi thơng tin người dùng trên form
đã được mã hóa và gửi theo request của trang. Tên trang và các thơng tin được
mã hóa sẽ cách nhau bằng dấu ?.
Ví dụ:
/>
Phương thức GET được giới hạn chỉ để gửi tối đa 1024 ký tự.
Không bao giờ sử dụng phương thức GET nếu dữ liệu gửi đến server
chứa mật khẩu hoặc các thông tin nhạy cảm khác.
GET không thể được sử dụng để gửi dữ liệu nhị phân, giống như
9
hình ảnh hay file đến server.
Trong GET chúng ta sử dụng $ _GET để lấy dữ liệu từ form .
Phương thức POST: phương thức này gửi thông tin người dùng thơng
qua HTTP header. Thơng tin cũng được mã hóa như trong GET nhưng dữ liệu
gửi đi được đặt vào header.
Phương thức POST khơng có bất kỳ hạn chế nào về kích thước dữ
liệu được gửi đi.
Phương thức POST có thể được sử dụng để gửi ASCII cũng như dữ
liệu nhị phân.
Các dữ liệu được gửi bằng phương pháp POST đi qua tiêu đề HTTP
để bảo mật phụ thuộc vào giao thức HTTP. Bằng cách sử dụng an tồn HTTP,
bạn có thể chắc chắn rằng thông tin của bạn được an toàn.
PHP cung cấp $ _POST mảng liên kết để truy cập tất cả các thông
tin được gửi bằng cách sử dụng phương thức POST
1.2.2. Tìm hiểu về MySql
MySQL là hệ quản trị cơ sở dữ liệu miễn phí mã nguồn mở, phổ biến
trên thế giới và được các nhà phát triển ưa chuộng trong q trình phát triển
ứng dụng.
MySQL có tốc độ cao, ổn định, dễ sử dụng, hoạt động trên nhiều hệ điều
hành khác nhau như Window, Linux, MAC OS X, Unix, Solaris….
Bảng dữ liệu
Trong cơ sở dữ liệu thì chưa rất nhiều thơng tin có thể là thơng tin cùng
loại hoặc thơng tin khác loại. Để có thể quản lý được tồn bộ các thơng tin này
trong cơ sở dữ liệu một cách khoa học và hiệu quả, chúng ta sử dụng một bảng
dữ liệu dùng để quản lý những thơng tin cùng loại hay có cùng kiểu nội dung.
Mỗi một bảng dữ liệu lại chứa các cột dữ liệu hay còn gọi là các trường
dữ liệu khác nhau. Một cột sẽ lưu trữ một thông tin trong bảng.
10
Các thuật ngữ hay sử dụng trong MySQL
NULL : Giá trị của trường cho phép rỗng
AUTO_INCREMENT : Cho phép giá trị tự động tăng, thường sử
dụng cho trường ID
UNSIGNED: Giá trị phải là số nguyên dương
PRIMARY KEY: Cho phép nó là khóa chính trong bảng.
Các kiểu dữ liệu trong MySQL
Kiểu dữ liệu
Mơ tả
Char
Định dạng chuỗi có chiều dài từ 0 đến 255
Varchar
Định dạng chuỗi có chiều dài từ 0 đến 255, chuỗi dữ liệu ký
tự unicode
Text
Định dạng chuỗi có chiều dài từ 0 đến 65535
Longtext
Định dạng chuỗi có chiều dài từ 0 đến 4294967215
Int
Định dạng số có chiều dài từ 0 đến 4294967215
Float
Định dạng số thập phân có chiều dài nhỏ
Double
Định dạng số thập phân có chiều dài lớn
Date
Định dạng thời gian theo định dạng YYYY-MM-DD
Date Time
Định dạng thời gian theo định dạng YYYY-MM-DD
HH:MM:SS
Các lệnh khởi tạo
Khởi tạo cơ sở dữ liệu
Chú ý: Trong SQL thì các Hàm, Mệnh đề, Từ khóa khơng phân biệt chữ hoa
cũng như chữ thường. Tuy nhiên nên sử dụng chữ in hoa để dễ dàng phân biệt
chúng với các thành phần khác trong câu Truy Vấn SQL.
Khởi tạo bảng dữ liệu
11
Thêm một cột mới vào một bảng cho trước
Loại bỏ một cột trong bảng
Các lệnh truy vấn
Thêm bản ghi vào bảng dữ liệu
Lọc và hiển thị dữ liệu bản ghi
Lọc tất cả bản ghi với thông tin của một số cột nhất định
Lọc hạn chế bản ghi theo một điều kiện nào đó sử dụng mệnh đề WHERE
Sửa bản ghi
Xóa bản ghi
Tương tác giữa PHP và MySQL
Kết nối giữa PHP và MySQL
Cú pháp:
mysqli_connect(hostname,username,password,dbname);
Trong đó :
hostname: là tên host, chúng ta sử dụng localhost nên hostname ở đây chính
là localhost
username: là tên đăng nhập vào cơ sở dữ liệu của chúng ta
password: là mật khẩu đăng nhập vào cơ sở dữ liệu
dbname: là tên database mà chúng ta tạo ra để làm việc trong hệ quản trị cơ
sở dữ liệu
Để có thể hiển thị được tiếng Việt khi xuất dữ liệu từ trong cơ sở dữ liệu ra
trình duyệt thơng qua PHP thì chúng ta cần thiết lập ngơn ngữ thông qua hàm
mysqli_set_charset().
Thực thi truy vấn SQL
Tạo truy vấn
Trước tiên chúng ta cần tạo câu truy vấn để truy xuất dữ liệu và gán truy vấn
cho một biến nào đó.
12
Thực thu truy vấn
Sau khi có câu truy vấn rồi chúng ta tiến hành thực thi truy vấn thông qua câu
lệnh mysql_query();
Xử lý dữ liệu trả về
Hàm mysqli_num_rows()
Hàm mysqli_num_rows() sẽ nhận vào một kết quả của quá trình thực thi truy
vấn SQL và trả về số bản ghi của quá trình truy vấn đó.
Hàm mysqli_fetch_array()
Hàm mysql_fetch_array() sẽ nhận vào kết quả của quá trình thực thi truy vấn
SQL và trả về một mảng chứa tồn bộ thơng tin của một bản ghi với Key là tên
của Cột dữ liệu còn Value chính là giá trị tương ứng của nó trong cơ sở dữ liệu.
Do đó để lấy tồn bộ các mẩu tin trong Bảng dữ liệu chúng ta cần phải sử một
vịng lặp với phương pháp như sau:
Đóng kết nối với cơ sở dữ liệu
Để đóng kết nối với cơ sở dữ liệu chúng ta sử dụng hàm mysqli_close();
Hàm mysqli_close() sẽ nhận vào một kết nối tới CSDL và thực hiện q
trình đóng kết nối đó
1.2.3. Ngơn ngữ lập trình HTML5
HTML5 là một ngơn ngữ cấu trúc và trình bày nội dung cho World Wide
Web và sẽ là công nghệ cốt lõi của Internet trong tương lai không xa, được đề
xuất đầu tiên bởi Opera Software. Đây là phiên bản thứ năm của ngôn ngữ
HTML - được tạo ra năm 1990 và chuẩn hóa như HTML4 năm 1997 - và xuất
hiện vào tháng 12 năm 2012, là 1 ứng viên được giới thiệu bởi World Wide
Web Consortium (W3C). Mục tiêu cốt lõi khi thiết kế ngôn ngữ là cải thiện khả
năng hỗ trợ cho đa phương tiện mới nhất trong khi vẫn giữ nó dễ dàng đọc được
bởi con người và luôn hiểu được bởi các thiết bị và các chương trình máy tính
như trình duyệt web, phân tích cú pháp, v.v... HTML5 vẫn sẽ giữ lại những đặc
13
điểm cơ bản của HTML4 và bổ sung thêm các đặc tả nổi trội của XHTML,
DOM cấp 2, đặc biệt là JavaScript. Là phiên bản tiếp sau của HTML 4.01 và
XHTML 1.1, HTML5 phản ánh thực tế rằng HTML và XHTML được sử dụng
phổ biến trên World Wide Web là một hỗn hợp các tính năng với các thơng số
kĩ thuật khác nhau, được giới thiệu bởi nhiều nhà sản xuất phần mềm, cùng với
các sản phẩm phần mềm được giới thiệu như trình duyệt web, những người
thành lập phổ biến thực tế và có quá nhiều lỗi cú pháp trong các văn bản web.
Đây là một nỗ lực để xác định một ngơn ngữ đánh dấu duy nhất có thể được
viết bằng cú pháp HTML hoặc XHTML. Nó bao gồm các mơ hình xử lý chi
tiết để tăng tính tương thích, mở rộng, cải thiện và chuẩn hóa các đánh dấu có
sẵn cho tài liệu, đưa ra các đánh đấu mới và giới thiệu giao diện lập trình ứng
dụng (application programming interfaces API) để tạo ra các ứng dụng Web
phức tạp. Cùng một lý do như vậy, HTML5 là một ứng cử viên tiềm năng cho
nền tảng ứng dụng di động. Nhiều tính năng của HTML5 được xây dựng với
việc xem xét chúng có thể sử dụng được trên các thiết bị di động như điện thoại
thông minh và máy tính bảng hay khơng. Trong tháng 12 năm 2011, công ty
nghiên cứu Strategy Analytics dự báo doanh số bán hàng của điện thoại tương
thích HTML5 sẽ đứng đầu 1 tỷ vào năm 2013. Đặc biệt, HTML5 có thêm nhiều
tính năng cú pháp mới. Chúng bao gồm các thẻ mới như <video>, <audio> và
các thành phần <canvas>, cũng như sự tích hợp của đồ họa vector có khả năng
mở rộng (Scalable Vector Graphics) nội dung (thay thế việc sử dụng thẻ chung
<object>) và MathML cho các cơng thức tốn học. Những tính năng này được
thiết kế để làm cho nó dễ dàng bao quát, xử lý đa phương tiện và nội dung đồ
họa trên web mà không cần phải dùng đến quyền sở hữu bổ sung và APIs. Các
yếu tố mới khác, chẳng hạn như <section>, <article>, <header> và <nav>, được
thiết kế để làm phong phú thêm nội dung ngữ nghĩa của tài liệu. Thuộc tính
mới đã được giới thiệu với mục đích tương tự, trong khi một số yếu tố và các
thuộc tính đã được loại bỏ. Một số yếu tố, chẳng hạn như <a>, <cite> và
14
<menu> đã được thay đổi, xác định lại hoặc chuẩn hóa. APIs và Document
Object Model (DOM) khơng phải suy nghĩ muộn hơn quá nhiều, nhưng là bộ
phận cơ bản của đặc điểm kỹ thuật HTML5. HTML5 cũng xác định cụ thể một
số các xử lý cần thiết cho các tài liệu không hợp lệ để các lỗi cú pháp sẽ được
xử lý thống nhất của tất cả các trình duyệt phù hợp và các tác nhân người dùng
khác.
1.3. Máy chủ Node.js, Rimtalk API và Rimtalk Conference plugin
Nền tảng cũng được em sử dụng các công nghệ, chuẩn công nghệ, các
plugin, các API của các bên thứ 3 để phát triển như: Máy chủ Node.js, Rimtalk
API, Rimtalk Conference plugin.
1.3.1. Máy chủ Node.js
Node.js là một hệ thống phần mềm được thiết kế để viết các ứng dụng
internet có khả năng mở rộng, đặc biệt là máy chủ web. Chương trình được viết
bằng JavaScript, sử dụng kỹ thuật điều khiển theo sự kiện, nhập/xuất khơng
đồng bộ để tối thiểu tổng chi phí và tối đa khả năng mở rộng. Node.js bao gồm
có V8 JavaScript engine của Google, libUV, và vài thư viện khác. Node.js được
tạo bởi Ryan Dahl từ năm 2009, và phát triển dưới sự bảo trợ của Joyent. Mục
tiêu ban đầu của Dahl là làm cho trang web có khả năng push như trong một số
ứng dụng web như Gmail. Sau khi thử với vài ngơn ngữ Dahl chọn Javascript
vì một API Nhập/Xuất không đầy đủ. Điều này cho phép anh có thể định nghĩa
một quy ước Nhập/Xuất điểu khiển theo sự kiện, non-blocking. Vài môi trường
tương tự được viết trong các ngôn ngữ khác bao gồm Twisted cho Python, Perl
Object Environment cho Perl, libevent cho C và EventMachine cho Ruby. Khác
với hầu hết các chương trình Javascript, Nodejs khơng chạy trên một trình duyệt
mà chạy trên Server. Node.js sử dụng nhiều chi tiết kỹ thuật của CommonJS.
Nó cung cấp một môi trường REPL cho kiểm thử tương tác. Node.js được
15
InfoWorld bình chọn là "Cơng nghệ của năm" năm 2012.
1.3.2. Rimtalk API và Rimtalk Conference plugin
Rimtalk là một sản phẩm nền tảng mạng xã hội được phát triển và vận
hành bởi công ty công nghệ SNETTECH. Nền tảng Rimtalk cung cấp một số
API và Plugin cho phép các nhà phát triển hoặc các công ty trong cùng hệ sinh
thái của SNETTECH có thể phát triển, mở rộng nền tảng thành nhiều nền tảng
sản phẩm nhỏ.
Rimtalk API
Là các phương thức, giao thức kết nối tới các hàm xử lý chức năng, dữ liệu
của nền tảng Rimtalk. Chủ yếu được thông qua 2 phương thức GET, POST và
dữ liệu trả về qua API sẽ là Xml (API cũ khơng cịn phổ biến) hoặc Json (Phổ
biến).
Rimtalk API được sử dụng trong đề tài là Rimtalk Auth API: API này cho
phép tạo tài khoản trên nền tảng Rimtalk và xác thực tài khoản người dùng.
Rimtalk Conference plugin
Là phần bổ trợ tính năng hội nghị trực tuyến cho nền tảng Rimtalk Learn
được cung cấp bởi Rimtalk. Giúp tạo các phòng hội nghị trực tuyến thời gian
thực.
* Tóm tắt chương:
Tóm lại nội dung của chương 1 chủ yếu tập trung vào giới thiệu về đề tài
từ thực trạng hiện nay, trình bày lý thuyết về các ngơn ngữ lập trình và cơ sở
dữ liệu cũng như máy chủ node.js, api và plugin được sử dụng trong đề tài này.
Chương 1 này chính là tiền đề cơ sở lý thuyết để có thể triển khai đề tài này ở
các chương tiếp theo.
16
Chương 2
PHÂN TÍCH THIẾT KẾ HỆ THỐNG VÀ CƠ SỞ DỮ LIỆU
2.1. Phân tích thiết kế hệ thống
2.1.1. Các thơng tin đầu vào của hệ thống
Nền tảng mạng xã hội học tập trực tuyến Rimtalk Learn có chức năng
chính là kết nối giữ người học và người chia sẻ kiến thức song song với việc
kết nối liên lạc giữa các mối quan hệ xã hội trong cộng đồng Rimtalk nói chung
và Rimtalk Learn nói riêng chính vì vậy để xây dựng được nền tảng này ta cần
phải phân tích các thông tin đầu vào của hệ thống Rimtalk (một cách cơ bản để
sau có thể sử dụng Rimtalk API cho hệ thống) và Rimtalk Learn.
- Các thông tin đầu vào trên hệ thống Rimtalk:
+ Tài khoản người dùng
+ Các thông tin để kết nối giữa các người dùng trong cộng đồng: tên tài
khoản, ảnh đại diện, thông tin cơ bản…
- Các thông tin đầu vào trên hệ thống Rimtalk Learn:
+ Tài khoản người dùng trên hệ thống Rimtalk đã được đồng bộ trên hệ
thống Rimtalk Learn
+ Các thông tin người dùng trên hệ thống Rimtalk đã được đồng bộ trên hệ
thống Rimtalk Learn
+ Các thông tin về các lớp học được tạo trên hệ thống Rimtalk Learn
+ Các thông tin về các phòng học được tạo trên hệ thống Rimtalk Learn
+ Các thông tin về người dùng tham gia các lớp học
+ Các thông tin về người dùng tham gia các phịng học
+ Dữ liệu trị chuyện, thơng báo trong các lớp học
+ Dữ liệu trị chuyện, thơng báo trong các phòng học
+ Dữ liệu về bài giảng theo thời gian thực
+ Dữ liệu tại các mục hỏi đáp kiến thức (Mini Forum)
2.1.2. Các thông tin đầu ra của hệ thống
17
Sau khi xác định các thơng tin đầu vào thì chúng ta sẽ xác định các thông
tin đầu ra của nền tảng:
- Với nền tảng Rimtalk:
+ Các tài khoản người dùng từ nền tảng Rimtalk Learn được lưu trữ, tạo báo
cáo thống kê về tài khoản người dùng cho Rimtalk
- Với nền tảng Rimtalk Learn:
+ Thông tin về các lớp học, phòng học đã tạo sẽ được lưu trữ và cung cấp
các lớp học phòng học kết nối người học và người chia sẻ kiến thức
+ Thông tin về việc hỏi đáp kiến thức (mini forum)
+ Thông tin từ các bài giảng
2.1.3. Sơ đồ thông tin vào/ra của Hệ thống
Đây là sơ đồ thông tin vào/ra của Hệ thống. Sơ đồ này giúp cho chúng ta
hình dung được một cách khái quát các thông tin, các yêu cầu đầu vào của hệ
thống sau khi qua quá trình xử lý của hệ thống thì sẽ có các thơng tin, các phản
hồi đầu ra như thế nào.
Các yêu cầu
Thông tin
người dùng
Rimtalk Learn
Các lớp/phịng
học trực tuyến
Lưu trữ (Rimtalk)
Hình 2.1: Sơ đồ thơng tin vào/ra của Hệ thống
Sơ đồ có 4 khối: Thơng tin người dùng, các yêu cầu, Rimtalk Learn, lưu
trữ (Rimtalk), các lớp/phòng học trực tuyến.
18
Khối thông tin người dùng và khối các yêu cầu là các thông tin và các
yêu cầu đầu vào.
Khối ở giữa Rimtalk Learn là khối xử lý trung tâm để xử các thông tin
và các yêu cầu đầu vào.
Khối lưu trữ và khối các lớp/phòng học trực tuyến là các thông tin và
phản hồi đầu ra sau khi đã được xử lý.
2.2. Thiết kế hệ thống
2.2.1. Các chức năng chính của hệ thống
- Xác thực người dùng: Gồm 2 chức năng đăng ký tài khoản người dùng,
đăng nhập người dùng. Mục đích để lưu trữ tài khoản người dùng và xác thực
người dùng khi sử dụng nền tảng.
- Học tập trực tuyến: Gồm một số chức năng như: tạo lớp học, tạo phòng
học trực tuyến, tham gia lớp học, tham dự phòng học trực tuyến. Kết nối người
học và người chia sẻ kiến thức trực tuyến theo thời gian thực.
- Hỏi đáp kiến thức: Chức năng này là một mini forum cho phép người
dùng tạo các topic hỏi về những kiến thức chưa biết và cộng đồng người dùng
vào trả lời, nêu hướng tìm hiểu kiến thức đó.
- Thư viện tài liệu: Cho phép người dùng tải lên và lưu trữ các tài liệu học
tập ở định dạng file .docx và .pdf cũng như cho phép người dùng xem trực
tuyến, chia sẻ, hoặc tải tài liệu về.
19