Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

справочник на STL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Учебник для начинающих http://www.cyberforum.ru/cpp-beginners/thread159103.html
Здравствуйте, уважаемые программисты. Этим летом я поступил в университет нефти и газа на спец-ть Прикладная математика. Узнал, что первые полгода у нас будет С. Остальное время С++. С этими языками...
C++ правильно ли я составил код ? помогите , правильно ли я составил код ? псевдокод : программа... в зависимости от оценки , выдается результат ... 5-просто отлично!! 4-среднячок... http://www.cyberforum.ru/cpp-beginners/thread159082.html
CheckRadioButton C++
Здравствуйте! Я столкнулся с проблемой, решение которой пока немогу нигде найти, может Вы поможете? Имеется следующая функция: void CL1E2Dlg::OnBnClickedRadio1() { m_GrEn = 1; //устанавливаю...
C++ Разработка оконных приложений.
Возможно вы скажите иди ищи на форуму, пользуйся поиском и т.д... Правда, прочитал много и на нашем форуме)) Но у каждого наверное частный случай.. В общем, хочу постепенно с пониманием научиться...
C++ Соединение Strings http://www.cyberforum.ru/cpp-beginners/thread159045.html
Как обьеденить 2 строки char* в одну чтобы в последущем использовать в system(string) что то типа char* A, ip; ip="192.168.0.1" A="ping ",ip system(A) это примерно так набросал но при этом...
C++ Шаблончики, С++. Доброго Всем времени суток, уважаемые программисты. Начинаю осваивать STL и её реализацию. Собственно, с шаблонами особо раньше не встречался, поэтому решил в них разобраться получше. А теперь,... подробнее

Показать сообщение отдельно
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
13.08.2010, 17:15
Новая версия FindPerson() с поиском strstr()
void FindPerson(){system("cls");
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

cout<<Rus("--------------------- поиск записи -------------------------\n");
cout<<Rus("Выбирите критерий поиска\n");
cout<<Rus(" 1 - Фамилия\n");
cout<<Rus(" 2 - Имя\n");
cout<<Rus(" 3 - Дата рождения\n");
cout<<Rus(" 4 - Телефон\n");
cout<<Rus(" 5 - Выход\n");
int vybor=GetNumber(1,5);
switch(vybor){
case 1:{
bool find=false;
string sbuf;
cout<<Rus("Введите фамилию: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ТЕЛЕФОННАЯ КНИГА")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Фамилия | Имя |Дата рождения| Tелефон | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetFamiliya().c_str(), sbuf.c_str() )) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Нет такой записи\n");
cout<<"----------------------------------------------------------------"<<endl;
break;
}
case 2:{
bool find=false;
string sbuf;
cout<<Rus("Введите имя: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ТЕЛЕФОННАЯ КНИГА")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Фамилия | Имя |Дата рождения| Tелефон | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if( strstr( pers[n].GetName().c_str(), sbuf.c_str() ) ){
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Нет такой записи\n");
cout<<"---------------------------------------------------------------"<<endl;
break;
}

case 3:{
bool find=false;
string sbuf;
cout<<Rus("Введите дату рождения: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ТЕЛЕФОННАЯ КНИГА")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Фамилия | Имя |Дата рождения| Tелефон | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetData().c_str(), sbuf.c_str())) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Нет такой записи\n");
cout<<"----------------------------------------------------------------"<<endl;
break;
}
case 4:{
bool find=false;
string sbuf;
cout<<Rus("Введите телефон: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ТЕЛЕФОННАЯ КНИГА")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Фамилия | Имя |Дата рождения| Tелефон | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetTelefon().c_str(), sbuf.c_str())) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Нет такой записи");
cout<<"-----------------------------------------------------------------"<<endl;
break;
}
case 5:{
break;
}
}
}

Весь код
#include <iostream>
#include <conio.h>
#include <string>
#include <stdio.h>
#include <windows.h>
#include <fstream>
#include <vector>

#include <algorithm>
#include <functional>

using namespace std;

//#define NUM_ROWS 14

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;
};

vector <Person> pers;

class Rus {
public:
Rus(const char* text): data(new char [strlen( text)+1]) {CharToOemA( text, data);}
~Rus() {delete [] data;};
operator const char* () const {return data;}

private:
char* data;
};



void Person::Print()
{
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

// cout<<"----------------------------------------------------------------"<<endl;
//cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
// cout<<"----------------------------------------------------------------"<<endl;
// cout<<"| | | | | "<<endl;
printf("| %-20.20s| %-12.12s| %-12.12s| %-12.12s|\n",persFamiliya.c_str(),persName.c_str(),persData.c_str(),persTelefon.c_str());
}



void PrintMenu()
{
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

cout<<endl;
std::cout <<Rus("Âûáèðèòå äåéñòâèå")<<std::endl;
std::cout <<Rus("1 - Âûâåñòè êíèãó")<<std::endl;
std::cout <<Rus("2 - Ñîðòèðîâêà")<<std::endl;
std::cout <<Rus("3 - Ïîèñê")<<std::endl;
std::cout <<Rus("4 - Äîáàâèòü")<<std::endl;
std::cout <<Rus("5 - Óäàëèòü")<<std::endl;
std::cout <<Rus("6 - Ñîõðàíåíèòü â ôàéë")<<std::endl;
std::cout <<Rus("7 - Çàãðóçèòü èç ôàéëà")<<std::endl;
std::cout <<Rus("8 - Âûõîä")<<std::endl;

std::cout <<"-------------------------------------------------" << std::endl;
}

void PrintAll()
{
system("cls");
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

//cout<<Rus("***--------- Çàïèñíàÿ êíèæêà --------------***\n");
system("cls");
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;


for(int n=0; n<pers.size(); n++)
{
//cout<<Rus("\n- Çàïèñü # ")<<n+1<<" -\n";
pers[n].Print();
//}


//
//// êîëè÷åñòâî ñòîðê íà ýêðàíå
// if (++n == NUM_ROWS)
// {
// n = 0;
// //cout << "Press any key to continue..." << flush;
// cout<<Rus("Íàæìèòå ëþáóþ êëàâèøó.....") << flush;
// // Îæèäàåì íàæàòèÿ ëþáîé êëàâèøè
// _getch();
// cout << endl;
// }
}

cout<<"-----------------------------------------------------------------\n";
}

int GetNumber(int imin, int imax){
int number=imin-1;
while(true)
{
cin >> number;
if((number>=imin) && (number <=imax))
break;
else
{
cout <<Rus( "Ïîâòîðèòå ââîä" )<< endl;
cin.clear();
while(cin.get()!='\n'){}
}
}
return number;
}



void SortPerson()
{
system("cls");
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

cout<<Rus("***---------- ñîðòèðîâêà ---------------***\n");
cout<<Rus("Ââåäèòå ïàðàìåòð\n");
cout<<Rus(" 1 - Ôàìèëèÿ\n");
cout<<Rus(" 2 - Èìÿ\n");
cout<<Rus(" 3 - Òåëåôîí\n");
cout<<Rus(" 4 - Âûõîä\n");
int vybor=GetNumber(1,4);

switch(vybor)
{
case 1:
{
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

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<<Rus("\n- Çàïèñü N ")<<n+1<<" -\n";

pers[n].Print();
}
}
break;
case 2:
{
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

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<<Rus("\n- Çàïèñü N ")<<n+1<<" -\n";

pers[n].Print();
}
}
break;

case 3:
{
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

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<<Rus("\n- Çàïèñü N ")<<n+1<<" -\n";

pers[n].Print();
}
}
break;
case 4:
{
break;
}
}
cout<<"----------------------------------------------------------------"<<endl;
}


void FindPerson(){system("cls");
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

cout<<Rus("--------------------- ïîèñê çàïèñè -------------------------\n");
cout<<Rus("Âûáèðèòå êðèòåðèé ïîèñêà\n");
cout<<Rus(" 1 - Ôàìèëèÿ\n");
cout<<Rus(" 2 - Èìÿ\n");
cout<<Rus(" 3 - Äàòà ðîæäåíèÿ\n");
cout<<Rus(" 4 - Òåëåôîí\n");
cout<<Rus(" 5 - Âûõîä\n");
int vybor=GetNumber(1,5);
switch(vybor){
case 1:{
bool find=false;
string sbuf;
cout<<Rus("Ââåäèòå ôàìèëèþ: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetFamiliya().c_str(), sbuf.c_str() )) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Íåò òàêîé çàïèñè\n");
cout<<"----------------------------------------------------------------"<<endl;
break;
}
case 2:{
bool find=false;
string sbuf;
cout<<Rus("Ââåäèòå èìÿ: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if( strstr( pers[n].GetName().c_str(), sbuf.c_str() ) ){
pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Íåò òàêîé çàïèñè\n");
cout<<"---------------------------------------------------------------"<<endl;
break;
}

case 3:{
bool find=false;
string sbuf;
cout<<Rus("Ââåäèòå äàòó ðîæäåíèÿ: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetData().c_str(), sbuf.c_str())) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Íåò òàêîé çàïèñè\n");
cout<<"----------------------------------------------------------------"<<endl;
break;
}
case 4:{
bool find=false;
string sbuf;
cout<<Rus("Ââåäèòå òåëåôîí: ");
cin>>sbuf;
int n=0;
cout<<Rus(" ÒÅËÅÔÎÍÍÀß ÊÍÈÃÀ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<Rus("| Ôàìèëèÿ | Èìÿ |Äàòà ðîæäåíèÿ| Tåëåôîí | ")<<std::endl;
cout<<"----------------------------------------------------------------"<<endl;
cout<<"| | | | | "<<endl;

while(n<pers.size()){
if(strstr( pers[n].GetTelefon().c_str(), sbuf.c_str())) {

pers[n].Print();
find=true;
break;}
else
n++;
}
if (find==false) cout<<Rus("Íåò òàêîé çàïèñè");
cout<<"-----------------------------------------------------------------"<<endl;
break;
}
case 5:{
break;
}
}
}
void AddPerson(){system("cls");
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

string sbuf;
Person bufPers;
cout<<endl;

cout<<Rus("---------------- Äîáàâëåíèå çàïèñè ----------------\n");
cout<<Rus("Ôàìèëèÿ: ");
cin>>sbuf;
bufPers.SetFamiliya(sbuf);

cout<<endl
<<Rus("Èìÿ: ");
cin>>sbuf;
bufPers.SetName(sbuf);

cout<<endl
<<Rus("Äàòà ðîæäåíèÿ: ");
cin>>sbuf;
bufPers.SetData(sbuf);

cout<<endl
<<Rus("Òåëåôîí:");
cin>>sbuf;
bufPers.SetTelefon(sbuf);

pers.push_back(bufPers);
cout<<"----------------------------------------------------------------"<<endl;
}


void DeletePerson(){system("cls");
string sbuf;
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

cout<<Rus("---------------- Óäàëåíèå çàïèñè ---------------\n");
cout<<Rus("Ââåäèòå ôàìèëèþ: ");
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<<Rus("Íåò òàêîé çàïèñè\n");
cout<<"----------------------------------------------------------------"<<endl;

}




void SaveToFile()
{
ofstream fout("D:\\fileX1.bin", ios_base::out | ios_base::app | ios_base::binary);
if(fout.is_open() )
{
int size = pers.size();
fout.write((char*)&size, sizeof(int));
for(int i=0; i<size; i++)
fout.write((char*)&pers[i], sizeof(Person));
fout.close();
}

}

void LoadFromFile()
{
ifstream fin("D:\\fileX1.bin");
if( fin.is_open() )
{
int size;
fin.read((char*)&size, sizeof(int));
for(int i=0; i<size; i++)
{
Person tmp;
fin.read((char*)&tmp, sizeof(Person));
pers.push_back(tmp);
}
}
fin.close();
}

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <windows.h>
#include <algorithm>
#include <functional>

using namespace std;

void PrintMenu();
void PrintAll();
void SortPerson();
void FindPerson();
void AddPerson();
void DeletePerson();
int GetNumber(int imin, int imax);
std::string & change(std::string & str);
void SaveToFile();
void LoadFromFile();


int main()
{
bool exit=false;
while(true)
{
PrintMenu();
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute ( H, BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE| BACKGROUND_INTENSITY );

switch(GetNumber(1,8)){
case 1: PrintAll(); break;
case 2: SortPerson(); break;
case 3: FindPerson(); break;
case 4: AddPerson(); break;
case 5: DeletePerson(); break;
case 6: SaveToFile(); break;
case 7: LoadFromFile();break;
case 8: exit=true; break;
}
if(exit) break;
}
return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru