Tải bản đầy đủ (.docx) (31 trang)

đồ án 2 xây dựng ứng dụng blockchain hỗ trợ tuyển dụng việc làm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (616.85 KB, 31 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠIHỌC CƠNG NGHỆ THƠNG TIN</b>

Trần Đức Tâm 19522166

Tp.HCM, ngày 25 tháng 12 năm 2023

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>LỜI CẢM ƠN</b>

Trước hết, nhóm chúng em xin gửi lời cảm ơn đến Trường Đại học Công nghệthông tin – ĐHQGTPHCM và đến thầy Trần Anh Dũng là giảng viên hướng dẫntrực tiếp đã tạo điều kiện để nhóm chúng em hồn thành đồ án 2 - Chủ đề xâydựng ứng dụng Blockchain hỗ trợ tuyển dụng việc làm.

Trong khoảng thời gian thực hiện đồ án, nhóm chúng em đã học hỏi thêmđược nhiều kiến thức, kinh nghiệm, biết được thêm về công nghệ Blockchain.Nhóm chúng em đã vận dụng những kiến thức nền tảng đã tích lũy đồng thờikết hợp với việc học hỏi và nghiên cứu những kiến thức mới. Từ đó vận dụngtối đa những gì đã học hỏi được để hoàn thành báo cáo đồ án này.

Mặc dù nhóm chúng em đã cố gắng hồn thành song báo cáo của nhóm chúngem chắc chắn khơng chắn khỏi những thiếu xót, chúng em rất mong nhận đượcsự thơng cảm và góp ý chân thành tùy q thầy cơ. Nhóm chúng em xin chânthành cảm ơn.

Nhóm sinh viên thực hiện

CHƯƠNG 1: GIỚI THIỆU...3

<small>1.3.4 Phương pháp nghiên cứu...4</small>

<small>CHƯƠNG 2: CƠ SỞ LÝ THUYẾT...4</small>

<small>2.1 HTML...5</small>

<small>2.2 CSS...6</small>

<small>2.3 Tailwind...7</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<small>4.5 Nhập thông tin cá nhân...23</small>

<small>4.6 Thông tin tuyển dụng...23</small>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>CHƯƠNG 1: GIỚI THIỆU</b>

<b>1.1 Đặt vấn đề</b>

Hiện nay, nhu cầu tuyển dụng việc làm ngày càng gia tăng và đồng thời nhu cầu tìm kiếm việc làm phù hợp với bản thân mỗi người ngày càng nhiều.

<b>1.2 Giải pháp</b>

Để giải quyết vấn đề trên, nhóm chúng em quyết định chọn đề tài - xây dựng ứng dụng Blockchain hỗ trợ tuyển dụng việc làm để giúp các công ty tiếp cận các đối tượng tuyển dụng của mình dễ hơn và đồng thời giúp người tìm kiếm việc làm dễ dàng kiếm việc phù hợp với bản thân hơn. Ứng dụng của tụi em sẽ giúp người dùng tìm kiếm đúng đối tượng mà thông tin đã được xác thực.

<b>1.3 Mục tiêu đề tài1.3.1 Lý thuyết</b>

● Tìm hiểu và nghiên cứu Blockchain, React, Tailwind, Expressjs.

● Nắm rõ các thao tác trên Visual studio code.

● Nghiên cứu các website tuyển dụng việc làm hiện có trên thị trường như topcv, careerbuilder,...

<b>1.3.2 Mục tiêu</b>

● Thiết kế giao diện bắt mắt, dễ sử dụng cho người dùng.

● Đảm bảo tính năng an tồn và bảo mật.

● Tối ưu hố các chức năng của ứng dụng.

● Người tuyển dụng dễ dàng tìm kiếm nhân lực.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

● Người dùng tự đánh giá năng lực của nhân lực.

<b>1.3.3 Phạm vi</b>

● Phạm vi môi trường: triển khai trên website.

● Đối tượng sử dụng: người tuyển dụng có nhu cầu tuyển nhân sự.

● Phạm vi chức năng:

o Người dùng tìm kiếm các được các đối tượng phù hợp.o Người tuyển dụng có thẻ đánh giá độ uy tín của miner.

<b>1.3.4 Phương pháp nghiên cứu</b>

● Phương pháp làm việc: làm nhóm 2 người thơng qua hình thức offline vàonline qua google meeting dưới sự hướng dẫn của giảng viên.

● Phương pháp nghiên cứu:

o Khảo sát và nghiên cứu nhu cầu tìm kiếm nhân lực và tìm kiếm việc làm của mọi người.

o Nghiên cứu các tài liệu và công nghệ liên quan đến đề tài như: Blockchain, React,....

o Tham khảo các website tuyển dụng việc làm hiện có như: topcv, careerbuilder,... để tối ưu hố website.

● Phương pháp cơng nghệ:

o Tìm hiểu các ngơn ngữ và framework liên quan đến đề tài.o Xây dựng giao diện website để tương tác người dùng và nhận

phản hồi, sửa chữa nếu cần thiết.

o Tìm hiểu các thư viện hỗ trợ cho dự án.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>CHƯƠNG 2: CƠ SỞ LÝ THUYẾT</b>

<b>2.1 HTML</b>

phần trong trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles,

<b>blockquotes… và HTML khơng phải là ngơn ngữ lập trình.</b>

Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements)được quy định bằng các cặp thẻ (tag và attributes). Các cặp thẻ này được baobọc bởi một dấu ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báothành một cặp, bao gồm thẻ mở và thẻ đóng. Ví dụ, chúng ta có thể tạo một

<i><b>đoạn văn bằng cách đặt văn bản vào trong cặp tag mở và đóng văn bản <p> và</b></i>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

c. Mã nguồn mở và hồn tồn miễn phí.

update hay realtime thời gian thực, bạn cần sử dụng JavaScripthoặc ngôn ngữ backend bên thứ 3 như PHP.

<b>2.2 CSS</b>

<b>CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngơn ngữ được</b>

<b>sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ</b>

đánh dấu (HTML). Nói ngắn gọn hơn là ngơn ngữ tạo phong cách cho trangweb

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Mối tương quan giữa HTML và CSS rất mật thiết. HTML là ngôn ngữmarkup (nền tảng của site) và CSS định hình phong cách (tất cả những gì tạonên giao diện website), chúng là khơng thể tách rời.

<b>2.3 Tailwind</b>

Tailwind là một utility-first CSS framework giúp cho bạn xây dựng giaodiện người dùng một cách nhanh nhất. Tailwind CSS được phát hành lầnđầu tiên vào tháng 10/2019 được phát triển bởi Adam Wathan. Nếu sosánh với các nền tảng lập trình CSS khác như Bootstrap, Materialize,Foundation, Material Design… thì giữa chúng có điểm chung với nhau.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>Ưu điểm:</b>

<b>2.4 Typescript</b>

<b>Typescript Là một ngôn ngữ được Microsoft tặng free cho chúng ta, nền</b>

tảng của TypeScript ít nhiều cũng có sự liên quan đến JavaScript vì nó là một

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

ngơn ngữ mã nguồn mở của JavaScript. Vai trò của TypeScript là dùng đểthiết kế và xây dựng các dự án ứng dụng quy mơ lớn mang tính chất phứctạp.

TypeScript được xem là một phiên bản nâng cao hơn của JavaScript vì nóđược thiết kế thêm nhiều chức năng tiện lợi hơn, cải tiến hơn từ nhữngđiểm yếu của JavaScript như các lớp hướng đối tượng và Static Structuraltyping, bên cạnh đó TypeScript cịn có thể hoạt động rộng rãi cho các ứngdụng của ngôn ngữ Angular2 và Nodejs.

<b>Ưu điểm:</b>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựnggiao diện người dùng hay UI. Trong lập trình ứng dụng front-end, lập trình viênthường sẽ phải làm việc chính trên 2 thành phần sau: UI và xử lý tương tác củangười dùng. UI là tập hợp những thành phần mà bạn nhìn thấy được trên bấtkỳ một ứng dụng nào, ví dụ có thể kể đến bao gồm: menu, thanh tìm kiếm,những nút nhấn, card,… Giả sử bạn đang lập trình một website thương mại

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

điện tử, sau khi người dùng chọn được sản phẩm ưng ý rồi và nhấn vào nút“Thêm vào giỏ hàng”, thì việc tiếp theo mà bạn phải làm đó là thêm sản phẩmđược chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user vào xem => xử lýtương tác.

Trước khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn trong việc sử dụng “vanilla JavaScript”(JavaScript thuần) và JQuery để xây dựng UI. Điều đó đồng nghĩa với việc q trình phát triển ứng dụng sẽ lâu hơn và xuất hiện nhiều bug, rủi ro hơn. Vì vậy vào năm 2011, Jordan Walke – một nhân viên của Facebook đã khởi tạo ReactJS với mục đích chính là cải thiện q trình phát triển UI.

<b>2.6 Expressjs</b>

Expressjs hay còn được viết là Express js, Express.js. Đây là một framework mã nguồn mở miễn phí cho Node.js. Express.js được sử dụng trong thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng.

Vì Express js chỉ u cầu ngơn ngữ lập trình Javascript nên việc xây dựng các ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.Expressjs cũng là một khn khổ của Node.js do đó hầu hết các mã code đã được viết sẵn cho các lập trình viên có thể làm việc.

Nhờ có Expressjs mà các nhà lập trình có thể dễ dàng tạo các ứng dụng 1

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

web, nhiều web hoặc kết hợp. Do có dung lượng khá nhẹ, Expressjs giúp cho việc tổ chức các ứng dụng web thành một kiến trúc MVC có tổ chức hơn.Để có thể sử dụng được mã nguồn này, chúng ta cần phải biết về Javascript và HTML.

Expressjs cũng là một phần của công nghệ giúp quản lý các ứng dụng web một cách dễ dàng hơn hay còn được gọi là ngăn xếp phần mềm

MEAN.Nhờ có thư viện Javascript của Express js đã giúp cho các nhà lập trình xây dựng nên các ứng dụng web hiệu quả và nhanh chóng hơn. Expressjs cũng được sử dụng để nâng cao các chức năng của Node.js.

Trên thực tế, nếu không sử dụng Express.js, bạn sẽ phải thực hiện rất nhiều bước lập trình phức tạp để xây dựng nên một API hiệu quả. Express js đãgiúp cho việc lập trình trong Node.js trở nên dễ dàng hơn và có nhiều tính năngmới bổ sung.

<b>2.7 Blockchain</b>

Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách antồn dựa trên hệ thống mã hóa vô cùng phức tạp, tương tự như cuốn sổ cái kếtốn của một cơng ty, nơi mà tiền được giám sát chặt chẽ và ghi nhận mọi giaodịch trên mạng ngang hàng.

Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết vớikhối trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch. Dữ liệukhi đã được mạng lưới chấp nhận thì sẽ khơng có cách nào thay đổi được.

<b>Blockchain được thiết kế để chống lại việc gian lận, thay đổi của dữ liệu.</b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Công nghệ Blockchain – sự kết hợp giữa 3 loại công nghệ:</b>

<b>- Mật mã học: để đảm bảo tính minh bạch, tồn vẹn và riêng tư thì cơng nghệ</b>

Blockchain đã sử dụng public key và hàm hash function.

<b>- Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và</b>

cũng là server để lưu trữ bản sao ứng dụng.

<b>- Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ</b>

luật chơi đồng thuận (giao thức PoW, PoS,…) và được thúc đẩy bởi động lựckinh tế.

<b>Blockchain có các đặc điểm nổi bật sau:</b>

<b>- Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý </b>

thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệBlockchain biến mất khi không cịn Internet trên tồn cầu.

<b>- Bất biến: dữ liệu trong Blockchain khơng thể sửa (có thể sửa nhưng sẽ để lại </b>

dấu vết) và sẽ lưu trữ mãi mãi.

<b>- Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn </b>

tuyệt đối.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>- Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa</b>

chỉ khác và có thể thống kê tồn bộ lịch sử trên địa chỉ đó.

<b>- Hợp đồng thơng minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code </b>

if-this-then-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba.

<b>2.8 Ethereum</b>

Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên cơngnghệ chuỗi khối (blockchain) có khả năng thực thi hợp đồng thông minh (smartcontract) - tức là điều khoản được ghi trong hợp đồng sẽ được thực thi một cáchtự động khi các điều kiện trước đó được thỏa mãn, khơng ai có thể can thiệp vào. Ethereum là một dự án Blockchain Layer 1 cho phép nhiều các lập trình viênxây dựng các ứng dụng phi tập trung (DApps) và các tổ chức tự trị phi tập trung(DAOs). Trong đó:

● Các ứng dụng phi tập trung (DApps - Decentralized Application) là các phầnmềm được triển khai độc lập, không nằm trên một máy chủ duy nhất màđược lưu trữ một cách phân tán trên các kho lưu trữ phi tập trung và cóthể được viết bằng bất kỳ ngôn ngữ nào.

● Các tổ chức tự trị phi tập trung (DAOs - Decentralized AutonomousOrganizations) là một tổ chức được vận hành bởi các thành viên dựa trênmột bộ quy tắc được mã hóa bằng code. Tất cả các thành viên đều cóquyền biểu quyết các quyết định quan trọng của DAOs.

<b>2.9 Hardhat</b>

<b>Hardhat là một môi trường phát triển để biên dịch, triển khai, test và debug </b>

Dapp Ethereum.

<b>Một số điểm tính năng nổi bật của Hardhat:</b>

● Tích hợp mạng local hardhat, dễ dàng chạy và debug code ngay trên local.

● <b>Debug dễ dàng hơn: Với Hardhat, chúng ta có thể debug code Solidity </b>

dễ dàng hơn khi có thể console.log ra các biến (Solidity vốn ko hỗ trợ console.log)

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

● Hệ thống plugin: Giúp developer có thể bổ sung chức năng, tùy vào từng dự án cụ thể

<b>●Hỗ trợ TypeScript.</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>CHƯƠNG 3: PHÂN TÍCH ĐẶC TẢ YÊU CẦU</b>

<b>3.1 Danh sách người dùng </b>

Bảng 3.1: Bảng danh sách người dùng

1 Người tuyển dụng Người tuyển dụng có thể tăng tuyển dụng nhân sự với các điều kiện phù hợp, đánh giá miner,..2 Trung gian(miner) Miner có thể tìm kiếm các bài tuyển dụng, tương

tác với nhà tuyển dụng, thêm thông tin ứng viên

<b>3.2 Danh sách Usecase3.2.1 Người tuyển dụng</b>

Bảng 3.2: Bảng chức năng người tuyển dụng

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>3.2.2 Người trung gian (miner)</b>

Cho phép người dùng đăng tin thơng tin về người tìm kiếm việc làm.

4 Tìm kiếm Cho phép người dùng tìm kiếm các bài tuyển dụng

<b>3.3 Đặng tả Usecase</b>

Bảng 3.4: Bảng đặc tả Usecase đăng ký của người tuyển dụng

đăng ký người dùng mới.Dòng sự kiện phụ

Bảng 3.5: Bảng đặc tả Usecase đăng nhập của người tuyển dụng

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Mã Use-case UC-2

website.Dòng sự kiện phụ

Bảng 3.5: Bảng đặc tả Usecase đăng tuyển dụng

-Người dùng đang thông tin cần tuyển dụng-Người dùng ấn nút xác nhận.

Dòng sự kiện phụ

Bảng 3.6: Bảng đặc tả Usecase đánh giá

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Mã Use-case UC-4

việc làm phù hợp

đến 5 sao

-Người dùng ấn nút xác nhậnDòng sự kiện phụ

Bảng 3.7: Bảng đặc tả Usecase đăng ký của miner

đăng ký người dùng mới.Dòng sự kiện phụ

Bảng 3.8: Bảng đặc tả Usecase đăng nhập của miner

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Mã Use-case UC-6

website.Dòng sự kiện phụ

Bảng 3.9: Bảng đặc tả Usecase tìm kiếm

-Người dùng nhập thông tin tuyển dụng muốn tìmkiếm.

-Người dùng ấn tìm kiếm

-Người dùng sẽ được chuyển đến trang kết quả tìmkiếm

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Dòng sự kiện phụ

Bảng 3.10: Bảng đặc tả Usecase đăng thơng tin người tìm kiếm việc làm

-Người dùng nhập thơng tin người phù hợp.-Người dùng bấm xác nhận.

Dịng sự kiện phụ

Bảng 3.11: Bảng đặc tả thay đổi thông tin người dùng

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

-Người dùng nhập thông tin người phù hợp.-Người dùng bấm xác nhận.

Dòng sự kiện phụ

<b>CHƯƠNG 4: THIẾT KẾ GIAO DIỆN</b>

<b>4.1 Đặng nhập</b>

Hình 4.1: Màn hình đăng ký

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>4.2 Đăng ký</b>

Hình 4.2: Màn hình đăng nhập

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>4.3 Trang chủ</b>

Hình 4.3: Màn hình trang chủ

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>4.4 Tìm kiếm</b>

Hình 4.4: Màn hình kết quả tìm kiếm

<b>4.5 Nhập thơng tin cá nhân</b>

Hình 4.5: Hình nhập thơng tin người tìm kiếm việc làm

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b><small>4.6 Thông tin tuyển dụng</small></b>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Hình 4.6: Màn hình thơng tin bài đăng tuyển dụng

<b>CHƯƠNG 5: KẾT LUẬN</b>

<b>5.1 Tổng kết</b>

● Điều quan trọng nhất khi làm website sử dụng blockchain hỗ trợ tuyểndụng việc làm là phải có đầy đủ các tính năng cần thiết của một trangweb tuyển dụng trực tuyến cũng như đa dạng sản phẩm và giao diệnthân thiện dễ nhìn để phục vụ đáp ứng nhu cầu của người dùng.

● Cần phân tích kỹ xác định các tính năng trước khi thực hiện code, thiếtkế giao diện, thiết kế cơ sở dữ liệu..

● Cần sắp xếp thời gian code cho từng chức năng một cách hợp lý hơn,không nên tốn nhiều thời gian cho một phần.

● Có khả năng đọc được tài liệu tiếng anh là một lợi thế vì những bàihướng dẫn cơ bản, hay tài liệu đa số đều được viết bằng tiếng Anh.

<b>5.2 Khó khăn</b>

● Việc làm đồ án gặp nhiều trở ngại trong cơng đoạn xác định tính năngcủa ứng dụng, và phần việc sắp xếp theo thứ tự vẫn chưa thật sự hợp lý,khơng có nhiều thời gian để hồn thành đồ án.

● Nhóm tốn nhiều thời gian cho việc xây dựng giao diện người dùng mộtcách hợp lý và cố gắng thực hiện các mục tiêu đã đề ra.

<b>5.3 Hạn chế </b>

● Code chưa được tối ưu tốt nên khi load website còn hơi chậm.

● Giao diện người dùng ở mức khá.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

● Cịn nhiều tính năng chưa được tối ưu, chưa tiện dụng đối với ngườidùng.

● Chưa sử dụng được nhiều ngôn ngữ

<b>5.4 Hướng phát triển</b>

● Đầu tư, phát triển thiết kế giao diện.

● Sử dụng được đa dạng ngơn ngữ.

● Tối ưu hóa code.

● Nâng cấp thêm những tính năng tiện ích hỗ trợ người dùng.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>TÀI LIỆU THAM KHẢO</b>

1. <b>Tailwind: </b>

2. Blockchain: products-all.sort-

by=item.additionalFields.productNameLowercase&aws-products-3. React: Ethereum:

×