Chương trình này dựa trên mảng các ví dụ đối tượng của C ++, Nếu khái niệm mảng đối tượng của bạn rõ ràng, thì bạn có thể dễ dàng hiểu nó.
Như đã đề cập trước đó, trong mảng đối tượng, mỗi phần tử của mảng là một đối tượng và đối tượng là một tập hợp các thành viên dữ liệu và thành viên hàm.
Như được đưa ra trong sơ đồ dưới đây, đối tượng của lớp “student” được khai báo là mảng đối tượng, vì vậy ở đây các đối tượng khác nhau (obj [0], obj [1], obj [2], obj [3], obj [4]) sẽ tạo ra. Sẽ lưu trữ 5 hồ sơ học sinh, có nghĩa là một yếu tố sẽ liên quan đến một học sinh.
Một mảng cú pháp đối tượng được đưa ra dưới đây,
cú pháp
class-name array-variable[size];
chẳng hạn
student obj[4];
Hãy thử ví dụ này ở đây,
#include<iostream>
using namespace std;
class student
{
char name[20],fname[20];
public:
void getdata(void);
void putdata(void);
}
void student::getdata()
{
cout<<"Enter the student Rno: ";
cin>>no;
cout<<"Enter the student name: ";
gets(name); cout<<"Enter the student Fname: ";
gets(fname);
}
void student::putdata()
{
cout<<"===============================n";
cout<<"Rollno : "; cout<<no<<endl;
cout<<"Name : "; puts(name);
cout<<"FName : "; puts(fname);
cout<<"Age : "<<ag<<endl;
cout<<"===============================n";
}
int main()
{
student obj[2]; // for 2 students
obj[0].getdata(); // 1st student
obj[0].getdata(); // 2nd student
obj[1].putdata(); // 1st student
obj[1].putdata(); // 2nd student
return 0;
}
Chương trình trên được đưa ra chi tiết dưới đây, trong đó nhiều nhiệm vụ đã được đưa ra –
#include<iostream>
#include<stdio>
#include<stdlib>
using namespace std;
class student
{
// member by default are private
char name[20],fname[20],sub[5][20],grade;
int no,age,av,ag, mark[5];
public:
// member declared as public
void getdata(void); // to get student record from user
void putdata(void); // for displaying student record
void calculate(); // calculate result like percentage and division
void result(void); // displaying result
void sub_marks(void); // storing subject marks
int retno(void); // return a specific student roll no
void sub_name(void); // store subject name
void class_re(void); // display class result
};
void student::getdata()
{
cout<<"Enter the student Rno: ";
cin>>no;
cout<<"Enter the student name: ";
gets(name);
cout<<"Enter the student Fname: ";
gets(fname);
cout<<"Enter the student Age: ";
cin>>ag;
sub_name();
}
int student::retno()
{
return (no);
}
void student::putdata()
{
cout<<"===============================n";
cout<<"Rollno : ";cout<<no<<endl;
cout<<"Name : ";puts(name);
cout<<"FName : ";puts(fname);
cout<<"Age : "<<ag<<endl;
cout<<"===============================n";
}
void student::sub_marks()
{
cout<<"Enter the subject marks according to subjectn";
cout<<"++++++++++++++++++++++++++++++++++++++++++++n";
for(int i=0;i<5;i++)
{
cin>>mark[i];
}
calculate();
}
void student::result()
{
cout<<"Student Rollno: "<<no<<"n";
cout<<"tSno.ttNamettMarksn";
cout<<"=============================================n";
for(int i=0;i<5;i++)
{
cout<<"\t"<<i;
cout<<"\t\t"<<sub[i];
cout<<"\t\t"<<mark[i];
cout<<endl;
}
cout<<"==============================================nn";
cout<<"______________________________________________n";
cout<<" ";
calculate();
cout<<"n";
}
void student::class_re()
{
cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++n";
cout<<"Rollno: "<<no<<"tName: "<<name<<"n";
cout<<"--------------------------------n";
calculate();
cout<<"n";
cout<<"___________________________________________________n";
cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
}
void student::sub_name()
{
cout<<"nEnter the subject namen";
cout<<"++++++++++++++++++++++n";
for(int i=0;i<5;i++)
{
cout<<"subject: "<<i+1<<" = ";
gets(sub[i]);
}
sub_marks();
}
void student::calculate()
{
int sum=0;
for(int i=0;i<5;i++)
{
sum=sum+mark[i];
}
av=sum/5;
{
cout<<"TOTAL: "<<sum<<"t"<<"PERCENTAGE: "<<av<<"%"<<"t";
{
if(av>=60)
{
cout<<"FIRSTn";
}
else if(av>=45)
{
cout<<"SECONDn";
}
else if(av>=33)
{
cout<<"THIRDn";
}
}
}
}
int main()
{
int x,s;
student ar[10]; // array of object
do{
start:
cout<<"nnnnn";
int j=0;
while(j<80)
{
cout<<"%";
j++;
}
cout<<"/t/t/t/t***OPTION MENU***n";
cout<<"/n/t/t/t/t1.EDITn";
cout<<"/n/t/t/t/t2.RESULTn";
cout<<"/n/t/t/t/t3.PERSONAL INFORMATIONn";
cout<<"/n/t/t/t/t4.SEARCH RECORDn";
cout<<"/n/t/t/t/t5.CLASS RESULTn";
cout<<"/n/t/t/t/t0.EXITn";
int l=0;
while(l<80)
{
cout<<"%";
l++;
}
cout<<"/n/n/n/n/t/t/t/tselect a option(EDIT,first): ";
cout<<"t/t/t/t/t/t/t";
cin>>s;
switch(s)
{
case 1:
cout<<"How many student's record you want to store: ";
cin>>x;
for(int i=0;i<x;i++)
{
cout<<i+1<<". STUDENTn";
ar[i].getdata();
cout<<"nn";
cout<<"record created ";
}
break;
case 3:
cout<<"display the student informationn";
for(int j=0;j<x;j++)
{
if(ar[j].retno()==0)
goto start;
cout<<j+1<<" STUDENTn";
ar[j].putdata();
}
break;
case 2:
cout<<"DISPLAY THE RESULTn";
for(int k=0;k<x;k++)
{
if(ar[k].retno()==0)goto start;
cout<<k<<".";
ar[k].result();
cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
}
break;
case 4:
cout<<"SEARCHn";
int found, true=0;
cout<<"Enter the Rollno to be search: ";
cin>>found;
for(int l=0;l<x;l++)
{
if(ar[l].retno()==found)
{
true=1;
cout<<"PERSONAL INFORMATIONn";
ar[l].putdata();
cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n";
cout<<"RESULT INFORMATIONn";
ar[l].result();;goto start;}
}
if(!true){
cout<<"record not found";
goto start;
}
break;
case 5:
for(int a=0;a<x;a++)
{
if(ar[a].retno()==0)goto start;
ar[a].class_re();
}
break;
case 0: exit(0);
break;
default: cout<<"/t/t/t/t/t/t/tInvalid choicen";
goto start;
}
}while(s!=0);
return 0;
}
RA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***OPTION MENU***
1.EDIT
2.RESULT
3.PERSONAL INFORMATION
4.SEARCH RECORD
5.CLASS RESULT
0.EXIT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Lời giải thích
Bởi vì, xử lý tệp không được sử dụng trong chương trình, sau khi chương trình chấm dứt, nó sẽ xóa thông tin do người dùng cung cấp. Tuy nhiên, trong quá trình thực hiện, chúng ta có thể thực hiện nhiều tác vụ.
Ví dụ, trong một mảng đối tượng, chúng ta khai báo một đối tượng là một kiểu mảng của đối tượng, nghĩa là kích thước của một mảng càng cao, càng nhiều đối tượng của lớp sẽ được tạo, chẳng hạn như,
student obj[4];
Nó có 5 đối tượng được tạo ra để nó có thể lưu trữ 5 hồ sơ học sinh. Nhưng trong quá trình thực hiện, chúng tôi có thể lưu trữ ít hơn 5 sinh viên trong đó và đồng thời chúng tôi không phải gọi cùng một hàm nhiều lần để lưu trữ 5 hồ sơ học sinh. như-
obj[index-value].getdata();
trong đó giá trị chỉ mục tự động tăng
Điều này sẽ tạo ra 4 đối tượng sẽ lưu trữ hồ sơ của 4 học sinh khác nhau (trong chương trình 10 đối tượng sẽ được khai báo theo sinh viên obj [10] nhưng chúng tôi chỉ sử dụng 4 đối tượng ở đây vì vậy loại bỏ lãng phí bộ nhớ này sử dụng phân bổ bộ nhớ động).
Khi index-value của mảng thay đổi trong quá trình thực thi, hàm getdata() gọi hàm này sẽ lấy đầu vào từ -user.
for(int i = 0; i<student; i++)
{
obj[i].getdata();
}
Một bản ghi của một sinh viên mới sẽ được lưu trữ ngay khi giá trị của biến i tăng lên. Các chức năng khác của sẽ được gọi theo cách tương tự-
obj [i]. putdata();
obj [i] .result ();
cũng sẽ được gọi.
Điều gì hạnh phúc khi nếu mảng đối tượng sẽ không được sử dụng ở đây
student x, b, z;
Nhưng bằng cách này, chúng tôi sẽ chỉ có thể lưu trữ hồ sơ của 3 học sinh (mỗi đối tượng lưu trữ hồ sơ của mỗi học sinh) và ngoài ra câu lệnh bổ sung sẽ tăng lên trong chương trình. Tức là để lưu trữ mỗi hồ sơ học sinh, chúng ta phải gọi cùng một hàm nhiều lần với các đối tượng khác nhau. Như
x.getdata(); // for 1st student
y.getdata(); // for 2nd student
z.getdata(); // for 3rd student
Khi chương trình này được thực thi, chúng ta sẽ bắt buộc phải lưu trữ hồ sơ 3 học sinh, tức là trong quá trình thực hiện chúng ta không thể lưu trữ ít hơn 3 sinh viên trong khi điều này không xảy ra khi chúng ta sử dụng mảng đối tượng.
Bạn có biết
Lớp là phiên bản cập nhật của cấu trúc, vì vậy khái niệm mảng đối tượng sẽ thực hiện tương tự với cấu trúc.
Nếu các giá trị của tất cả các phần tử trong mảng đối tượng không được lấy, thì sẽ có mất bộ nhớ không được coi là thực hành lập trình tốt. Vì vậy, để khắc phục vấn đề này, phân bổ bộ nhớ động sẽ được sử dụng . C++ phân bổ bộ nhớ động trong mảng.
Dưới đây là một ví dụ khác về một mảng đối tượng, Hệ thống quản lý ngân hàng
Hệ thống quản lý sinh viên
Các dự án liên quan trong C++ là:
- Hệ thống quản lý ngân hàng trong C++
- In bảng điểm học sinh trong C++
- Hệ thống quản lý thanh toán trong C++
- Hệ thống quản lý khách sạn bằng C++