Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <windows.h>
- #include <conio.h>
- #include <cstdlib>
- using namespace std;
- typedef struct market{
- string nazvanie="";//Название магазина
- string telephon="";//номер телефона
- string adres="";//адрес
- string vremya_raboty="";//время работы магазина
- }market;
- market add_market(){// добавления магазина в базу даных
- market m;
- cout<<"Vvedite nazvanie magazyna : ";
- cin>>m.nazvanie;
- cout<<"Vvedite nomer telefona : ";
- cin>>m.telephon;
- cout<<"Vvedite adres : ";
- cin>>m.adres;
- cout<<"Vvedite vremya raboty: ";
- cin>>m.vremya_raboty;
- return m;
- }
- void find_by_tel_number(string num){//поиск по номеру телефона
- market m;
- fstream f;
- f.open("Data.txt");
- while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){// в переменную m записываем каждую строку из файла
- if(num==m.telephon){// если номера телефонов совпадают
- cout<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//то выводим даные
- f.close();//закрываем файл
- break;
- }
- }
- }
- void find_by_title(string title){//поиск по названию
- market m;
- fstream f;
- f.open("Data.txt");
- while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){// в переменную m записываем каждую строку из файла
- if(title==m.nazvanie)//если названия совпадают
- cout<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//выводим даные
- }
- f.close();
- }
- int print_menu(){
- int k=1;
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- system("cls");
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- while(true){
- char symbol = _getch();
- switch( symbol ) {
- case 80:
- if(k<=5)
- k++;
- if(k==1){
- system("cls");
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==2){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==3){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==4){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"4 - Poisk po bazie danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"5 - Exit"<<endl;
- }
- if(k==5){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"5 - Exit"<<endl;
- }
- break;
- case 72:
- if(k>=2)
- k--;
- if(k==1){
- system("cls");
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==2){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==3){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"4 - Poisk po bazie danyh"<<endl;
- cout<<"5 - Exit"<<endl;
- }
- if(k==4){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"4 - Poisk po bazie danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"5 - Exit"<<endl;
- }
- if(k==5){
- system("cls");
- SetConsoleTextAttribute(hConsole, 10);
- cout<<"1 - Vyvod bazy danyh"<<endl;
- cout<<"2 - Dobavit v bazu danyh"<<endl;
- cout<<"3 - Udalit iz bazy danyh"<<endl;
- cout<<"4 - Poisk po bazie danyh"<<endl;
- SetConsoleTextAttribute(hConsole, 15);
- cout<<"5 - Exit"<<endl;
- }
- break;
- }
- if(GetAsyncKeyState(VK_RETURN)) {
- keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
- if(k>5)
- return 5;
- if (k<1)
- return 1;
- return k;
- }
- }
- }
- void printDB(){//печатаем базу даных
- fstream f;
- f.open("Data.txt");
- market m;
- cout<<"| Nazvanie | Nomer telefona | Adresa | Vremya roboty |"<<endl;
- cout<<"|____________________|____________________|____________________|____________________|"<<endl;
- while (f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty) {
- if(m.nazvanie.length()<20) //поганяем под размер столбца
- while (m.nazvanie.length()<19) //19 потому что ширина столбца 20 и отнимаем отсувп в 1 пробел
- m.nazvanie+=" "; //добавляем белый знак в стринг
- if(m.telephon.length()<20) //поганяем под размер столбца
- while (m.telephon.length()<19)
- m.telephon+=" ";
- if(m.adres.length()<20) //поганяем под размер столбца
- while (m.adres.length()<19)
- m.adres+=" ";
- if(m.vremya_raboty.length()<20) //поганяем под размер столбца
- while (m.vremya_raboty.length()<19)
- m.vremya_raboty+=" ";
- cout<<"| "<<m.nazvanie<<"| "<<m.telephon<<"| "<<m.adres<<"| "<<m.vremya_raboty<<"|\n";// вывод готовых даных
- }
- cout<<"|____________________|____________________|____________________|____________________|"<<endl;
- _getch();
- f.close();
- }
- void delete_line(int line){//удаление строки
- fstream o;//старый файл
- ofstream o1;//новый файл
- o.open("Data.txt");
- o1.open("tmp.txt");//временное название нового файла
- int k=0;//счетчик линии
- market m;
- while(o>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){//записываем из файла каждую строку в переменную м
- //пока файл не кончится
- if(k!=line){//если k не ровняется переданой в аргументе номеру линии
- o1<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//то записываем в новый файл
- }
- k++;//увеличение переменной на 1 с каждым проходом по цыклу
- }
- o.close();//закрываем файл
- o1.close();
- remove("Data.txt");//удаляем старый файл
- rename("tmp.txt","Data.txt");//переименироваем файл
- }
- int delete_by_name(string name){
- fstream f;
- f.open("Data.txt");
- int line=0;
- market m;
- while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){
- if (name==m.nazvanie)
- return line;
- line++;
- }
- f.close();
- return line+1;
- }
- int delete_by_tel(string name){
- fstream f;
- f.open("Data.txt");
- int line=0;
- market m;
- while(f>>m.nazvanie>>m.telephon>>m.adres>>m.vremya_raboty){
- if (name==m.telephon)
- return line;
- line++;
- }
- f.close();
- return line+1;
- }
- int main()
- {
- st:int a=print_menu();//записываем то что выберет пользователь
- ofstream out;//поток на запись
- fstream fin; //поток на читание даных
- switch (a) {
- case 1:
- printDB();//печать базы даных
- goto st; //по закончению идем на старт
- case 2:{
- market m;
- m=add_market();
- out.open("Data.txt", std::ios::app);
- out<<m.nazvanie<<" "<<m.telephon<<" "<<m.adres<<" "<<m.vremya_raboty<<endl;//добавление в файл нового магазина
- out.close();//закрываем файл
- }
- goto st;//по закончению идем на старт
- case 3:{
- int k;
- s1:cout<<"1 - Udalenie po nazvaniu"<<endl;
- cout<<"2 - Udalenie po nomeru"<<endl;
- cin>>k;
- if(k==1){
- string n;
- cout<<"Vvedite nazwanie : ";
- cin>>n;
- delete_line(delete_by_name(n));
- _getch();
- goto st;
- }else if(k==2){
- string tel;
- cout<<"Vvedite nomer : ";
- cin>>tel;
- delete_line(delete_by_tel(tel));
- _getch();
- goto st;
- }else goto s1;
- }
- goto st;//по закончению идем на старт
- case 4:{
- int k;
- s:cout<<"1 - Poisk po telefonu"<<endl;
- cout<<"2 - Poisk po navaniu"<<endl;
- cin>>k;
- if(k==1){
- string num1;
- cout<<"Vvedite nomer telefona : ";
- cin>>num1;
- find_by_tel_number(num1);
- _getch();
- goto st;
- }else if(k==2){
- string title;
- cout<<"Vvedite nazwanie : ";
- cin>>title;
- find_by_title(title);
- _getch();
- goto st;
- }else goto s;
- }
- goto st;
- case 5:{
- goto e;
- }
- default:
- goto st;
- }
- e:return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement