Professional Documents
Culture Documents
Báo Cáo Đồ Án Môn Học
Báo Cáo Đồ Án Môn Học
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
LỜI MỞ ĐẦU
Công nghệ thông tin đã ngày càng trở lên phổ biến và hữu dụng trong cuộc sống hiệ
n nay. Đặc biệt các từ khóa để tìm kiếm kết quả trở nên nhanh chóng. Hiện tại trên mạng
có nhiều web hỗ trợ tìm kiếm phòng trọ như chotot, phongtro123.com…, các trang này
đều có chức năng giống nhau tìm kiếm nơi ở, phòng trọ.
Chính vì vậy nhóm đã xây dựng một website “Hỗ trợ tìm kiếm phòng trọ” thực hiện
bằng công nghệ React js + Node js với mong muốn giúp cho việc hỗ trợ tìm kiếm phòng
trọ được dễ dàng, thuận tiện hơn.
Tuy chúng em đã hết sức cố gắng để có thể hoàn thiện đề tài một cách tốt nhất, như
ng do thời gian có hạn và sự hiểu biết về ngôn ngữ lập trình, đề tài còn hạn chế, do chưa c
ó nhiều kinh nghiệm nên chắc chắn đề tài sẽ không tránh khỏi những thiếu sót, chúng em
rất mong nhận được những ý kiến đóng góp của Thầy và những người quan tâm để đề tài
được hoàn thiện hơn. Chúng em xin chân thành cảm ơn!
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn sự hướng dẫn, chỉ bảo tận tình của Giảng viên bộ
môn Đồ án cơ sở Thầy Bùi Phú Khuyên - giảng viên trường Đại học Công nghệ Thành p
hố Hồ Chí Minh đã truyền đạt cho chúng em nhiều kiến thức quan trọng và nhiều ý kiến
đóng góp quý giá. Cảm ơn đóng góp ý kiến chân thành và quý báu của Thầy và những n
gười quan tâm đã giúp đỡ chúng em để hoàn thành đề tài này.
Mục Lục
Contents
CHƯƠNG 1 : TỔNG QUAN_____________________________________________________10
1.1. Lý do chọn đề tài_________________________________________________________10
1.2. Mục tiêu đề tài___________________________________________________________10
1.3. Nội dung thực hiện_______________________________________________________10
1.4. Phương pháp thực hiện____________________________________________________11
1.5. Giới thiệu về công nghệ sử dụng_____________________________________________11
1.5.1 Ngôn ngữ javascrip____________________________________________________11
1.5.2. Visual Studio Code(IDE)_______________________________________________12
1.5.3. Node js_____________________________________________________________12
1.5.4. Express framework____________________________________________________13
1.5.5. Mongodb____________________________________________________________14
1.5.6. Mongoose___________________________________________________________14
1.6. Mục tiêu đề ra___________________________________________________________14
CHƯƠNG 2 : TÁC PHÂN TÍCH VÀ ĐẶC TẢ YÊU CẦU_____________________________15
2.1. Quá trình phân tích_______________________________________________________15
2.1.1. Phân tích phạm vi dự án________________________________________________15
2.1.2. Phân tích mở rộng yêu cầu nghiệp vụ______________________________________15
2.1.3. Phân tích yêu cầu bảo mật______________________________________________16
2.1.4. Phân tích yêu cầu tốc độ________________________________________________16
2.1.5. Phân tích yêu cầu vận hành_____________________________________________16
2.1.6. Phân tích yếu tố con người______________________________________________17
2.1.7. Phân tích yêu cầu tích hợp______________________________________________17
2.1.8. Phân tích thực tiễn nghiệp vụ tồn tại______________________________________17
2.2. Xác định yêu cầu_________________________________________________________18
2.2.1. Yêu cầu và mô tả yêu cầu_______________________________________________18
2.2.2. Phân loại yêu cầu_____________________________________________________18
2.3. Mô hình hóa yêu cầu______________________________________________________19
2.3.1. Sơ đồ ngữ cảnh_______________________________________________________19
2.3.2 Sơ đồ Use Case_______________________________________________________19
2.3.3. Sơ đồ chức năng(BFD)_________________________________________________26
2.3.4. Mô hình sơ đồ lớp_____________________________________________________27
2.4. Xây dựng cơ sở dữ liệu____________________________________________________28
2.4.1. Bảng Category_______________________________________________________28
2.4.2. Bảng Users__________________________________________________________28
2.4.2. Bảng Room__________________________________________________________29
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM_____________________________________________30
3.1. Giao diện chương trình____________________________________________________30
3.1.1. Giao diện trang chủ____________________________________________________30
3.1.2. Giao diện danh mục___________________________________________________33
3.1.3. Giao diện các phòng thuê_______________________________________________33
3.1.4. Giao diện liên hệ______________________________________________________38
3.1.5. Giao diện tìm kiếm trên trang chủ________________________________________40
3.1.6. Giao diện chi tiết bài đăng______________________________________________42
3.1.7. Giao diện chức năng của người dùng______________________________________45
3.1.8. Giao diện đăng nhập, đăng ký___________________________________________47
3.1.9. Giao diện quản lý của Admin____________________________________________49
3.1.10. Một số giao diện khác_________________________________________________50
CHƯƠNG 4: TỔNG KẾT_______________________________________________________52
4.1. Kết quả đạt được_________________________________________________________52
4.2. Mặt hạn chế_____________________________________________________________52
4.3. Hướng phát triển_________________________________________________________52
Danh Mục Hình Ảnh
Trong cuộc sống hiện nay, có một lượng lớn sinh viên, công nhân lao động, gia
đình vào các thành phố lớn để học tập và làm việc.Nên nhu cầu tìm kiếm phòng
trọ, nơi ở ngày càng tăng.
Tránh việc người đi tìm phải tự thân vận động tìm kiếm cho mình một nơi tốt nhất.
Thay vào đó chỉ cần ngồi ở nhà, hay chỉ cần một thiết bị điện tử để tìm kiếm đơn
giản mà không cần phải đi ra ngoài.
Ý thức được vấn đề đó, nhóm em quyết định chọn đề tài:”Xây dựng Website hỗ
trọ tìm kiếm phòng trọ ” và áp dụng thí điểm vào mô hình quản lí đó vào việc tìm
kiếm.
Tìm hiểu đúng phương pháp làm một đề tài theo đúng quy tắc , đúng chuẩn.
Đối tượng hướng đến người dùng.
Phạm vi giới hạn: chỉ hỗ trợ tìm kiếm phòng trọ, nhà, văn phòng.
Tìm hiểu được cách triển khai và xây dựng một hệ thông.
Website phải dễ dàng kiểm tra , cải tiến, nâng cấp khi có những lỗi phát sinh bất
ngờ từ hệ thống.
Họ và Tên Nhiệm Vụ
Phan Hoàng Hạc(Nhóm trưởng) Thiết kế phần mềm.
Tìm hiểu để tài.
Lên ý tưởng
Tìm hiểu ngôn ngữ, công nghệ , IDE,
DB.
Hỗ trợ viết báo cáo.
Nguyễn Quốc Dũng Hỗ trợ thiết kế phần mềm.
Hỗ trợ thiết kế giao diện.
Viết và trình bày báo cáo.
Bảng 1. 1: Bảng nội dung thực hiện
Họp và phân tích sử dụng công nghệ nào ? thiết kế giao diện như thế nào ? sử
dụng cơ sở dữ liệu gì ?.
Sau khi phân tích tiến hành và đã chọn sử dụng công nghệ React js và Node js
thực hiện theo yêu cầu phần tích.
Kiểm thử và hoàn thành sản phẩm.
Là một ngôn ngữ lập trình web rất phổ biến ngày nay. Javascript được tích h
ợp đồng thời nhúng vào HTML để hỗ trợ cho website trở nên sống động hơn.
Chúng cũng đóng vai trò tương tự như một phần của website, cho phép Clien
t-side Script từ người dùng tương tự máy chủ (Nodejs) để tạo ra những websi
te động.
Brendan Eich chính là người đã phát triển Javascript tại Netscape với tiền thâ
n là Mocha. Sau đó, Mocha được đổi thành LiveScript và cuối cùng mới đổi t
hành JavaScript.
Năm 1998, JavaScript với phiên bản mới nhất là ECMAScript 2 phát hành v
à đến năm 1999 thì ECMAScript 3 được ra mắt.
Năm 2016, ứng dụng JavaScript đã đạt kỷ lục lên tới 92% website sử dụng, đ
ồng thời cũng được đánh giá là một công cụ cực kỳ quan trọng đối với lập trì
nh viên.
Visual Studio Code là một trình soạn thảo mã nguồn được phát triển bởi Mi
crosoft dành cho Windows, Linux và macOS. Nó hỗ trợ chức năng debug, đ
i kèm với Git, có chức năng nổi bật cú pháp, tự hoàn thành mã thông minh,
snippets, và cải tiến mã nguồn.
Visual Studio Code hỗ trợ đa dạng các chức năng Debug, đi kèm với Git, c
ó Syntax Highlighting. Đặc biệt là tự hoàn thành mã thông minh, Snippets,
và khả năng cải tiến mã nguồn. Nhờ tính năng tùy chỉnh, Visual Studio Cod
e cũng cho phép các lập trình viên thay đổi Theme, phím tắt, và đa dạng các
tùy chọn khác. Mặc dù trình soạn thảo Code này tương đối nhẹ, nhưng lại b
ao gồm các tính năng mạnh mẽ.
1.5.3. Node js
NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết bằn
g c++ và Javascript. Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào nă
m 2009.
Node.js ra đời khi các developer đời đầu của JavaScript mở rộng nó từ một thứ bạ
n chỉ chạy được trên trình duyệt thành môi trường mà bạn có thể chạy trên máy củ
a mình dưới dạng ứng dụng độc lập.
Cả trình duyệt JavaScript và Node.js đều chạy trên JavaScript runtime V8 engine.
Công cụ này lấy code JavaScript của bạn và convert nó sang mã máy (bytecode) c
ho việc thực thi nhanh hơn. Mã máy là loại code thấp cấp hơn để máy tính có thể c
hạy mà không cần biên dịch nó.
Khi nói đến NodeJS thì phải nghĩ tới vấn đề Realtime. Realtime ở đây chính là xử
lý giao tiếp từ client tới máy chủ theo thời gian thực. Giống như khi bạn lướt Face
book thì mỗi khi bạn comment hay like một topic nào đó thì ngay lập tức chủ topic
và những người đã comment trên đó sẽ nhận được thông báo là bạn đã comment.
ExpressJS là một trong những framework phổ biến dùng để xây dựng API và
Website phổ biến nhất của NodeJS. Nó được sử dụng rộng rãi đến mức hầu như
mọi dự án Web nào đều bắt đầu bằng việc tích hợp Express. Có rất nhiều lý do để
chọn ExpressJS:
Có nhiều tính năng hỗ trợ tất cả những gì bạn cần trong việc xây dựng Web
và API.
Quản lý các route dễ dàng.
Cung cấp một nền tảng phát triển cho các API
Hỗ trợ nhiều thư viện và plugin.
Bảo mật và an toàn hơn so với việc code thuần.
Hỗ trợ cộng đồng tuyệt vời
1.5.5. Mongodb
MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở đa nền tảng viết
bằng C++. Bản ghi trong MongoDB được lưu trữ dạng một dữ liệu văn bản, là một
cấu trúc dữ liệu bao gồm các cặp giá trị và trường tương tự như các đối tượng JSO
N.
1.5.6. Mongoose
Mỗi key trong object truyền vào class new Schema ví dụ như (title, author, bod
y,..) được chỉ định là một thuộc tính của một document, mỗi value trong object ( n
hư trong ví dụ là String, Boolean, Number) sẽ đại diện cho kiểu dữ liệu được sử dụ
ng ( SchemaType ).
Model chịu trách nhiệm với các document như việc thêm, sửa, xóa, các câu truy v
ấn.
Xác định môi trường bảo mật phần mềm: Cung cấp đủ thông tin cho
người dùng.
Xác định mức độ yêu cầu bảo mật: Xác định mức độ rủi ro để bảo m
ật phần mềm.
Rà soát bảo mật hiện tại: Tuân thủ yêu cầu bảo mật để đưa ra nhiều
giải pháp mang lại lợi ích cao.
Khi khởi động website, tùy vào cấu hình máy mà thời gian sẽ dao độ
ng từ 3-10 giây.
Sau khi đăng nhập, 100% các thao tác xử lý không quá 10 giây. - Kh
i có yêu cầu của người dùng, thao tác phản hồi người dùng là nhanh.
Có thể thực hiện đăng nhiều bài khác nhau trong một lúc.
Mục đích chính của website là mang đến lợi ích cho con người, nên yếu
tố con người là phần quạn trọng không thể thiếu. Bắt đầu với việc định
nghĩa mục tiêu người dùng, qua đó xác định được các dạng người dùng
với những nhu cầu đặc biệt liên quan, từ đó có thể sửa đổi phần mềm thí
ch ứng với những nhu cầu đó.
-Khi nhu cầu của người dùng phát sinh lớn thì cơ sở dữ liệu cần đ
ược thiết kế lại dựa trên những kỹ thuật thiết kế cơ sở dữ liệu mới
để đáp ứng nhu cầu nâng cấp cơ sở dữ liệu trong hệ thống. Việc x
ây dựng các tiện ích chuyển đổi riêng biệt ta có thể dễ dàng thực
hiện việc truy xuất cơ sở dữ liệu hiện có, hay chuyển đổi dữ liệu
cũ sang khuôn dạng mới.
Khi hiểu được những nghiệp vụ thực tế liên quan đến website
của doanh nghiệp, ta sẽ tránh được sai sót đồng thời và có thể
tìm được cách tốt hơn, hiệu quả hơn cho việc hiện thực tiến tr
ình nghiệp vụ và ngăn ngừa các lỗi tầm thường.
Để có được website tốt từ giai đoạn phát triển đến lúc sử dụng,
ta cần biết chi tiết về hệ thống mạng và chính sách hạ tầng củ
a khách hàng.
Ta cần tuân thủ nguyên tắc cốt lõi là nhận biết nhu cầu khách
hàng và cố gắng thực hiện chúng.
Yêu cầu chức năng: Đăng bài, thống kê, quản lý thông tin , quản lý thôn
g tin phòng, thay đổi thông tin, tài khoản…
Yêu cầu phi chức năng: Giao diện trực quan thân thiện, dễ sử dụng với
người dùng.
Yêu cầu chức năng lưu trữ: ghi nhận thông tin người dùng.
Yêu cầu chức năng tra cứu: Tìm kiếm các bài đăng.
Yêu cầu chức năng phân quyền: Phân quyền cho Admin – người viên.
Yêu cầu tính tiện dụng: Báo lỗi khi nhập thiếu/sai , giao diện dễ n
hìn/dễ sử dụng.
-Yêu cầu tính tương thích: Cho nhập thông tin từ bàn phím hoặc
chọn theo danh sách cho sẵn.
-Yêu cầu tính bảo trì: Chuyên viên tin học có thể thêm/xóa/sửa cá
c chức năng của hệ thống.
Tên usecase: xây dựng website hỗ trợ tìm kiếm phòng trọ.
Tên tác nhân: Quản lý, quản trị hệ thống, người dùng.
Chức năng use case: Biểu đồ này cho thấy các use case sẽ tương tác với nhau thôn
g qua phần website hỗ trợ tìm kiếm phòng trọ.
Đăng Trang
Tìm kiếm Admin Bộ lọc Thiếp lập
nhập chủ
Đối với người dùng là Admin thì sẽ xuất hiện Admin Pages dành
cho quản trị viên điều hướng đến trang quản lý.
Đối với người dùng là người dùng bình thường thì sẽ không hiển thị
Admin Pages.
Hình 3. 4: Không hiển thị trang Admin khi người dùng là user
Sau khi đăng nhập hiển thị tên người dùng và nút đăng xuất.
o Banner quảng cáo.
o Chân trang.
o Danh mục
Khi nhấn vào từng loại sẽ hiển thị các phòng thuê thuộc loại tương ứng.
Phân trang tối đa 3 bài đăng.
Chuyển trang.
Hình 3. 15: Giao diện khi chuyển trang 2
Phân trang tự động đếm có bao nhiêu bài đăng và hiển thị ra
giới hạn các bài đăng ở mỗi lượt hiển thị.
Điền tên, email, và nội dung liên hệ. Chưa điền thì sẽ không hiển thị nút để gửi,
bắt buộc phải điển tất các các ô.
Nếu bài đăng là của người đăng nhập sẽ hiển thị tùy chọn cập nhập và xóa
bài đăng.
Bắt buộc phải đăng nhập mới thực hiện các chức năng
Chỉ phòng thuộc bài đăng nào mới có thể xóa được bài đăng đó.
Hình 3. 23: Giao diện khi đăng xuất không hiển thị cập nhật và xóa
Hình 3. 24: Giao diện khi đăng nhập có thể cập nhật và xóa
Khi bấm nút cập nhật điều hướng đến trang cập nhật.
Sau khi cập nhật chuyển đến lại thông tin bài đăng.
Hình 3. 25: Giao diện cập nhật bài đăng
Các chức năng này yêu cầu người dùng phải đăng nhập.
Tạo mới một bài đăng.
o Khi tạo bắt buộc phải nhập hết các ô dữ liệu.
o Bắt buộc chọn hình ảnh.
Xem các bài đã đăng lên.
o Xem ở dạng danh sách.
o Phân trang với hiển thị tối đa 2 bài đăng.
Xem thông tin tài khoản
o Có thể thay đổi thông tin.
Hình 3. 26: Giao diện yêu cầu người dùng phải đăng nhập
Hình 3. 28: Giao diện hiển thị hộp thoại không tìm thấy người dùng
Hình 3. 29: Giao diện hiển thị hộp thoại nhập sai tài khoản và mật khẩu
Hình 3. 30: Giao diện đăng ký
Hình 3. 31: Giao diện đăng ký khi email tồn tại trong database
Hình 3. 32: Giao diện đăng ký khi username tồn tại trong database
Hình 3. 35: Giao diện khi người dùng nhập sai điều hướng
Hình 3. 36: Giao diện không tìm thấy trang
Hình 3. 37: Giao diện không tìm thấy trang khi user truy cập vào admin
CHƯƠNG 4: TỔNG KẾT
Sau 03 tháng thực hiện nghiên cứu đề tài, dưới sự hướng dẫn tận tình của thầy Bùi
Phú Khuyên, đồ án của em đã đạt được những kết quả sau:
Cung cấp cho người dùng thông tin cần thiết khi muốn tìm kiếm trao đổi dịch vụ,
mặt hàng trên website.
Tài Liệu Tham Khảo
1. https://nodejs.org/en/docs/
2. https://mongoosejs.com/docs/api.html
3. https://reactjs.org/docs/getting-started.html
4. https://expressjs.com/
5. https://react-bootstrap.github.io/
6. https://react-icons.github.io/react-icons/
7. https://dashboard.emailjs.com/