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

Báo cáo lập trình hệ thống input:output write a c program to demonstrate file and folder coppy

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Báo cáo lập trình hệ thống input/output - Write a c program to demonstrate file and folder coppy
Tác giả Võ Thanh Tâm, Đỗ Thiên Thắng, Lê Văn Thanh, Lê Thu Thảo
Người hướng dẫn TS. Hoàng Hữu Đức
Trường học Đại học Đà Nẵng
Chuyên ngành Khoa học máy tính
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 18
Dung lượng 1,18 MB

Nội dung

Hoàng Hữu ĐứcLỜI MỞ ĐẦU Trong lập trình, Input/Output I/O của việc sao chép tệp tin và thư mục là quá trình truyền thông giữa các tệp tin và thư mục trong hệ thống tệp.. Quá trình I/O co

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT – HÀN



BÁO CÁO LẬP TRÌNH HỆ THỐNG INPUT/OUTPUT - WRITE A C PROGRAM TO DEMONSTRATE FILE AND

FOLDER COPPY

Sinh viên thực hiện: VÕ THANH TÂM - 21IT309

ĐỖ THIÊN THẮNG - 21IT378

LÊ VĂN THANH - 21IT172

LÊ THU THẢO - 21IT447

Giảng viên hướng dẫn : TS HOÀNG HỮU ĐỨC

Đà Nẵng, ngày 08 tháng 10 năm 2023

Trang 2

GVHD: TS Hoàng Hữu Đức

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT – HÀN



BÁO CÁO LẬP TRÌNH HỆ THỐNG INPUT/OUTPUT - WRITE A C PROGRAM TO DEMONSTRATE FILE AND

FOLDER COPPY

Sinh viên thực hiện: VÕ THANH TÂM - 21IT309

ĐỖ THIÊN THẮNG -21IT378

LÊ VĂN THANH - 21IT172

LÊ THU THẢO - 21IT447

Giảng viên hướng dẫn : TS HOÀNG HỮU ĐỨC

Đà Nẵng, ngày 08 tháng 10 năm 2023

Trang 3

GVHD: TS Hoàng Hữu Đức

LỜI MỞ ĐẦU

Trong lập trình, Input/Output (I/O) của việc sao chép tệp tin và thư mục là quá trình truyền thông giữa các tệp tin và thư mục trong hệ thống tệp Quá trình I/O copy bao gồm đọc dữ liệu từ nguồn (file hoặc folder gốc) và ghi dữ liệu vào đích (file hoặc folder đích)

Mục đích chính của thuật toán I/O được thiết kế để thực hiện quá trình truyền thông tin giữa các tệp tin và thư mục trong hệ thống tệp tin để tạo bản sao chính xác Điều này đảm bảo rằng nội dung của tệp tin hoặc thư mục được sao chép một cách toàn vẹn và chính xác, đảm bảo tính toàn vẹn dữ liệu trong quá trình sao chép

Cuối cùng, thông qua việc nghiên cứu và phân tích thuật toán I/O trong tệp tin và thư mục, nhóm em hy vọng đưa ra được cái nhìn tổng quan về quá trình sao chép tệp tin

và thư mục

LỜI CẢM ƠN

Trang 4

GVHD: TS Hoàng Hữu Đức

Để thực hiện và hoàn thành tốt báo cáo này, chúng em đã nhận được sự giúp đỡ và hướng dẫn rất tận tình của các thầy cô thuộc Khoa Khoa học máy tính –trường đại học Công Nghệ Thông Tin và Truyền Thông Việt Hàn Em xin cảm ơn các thầy cô thuộc bộ môn chuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quý báu

và cần thiết trong suốt thời gian qua để chúng em có thể thực hiện và hoàn thành báo cáo của mình Đặc biệt chúng em xin chân thành cảm ơn thầy Hoàng Hữu Đức, người đã trực tiếp hướng dẫn chúng em trong thời gian thực hiện báo cáo này

Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tôi trong quá trình nghiên cứu và thực hiện báo cáo Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm nên báo cáo không tránh khỏi những sai xót Em rất mong nhận được sự thông cảm của quý thầy cô và mong đón nhận những góp ý của thầy cô và các bạn

Chúng em xin chân thành cảm ơn!

NHẬN XÉT CỦA GIẢNG VIÊN

Trang 5

GVHD: TS Hoàng Hữu Đức

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Đ Nng, ngy 08 tháng 10 năm 2023

Giảng viên hướng dẫn

TS Hoàng Hữu Đức

MỤC LỤC

Trang 6

GVHD: TS Hoàng Hữu Đức

LỜI MỞ ĐẦU 3

LỜI CẢM ƠN 4

NHẬN XÉT CỦA GIẢNG VIÊN 5

MỤC LỤC 6

CHƯƠNG 1 GIỚI THIỆU VỀ LẬP TRÌNH HỆ THỐNG 7

1.1 Giới thiệu về môn học 7

1.2 Giới thiệu về các kỹ thuật 7

CHƯƠNG 2 GIỚI THIỆU VỀ ĐỀ TÀI 9

2.1 Tổng quan về đề tài 9

2.2 Xây dựng thuật toán 9

2.2.1Thuật toán 9

2.2.2 Các thuật toán 10

CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 11

3.1 Triển khai xây dựng chương trình 11

3.1.1 Giới thiệu về ngôn ngữ, thư viện đã sử dụng trong hệ thống 11

3.1.2 Mã nguồn của hệ thống 13

Trang 7

GVHD: TS Hoàng Hữu Đức

CHƯƠNG 1 GIỚI THIỆU VỀ LẬP TRÌNH HỆ THỐNG

1.1 Giới thiệu về môn học

Môn học lập trình hệ thống là một phần quan trọng của chương trình học ngành công nghệ thông tin và liên quan chặt chẽ đến việc phát triển và quản lý các hệ thống phần mềm phức tạp

Lập trình hệ thống là công việc viết những phần mềm cho hệ thống ( máy tính) Điểm khác biệt chủ yếu của lập trình hệ thống đối với lập trình ứng dụng là lập trình ứng dụng nhằm viết những phần mềm phục vụ cho người dùng máy tính ( ví dụ: chương trình

xử lý văn bản), trong khi đó, lập trình hệ thống nhằm xây dựng những phần mềm phục vụ cho phần cứng (hệ thống) máy tính (ví dụ: chương trình chống phân mảnh đĩa cứng) Nó cũng đòi hỏi phải có những hiểu biết sâu hơn về phần cứng máy tính

Hệ thống ở đây có thể là một máy chủ, một mạng, một hệ thống nhúng hoặc một hệ thống phân tán lớn Lập trình hệ thống liên quan đến việc xây dựng và quản lý cả phần cứng và phần mềm của hệ thống này

Ngôn ngữ lập trình: Lập trình hệ thống thường được thực hiện bằng các ngôn ngữ lập trình như C, C++, Python Những ngôn ngữ này cung cấp sức mạnh và kiểm soát cao cho các lập trình viên khi họ xây dựng ứng dụng và dịch vụ hệ thống

Lập trình hệ thống đóng vai trò quan trọng trong việc đào tạo những chuyên gia trong lĩnh vực công nghệ thông tin, giúp họ có kiến thức và kỹ năng cần thiết để xây dựng, quản lý và bảo vệ các hệ thống máy tính phức tạp trong thế thới kỹ thuật ngày nay

1.2 Giới thiệu về các kỹ thuật

Môn lập trình hệ thống liên quan đến nhiều kỹ thuật và công cụ khác nhau để xây dựng, quản lý, và duy trì các hệ thống máy tính phức tạp

Kỹ thuật Quản lý Tài nguyên: Đây là việc quản lý các tài nguyên như bộ nhớ, CPU, ổ cứng và mạng trên hệ thống Sinh viên học cách cấp phát và giải phóng tài nguyên một cách hiệu quả để đảm bảo tính nhất quán và hiệu suất của hệ thống

Kỹ thuật Tiến trình và Luồng: Học cách tạo và quản lý các tiến trình và luồng làm việc trên hệ thống Điều này bao gồm việc sử dụng thư viện và API để đồng bộ hóa và tương tác giữa các tiến trình và luồng

Kỹ thuật Giao tiếp Mạng: Lập trình hệ thống thường liên quan đến giao tiếp qua mạng Sinh viên học cách sử dụng giao thức mạng như TCP/IP và UDP để tạo và quản lý kết nối mạng

Trang 8

GVHD: TS Hoàng Hữu Đức

Kỹ thuật Lập trình hệ thống: Đây là khía cạnh cốt lõi của môn học, bao gồm việc viết mã để phát triển ứng dụng hệ thống Sinh viên học cách làm việc với ngôn ngữ lập trình như C, C++, và Python để xây dựng các ứng dụng hệ thống đáng tin cậy và hiệu quả

Kỹ thuật Hệ điều hành: Học về cách làm việc với hệ điều hành và sử dụng các API hệ thống để quản lý tệp tin, tiến trình và tài nguyên hệ thống

Kỹ thuật Bảo mật Hệ thống: Quản lý an ninh hệ thống là một phần quan trọng của lập trình hệ thống Sinh viên học cách bảo vệ hệ thống khỏi các mối đe dọa và tấn công mạng bằng cách triển khai các biện pháp bảo mật như xác thực, ủy quyền và mã hóa dữ liệu

Kỹ thuật Hiệu suất và Tối ưu hóa: Sinh viên học cách tối ưu hóa mã nguồn và cấu hình hệ thống để đảm bảo hiệu suất tốt nhất Điều này liên quan đến sử dụng công cụ hiệu suất và phân tích chức năng của hệ thống

Kỹ thuật Gỡ lỗi và Sửa lỗi (Debugging and Error Handling): Học cách xử lý lỗi và gỡ lỗi trong các ứng dụng và hệ thống để đảm bảo tính ổn định và tin cậy của chúng

Các kỹ thuật này cung cấp nền tảng cho việc phát triển và quản lý các hệ thống máy tính phức tạp, và chúng rất quan trọng trong lĩnh vực lập trình hệ thống, làm cơ sở cho việc phát triển và duy trì các hệ thống máy tính phức tạp và yêu cầu kiến thức chuyên sâu

và kỹ năng thực hành

Trang 9

GVHD: TS Hoàng Hữu Đức

CHƯƠNG 2 GIỚI THIỆU VỀ ĐỀ TÀI 2.1 Tổng quan về đề tài

Thuật toán I/O (Input/Output) là một loại thuật toán trong lĩnh vực khoa học máy tính và

hệ thống máy tính, tập trung vào việc xử lý dữ liệu đầu vào và đầu ra Đề tài này tập trung vào việc sao chép tệp tin và thư mục trong hệ thống, đóng vai trò quan trọng trong việc tối ưu hóa hiệu suất của hệ thống

Vậy nên thuật toán I/O được dùng để sao chép tệp tin và thư mục là một hoạt động quan trọng trong hệ thống máy tính Khi sao chép, các tệp tin và thư mục được nhân bản từ một vị trí nguồn sang một vị trí đích khác trên cùng hoặc khác hệ thống lưu trữ Việc sao chép có nhiều ứng dụng và mục đích Một trong những ứng dụng phổ biến nhất

là sao lưu dữ liệu Bằng cách sao chép các tệp tin và thư mục quan trọng, ta tạo ra một bản sao dự phòng để đảm bảo an toàn dữ liệu Trong trường hợp dữ liệu bị mất, hỏng hoặc bị xóa một cách không đáng ý, ta có thể khôi phục lại từ bản sao đã sao chép Ngoài ra, sao chép cũng được sử dụng để chia sẻ dữ liệu giữa các người dùng và thiết bị khác nhau Bằng cách sao chép tệp tin và thư mục, ta có thể truyền gửi dữ liệu từ một hệ thống máy tính sang hệ thống khác, hoặc chia sẻ dữ liệu với người dùng khác trên cùng một hệ thống

Sao chép cũng hữu ích trong việc di chuyển dữ liệu Khi muốn di chuyển một tệp tin hoặc thư mục từ vị trí hiện tại sang vị trí mới, bạn có thể sao chép nó và sau đó xóa bản gốc Điều này giúp đảm bảo rằng dữ liệu không bị mất và đặt đúng vị trí mới mà bạn mong muốn

Trên thực tế, việc sao chép tệp tin và thư mục là một phần quan trọng trong quản lý dữ liệu và tổ chức thông tin trên hệ thống máy tính Nó cung cấp khả năng đảm bảo an toàn

dữ liệu, chia sẻ dữ liệu và di chuyển dữ liệu một cách dễ dàng và tiện lợi

2.2 Xây dựng thuật toán

2.2.1Thuật toán

Thuật toán I/O là một quy trình quản lý hoạt động đầu vào/đầu ra trong hệ thống máy tính Nó có nhiệm vụ điều phối và tối ưu hóa việc truyền dữ liệu giữa các thiết bị lưu trữ như ổ cứng, bộ nhớ đệm và các thiết bị ngoại vi

Trang 10

GVHD: TS Hoàng Hữu Đức

Khi một yêu cầu I/O được tạo ra, thuật toán I/O sẽ đảm bảo rằng dữ liệu được truyền đi

và nhận về một cách hiệu quả và đúng đắn Nó có thể sử dụng các kỹ thuật như định thời,

ưu tiên, đoạn chia nhỏ dữ liệu, hoặc các thuật toán lập lịch để quản lý hoạt động I/O và đảm bảo tính toàn vẹn dữ liệu

Mục tiêu của thuật toán I/O là tối ưu hóa hiệu suất I/O bằng cách giảm thời gian truyền

dữ liệu, tối đa hóa băng thông sử dụng và đảm bảo tính nhất quán của dữ liệu Điều này đòi hỏi sự cân nhắc và tối ưu hóa các yếu tố như thứ tự xử lý yêu cầu, định thời, ưu tiên

và phân chia tài nguyên I/O

2.2.2 Các thuật toán

2.2.2.1 Thuật toán sao chép tệp tin

 Bước 1 :Mở tệp nguồn để đọc bằng cách sử dụng hàm fopen Nếu việc mở tệp không thành công, chương trình in ra thông báo “không thể mở tệp nguồn” và thoát khỏi chương trình với lỗi exit_failure

 Bước 2 : Mở tệp tin đích để ghi bằng cách sử dụng hàm fopen Nếu việc mở tệp không thành công, chương trình in ra thông báo “ không thể tạo tệp đích” và thoát khỏi chương trình với lỗi exit_failure

 Bước 3: Sử dụng một vòng lặp while và hàm fgetc để đọc từng kí tự từ tệp nguồn cho đến khi gặp kí tự kết thúc tệp

 Bước 4:Sử dụng hàm fputc để ghi từng kí tự đã đọc được từ tệp nguồn vào tệp đích

 Bước 5:Đóng tệp nguồn và tệp đích bằng cách sử dụng hàm fclose

 Bước 6: In ra thông báo “sao chép tệp thành công”

2.2.2.2 Thuật toán sao chép thư mục

 Bước 1 : Tạo một chuỗi lệnh sao chép thư mục bằng cách sử dụng hàm sprint Chuỗi này được tạo từ lệnh hệ thống cp –r, đường dẫn thư mục nguồn và đường dẫn thư mục đích

 Bước 2 : Sử dụng hàm system để thực thi lệnh sao chép thư mục Hàm này sẽ chạy chuỗi lệnh đã tạo ở bước trước và trả về giá trị 0 nếu lệnh được thực thi thành công

 Bước 3 : Nếu giá trị trả về từ hàm system là 0, chương trình in ra thông báo “sao chép thư mục thành công” Ngược lại, in ra thông báo “Không thể sao chép thư mục”

Trang 11

GVHD: TS Hoàng Hữu Đức

CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 3.1 Triển khai xây dựng chương trình

3.1.1 Giới thiệu về ngôn ngữ, thư viện đã sử dụng trong hệ thống

a) Ngôn ngữ: C

Ngôn ngữ lập trình C là một ngôn ngữ máy tính mạnh mẽ và cổ điển đã được phát triển vào những năm 1970 tại Bell Labs bởi Dennis Ritchie Đây là một số điểm quan trọng về ngôn ngữ lập trình C:

 Lịch sử và ảnh hưởng: C là ngôn ngữ lập trình cổ điển và đã ảnh hưởng sâu rộng đến nhiều ngôn ngữ lập trình khác như C++, C#, và Python Nó cũng đóng góp lớn vào việc phát triển hệ điều hành Unix

 Cú pháp đơn giản: Có cú pháp đơn giản và dễ đọc, với các quy tắc cơ bản như dấu chấm phẩy (;) để kết thúc câu lệnh và dấu ngoặc nhọn ({}) để định nghĩa phạm vi

 Hướng thủ tục: C là một ngôn ngữ hướng thủ tục, tức là mã nguồn được tổ chức thành các hàm hoặc thủ tục riêng lẻ Điều này giúp quản lý mã nguồn

dễ dàng và tái sử dụng code

 Gần sát phần cứng: C cho phép truy cập trực tiếp vào bộ nhớ và phần cứng của máy tính, làm cho nó rất phù hợp cho việc phát triển các ứng dụng máy tính với hiệu năng cao và các ứng dụng nhúng

 Đa nền tảng: Mã nguồn C có khả năng di động, có nghĩa là bạn có thể viết

mã trên một nền tảng và biên dịch nó trên nhiều hệ thống khác nhau mà không cần sửa đổi nhiều

 Bộ dựng tạo mạnh mẽ: Có nhiều bộ dựng tạo mạnh mẽ như GCC (GNU Compiler Collection) cho phép biên dịch mã nguồn C trên nhiều nền tảng khác nhau

 Cộng đồng lớn và tài liệu phong phú: Có một cộng đồng lập trình viên đông đảo và nhiều tài liệu học tập và hỗ trợ trực tuyến, giúp người mới học C dễ dàng tìm kiếm thông tin và giúp đỡ

Ngôn ngữ lập trình C vẫn được sử dụng rộng rãi trong các lĩnh vực như phát triển

hệ điều hành, phần mềm nhúng, viết ứng dụng có hiệu năng cao, và nhiều ứng dụng khác,

là một công cụ mạnh mẽ trong tay lập trình viên

b) Thư viện: stdio.h

Trong ngôn ngữ lập trình C, thư viện stdio.h được coi là một trong những thư viện quan trọng nhất Nó cung cấp các chức năng và tính năng để thực hiện các hoạt động

Trang 12

GVHD: TS Hoàng Hữu Đức

nhập xuất dữ liệu từ và đến các thiết bị trong chương trình Điều này có nghĩa là thư viện stdio.h cho phép chúng ta đọc dữ liệu từ bàn phím hoặc tệp tin và ghi dữ liệu ra màn hình hoặc tệp tin

Thư viện stdio.h chứa một số hàm quan trọng như printf(), scanf(), fopen(), fclose(),

và nhiều hàm khác Đây là những hàm được sử dụng rộng rãi trong lập trình C để thực hiện các hoạt động nhập xuất chuẩn

 Hàm printf(): Được sử dụng để hiển thị dữ liệu trên màn hình Nó cho phép bạn định dạng và in các giá trị của các biến hoặc ký tự chuỗi

 Hàm scanf(): Được sử dụng để đọc dữ liệu từ bàn phím Bạn có thể sử dụng scanf() để đọc và gán giá trị cho các biến tương ứng với các định dạng được xác định rõ ràng

 Hàm fopen(): Được sử dụng để mở một tệp tệp ở chế độ đọc hoặc ghi chỉ Hàm này trả về một con trỏ đến tệp tệp được mở, cho phép bạn thực hiện các hoạt động đọc và ghi trên tệp tệp

 Hàm fclose(): Được sử dụng để đóng một tệp tin đã mở trước đó Điều này đảm bảo rằng tất cả dữ liệu được ghi vào tệp tệp và tài nguyên được giải nén một cách chính xác

 Hàm fprintf(): Tương tự như printf(), nhưng được sử dụng để đưa dữ liệu vào một tệp tệp thay vì màn hình

 Hàm fscanf(): Tương tự như scanf(), nhưng được sử dụng để đọc dữ liệu từ một tệp tệp thay vì từ bàn phím

Sử dụng thư viện stdio.h trong ngôn ngữ lập trình C mang lại nhiều lợi ích quan trọng Dưới đây là một số lợi ích chính khi sử dụng thư viện stdio.h:

 Đầu vào và đầu ra chuẩn: stdio.h cung cấp các công cụ để làm việc với đầu vào và đầu ra chuẩn Bằng cách sử dụng các hàm như printf() và scanf(), bạn có thể dễ dàng nhập và xuất dữ liệu qua bàn phím và màn hình Điều này cho phép bạn tương tác với người dùng và hiển thị kết quả của chương trình một cách thuận tiện

 Đọc và ghi tệp tệp: stdio.h cung cấp các hàm như fopen(), fclose(), fprintf()

và fscanf() để làm việc với tệp tệp Bằng cách sử dụng các hàm này, bạn có thể mở, đọc và ghi dữ liệu từ và vào các tệp tệp trên cứng Điều này cho phép bạn xử lý dữ liệu từ kho lưu trữ tệp tin hoặc lưu trữ kết quả tính toán của chương trình

 Dữ liệu định dạng: stdio.h cho phép bạn định dạng dữ liệu khi hiển thị màn hình hoặc ghi vào tệp tệp Bằng cách sử dụng các định dạng đặc tả, chẳng hạn như %d, %f, %s, bạn có thể kiểm soát cách hiển thị hoặc lưu trữ dữ

Ngày đăng: 20/12/2024, 16:26

w