Professional Documents
Culture Documents
KTLT2015 BTL 4b
KTLT2015 BTL 4b
Danh sách sinh viên thực hiện: Võ Văn Chiến ----MSSV: 20130404
Nguyễn Thành Trung----MSSV: 20134171
Dương Xuân Việt ----MSSV : 20134573
Trần Đức ----MSSV :20136988
NguyễnHữuThụ ----MSSV: 20133893
NguyễnVănQuốc ----MSSV: 20133175
Bài tập thực hiện:4b
1
Mô tả bài toán :
Mô tả các thư viện sử dụng xử lý file, xâu để xây dựng thư viện và chương trình xử
lí văn bản file văn bản với các chức năng sau:
- Đọc file văn bản với đường dẫn được người dung nhập vào, báo lỗi nếu không
đúng file văn bản, hoặc định dạng không đọc được
- Hiện các thông tin file
o Số dòng văn bản (số đoạn)
o Số các câu (phân cách bởi dấu “.” hoặc xuống dòng)
o Số các từ
- Tìm kiếm trong file văn bản:
o Người dùng nhập vào 1 xâu, tìm kiếm trong 1 và nhiều file văn bản và trả
về
+Khuôn dạng tìm kiếm tương tự chức năng search trên file explorer
trên windows
Ký tự ? thay thế cho kí tự bất kì
Kí tự * thay thế cho nhiều kí tự
o Hiển thị kết quả như sau
+Số lần xuất hiện của xâu trong tất cả các file văn bản cần tìm
+Số các file có chứa xâu đầu vào
+Với mỗi file có chứa xâu, liệt kê từng câu chứa xâu đó
o Cho người dùng chọn ghi kết quả tìm kiếm ra file
- Thay thế văn bản
o Sau khi tìm được, cho phép người dùng thay thế đoạn văn bản vừa tìm
thấy bằng đoạn văn bản khác, trong tất cả các file có tìm thấy
- Cấu trúc chương trình:
o Thư viện chứa các lớp, hàm xử lý chính (mô tả chi tiết trong báo cáo)
o Chương trình chính để tương tác với người dung, 2 dạng:
+Console
+Windows application, có giao diện đồ họa (tùy chọn, +1 điểm nếu
thực hiện)
2
stt Họ và tên Mã số Công việc Mức độ hoàn Ghi chú
sinh viên thành
1 Võ Văn Chiến 20130404 -Xây dựng hàm Xây dựng Nhóm
thay thế xong hàm thay trưởng
-tổng hợp bài tập thế
2 Nguyễn Thành 20134171 -Xây dựng hàm Xây dựng
Trung thay thế xong hàm thay
-báo cáo phần thay thế
thế
3 Dương Xuân Việt 20134573 -Xây dựng hàm Xây dựng
đọc file xong hàm đọc
-báo cáo phần dọc file
file
4 Trần Đức 20136988 Xây dựng hàm Xây dựng
đọc file xong hàm đọc
file
5 Nguyễn Hữu Thụ 20133893 -Xây dựng hàm Xây dựng
tìm kiếm xong hàm tìm
-báo cáo phần tìm kiếm
kiếm
6 Nguyễn Văn Quốc 20133175 Xây dựng hàm tìm Xây dựng
kiếm xong hàm tìm
kiếm
3
Họ và Tên:
Dương Xuân Việt----MSSV: 20134573-Lớp: Kỹthuật ĐK&TĐH 04-K58
Trần Đức ----MSSV: 20136988---Lớp: Kỹthuật ĐK&TĐH 04-K58
>>Thư viện string.h chứa một số hàm quan trọng được sử dụng:
- gets(<biến chuỗi>):dùng để nhập chuỗi kí tự từ bàn phím.
- fopen_s (< đường dẫn tên tập tin> , < kiểu truy nhập >):Cho phép mở tập tin
nhập vào từ đường dẫn.
- fgetc(< FILE * >) : Đọc một ký tự từ tập tin đang mở.
- fclose(< FILE * >) : Cho phép đóng tập tin đang mở.
- !feof(< FILE * >) : cho phép đọc cho đến hết file thì dừng, không đọc típ
nữa.
5
HọvàTên: NguyễnHữuThụ----MSSV: 20133893
NguyễnVănQuốc----MSSV: 20133175
Lớp: Kỹthuật ĐK&TĐH 05-K58
MôtảcácthưviệnvàTrìnhbàyphần:
“- Tìm kiếm trong file văn bản:
o Người dùng nhập vào 1 xâu, tìm kiếm trong 1 và nhiều file văn bản và trả về
Khuôn dạng tìm kiếm tương tự chức năng search trên file explorer trên windows
Ký tự ? thay thế cho 1 ký tự bất kỳ
Ký tự * thay thế cho nhiều ký tự
o Hiển thị kết quả như sau
Số lần xuất hiện của xâu trong tất cả các file văn bản cần tìm
Số các file có chứa xâu đầu vào
Với mỗi file có chứa xâu, liệt kê từng câu chứa xâu đó
o Cho người dùng chọn ghi kết quả tìm kiếm ra file”
- Ý tưởng của bài làm là ban đầu mình có sẵn 1 hoặc nhiều file văn bản dạng
“abc.txt”. Viết 1 chương trình thỏa mãn các yêu cầu,nhập đường dẫn để đưa file txt
vào(trong chương trình cho phép tối đa 40file văn bản), tìm kiếm 1 xâu kí tự, rồi
trả về các đoạn có xâu cần tìm và đổi màu chữ thành màu vàng. Và hiển thị kết quả
tìm kiếm như yêu cầu đề bài.
1. Để thực hiện yêu cầu của đề bài, em sử dụng các thư viện sau:
1.1 Ban đầu tạo một thư viện lớn là <File.h> và được viết ở phần File.h.
a.Khai báo các thư viện chuẩn có sẵn trong C/C++ đó là:
- iostream_ thưviệnxuất, nhậpchuẩn.
- fstream_thưviệnxửlýđọcghitập tin.
- string_thưviệndùngđểxứlýxâuchuỗikítự.
- Windows.h_ thưviệnđổimàuchữ.
- conio_thưviệndùngđểchờmànhìnhkhihiệnkếtquả.
b. Tạo một số thư viện khác nằm trong thư viện <File.h>:
- void XuLyTimKiemXau(string Xau) – dùng để xử lý việc tìm kiếm xâu trong
tập tin.
- void XuatCau(string Xau)–xuất các câu có chứa xâu cần tìm kiếm,sau khi
tìm kiếm xong xâu sẽ xuất chữ màu vàng tương ứng.
7
Lựachọn 2- nhậpxâucầntìmkiếm, cóthểsửdụngkítựđạidiện “?” thaythếcho 1
kítựbấtkì. (còn “*” emchưalàmđược ???).
Lựachọn 0 – thoátchươngtrìnhđangchạy.
2.Chạychươngtrìnhvàhiểnthịkếtquả.
Ngườidùngcósẵncác file vănbảndạng abc.txt (tốiđa 40 file, file
vănbảnchữachuỗikítựkhôngdấu).
Thựchiệnlầnlượtcácbướccủachươngtrìnhsẽhoànthànhyêucầu.Kếtthúcchươngtrình.
>>cóthểtìmkiếm 1 lúc 1 hoặcnhiều file vănbản.
8
Họ và Tên:
Nguyễn Thành Trung----MSSV: 20134171--Lớp: Kỹthuật ĐK&TĐH 02-K58
Võ Văn Chiến----MSSV: 20130404---Lớp: Kỹthuật ĐK&TĐH 04-K58
Giới thiệu bài toán:
Cho người dung nhập vào 1 xâu , sau khi tìm được, cho phép người dùng thay thế
đoạn văn bản vừa tìm thấy bằng đoạn văn bản khác, trong tất cả các file có tìm
thấy.
Các thư viện được sử dụng dể thực hiện bài toán:
Khai báo các thư viện chuẩn có sẵn trong C đó là:
- Conio.h: thư viện dung để chờ màn hình khi hiện kết quả.
- Stdio.h:thư viện cung cấp cho chúng ta hai hàm nhập và xuất dữ liệu có định
dạng:
- printf(): Hàm xuất có định dạng.
- scanf(): Hàm nhập có định dạng.
- String.h:thư viện dung để xứ lý xâu chuỗi.
>>Thư viện string.h chứa một số hàm quan trọng được sử dụng:
-strlen(<biến chuỗi>):dùng để xác định độ dài của chuỗi.
-gets(<biến chuỗi>):dùng để nhập chuỗi kí tự từ bàn phím.
-memmove( void * destination, const void * source, size_t count ): copy
count bytes từ src tới dest, nếu đích đè lên nguồn thì hàm này đảm bảo data
ở nguồn sẽ được copy trước khi bị ghi đè.
-memcpy(( void * destination, const void * source, size_t count ): copy
count bytes từ src tới dest, nếu đích đè lên nguồn thì hàm này không
đảm bảo data ở nguồn sẽ được copy trước khi bị ghi đè.
Trong bài em sử dụng hàm memmove để cắt đoạn chuỗi cần thay ở trong
file nguồn từ điểm tìm thấy rồi dùng hàm memcpy để dán đoạn chuỗi cần
thay lên file đó.
-Bằng cách so sánh lần lượt từng kí tự của chuỗi nguồn với các kí tự của
chuỗi cần thay,ta xác định được vị trí của chuỗi s1 trong s.
-Từ vị trí đã tìm thấy ta sử dụng hàm memmove và memcpy để cắt và dán
các chuỗi kí tự cần thiết vào file nguồn.
-Sau khi thay thế , ta tiếp tục thay đổi giá trị độ dài của file nguồn và tăng
giá trị của biến chạy để tiếp tục thực hiện tìm kiếm và thay thế.
-Ta tạo ra hai biến con trỏ file fs và fd,1 chỉ đến file có kí tự cần thay thế,1
chỉ đến file để chép lại file đã được sửa
-Cho người dùng nhập đường dẫn để mở file,báo lỗi nếu không mở được.
-Cho người dùng nhập vào chuỗi cần thay thế và chuỗi thay thế từ bàn phím.
-Sử dụng hàm fgets để ghi nội dung từ file nguồn chỉ bởi biến con trỏ fs vào
một mảng kí tự s
-Sử dụng hàm thay thế để thay thế chuỗi kí tự s2 vào mảng kí tự s có chứa
chuỗi cần thay s1, sau đó trả về s.
-Ghi dữ liệu từ mảng s vào file chỉ bởi biến con trỏ fd.
11