Пример9: Классы: различия между версиями
Перейти к навигации
Перейти к поиску
Vovan (обсуждение | вклад) (Новая: <nowiki>#include <iostream> using namespace std; class Person{ public: Person(){} ~Person(){} string GetFamiliya(){ return persFamiliya...) |
Vovan (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | + | #include <iostream> | |
| − | using namespace std; | + | using namespace std; |
| − | + | class Person{ | |
| − | class Person{ | + | public: |
| − | + | Person(){} | |
| − | public: | + | ~Person(){} |
| − | + | string GetFamiliya(){ return persFamiliya;} | |
| − | + | string GetName(){ return persName;} | |
| − | + | string GetData(){ return persData;} | |
| − | + | string GetTelefon(){ return persTelefon;} | |
| − | + | void SetFamiliya(string fam){ persFamiliya=fam;} | |
| − | + | void SetName(string name){ persName=name;} | |
| − | + | void SetData(string data){ persData=data;} | |
| − | + | void SetTelefon(string tel){ persTelefon=tel;} | |
| − | + | void Print(); | |
| − | + | private: | |
| − | + | string persFamiliya; | |
| − | + | string persName; | |
| − | + | string persData; | |
| − | + | string persTelefon; | |
| − | + | }; | |
| − | + | void Person::Print(){ | |
| − | + | cout<<"Familiya: "<<persFamiliya.c_str()<<endl | |
| − | + | <<"Im'a: "<<persName.c_str()<<endl | |
| − | private: | + | <<"Data rojdeniya: "<<persData.c_str()<<endl |
| − | + | <<"Telefon: "<<persTelefon.c_str()<<endl; | |
| − | + | } | |
| − | + | #include <string> | |
| − | + | #include <vector> | |
| − | + | void PrintMenu(); | |
| − | }; | + | void PrintAll(); |
| − | + | void SortPerson(); | |
| − | + | void FindPerson(); | |
| − | void Person::Print(){ | + | void AddPerson(); |
| − | + | void DeletePerson(); | |
| − | + | int GetNumber(int imin, int imax); | |
| − | + | vector <Person> pers; | |
| − | + | int main(){ | |
| − | } | + | bool exit=false; |
| − | + | while(true){ | |
| − | #include <string> | + | PrintMenu(); |
| − | #include <vector> | + | switch(GetNumber(1,6)){ |
| − | + | case 1: PrintAll(); break; | |
| − | + | case 2: SortPerson(); break; | |
| − | + | case 3: FindPerson(); break; | |
| − | + | case 4: AddPerson(); break; | |
| − | void PrintMenu(); | + | case 5: DeletePerson(); break; |
| − | void PrintAll(); | + | case 6: exit=true; break; |
| − | void SortPerson(); | + | } |
| − | void FindPerson(); | + | if(exit) |
| − | void AddPerson(); | + | break; |
| − | void DeletePerson(); | + | } |
| − | int GetNumber(int imin, int imax); | + | return 0; |
| − | + | } | |
| − | vector <Person> pers; | + | void PrintMenu(){ |
| − | + | cout<<endl | |
| − | int main(){ | + | <<"-------------------- men'u --------------------"<<endl |
| − | + | <<"1 - Pokazat' vse zapisi"<<endl | |
| − | + | <<"2 - Sortirovat' zapisi"<<endl | |
| − | + | <<"3 - Nayti zapis'"<<endl | |
| − | + | <<"4 - Dobavit' zapis'"<<endl | |
| − | + | <<"5 - Udalit' zapis'"<<endl | |
| − | + | <<"6 - Vyhod"<<endl | |
| − | + | <<"-------------------------------------------------" << endl; | |
| − | + | } | |
| − | + | void PrintAll(){ | |
| − | + | cout<<"--------------- vse zapisi --------------------\n"; | |
| − | + | for(int n=0; n<pers.size(); n++){ | |
| − | + | cout<<"\n- Zapis' N "<<n+1<<" -\n"; | |
| − | + | pers[n].Print(); | |
| − | + | } | |
| − | + | cout<<"-------------------------------------------------\n"; | |
| − | } | + | } |
| − | + | int GetNumber(int imin, int imax){ | |
| − | + | int number=imin-1; | |
| − | void PrintMenu(){ | + | while(true){ |
| − | + | cin >> number; | |
| − | + | if((number>=imin) && (number <=imax) && (cin.peek()=='\n')) | |
| − | + | break; | |
| − | + | else{ | |
| − | + | cout << "Povtorite vvod (ojidaets'a chislo ot " << imin << " do " << imax << "):" << endl; | |
| − | + | cin.clear(); | |
| − | + | while(cin.get()!='\n'){} | |
| − | + | } | |
| − | + | } | |
| − | } | + | return number; |
| − | + | } | |
| − | + | int GetNumber(int imin, int imax); | |
| − | void PrintAll(){ | + | void SortPerson() { |
| − | + | cout<<"--------------- sortirovka --------------------\n"; | |
| − | + | cout<<"Sortirovka po pol'u\n"; | |
| − | + | cout<<" 1 - Familiya\n" | |
| − | + | <<" 2 - Im'a\n" | |
| − | + | <<" 3 - Telefon\n" | |
| − | + | <<" 4 - Exit\n"; | |
| − | } | + | int vybor=GetNumber(1,4); |
| − | + | ||
| − | + | switch(vybor){ | |
| − | int GetNumber(int imin, int imax){ | + | case 1:{ |
| − | + | int n, i, k, dl; | |
| − | + | for(n=0; n<=pers.size()-1; n++) { | |
| − | + | dl=pers[n].GetFamiliya().size(); | |
| − | + | for (i=n+1; i<pers.size(); i++) | |
| − | + | for (k=dl; k>=0; k--) | |
| − | + | if (pers[i].GetFamiliya()[k]<pers[n].GetFamiliya()[k]) { | |
| − | + | Person buf=pers[n]; | |
| − | + | pers[n]=pers[i]; | |
| − | + | pers[i]=buf; | |
| − | + | } | |
| − | + | cout<<"\n- Zapis' N "<<n+1<<" -\n"; | |
| − | + | pers[n].Print(); | |
| − | } | + | } |
| − | + | } | |
| − | + | break; | |
| − | int GetNumber(int imin, int imax); | + | case 2:{ |
| − | void SortPerson() { | + | int n, i, k, dl; |
| − | + | for(n=0; n<=pers.size()-1; n++) { | |
| − | + | dl=pers[n].GetName().size(); | |
| − | + | for (i=n+1; i<pers.size(); i++) | |
| − | + | for (k=dl; k>=0; k--) | |
| − | + | if (pers[i].GetName()[k]<pers[n].GetName()[k]) { | |
| − | + | Person buf=pers[n]; | |
| − | + | pers[n]=pers[i]; | |
| − | + | pers[i]=buf; | |
| − | + | } | |
| − | + | cout<<"\n- Zapis' N "<<n+1<<" -\n"; | |
| − | + | pers[n].Print(); | |
| − | + | } | |
| − | + | } | |
| − | + | break; | |
| − | + | case 3:{ | |
| − | + | int n, i, k, dl; | |
| − | + | for(n=0; n<=pers.size()-1; n++) { | |
| − | + | dl=pers[n].GetTelefon().size(); | |
| − | + | for (i=n+1; i<pers.size(); i++) | |
| − | + | for (k=dl; k>=0; k--) | |
| − | + | if (pers[i].GetTelefon()[k]>pers[n].GetTelefon()[k]) { | |
| − | + | Person buf=pers[n]; | |
| − | + | pers[n]=pers[i]; | |
| − | + | pers[i]=buf; | |
| − | + | } | |
| − | + | cout<<"\n- Zapis' N "<<n+1<<" -\n"; | |
| − | + | pers[n].Print(); | |
| − | + | } | |
| − | + | } | |
| − | + | break; | |
| − | + | case 4:{ | |
| − | + | break; | |
| − | + | } | |
| − | + | } | |
| − | + | cout<<"------------------- gotovo --------------------\n"; | |
| − | + | } | |
| − | + | void FindPerson(){ | |
| − | + | cout<<"--------------- poisk zapisi ------------------\n"; | |
| − | + | cout<<"Vyberite kriteriy poiska\n"; | |
| − | + | cout<<" 1 - Familiya\n" | |
| − | + | <<" 2 - Im'a\n" | |
| − | + | <<" 3 - Data rojdeniya\n" | |
| − | + | <<" 4 - Telefon\n" | |
| − | + | <<" 5 - Exit\n"; | |
| − | + | int vybor=GetNumber(1,5); | |
| − | + | switch(vybor){ | |
| − | + | case 1:{ | |
| − | + | bool find=false; | |
| − | + | string sbuf; | |
| − | + | cout<<"Vvedite familiyu: "; | |
| − | + | cin>>sbuf; | |
| − | + | int n=0; | |
| − | + | while(n<pers.size()){ | |
| − | + | if(sbuf==pers[n].GetFamiliya()) { | |
| − | + | pers[n].Print(); | |
| − | + | find=true; | |
| − | + | break;} | |
| − | + | else | |
| − | + | n++; | |
| − | + | } | |
| − | + | if (find==false) cout<<"Net takoy zapisi\n"; | |
| − | + | cout<<"-----------------------------------\n"; | |
| − | + | break; | |
| − | } | + | } |
| − | + | case 2:{ | |
| − | + | bool find=false; | |
| − | void FindPerson(){ | + | string sbuf; |
| − | + | cout<<"Vvedite im'a: "; | |
| − | + | cin>>sbuf; | |
| − | + | int n=0; | |
| − | + | while(n<pers.size()){ | |
| − | + | if(sbuf==pers[n].GetName()) { | |
| − | + | pers[n].Print(); | |
| − | + | find=true; | |
| − | + | break;} | |
| − | + | else | |
| − | + | n++; | |
| − | + | } | |
| − | + | if (find==false) cout<<"Net takoy zapisi\n"; | |
| − | + | cout<<"-----------------------------------\n"; | |
| − | + | break; | |
| − | + | } | |
| − | + | case 3:{ | |
| − | + | bool find=false; | |
| − | + | string sbuf; | |
| − | + | cout<<"Vvedite datu rojdeniya: "; | |
| − | + | cin>>sbuf; | |
| − | + | int n=0; | |
| − | + | while(n<pers.size()){ | |
| − | + | if(sbuf==pers[n].GetData()) { | |
| − | + | pers[n].Print(); | |
| − | + | find=true; | |
| − | + | break;} | |
| − | + | else | |
| − | + | n++; | |
| − | + | } | |
| − | + | if (find==false) cout<<"Net takoy zapisi\n"; | |
| − | + | cout<<"-----------------------------------\n"; | |
| − | + | break; | |
| − | + | } | |
| − | + | case 4:{ | |
| − | + | bool find=false; | |
| − | + | string sbuf; | |
| − | + | cout<<"Vvedite telefon: "; | |
| − | + | cin>>sbuf; | |
| − | + | int n=0; | |
| − | + | while(n<pers.size()){ | |
| − | + | if(sbuf==pers[n].GetTelefon()) { | |
| − | + | pers[n].Print(); | |
| − | + | find=true; | |
| − | + | break;} | |
| − | + | else | |
| − | + | n++; | |
| − | + | } | |
| − | + | if (find==false) cout<<"Net takoy zapisi"; | |
| − | + | cout<<"-----------------------------------\n"; | |
| − | + | break; | |
| − | + | } | |
| − | + | case 6:{ | |
| − | + | break; | |
| − | + | } | |
| − | + | } | |
| − | + | cout<<"------------------- gotovo --------------------\n"; | |
| − | + | } | |
| − | + | void AddPerson(){ | |
| − | + | string sbuf; | |
| − | + | Person bufPers; | |
| − | + | cout<<endl | |
| − | + | <<"---------------- novaya zapis' ----------------\n" | |
| − | + | <<"Familiya: "; | |
| − | + | cin>>sbuf; | |
| − | + | bufPers.SetFamiliya(sbuf); | |
| − | + | cout<<endl | |
| − | + | <<"Im'a: "; | |
| − | + | cin>>sbuf; | |
| − | + | bufPers.SetName(sbuf); | |
| − | + | cout<<endl | |
| − | + | <<"Data rojdeniya: "; | |
| − | + | cin>>sbuf; | |
| − | + | bufPers.SetData(sbuf); | |
| − | + | cout<<endl | |
| − | + | <<"Telefon:"; | |
| − | + | cin>>sbuf; | |
| − | + | bufPers.SetTelefon(sbuf); | |
| − | + | pers.push_back(bufPers); | |
| − | + | cout<<"------------------- gotovo --------------------\n"; | |
| − | + | } | |
| − | + | void DeletePerson(){ | |
| − | + | string sbuf; | |
| − | + | cout<<"---------------- udalenie zapisi ---------------\n"; | |
| − | + | cout<<"Vvedite familiyu: "; | |
| − | + | cin>>sbuf; | |
| − | + | int n=0; | |
| − | + | bool find=false; | |
| − | + | while(n<pers.size()){ | |
| − | } | + | if(sbuf==pers[n].GetFamiliya()){ |
| − | + | pers[n].Print(); | |
| − | + | find=true; | |
| − | void AddPerson(){ | + | pers.erase(pers.begin()+n); |
| − | + | cout<<endl; | |
| − | + | } | |
| − | + | else | |
| − | + | n++; | |
| − | + | } | |
| − | + | if (find==false) cout<<"Net takoy zapisi\n"; | |
| − | + | cout<<"------------------- gotovo --------------------\n"; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | } | ||
| − | |||
| − | |||
| − | void DeletePerson(){ | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | } | ||
| − | |||
Текущая версия на 09:29, 14 января 2009
#include <iostream>
using namespace std;
class Person{
public:
Person(){}
~Person(){}
string GetFamiliya(){ return persFamiliya;}
string GetName(){ return persName;}
string GetData(){ return persData;}
string GetTelefon(){ return persTelefon;}
void SetFamiliya(string fam){ persFamiliya=fam;}
void SetName(string name){ persName=name;}
void SetData(string data){ persData=data;}
void SetTelefon(string tel){ persTelefon=tel;}
void Print();
private:
string persFamiliya;
string persName;
string persData;
string persTelefon;
};
void Person::Print(){
cout<<"Familiya: "<<persFamiliya.c_str()<<endl
<<"Im'a: "<<persName.c_str()<<endl
<<"Data rojdeniya: "<<persData.c_str()<<endl
<<"Telefon: "<<persTelefon.c_str()<<endl;
}
#include <string>
#include <vector>
void PrintMenu();
void PrintAll();
void SortPerson();
void FindPerson();
void AddPerson();
void DeletePerson();
int GetNumber(int imin, int imax);
vector <Person> pers;
int main(){
bool exit=false;
while(true){
PrintMenu();
switch(GetNumber(1,6)){
case 1: PrintAll(); break;
case 2: SortPerson(); break;
case 3: FindPerson(); break;
case 4: AddPerson(); break;
case 5: DeletePerson(); break;
case 6: exit=true; break;
}
if(exit)
break;
}
return 0;
}
void PrintMenu(){
cout<<endl
<<"-------------------- men'u --------------------"<<endl
<<"1 - Pokazat' vse zapisi"<<endl
<<"2 - Sortirovat' zapisi"<<endl
<<"3 - Nayti zapis'"<<endl
<<"4 - Dobavit' zapis'"<<endl
<<"5 - Udalit' zapis'"<<endl
<<"6 - Vyhod"<<endl
<<"-------------------------------------------------" << endl;
}
void PrintAll(){
cout<<"--------------- vse zapisi --------------------\n";
for(int n=0; n<pers.size(); n++){
cout<<"\n- Zapis' N "<<n+1<<" -\n";
pers[n].Print();
}
cout<<"-------------------------------------------------\n";
}
int GetNumber(int imin, int imax){
int number=imin-1;
while(true){
cin >> number;
if((number>=imin) && (number <=imax) && (cin.peek()=='\n'))
break;
else{
cout << "Povtorite vvod (ojidaets'a chislo ot " << imin << " do " << imax << "):" << endl;
cin.clear();
while(cin.get()!='\n'){}
}
}
return number;
}
int GetNumber(int imin, int imax);
void SortPerson() {
cout<<"--------------- sortirovka --------------------\n";
cout<<"Sortirovka po pol'u\n";
cout<<" 1 - Familiya\n"
<<" 2 - Im'a\n"
<<" 3 - Telefon\n"
<<" 4 - Exit\n";
int vybor=GetNumber(1,4);
switch(vybor){
case 1:{
int n, i, k, dl;
for(n=0; n<=pers.size()-1; n++) {
dl=pers[n].GetFamiliya().size();
for (i=n+1; i<pers.size(); i++)
for (k=dl; k>=0; k--)
if (pers[i].GetFamiliya()[k]<pers[n].GetFamiliya()[k]) {
Person buf=pers[n];
pers[n]=pers[i];
pers[i]=buf;
}
cout<<"\n- Zapis' N "<<n+1<<" -\n";
pers[n].Print();
}
}
break;
case 2:{
int n, i, k, dl;
for(n=0; n<=pers.size()-1; n++) {
dl=pers[n].GetName().size();
for (i=n+1; i<pers.size(); i++)
for (k=dl; k>=0; k--)
if (pers[i].GetName()[k]<pers[n].GetName()[k]) {
Person buf=pers[n];
pers[n]=pers[i];
pers[i]=buf;
}
cout<<"\n- Zapis' N "<<n+1<<" -\n";
pers[n].Print();
}
}
break;
case 3:{
int n, i, k, dl;
for(n=0; n<=pers.size()-1; n++) {
dl=pers[n].GetTelefon().size();
for (i=n+1; i<pers.size(); i++)
for (k=dl; k>=0; k--)
if (pers[i].GetTelefon()[k]>pers[n].GetTelefon()[k]) {
Person buf=pers[n];
pers[n]=pers[i];
pers[i]=buf;
}
cout<<"\n- Zapis' N "<<n+1<<" -\n";
pers[n].Print();
}
}
break;
case 4:{
break;
}
}
cout<<"------------------- gotovo --------------------\n";
}
void FindPerson(){
cout<<"--------------- poisk zapisi ------------------\n";
cout<<"Vyberite kriteriy poiska\n";
cout<<" 1 - Familiya\n"
<<" 2 - Im'a\n"
<<" 3 - Data rojdeniya\n"
<<" 4 - Telefon\n"
<<" 5 - Exit\n";
int vybor=GetNumber(1,5);
switch(vybor){
case 1:{
bool find=false;
string sbuf;
cout<<"Vvedite familiyu: ";
cin>>sbuf;
int n=0;
while(n<pers.size()){
if(sbuf==pers[n].GetFamiliya()) {
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<"Net takoy zapisi\n";
cout<<"-----------------------------------\n";
break;
}
case 2:{
bool find=false;
string sbuf;
cout<<"Vvedite im'a: ";
cin>>sbuf;
int n=0;
while(n<pers.size()){
if(sbuf==pers[n].GetName()) {
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<"Net takoy zapisi\n";
cout<<"-----------------------------------\n";
break;
}
case 3:{
bool find=false;
string sbuf;
cout<<"Vvedite datu rojdeniya: ";
cin>>sbuf;
int n=0;
while(n<pers.size()){
if(sbuf==pers[n].GetData()) {
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<"Net takoy zapisi\n";
cout<<"-----------------------------------\n";
break;
}
case 4:{
bool find=false;
string sbuf;
cout<<"Vvedite telefon: ";
cin>>sbuf;
int n=0;
while(n<pers.size()){
if(sbuf==pers[n].GetTelefon()) {
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<"Net takoy zapisi";
cout<<"-----------------------------------\n";
break;
}
case 6:{
break;
}
}
cout<<"------------------- gotovo --------------------\n";
}
void AddPerson(){
string sbuf;
Person bufPers;
cout<<endl
<<"---------------- novaya zapis' ----------------\n"
<<"Familiya: ";
cin>>sbuf;
bufPers.SetFamiliya(sbuf);
cout<<endl
<<"Im'a: ";
cin>>sbuf;
bufPers.SetName(sbuf);
cout<<endl
<<"Data rojdeniya: ";
cin>>sbuf;
bufPers.SetData(sbuf);
cout<<endl
<<"Telefon:";
cin>>sbuf;
bufPers.SetTelefon(sbuf);
pers.push_back(bufPers);
cout<<"------------------- gotovo --------------------\n";
}
void DeletePerson(){
string sbuf;
cout<<"---------------- udalenie zapisi ---------------\n";
cout<<"Vvedite familiyu: ";
cin>>sbuf;
int n=0;
bool find=false;
while(n<pers.size()){
if(sbuf==pers[n].GetFamiliya()){
pers[n].Print();
find=true;
pers.erase(pers.begin()+n);
cout<<endl;
}
else
n++;
}
if (find==false) cout<<"Net takoy zapisi\n";
cout<<"------------------- gotovo --------------------\n";
}