Bảng phân công công việc STT | Ho va Công việc Mức độ hiểu về các công việc không phụ Mức độ L | Lý Anh ® - Tìm hiệu qua các tài ® Là người phụ trách tìm hiệu qua cả | Đã hoàn Quân li
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ
Giảng viên hướng dẫn: Thái Hùng Văn
Nhóm sinh viên thực hiện: Nguyễn Hữu Nam - 22127285
Lý Anh Quân - 22127344
Trần Tường Vĩ - 22127453
Tháng 1 2024
Trang 2Mục lục
a _ Thông tin các thành viÊn - Gà 1x H1 9H TH HH gu HH g9 TT hườ 3
b Báng phân công công viỆC Gà HH “HH HH HH Tu TH KH HH gà he 3
>> E5 4 1.2 Tao file ch 0 8n 5
1.4 Mã nguồn bang Python va kiểm tra dữ liệu -. - 5-5-1212 121.2512313 E rre, 10
PIN «- :034444:):) ))H)HAHÂ)H)Ậ),.)Ẳ)4)⁄):-}).,,Ô 12 2.1 Sử dụng giao diện đồ họa của hệ điều hành Window 12 2.2_ Sử dụng dòng lệnh trên cmd - S222 re 15
3.1 Đọc và hiển thị giá trị thập lục phân của số nguyên 4B không dấu tại offset 0 17 3.2 Đọc và hiển thị giá trị thập phân của số nguyên 2B có dấu tại offset 2 18 3.3 Đọc và hiển thị giá trị thập lục phân và thập phân của số nguyên 4B không dấu BE tại
3.4 Đọc & hiển thị giá trị thập phân của số thực 4B IEEE tại offset 4 - 18 3.5 Tăng thêm 1 cho tất cả các giá trị trên và ghỉ lại chúng vào file - - 19 3.6 Thêm vào cuối file chuỗi 8 ký tự ASCII ứng với Mã SV1, con số nguyên 4B ứng với Mã
SV2, chuỗi 8 ký tự UTF16-BE ứng với Mã SV3 19
3.7 Liệt kê dãy byte của nội dung tap tin theo 2 dạng HEX & ASCII << - 20
BB KEE QUAL cee 20
Trang 3
I Thông tin chung
a Thông tin các thành viên
ST MSSV Họ và tên Email
T
1 22127344 Lý Anh Quân laquan22@clc.fitus.edu.vn
2 22127453 Trần Tường Vĩ ttvi22@clc.fitus.edu.vn
3 22127285 Nguyễn Hữu Nam nhnam22@clc.fitus.edu.vn
b Bảng phân công công việc
STT | Ho va Công việc Mức độ hiểu về các công việc không phụ Mức độ
L | Lý Anh ® - Tìm hiệu qua các tài ® Là người phụ trách tìm hiệu qua cả | Đã hoàn
Quân liệu tham khảo, soạn 3 bài và phân chia công việc cho thành đúng
báo cáo chỉ tiết và viết các thành viên ; các nhiệm vụ
chương trình cho bai 1 ® Đã nắm duce cac cong cy dé tạo ra | được giao cũng như sửa các lỗi thư mục (không lập trinh) và hiệu vào đúng tồn don ø trong chương được chương trình được việt ở bài deadline dé trinh 3 Từ đó so sánh với các tập tin ở ra
‘ bai 1 đê thây được sự khác biệt
cũng như hiệu thêm về việc truy
xuât, hiện thị tap tin
2 Trần s - Tìm hiểu và đề ra các * Phố biến cho mọi người trong Đã hoàn
Tường công cụ cân thiệt cho nhóm về công cụ (không lập trình) | thành công
Vĩ việc tạo các thư mục đề tạo ra các thư mục như trong việc và hợp
cũng như tập tin như yêu cầu bai 2 tac tot vor yéu cau trong bai 2 ® Năm bất được các chương trình tạo | các thành Kiêm tra lại xem các thư mục ở bài 1, bài 2 và hiệu được | viên trong tập tin đã được tạo với cách hoạt động của các hàm, thư nhóm
chưa nội dung đúng hay viện cần thiết cho việc lập trình
So sánh được các file thay đôi ra sao sau khi dùng các hàm hay lệnh thay đổi nội dung file
Trang 4
Hữu chương trình truy xuất thư mục cha, thư mục con và tập thành đủ các
các lỗi gặp phải và so s® - Đã hiểu được cách sửa nội dung dugc giao sánh lại so với file#3 ở tập tin thông qua lập trinh để từ đó
bai 1 có thể áp dụng vào trong bài 3 dé
có thê truy xuất vào file đề đọc và
hiển thị nội dung
e®© Hiểu được yeu cầu bài 2 về các công cụ cho việc tạo thư mục và tập tin mà không dùng lập trình
Viết 01 chương trình tạo các tập tin /thư mục với tên; loại;
và nội dung tương ứng như sau:
- Folder #1: “Dirl”; <Normal>; <null>
- Folder #2: “Dir1\Dir1.1”; <Normal>; <null> // "Dir1.1" là
thư mục con của “Dir1”
- Folder #3: “Dirl\Dir1.2”; <Hidden>; <null> // "Dir1.2" là
con của “Dir1” và có thuộc tính Ấn
- File #1: “Dir1\Data1.OS”; <Normal>; <null> // tập tin
“Data1.os” nằm trong thư mục “Dir1”
- File #2: “Dir1\Dir1.2\Data2.txt”, <text>, “OSesìn
22C” // file “Data2.txt” thuộc folder “Dir1.2”
-_ File #3: “Dir1\Dir1.1\Data3.bin”, <binary>, 2B đầu lưu
số nguyên không dau dang Little Endian 2023, 2B kế
tiếp lưu số nguyên Big-Endian 2024, 2B kế lưu số -22Ch,
4B kế lưu số 2024.01, các byte cuối lưu chuỗi Unicode
UTF16 “OSes”
1.1 Tạo folder
- Ta sử dụng ngôn ngữ C++ cùng với thư viện Windows.h để có
xử lý các tập tin trong hệ điều hành window
- _ Với yêu cầu tạo các folder như trên, chúng ta có thể tự viết một
hàm tạo đường dẫn và sử dụng hàm 'CreateDirectory' từ thư
viện windows.h để tạo thư mục [1]
widePath (
Trang 5
Nếu tạo thành công, thông báo về việc tạo thư mục sẽ được in
ra và thuộc tính của thư mục sẽ được đặt băng hàm
SetFileAttributes [2]
1.2 Tạo file và thêm nội dung
Những dòng code này nhận đường dẫn của tập tin cần tạo và
nội dung của tập tin
Sử dụng ofstream để mở tập tin
Nếu không mở được tập tin, thông báo lỗi sẽ được in ra
Nếu mở thành công, nội dung sẽ được ghi vào tập tin và sau đó
đóng tập tin
Thông báo về việc tạo tập tin sẽ được in ra
Trang 6
e Sau đó chúng ta tiến hành điều chỉnh nội dung cho file#3
đúng với yêu cầu đề bài [3]
if (file.is open()) {
sizeof (little_endian) );
sizeof (big_endian) );
sizeof (negative_int));
sizeof (floating _point));
Lae
Bi Data1.os
Date modified 2/20/2024 10:48 PM 2/20/2024 10:48 PM 2/20/2024 11:47 PM
Type File folder File folder
OS File
Trang 7
- Cac file da dugc tao
a Date modified
- File data2.txt có thể xem dưới dạng text qua các ứng dụng hỗ
trợ định dạng txt như notepad
=| kì note socket 22127344.txt Data2.txt Data2.txt Data2
File Edit View
Trang 8- Source code hoàn thiện của chương trình
Trang 10file.write ( (&floating_point), (floating_point));
1.4 Mã nguồn bằng Python và kiểm tra dữ liệu
- Chúng ta cũng có thể sử dụng ngôn ngữ Python dé viét 1
Trang 11
- _ Để có thể kiểm tra xem nội dung file trong file data3.bin da
chính xác như yêu cầu hay chưa, chúng ta có thể viết 1 chương
trình đọc ngược lại file nhị phân để kiểm tra dữ liệu có khớp
556
"OSes');
read_binary_file("D:\Dir1\Dir1.1/Data3.bin")
- Sau khi chạy chương trình, chúng ta sẽ có thể biết được file nhị
phân chúng ta mới tạo ra có đúng dữ liệu đã yêu cầu hay
không
Trang 122 Câu 2
Dùng công cụ (ưu tiên các công cụ có sẵn trong hệ điều
hành - KHÔNG LẬP TRÌNH) tạo các thư mục và tập tin với
tên; loại; và nội dung giống như Bài 1
- Hệ điều hành phục vụ cho chúng ta nhiều công cụ để có thể
tạo các thư mục và tập tin đáp ứng các yêu cầu trên như:
2.1 Sử dụng giao diện đồ họa của hệ điều hành
Window 2.1.1 Tạo thư mục
» _ Mở File Explorer và điều hướng đến nơi bạn muốn tạo thư mục (ví dụ: C:\
Trang 13« Nhấn chuột phải vào không gian trống và chọn "New" ->
Group by
? Properties AMD Software: PRO Edition
re aural
ie ©) Tas
62 Show more options
° _ Đổi tên thư mục mới thành Dir1
« Tiếp theo, trong thư mục Dir1, lặp lại quy trình này dé tạo thư mục con Dir1.1 và Dir1.2
Trang 14
= View
EM _HCMUS bu )ate modiified INa=:ianment 1 04 2024 9 Mic
INa=:ianment 3 01 Lea
Lm 1a 00,
OneDrive - VNU-t
_ JU [ P Q0 các
Dns CW Compress to ZIP file Created: Thursday, February 22, 2024, 9:14:44 AM
BB S6 ghi chép @Biticden Advanced
Trang 15« Trong cửa sổ thuộc tính, đánh dấu ô "Hidden" và nhấn
"OK"
2.1.2 Tao tap tin
¢ Trong thu muc Dirl, nhan chudt phai vao khéng gian tréng va
chon "New" -> "Text Document"
e Đổi tên tập tin mới thành Data1.OS
DA_HCMUS\Dir1\Dir1 Em D+\ HCMUS\Dïr1 x i ThisPC > DATA(D) >» _HCMUS > Dirl > Search Dir1
Mở tập tin Data2.txt, sao chép và dán nội dụng OSes\n22C vào
bên trong và lưu lại
[ P.20 bán x |» ¡g (0200 v72 x 8 D\ HCMUS\DirDir1.2 x aS
€ 4} Ơ ) > ThisPC > DATA(D) >» HCMUS > Di1 > Dir12 Search Dir1.2
Œ@ New ii TW Sort => View
| Documents Date modified lype
e Ta dung PowerShell để tới đến đường dẫn thư mục Dir1\Dir1.1
và tiến hành tạo file nhị phân data3.bin
Trang 162.2 Su dung dong lệnh trên cmd
e Tao thu muc Dir1 [6]
« Tạo tập tin Data1.OS trong thư mục Dir1
¢ Tao tap tin Data2.txt trong thư mục Dir1\Dir1.2 và ghi nội dung
D:\Edge>echo 0Ses> Dir1\Dir1.2\Data2 txt vào tập tin
D:\Edge>echo 22C>> Dir1\Dir1.2\Data2 txt
¢ Tao tap tin Data3.bin trong thu muc Dirl\Dirl.1 và ghi nội
dung nhi phan vao tap tin
« _ Sử dụng các giá trị hex tương ứng với dữ liệu nhị phân
D:\Edge>echo 0300 0000 C67 6900 0109 9600 9000 9000> Dir1\Dir1.1\Data3 bin D:\Edge>echo 90D0 6790 0000 CUFF 0000 4FOQ 5300>> Dirl\Dirl.1\Data3.bin
Trang 17
- Chung ta co thể kiểm tra nội dung các thư mục đã tạo bằng
cách nhập 'dir dir1 /s/w' vào trong command prompt
D:\_HCMUS>dir dir1 /s/w
Volume in drive D is DATA
Volume Serial Number is 022B-1CD5
6 Dir(s) 47,676,997,632 bytes free
Nội dung trong vòng màu vàng cho thấy trong thư mục Dir1 có thư
mục Dir1.1 và tập tin Data1.OS có kích thước file là 0 byte (tập tin
chưa có nội dung)
Nội dung dòng đầu trong vòng xanh cho thấy trong thư mục Dir1
còn có thư mục Dir1.2 (tức thư mục Dir1.2 có thuộc tính nên không
nhìn thấy trong vòng vàng; nội dung dòng còn lại cho thấy trong
Dir1.2 có file Data2.txt có kích thước 9 byte
Nội dung trong vòng đỏ cho biết trong Dir 1.1 có đúng 1 file là
Data3.bin có kích thước 18 bytes
- _ Lệnh Type Dir1\Dir1.2\data2.txt cho ra kết quả nội dung file
Trang 18- _ Lệnh Type Dir1\Dir1.2\data2.txt cho ra kết quả nội dung file Data3.bin là
D:\_HCMUS>type Dir1\Dir1.1\data3 bin
1 Đọc và hiển thị giá trị thập lục phân của số nguyên 4B
không dấu tại offset 0
2 Đọc và hiển thị giá trị thập phân của số nguyên 2B có dấu
5 Tăng thêm 1 cho tất cả các giá trị trên và ghi lại chúng
vào file (theo đúng kiểu, vị trí,
và thứ tự)
6 Thêm vào cuối file chuỗi 8 ký tự ASCII ứng với Mã SV1, con
số nguyên 4B ứng với Mã
SV2, chuỗi 8 ký tự UTF16-BE ứng với Mã SV3
7 Liệt kê dãy byte của nội dung tập tin theo 2 dạng HEX &
ASCI
- _ Đầu tiên chúng ta bắt đầu chương trình bằng cách mở file#3
vừa tạo ở bài 1
Trang 19
3.1 Đọc và hiển thị giá trị thập lục phân của số nguyên 4B không dấu tại offset 0
£ile.seekg (of£set);
unsigned int value;
3.2 Đọc và hiển thị giá trị thập phân của số nguyên 2B
có dấu tại offset 2
file.seekg (offset);
int value;
int maing) {
3.3 Đọc và hiển thị giá trị thập lục phân và thập phân
của số nguyên 4B không dấu BE tại offset 8
file.seekg (offset);
unsigned int value;
<< endl;
i
Trang 20
3.4 Doc & hién thi gia tri thap phan cua s6 thuc 4B
IEEE tai offset 4
file.seekg (offset);
float value;
unsigned int num1;
short num2;
unsigned int num3;
Trang 21
3.7 Liệt kê dãy byte của nội dung tap tin theo 2 dang
HEX & ASCII
Trang 22isprint
3.8 Két qua
p luc phan phan cua
luc han
phan cua so thuc 4B IE dung ta
Trang 23IX Tài liệu tham khảo
[1] V K Kadway, "How do you create a folder in C++?," 29 Dec 2020 [Online]
[2] H B ANDREW S TANENBAUM, MODERN OPERATING SYSTEMS, Vrije Universiteit Amsterdam,
The Netherlands: PEARSON, 2007
[3] Mikhail, "Reading and writing binary file," 2021 [Online]
[4] G Grievance, "Use Notepad++ as HEX-Editor," 4 2 2021 [Online]
[5] Greeshma, "Reading binary files in Python," 25 8 2024 [Online]
[6] S Dev, "Create a folder - Terminal," [Online]
[7] M Rouget, "C++ edit a binary file with another,” 1 10 2014 [Online]