Ở đây chúng ta sẽ thảo luận về nhiệm vụ sau đây. Điều này là cần thiết để tạo một dự án trong C ++.
Hãy bắt đầu ở đây,
Chương trình đã được sử dụng (thêm mã dòng) để dễ hiểu. Mỗi tùy chọn được đặt trong các khối khác nhau để làm cho chương trình có thể đọc được. Để có được đầu ra tốt hơn của chương trình, hãy thực thi Turbo trên C ++.
Nó có menu Lựa chọn như sau-
Nếu bạn muốn, bạn có thể cải thiện nó hơn nữa bằng cách thêm các tùy chọn khác như Sao lưu cơ sở dữ liệu, định dạng cơ sở dữ liệu, khôi phục cơ sở dữ liệu, đăng nhập người dùng, v.v. Điều này sẽ xóa xử lý tệp và khái niệm của bạn cũng như cải thiện kỹ năng lập trình của bạn. tốt hơn là xóa khái niệm.
Khối này là của các tệp tiêu đề, bằng cách đưa ra nhận xét trong đó, chúng tôi đã nói với chức năng được xác định trước của chúng.
// header file include
#include<iostream.h>
#include<stdio.h> rename and remove
#include<stdlib.h> // exit()
#include<iomanip.h> // setw()
#include<fstream> // file handling //data member and member function declaration
Tạo tên lớp học là sinh viên
Một lớp học trong chương trình, có tên là sinh viên, đã được tuyên bố. Trong lớp này công khai, một số hàm do người dùng xác định đã được khai báo. Ngoài ra, nhà xây dựng cũng đã được tuyên bố-
class student
{
int roll;char sname[29];
char fname[20],mname[20];
public:
// function declaration in public mode
student(void); // constructor declaration for intro wizard
~student(void){ } // destroy object initialized by constructor
void input_record(void); // write record into file
void putdata_record(void); // display all record
void putdata_form(void); // create a template to displaying record on monitor
void search_record(); // search a specific record
void total(); // properties of program
void modify_form(void); // create a template to modifying record
void modify_record(); // modify record into file
void delete_record(); // delete spacific record
}obj; // constructor called automatically
Đây là phần giới thiệu của chương trình được hiển thị ở đầu chương trình. Chức năng hệ thống (tạm dừng) giữ màn hình.
student::student(void)
{
clrscr();
cout<<"/t/t/tThis program clear some concept of file handling/n";
cout<<"/t/t";
system("pause");
}
Để chèn bản ghi vào tệp
Hàm input_record() được sử dụng để viết một tệp sẽ được gọi bằng cách khác,
Một tệp đã được tạo với tên cơ sở dữ liệu trong chương trình. Với hàm input_record() chúng ta ghi dữ liệu vào file này. Lưu ý rằng ở đây chúng ta đã sử dụng phương pháp ghi dữ liệu, dữ liệu trong file sẽ được lưu trữ ở định dạng nhị phân –
//get record by end user
void student::input_record(void)
{
ofstream fout;
cout<<"INSERT RECORD/n";
fout.open("database",ios::app|ios::binary);
cout<<"Enter roll no: ";
cin>>roll;
cout<<"Enter stuname: ";
gets(sname);
cout<<"Enter father name: ";
gets(fname);
cout<<"Enter mother name: ";
gets(mname);
fout.seekp(0,ios::beg); //go to start
fout.write((char*)&obj,sizeof(obj));
fout.close();
cout<<"/n/n/tRecord saved successfully...";
Tạo biểu mẫu để hiển thị bản ghi vào màn hình Giám sát
Hàm putdata_form() được sử dụng để hiển thị các bản ghi theo cách nhớ ở đây, nó sẽ không lấy các bản ghi từ tệp mà nó sẽ chỉ hiển thị chúng.
void student::putdata_form(void)
{
cout<<roll<<"/t"<<sname<<"/t"<<fname<<"/t"<<mname<<endl;
}
Để hiển thị bản ghi từ trong tệp
Hàm putdata_record() sẽ lấy bản ghi đã lưu từ tệp và gọi hàm khác putdata_form(), người sẽ hiển thị chúng trên màn hình điều khiển.
//display all record into monitor screen
void student::putdata_record(void)
{
ifstream fin;
cout<<"SHOW ALL RECORD/n";
fin.open("database",ios::app|ios::binary);
fin.seekg(0,ios::beg); //goto begining or start
while(fin.read((char*)&obj,sizeof(student)))
{
putdata_form();
}
fin.close();
//hold screen
}
Nếu bạn không muốn khai báo hai hàm ở đây, bạn chỉ có thể hiển thị và truy cập dữ liệu từ một hàm, nhưng làm như vậy có thể làm giảm khả năng đọc của hàm này. Do đó nó được chia thành hai phần / chức năng ở đây.
Để xóa bản ghi khỏi tệp
Đổi tên và loại bỏ chức năng, cả hai đều được xác định trong tệp tiêu đề.stdio.h
Để đổi tên tệp
rename (old-file-name, new-file-name);
để xóa tệp
remove (filename);
Để biết thêm tên tệp theo người dùng, hãy xóa tệp, đổi tên tệp
Khi thực hiện một nhiệm vụ trên một học sinh cụ thể thì chúng ta cần truy cập vào bản ghi cụ thể đó và đối với điều này, chúng ta cần ID duy nhất của bản ghi đó. Ở đây id duy nhất sẽ là roll-no của học sinh.
void student::delete_record()
{
int x,true=0;
ofstream fout;
ifstream fin;
cout<<"DETELE RECORD/n";
cout<<"Enter student roll no: ";
cin>>x;
int r = x;
fin.open("database",ios::binary);
fout.open("temp",ios::binary);
while(fin.read((char*)&obj,sizeof(obj)))
{
if(x==r) // accessing record using their roll no
{
if(x!=roll) // which record not matched write into temp file
{
fout.write((char*)&obj,sizeof(student));
true=1;
}
}
}
fout.close();
fin.close();
remove("database"); //remove file
rename("temp","database"); //rename file
if(true)
cout<<"record deleted...";
if(true!=1)
cout<<"record not found.....";
}
if(x!=roll)
Đó là, chúng tôi viết tất cả các bản ghi khác (tạm thời) ngoại trừ một bản ghi (mà chúng tôi muốn xóa) và xóa tệp cũ này (cơ sở dữ liệu) và tệp mới này (tạm thời) Hãy đổi tên nó.
Trong hoạt động tìm kiếm cũng vậy, bất kỳ bản ghi cụ thể nào cũng sẽ được truy cập từ số cuộn.
Để tìm kiếm một bản ghi cụ thể trong tệp
Ở đây chúng tôi sẽ tìm kiếm hồ sơ sinh viên bằng cách sử dụng cuộn của họ không làm id duy nhất
void student::search_record()
{
int x;
ifstream fin;
cout<<"SEARCH RECORD/n";
cout<<"Enter student roll no: ";
cin>>x;
fin.open("database",ios::app|ios::binary);
while(fin.read((char*)&obj,sizeof(obj)))
{
if(x==roll) // if record found display
{
putdata_form();
}
}
fin.close();
}
Nếu tệp bản ghi có sẵn, thì bằng cách putdata_form (), chúng tôi hiển thị bản ghi đó trên màn hình.
Tạo biểu mẫu để sửa đổi bản ghi cũ
modify_form() hiển thị dữ liệu đã sửa đổi
void student::modify_form(void)
{
cout<<"Enter new roll no: ";
cin>>roll;
cout<<"Enter new stuname: ";
gets(sname);
cout<<"Enter new father name: ";
gets(fname);
cout<<"Enter new mother name: ";
gets(mname);
cout<<"/n/ntRecord updated successfully...";
}
Để sửa đổi một bản ghi cụ thể trong tệp
Đây là cú pháp để sửa đổi bản ghi.
int variable=(object-1)*sizeof(class-name/class-object);
Chúng tôi truy cập bản ghi để được sửa đổi từ cuộn của nó -no và hiển thị nó với putdata_form ().
// modify specific student record using their roll no
void student::modify_record()
{
int x; char true=0;
fstream file;
cout<<"MODIFY RECORD/n" ;
cout<<"Enter roll no: ";
cin>>x;
file.open("database",ios::in|ios::out|ios::binary);
while(file.read((char*)&obj,sizeof(student)))
{
if(x==roll)
{
cout<<"/nOld record are n";
putdata_form();
cout<<"/n/nEnter new record/n/n";
modify_form();
int loc=(-1)*sizeof(obj);
file.seekp(loc,ios::cur); // give current found location into file
file.write((char*)&obj,sizeof(student));
true=1;
}
}
file.close();
if(!true) //true!=1
cout<<"record not found.....";
}
Để tính Tổng bản ghi trong tệp
Có một số thao tác trong xử lý tệp được sử dụng cho nhiều tác vụ khác nhau, một ví dụ được đưa ra dưới đây. Từ đó chúng tôi tìm ra có bao nhiêu bản ghi trong một tệp hoặc kích thước của tệp là bao nhiêu. Nó hiển thị thuộc tính của tệp theo một cách nào đó. Do đó, nó đã được sử dụng như một tùy chọn riêng biệt.
// show properties of program like total record and size of file
void student::total()
{
cout<<"ABOUT PROGRAM/n";
int total_rec,st;
ifstream fin;
fin.open("database",ios::in|ios::out|ios::binary);
/*******using manipulators*********/
fin.seekg(0,ios::end); // goto end of file
total_rec=fin.tellg()/sizeof(student);
st = fin.tellg();
cout<<"/n/ntTotal record in file of student are: "<<total_rec;
cout<<"/ntMemory of database is: "<<st<<" byte";
_setcursortype(_NOCURSOR); // disable mouse cursor
}
Chương trình chính Bắt đầu tại đây
Đây là điểm khởi đầu của toàn bộ chương trình này, nó giống như một chương trình đơn giản –
int main()
{
char ch;
do
{
gotoxy(40,5);// print message a specific location into monitor
cout<<"SELECTION MENUn";
gotoxy(40,7);
cout<<"1.INSERT RECORDn";
gotoxy(40,8);
cout<<"2.DISPLAY RECORDn";
gotoxy(40,9);
cout<<"3.SEARCH RECORDn";
gotoxy(40,10);
cout<<"4.MODIFY RECORDn";
gotoxy(40,11);
cout<<"5.DELETE RECORDn";
gotoxy(40,12);
cout<<"6.PROPERTIESn";
gotoxy(40,13);
cout<<"0.EXITn";
gotoxy(45,18);
cout<<"Enter Your Choice: ";
ch=getche();
switch(ch)
{
case '1': obj.input_record();break;
case '2': obj.putdata_record();break;
case '3': obj.search_record(); break;
case '4': obj.modify_record(); break;
case '5': obj.delete_record();break;
case '6': obj.total();break;
case '0': exit(0); //program exit
}
}
while(ch!=0);
return 0;
}
RA
SELECTION MENU
1.INSERT RECORD
2.DISPLAY RECORD
3.SEARCH RECORD
4.MODIFY RECORD
5.DELETE RECORD
6.PROPERTIES
0.EXIT
Enter Your Choice:
Bây giờ, bạn đã sẵn sàng để thực hiện dự án của riêng bạn ………
Nếu bạn muốn, bạn có thể cải thiện nó hơn nữa bằng cách thêm các tùy chọn khác như sao lưu cơ sở dữ liệu, đặt lại cơ sở dữ liệu, khôi phục cơ sở dữ liệu, trang đăng nhập người dùng, quyền truy cập nhiều người