You are on page 1of 11

Trường Đại học Bách Khoa Hà Nôi

BÁO CÁO KĨ THUẬT LẬP TRÌNH

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

Phần Bài tập được giao :


- 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ừ
Trình bày bài làm :
-Thư viện bao gồm :
- 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:
- 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.

Chức năng của chương trình:


- Ý 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 có chứa chuỗi kí tự mà phần trước đã tìm thấy. 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,sau đó Hiện các
thông tin file gồm có :
+ Số dòng văn bản (số đoạn)
+ Số các câu (phân tách bởi dấu “.”)
4
+ Số các từ (phân cách bởi dấu “ “ hoặc dấu “.”)
Hoạt động của chương trình :
- Ban đầu gán số dòng bằng 1.Sau đó mỗi khi gặp kí tự xuống dòng “\n”,số
dòng sẽ tăng lên 1
- Số từ và số câu cũng tương tự nhưng được gán ban đầu bằng 0 sẽ tăng lên
1 khi gặp khoang trắng và kí tự “.”
- Gọi hàm trong chương trình chính :Tạo ra biến con trỏ fs chỉ đến file cần
mở.
-Cho người dùng nhập đường dẫn để mở file,báo lỗi nếu không mở được.
- Sử dụng hàm !feof cho phép đọc cho đến hết file thì dừng, không đọc típ
nữa.
-Sử dụng hàm fgetc để Đọc một ký tự từ tập tin đang mở,nếu gặp kí tự đặc biệt
thì sẽ tăng giá trị các biến đến lên.
- Cứ thế cho đến khi đọc hết file,chương trình sẽ dừng lại và in kết quả ra
màn hình.
-Đóng file.
Đánh giá kết quả,các điểm hạn chế.
- Chưa đếm được từ nếu trong văn bản có sử dụng dấu ngoặc đơn hoặc ngoặc
nháy.

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ả.

>>Trongthưviện “string” sửdụngmộtsốhàmquantrọng :


getline(std::cin,<bien>);
- Định nghĩa : thuộc lớp namespace std. Có chức năng nhận các thông tin từ
bàn phím qua hàm ( std::cin ) sau đó chuyền vào biến chỉ định.
6
- Hàm getline sử dụng dưa trên việc thông qua lưu trữ giá trị hàm cin nhận
vào. Ở đây cin chỉ nhận từng lần nhập liệu sau đó sẽ kết thúc khi gặp khoảng
trắng hay xuống hàng. vì thế getline lưu trư toàn bộ thông tin và truyền vào
biến.

s.length;hiểu là trả về độ dài của chuỗi s.


>> Đối với thư viện “Windows.h” sử dụng hàm :
HANDLE hConsoleColor;
hConsoleColor = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsoleColor, k)
- Dùngđểđổimàuchữđen sang màuvàng (k=14).

- Trong lệnh SetConsoleTextAttribute(hConsoleColor, k); thì k có nghĩa là


tham số màu… có thể chọn từ 0 -> 255… nếu quá 255 nó sẽ tự quay lại 0
theo chu kỳ, tức là 256 thì màu sẽ giống như
0.Trongchươngtrìnhnàyemchỉquantâmđến 2 màuvàngvàtrắng, nên k
đượcchọn k=14 đổi sang màuvàng, k=7 đổi sang màutrắng.
(lệnhnàyemtìmhiểuthêmtrênmạng).

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.

1.2 Xâydựngmộtcấutrúc“ struct File” .


Baogồm 3 biếntựtạodướiđây.
string Path;Đường dẫn file.
int SoLanXuatHienXau;Mỗi file tương ứng lưu số lần xuất hiện của xâu
nhập vào.
string* Cau;Lưu các câu chứa xâu tìm kiếm.
>>Tất cả các hàm và biến khai báo ở trên sẽ được định nghĩa trong phần
“File.cpp”.
>> Chương trình chính được viết ở “main.cpp”
Có 3 lựachọnchính:
Lựachọn 1- nhậpđườngdẫn file vănbảndạngabc.txt,đểghivănbảnvàochươngtrình.

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 đó.

Chức năng chương trình:


- Ý 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” có chứa chuỗi kí tự mà phần trước đã tìm thấy. 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, sau đó chương trình sẽ dò tìm
vị trí của xâu kí tự đó trong văn bản rồi sẽ thay thế xâu kí tự đó bằng xâu kí tự mới.
9
-Chức năng thay thế được thể hiện trong file nguồn: …
Gồm hàm thay thế: int thaythe(char *s1, char*s2) và các biến khai báo
Hoạt động của chương trình:
1.Xây dựng hàm thay thế chuỗi kí tự:
-Hàm gồm ba biến con trỏ:
+s:là chuỗi nguồn chứa kí tự cần thay thế.
+s1:là chuỗi kí tự cần thay thế.
+s2:là chuỗi kí tự được thay thế vào file nguồn.

-Xác định độ dài của từng chuỗi

-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ế.

-Hàm trả về giá trị của chuỗi s.

2.Thực hiện gọi hàm ở chương trình chính

-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.

-Hiện thị kết quả file đã được sửa.


10
-Đóng file.

Đánh giá kết quả:


- Thực hiện lần lượt các bước của chương trình sẽ hoàn thành yêu cầu . Kết thúc
chương trình.
-Các điểm hạn chế:
+Chương trình còn dài,chưa tối ưu được chương trình.
+Chưa viết được chương trình để mở nhiều file cùng một lúc.

11

You might also like