1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO MÔN HỌC CƠ SỞ NGÀNH MẠNG Xây dựng ứng dụng trên máy điện thoại quản lý quản lý lịch làm việc cá nhân. Chương trình cho phép kết nối với Google Calendar để đồng bộ dữ liệu

43 0 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Mạng: Xây Dựng Ứng Dụng Quản Lý Lịch Làm Việc Cá Nhân Trên Máy Điện Thoại Kết Nối Với Google Calendar
Trường học Trường Đại Học Bách Khoa, Đại Học Đà Nẵng
Chuyên ngành Mạng và Công Nghệ Thông Tin
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Đà Nẵng
Định dạng
Số trang 43
Dung lượng 604,07 KB

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

Nội dung

BÁO CÁO MÔN HỌC CƠ SỞ NGÀNH MẠNG ĐỀ TÀI : NGUYÊN LÝ HỆ ĐIỀU HÀNH: Tìm hiểu kỹ thuật lập trình Hook. Xây dựng ứng dụng hỗ trợ soạn thảo và tra cứu từ vựng tiếng anh LẬP TRÌNH MẠNG: Xây dựng ứng dụng trên máy điện thoại quản lý quản lý lịch làm việc cá nhân. Chương trình cho phép kết nối với Google Calendar để đồng bộ dữ liệu.

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC

Xây dựng ứng dụng trên máy điện thoại quản lý quản

lý lịch làm việc cá nhân Chương trình cho phép kết nối với Google Calendar để đồng bộ dữ liệu

Trang 2

CHƯƠNG 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH 1

1.1 Giới thiệu đề tài 1

1.2 Cơ sở lý thuyết 2

1.2.1 Khái niệm về Hook 2

1.2.2 Cơ chế hoạt động của Hook 2

1.2.3 Phân loại Hook 3

1.2.4 Cách cài đặt Hook 4

1.2.5 Cách giải phóng Hook 4

1.2.6 Ứng dụng của Hook 5

1.3 Giải quyết bài toán 6

1.3.1 Các bước giải quyết bài toán 6

1.3.2 Kết quả thực hiện 7

CHƯƠNG 2: LẬP TRÌNH MẠNG 9

2.1 Giới thiệu đề tài 9

2.2 Cơ sở lý thuyết 9

2.2.1 Use-case 9

2.2.2 Client-Server 10

2.2.3 SQL Server 11

2.3 Giải quyết bài toán 12

2.3.1 Các bước giải quyết bài toán 12

1) Phân tích và vẽ sơ đồ use-case của hệ thống 12

2) Phân tích các bảng cơ sở dữ liệu 12

3) Phân tích và xây dựng cấu trúc server và client 13

2.3.2 Kết quả thực hiện 14

CHƯƠNG 3: PHỤ LỤC + MÃ NGUỒN 18

3.1 Nguyên lý hệ điều hành 18

3.1.1 Đọc dữ liệu từ file: 18

3.1.2 Cài đặt Hook: 19

3.1.3 Khởi tạo màn hình gợi ý: 22

3.2 Lập trình mạng 25

3.2.1 Server 25

3.2.2 Client 38

Trang 3

STT Hình Nội dung

DANH SÁCH TỪ VIẾT TẮT

MỞ ĐẦU

Trang 4

- Nội dung các đề tài gắn liền với thực tiễn công việc và học tập của sinh viên

- Việc vận dung các kiến thức đã học để giải quyết các bài toán trong cuộc sống nhằm giúp nâng cao khả năng xử lý và giải quyết vấn đề thực tiễn

2 Mục đích và ý nghĩa của đề tài

- Gắn quá trình học lí thuyết với công tác nghiên cứu thực tế

- Trình bày rõ ràng và khoa học một vấn đề thuộc lĩnh vực nghiện cứu củamình

2.2 Ý nghĩa

- Kết quả của công việc phản ánh công sức, tài năng, trí tuệ của người làm đồ

án và phải được trình bày bằng văn bản trong đồ án môn học theo những chuẩn mực

và yêu cầu của giáo viên hướng dẫn

- Đồ án môn học phản ánh công sức nghiên cứu nên cần phải được trình bàytrước bộ môn và được đánh giá bằng điểm số Việc trình bày đúng, rõ ràng, ngắngọn và khoa học chỉ có được ở những sinh viên có quá trình lao động nghiêm túccho đề tài và có chuẩn bị đầy đủ kiến thức trong lĩnh vực nghiên cứu đề tài

3 Bố cục của đồ án

Báo cáo đồ án bao gồm các nội dung sau:

Trang 5

Chương 1: Nguyên lý hệ điều hành Chương 2: Lập trình mạng

Chương 3: Phụ lục

Kết luận và hướng phát triển Tài liệu tham khảo

Trang 6

CHƯƠNG 1: NGUYÊN LÝ HỆ ĐIỀU HÀNH

1.1 Giới thiệu đề tài

Đề tài: Tìm hiểu kỹ thuật lập trình Hook Xây dựng tra cứu hỗ trợ tra cứu từđiển và soạn thảo văn bản tiếng Anh

Mô tả vấn đề:

- Việc soạn thảo văn bản tiếng anh thường gây ra lỗi chính tả, sai ngữ nghĩa

của câu hay mọi người thường khó khăn khi ghi nhớ các từ vựng, vì vậy đểgiúp đỡ người soạn thảo có thể nhanh chóng và làm việc chính xác, ta cầnmột công cụ nhằm hỗ trợ tra cứu các thông tin về từ ngữ và ngữ cảnh

Yêu cầu bài toán:

- Phải tự động truy xuất đến dữ liệu có liên quan đến nội dung người soạnthảo đang sử dụng để hỗ trợ , gợi ý từ ngữ phù hợp với ngữ cảnh

- Kĩ thuật được sử dụng để giải quyết vấn đề đặt ra là sử dụng Hook

Hình 1.1: Mô hình Hook

Trang 7

1.2 Cơ sở lý thuyết

1.2.1 Khái niệm về Hook

Trong Windows, khi chúng ta thực hiện các thao tác nhấp chuột, nhấnphím… thì hệ điều hành sẽ chuyển các sự kiện này thành các thông điệp (message)rồi đưa vào hàng đợi (queue) của hệ thống Sau đó, các thông điệp được trao lại chotừng ứng dụng cụ thể để xử lý

Hook là một cơ chế mà một ứng dụng có thể chặn các sự kiện, như các thôngđiệp, thao tác chuột, bàn phím Hàm dùng để chặn một loại sự kiện riêng biệt đượcgọi là hook procedure/ Hook function (thủ tục hook / hàm hook) hoặc FilterFunction (hàm lọc) Mỗi khi nhận được sự kiện, hookprocedure có thể thay đổi vàthậm chí hủy bỏ các sự kiện đó

+ Thread-specific : Kiểu Hook này sẽ bẫy sự kiện của một luồng cụ thể

+ System-wide : Bẫy sự kiện của tất cả các luồng trong tất cả các tiếntrình đang thi hành trong hệ thống

Hook là một kỹ thuật xử lý thông điệp rất mạnh cho phép chúng ta can thiệpsâu vào các tiến trình khác nhau, nhưng nó làm ảnh hưởng tới tốc độ của hệ thống,nhất là hook system-wide Vì tất cả các sự kiện của hệ thống sẽ được định hướng tớimột hàm nào đó, rõ ràng điều này làm hệ thống chậm đi đáng kể Vì thế ta chỉ hênhook những thông điệp thật cần thiết và kết thúc việc hook ngay khi không dùngđến nữa

1.2.2 Cơ chế hoạt động của Hook

Có nhiều loại hook (như chuột, bàn phím) và hệ điều hành luôn duy trì mộtdanh sách các hook procedure cho mỗi loại đó Mỗi danh sách các Hook procedurenày được gọi là hookchain(chuỗi hook) Bản chất của hook chain là một dãy cáccon trỏ hàm trỏ đến các Hook procedure

Trang 8

Khi hệ thống thực hiện một sự kiện nào đó, nó sẽ tìm kiếm trong hook chaintương ứng với sự kiện đó Nếu một hook procedure phù hợp được tìm thấy, hệthống sẽ thực hiện nó và chỉ lấy lại quyền điều khiển sau khi hook chain kết thúc.

Vì thế khi một hook procedure thực hiện xong, nó phải thực hiện việc chuyển quyềnđiều khiển cho hook procedure kế tiếp trong hook chain

Tuy nhiên cơ chế này còn tùy thuộc vào loại hook Như một số loại hook chỉ

có thể theo dõi các thông điệp, vì vậy cho dù hook procedure có chuyển quyền điềukhiển cho hook procedure kế tiếp hay không, hệ thống vẫn sẽ tự động làm việc này.Một điểm cần lưu ý là hook sẽ làm chậm hệ thống, vì thế bạn chỉ nên cài đặt hookkhi cần thiết và loại bỏ nó khi đã hoàn tất công việc

1.2.3 Phân loại Hook

Có nhiều loại hook được phân biệt dựa vào các sự kiện, thông điệp mà Hookprocedure can thiệp vào Danh sách dưới đây liệt kê các loại hook:

theo dõi các thông điệp gởi đến các thủ tục cửa sổ (window procedure)

 WH_CBT : Hệ thống gọi thủ tục hook WH_CBT : trước khi activating,creating, destroying, minimizing, maximizing, moving, hoặcsizing mộtcửa sổ ; trước khi hoàn thành một lệnh hệ thống, trước khi loại bỏ một sựkiện chuột hoặc bàn phím từ hàng đợi thông điệp hệ thống …

gọi một thủ tục hook kết hợp với bất kỳ hook khác trong hệ thống

phép bạn thực hiện các tác vụ ưu tiên thấp trong thời gian tác vụ đó đang

ở chế độ foreground idle

dụng theo dõi các thông điệptrả về bởi hàm GetMessage hoặcPeekMessage

Trang 9

 WH_JOURNALPLAYBACK : Cáchook WH_JOURNALPLAYBACK cho phép một ứng dụng chèn thêmcác thông điệp vào hàng đợi thông điệp hệ thống.

phép bạn giám sát và ghi lại các sự kiện đầu vào

theo dõi các sự kiện bàn phím trong hàng đợi ứng dụng

 WH_KEYBOARD : Hook WH_KEYBOARD cho phép một ứng dụngtheo dõi lưu lượng truy cập thông điệp của thôngđiệp WM_KEYDOWN và WM_KEYUP được trả về bởi hàmGetMessage hoặc PeekMessage

các sự kiện chuột trong hàng đợi ứng dụng

 WH_MOUSE : Các hook WH_MOUSE cho phép bạn theo dõi các thôngđiệp chuột được trả về bởi hàm GetMessage hoặc PeekMessage

 WH_MSGFILTER and WH_SYSMSGFILTER : Cho phép theo dõichính các thông điệp được xử lý bởi menu, scrollbar, dialog…

1.2.4 Cách cài đặt Hook

Một thủ tục hook có thể được cài đặt vào chuỗi hook bằng việc gọi hàmSetWindowsHookEx và chỉ ra kiểu hook đang gọi thủ tục, việc cài đặt hook có thểthực hiện trên mọi tiến trình trong hệ thống

Nếu sử dụng hook toàn cục thì phải đặt trong thư viện liên kết động (DLL).Ứng dụng muốn sử dụng thư viện liên kết động phải lấy được handle của thư viện

đó Để nhận Handle của thư viện liên kết động ta có thể sử dụng hàm LoadLibraryvới tham số là tên của thư viện Sau khi có được Handle của DLL, ta sẽ lấy địa chỉcủa thủ tục hook trong thư viện liên kết động thông qua hàm GetProcAddress Saukhi đã có thủ tục hook, sử dụng hàm SetWindowsHookEx để cài đặt thủ tục hookvào trong chuỗi hook

Trang 10

Giải pháp đặt ra cho vấn đề này là xây dựng hàm cài đặt ngay trong thư việnDLL Bằng việc liên kết tới DLL, ứng dụng có thể cài đặt hook Và ngay trong DLLcũng phải có hàm giải phóng hook để giải phóng khi không cần đến nữa.

 Xử lý hoặc định nghĩa tất cả các thông điệp cho dialog box, message box,scroll bar, hoặc menu của hệ thống (Sử dụng hook WH_SYSMSGFILTER)

 Xử lý hoặc định nghĩa tất cả các thông điệp (bất chấp là thông điệp gì) của hệthống mỗi khi GetMessage hoặc PeekMessage được gọi (Sử dụnghook WH_GETMESSAGE)

 Xử lý hoặc định nghĩa tất cả các thông điệp (bất chấp là thông điệp gì) của hệthống mỗi khi SendMessage được gọi (Sử dụnghook WH_CALLWNDPROC)

 Thu (Record) và phát lại (Playback) các sự kiện keyboard và mouse (Sửdụng hook WH_JOURNALRECORD, WH_JOURNALPLAYBACK)

Trang 11

 Xử lý , định nghĩa hoặc hủy bỏ tất cả các sự kiện bàn phím.(Sử dụnghook WH_KEYBOARD).

 Xử lý , định nghĩa hoặc hủy bỏ tất cả các sự kiện chuột (Sử dụnghook WH_MOUSE)

Tận dụng các khả năng trên, các ứng dụng có thể sử dụng hook để :

 Cung cấp phím trợ giúp F1 hỗ trợ menu, dialog box và message box (Sửdụng hook WH_MSGFILTER)

 Cung cấp các tính năng thu và phát các sự kiện mouse và keyboard, thườngđược gọi là các macro (Sử dụng hook WH_JOURNALRECORD,WH_JOURNALPLAYBACK)

 Theo dõi các thông điệp để biết được thông điệp nào được gởi đến cửa sổnào cũng như các hành động nào sẽ làm phát sinh thông điệp tương ứng (Sửdụng hook WH_GETMESSAGE & WH_CALLWNDPROC) Chương trìnhSpy trong bộ Win32™ SDK của Windows NT đã rất thành công trong việc

sử dụng hook để thực hiện tác vụ này

1.3 Giải quyết bài toán

1.3.1 Các bước giải quyết bài toán

Các bước giả quyết bài toán:

 Bước 1: Khởi tạo dữ liệu từ điển

 Bước 2: Cài đặt hook keyboad để bắt trạng thái nhấn phím của ngườidùng trên hệ thống

 Bước 3: Cài đặt hook mouse để xác định vị trí con trỏ soạn thảo văn bảntrên các ứng dụng

 Bước 4: Khi bắt được dữ liệu nhập từ bàn phím, chương trình sẽ kiểm traxem dữ liệu đã có trong từ điển hay chưa:

 Bước 4.1: Nếu có thì lọc danh sách rồi hiển thị cửa sổ gợiý

Trang 12

 Bước 4.2: Nếu không tìm thấy dữ liệu thì thực hiện ẩn cửa

sổ gợi ý

1.3.2 Kết quả thực hiện

Hình 1.2: Hiển thị gợi ý khi soạn thảo trên Excel

Trang 13

Hình 1.3: Hiển thị gợi ý khi soạn thảo trên Notepad

Trang 14

Hình 1.4: Hiển thị gợi ý khi soạn thảo trên Chrome browser

2.1 Giới thiệu đề tài

Đề tài: Xây dựng ứng dụng trên máy điện thoại quản lý lịch làm việc cá nhân.Chương trình cho phép kết nối với Google Calendar để đồng bộ dữ liệu

Mô tả vấn đề:

- Người dùng thường quản lý công việc cá nhân của sinh viên bằng các thao

tác thủ công, và việc lưu trữ thông tin nội dung công việc cũng gặp nhiềukhó khăn Ứng dụng quản lý công việc sẽ thực hiện chức năng quản lý, lưutrữ thông tin để có thể dễ dàng đồng bộ khi online

Yêu cầu đặt ra:

- Sinh viên tạo một lịch học mới hay một việc làm thêm

- Sinh viên sửa đổi thông tin công việc cần thực hiện

- Sinh viện thực hiện xóa các công việc đã làm

- Sinh viên đồng bộ dữ liệu lên google calenda

Trang 15

2.2 Cơ sở lý thuyết

2.2.1 Use-case

Use case là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm bắt yêu cầu chức năng của hệ thống Use case mô tả sự tương tác đặc trưng giữa người dùng bên ngoài (actor) và hệ thống Nó thể hiện ứng xử của hệ thống đốivới bên ngoài, trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng

Nó mô tả các yêu cầu đối với hệ thống, có nghĩa là những gì hệ thống phải làm chứ không phải mô tả hệ thống làm như thế nào Tập hợp tất cả Use case của hệ thống

sẽ mô tả tất cả các trường hợp mà hệ thống có thể được sử dụng

Mỗi use case mô tả cách thức actor tương tác với hệ thống để đạt được mục

tiêu nào đó Một hoặc nhiều kịch bản (scenario) có thể được tạo ra từ mỗi use case,

tương ứng với chi tiết về mỗi cách thức đạt được mục tiêu nào đó Khi mô tả Use case, người ta thường tránh dùng thuật ngữ kỹ thuật, thay vào đó họ sử dụng ngôn ngữ của người dùng cuối hoặc chuyên gia về lĩnh vực đó Để tạo ra use case, cần phải có sự hợp tác chặt chẽ giữa người phân tích hệ thống và người dùng cuối Một trong những cách biểu diễn trực quan phổ biến hiện nay là lược đồ use

case của UML

2.2.2 Client-Server

Mô hình client server hay còn được gọi là mô hình khách – chủ

Trong mô hình client server thì máy khách là các máy tính, các thiết bị điện tử như máy in, máy fax,….các máy khách client gửi yêu cầu đến máy chủ server máy chủ server tiếp nhận yêu cầu, xử lý các yêu cầu đó và trả về kết quả

Nguyên lý hoạt động :

– Client Trong mô hình client/server, người ta còn định nghĩa cụ thể cho mộtmáy client là một máy trạm mà chỉ được sử dụng bởi 1 người dùng với để muốn thểhiện tính độc lập cho nó Máy client có thể sử dụng các hệ điều hành bình thườngnhư Win9x, DOS, OS/2… Bản thân mỗi một client cũng đã được tích hợp nhiềuchức năng trên hệ điều hành mà nó chạy, nhưng khi được nối vào một mạng LAN,WAN theo mô hình client/server thì nó còn có thể sử dụng thêm các chức năng do

Trang 16

hệ điều hành mạng (NOS) cung cấp với nhiều dịch vụ khác nhau (cụ thể là các dịch

vụ máy chủ trên mạng này cung cấp), ví dụ như nó có thể yêu cầu lấy dữ liệu từ mộtserver hay gửi dữ liệu lên server đó…

– Thực tế trong các ứng dụng của mô hình client/server, các chức năng hoạtđộng chính là sự kết hợp giữa client và server với sự chia sẻ tài nguyên, dữ liệu trên

cả hai máy Vai trò của client Trong mô hình client/server, client được coi như làngười sử dụng các dịch vụ trên mạng do một hoặc nhiều máy chủ cung cấp vàserver được coi như là người cung cấp dịch vụ để trả lời các yêu cầu của các clients.Điều quan trọng là phải hiểu được vai trò hoạt động của nó trong một mô hình cụthể, một máy client trong mô hình này lại có thể là server trong một mô hình khác

Ví dụ cụ thể như một máy trạm làm việc như một client bình thường trongmạng LAN nhưng đồng thời nó có thể đóng vai trò như một máy in chủ (printerserver) cung cấp dịch vụ in ấn từ xa cho nhiều người khác (clients) sử dụng

Client được hiểu như là bề nổi của các dịch vụ trên mạng, nếu có thông tin

vào hoặc ra thì chúng sẽ được hiển thị trên máy client

2.2.3 SQL Server

SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc), là công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trongcác cơ sở dữ liệu SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng

để t ương tác với cơ sở dữ liệu quan hệ

Khả năng của SQL vượt xa so với một công cụ truy xuất dữ liệu, mặc d ù đây là mục đích ban đầu khi SQL được xây dựng nên và truy xuất dữ liệu vẫn còn làmột trong những chức năng quan trọng của nó SQL được sử dụng để điều khiển tất

cả các chức năng m à một hệ quản trị cơ sở dữ liệu cung cấp cho người dùng bao gồm:

Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu,

các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành phần dữ liệu

Trang 17

Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực hiện

các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ sở dữliệu

Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các

thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ liệu

Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong cơ

sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao tác cập nhật cũng như các lỗi của hệ thống

2.3 Giải quyết bài toán

2.3.1 Các bước giải quyết bài toán

1) Phân tích và vẽ sơ đồ use-case của hệ thống

Trang 18

2) Phân tích các bảng cơ sở dữ liệu

-Bảng Công việc

Nội dung công việc string

 Get All Work: Lấy danh sách toàn bộ công việc đã tạo

 Get WorkById: Lấy công việc theo id

 Create Work: Tạo mới công việc

 Edit Work: Thực hiện chỉnh sửa công việc

 DeleteWork: Thực hiện xóa công việc

 Sync Data: Thực hiện đồng bộ dữ liệu lên Google Calendar

Trang 19

 Main: Hiển thị danh sách các công việc được lọc theo các nhóm công việc đang được thực thi và các công việc đã được hoàn thành.

 Add: Màn hình cho phép người dùng nhập dữ liệu tạo mới một công việc

 Edit: Màn hình hiển thị chi tiết công viêc, có thể thực hiện thay đổi

và chỉnh sửa, hay xóa công việc

2.3.2 Kết quả thực hiện

Hình 2.1: Màn hình hiển thị danh sách công việc

Trang 21

Hình 2.4: Dữ liệu công việc được đồng bộ lên Google Calendar

Ngày đăng: 12/06/2023, 09:51

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w