Mục tiêu: File
Bài tập 1: Viết chương trình tạo một menu thực hiện các chức năng sau trên file văn bản.
1. Tạo file mới, nội dung là các ký tự được nhập từ bàn phím
2. Đọc file ra màn hình
3. Ghi nối file
4. Nhập 1 ký tự và xem có bao nhiêu ký tự có trong 1 file nào đó.
Hướng dẫn:
B1: Như bài 1 của Assign 1
B2: Như bài 1 của Assign 1. Chú ý ta nên đặt tên cho file là bai4_1.cpp
B3: Trên màn hình soạn thảo, đánh 2 dòng sau để khai báo thư viện cho chương trình:
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream
B4: Tạo hàm main () dưới các lệnh khai báo thư viện
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream

	void main()
	{

	}
B5: Đánh các lệnh sau vào trong hàm main
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream

	void main()
	{
	int chon=0;
	char tenfile[40] ;
	do 
	{
	clrscr() ;
	cout << "MENU" << endl ;
	cout << "\t1. Tao file moi va nhap noi dung cho file do" << endl;
	cout << "\t2. Xuat noi dung mot file ra man hinh" << endl;
	cout << "\t3. Ghi noi them vao mot file" << endl;
	cout << "\t4. Tim so lan xuat hien cua 1 ky tu trong 1 file" << endl;
	cout << "Ban chon tu 1-> 4 de thuc hien chuc nang tren, so khac de thoat";
	cin >> chon;
	switch chon 
	{
	case 1:	
		cout << "nhap ten file moi";
		cin.ignore(1); 
		cin.getline(tenfile,40);
		tao_file(tenfile);
		break;
	case 2:	
		cout << "nhap ten file de hien thi noi dung";
		cin.ignore(1); 
		cin.getline(tenfile,40);
		hien_noidung(tenfile);
		cout << endl << "nhap enter de ket thuc";
		getch();
		break ;
	case 3:	
		cout << "nhap ten file can noi them";
		cin.ignore(1); 
		cin.getline(tenfile,40);
		noi_noidung(tenfile);
		break ;
	case 4:	
		cout << "nhap ky tu can tim";
		cin >> c;
		cout << "nhap ten file de tim";
		cin.ignore(1); 
		cin.getline(tenfile,40);
cout << "so lan xuat hien cua ky tu" << c << "trong file la" << tim_ky_tu(tenfile, c);
		cout << endl << "nhap enter de ket thuc";
		getch();
		break;
	sdefault: 
		cout << "ban phai nhap so tu 1-> 4"; 
		break;
	}
	}
	while(chon >= 1 && chon <= 4);
	}
B6: Thực thi hàm tao_file() để thực thi chức năng thứ 1
	#include 	// thu vien cho ham cin va cout
	#include 	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream

	void main()
	{
	... // nhu buoc B5
	}

	void tao_file (char *tenfile)
	{
	ofstream f(tenfile); // khai bao mot stream f ket voi file tenfile
	char c;
	cout << "nhap vao cac ky tu, ket thuc bang ky tu 0" << endl;
	do
	{
		cin >> c;
		if(c !='0') f << c; // ghi c vao file
	}
	while(c != '0');
	f.close(); // chu y nho dong file khi ket thuc
	}
B7: Thực thi hàm hien_noidung () đê thực thi chức năng thứ 2
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream

	void main()
	{
	... // nhu buoc B5
	}

	void tao_file (char *tenfile)
	{
	... // nhu buoc B6;	
	}

	void hien_noidung(char *tenfile)
	{
	ifstream f(tenfile);
	char c;
	cout << "noi dung cua file" << endl;
	while(f>>c)
	{ 
		cout << c << "";
	}
	f.close();
	}
B8: Thực thi hàm noi_noidung () đê thực thi chức năng thứ 3
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream
	void main()
	{
	... // nhu buoc B5
	}

	void tao_file (char *tenfile)
	{
	... // nhu buoc B6;	
	}
	
	void hien_noidung(char *tenfile)
	{
	... // nhu buoc B7
	}

	void noi_noidung(char *tenfile)
	{
	ofstream f(tenfile, ios::app);
	char c ;
	cout << "nhap vao cac ky tu de noi vao file cho truoc ket thuc bang ky tu 0" << endl;
	do
	{
		cin >> c;
		if(c!='0') f << c;
	}
	while(c != '0');
	f.close();   
	}
B9: Thực thi hàm tim_ky_tu () đê thực thi chức năng thứ 4
	#include   	// thu vien cho ham cin va cout
	#include   	// thu vien cho ham getch
	#include 	// thu vien cho ifstream và ofstream
	void main()
	{
	... // nhu buoc B5
	}
	
	void tao_file (char *tenfile)
	{
	... // nhu buoc B6
	}

	void hien_noidung(char *tenfile)
	{
	... // nhu buoc B7
	}

	void noi_noidung(char *tenfile)
	{
	... // nhu buoc B8	
	}

	int tim_ky_tu(char *tenfile, char c)
	{
	ifstream f(tenfile);
	char tam;
	int dem=0;
	while(f>>tam)
		{
		if(tam==c)
		dem++;
		}
	f.close();
	return dem;
	}
B10: Nhấn F2 để lưu file trước khi chạy
B11: Nhấn Ctrl+F9 để biên dịch và chạy chương trình. Kết quả như các hình sau:
Chức năng 1 Chức năng 2 Chức năng 3 Chức năng 4
Bài tập 2: Viết chương trình mã hòa và giải mã một file văn bản sao cho nếu file đó đã mã hóa rồi thì không mã hóa nữa. Tương tự như vậy, nếu đã giải mã rồi thì không giải mã nữa
Chú ý: quy luật mã hóa là dịch các ký tự về trái 5. Ví dụ: a -> e, ...
Gợi ý: Chương trình nên có chức năng xem nội dung một file để kiểm tra file mã hóa.
Kết quả:
Chức năng 1 Chức năng 2
Bài tập 3: Viết chương trình tạo một file nhị phân chứa struct các sinh viên gồm các trường sau: tên, namsinh, điểm HK1 và HK2. Chương trình cho phép tạo ra một menu sau
1. Tạo file mới
2. Thêm sinh viên mới vào file
3. In ra màn hình thông tin một sinh viên có tên được nhập từ bàn phím
Kết quả chương trình:
Chức năng 1 Chức năng 2 Chức năng 3 Chức năng 4