Разработать БД "Больница" с полями Название, Направление, Местонахождение, Услуги, Стоимость - C (СИ)
Формулировка задачи:
#include <iostream.h> #include <fstream.h> #include <conio.h> #include <string.h> #include <iomanip.h> #include <math.h> #include <stdlib.h> struct Hospital { char name[20]; char napr[20]; char addres[20]; char usl[20]; int cost; }; class hosp { private: Hospital *px; int n; int f; public: hosp(){n=0;px=NULL;} ~hosp(){n=0;if(px!=NULL)delete[]px;} void inputfile(); void outputfile(); void New(); void output(); void redakt(); int stroka(); void add(); void Delete(); void rezultat(); void poisk_name(); void poisk_napr(); void poisk_addres(); void poisk_usl(); void poisk_cost(); void poisk_name_napr(); void poisk_name_addres(); void poisk_name_usl(); void poisk_name_cost(); void poisk_napr_addres(); void poisk_napr_usl(); void poisk_napr_cost(); void poisk_addres_usl(); void poisk_addres_cost(); void poisk_usl_cost(); void sort_name(); void sort_napr(); void sort_addres(); void sort_usl(); void sort_cost(); }; void hosp::inputfile() { ifstream fin; int i; Hospital t; char file[10]; if(px!=NULL){delete[]px;n=0;px=NULL;} cout<<"Imya vhodnogo faila: "; cin>>file; fin.open(file); if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;} n=0; do{fin>>t.name>>t.napr>>t.addres>>t.usl>>t.cost; n++; } while(fin.good()); n--; fin.close(); px=new Hospital[n]; if(px==NULL){cout<<"Net pamyati\n";n=0;getch();return;} fin.open(file); if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;} for(i=0;i<n;i++) {fin>>px[i].name>>px[i].napr>>px[i].addres>>px[i].usl>>px[i].cost; } fin.close(); } void hosp::outputfile() { ofstream fout; char file[20]; int i; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout<<"Vvedite fail dlya sohraneniya: ";cin>>file; fout.open(file,ios::out|ios::trunc); if(fout.fail()){cout<<file<<" Ne sozdan\n";getch();n=0;px=NULL;return;} //Г§Г*ГЇГЁГ±Гј ГЃГ„ Гў ГґГ*éë for(i=0;i<n;i++) {fout.setf(ios::left); fout<<setw(12)<<px[i].name<<setw(12)<<px[i].napr<<setw(12)<<px[i].addres <<setw(12)<<px[i].usl<<setw(12)<<px[i].cost<<endl; } cout<<"Baza dannuih sohranena\n";getch(); } void hosp::New() { int i; cout<<"Kolichestvo zapisey=";cin>>n; if(px!=NULL)delete[] px; px=new Hospital[n]; if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;} for(i=0;i<n;i++) {cout<<"Nazvanie hospitalya:";cin>>px[i].name; cout<<"Napravlenie: ";cin>>px[i].napr; cout<<"Mesto nahojdenie: ";cin>>px[i].addres; cout<<"Vidy uslug: ";cin>>px[i].usl; cout<<"Stoimost' ";cin>>px[i].cost; cout<<endl; }cout<<"Baza dannuih sozdana";getch(); } void hosp::output() { int i; if(px==NULL){cout<<"Massiv pust\n";getch();return;} clrscr(); cout.setf(ios::left); cout<<endl<<"Baza dannuih 'HOSPITAL'\n"<<endl; cout<<"N"<<" "<<setw(12)<<"Nazvanie hospitalya"<<setw(12)<<"Napravlenie"<<setw(12)<<"Adres" <<setw(12)<<"Uslugi"<<setw(12)<<"Stoimost'"<<endl; //âûâîä ГЃГ„ Г*Г* ГЅГЄГ°Г*Г* for(i=0;i<n;i++) {cout.setf(ios::left); i++; cout<<setw(3)<<i<<setw(12)<<px[i-1].name<<setw(12)<<px[i-1].napr<<setw(12)<<px[i-1].addres<<setw(12)<<px[i-1].usl<<setw(12)<<px[i-1].cost<<endl; i--; }; getch(); } int hosp::stroka() { int k; cout.setf(ios::left); output(); cout<<"Vuiberite stroku: ";cin>>k; if(k<0|| k>n+1){cout<<"Net takoi stroki\n";getch();} k--; return k; } void hosp::redakt() { int j, N; if(px==NULL){cout<<"Massiv pust\n";getch();return;} N=stroka(); while(1) {clrscr(); {cout.setf(ios::left); cout<<setw(12)<<px[N].name<<setw(12)<<px[N].napr<<setw(12)<<px[N].addres<<setw(12)<<px[N].usl<<setw(12)<<px[N].cost<<endl; } cout.setf(ios::left); cout<<"1.Nazvani hospitalya\n"<<"2.Napravlenie\n"<<"3.Adres\n"<<"4.Vidy uslug\n"<<"5.Stoimost'\n"<<"6.menu\n" <<"Vash vuibor ";cin>>j; if(cin.good()) switch(j) {case 1:cout<<"Nazvanie hospitalya: ";cin>>px[N].name;break; case 2:cout<<"Napravlenie: ";cin>>px[N].napr;break; case 3:cout<<"Mestonahojdenie: ";cin>>px[N].addres;break; case 4:cout<<"Vidy uslug: ";cin>>px[N].usl;break; case 5:cout<<"Stoimost': ";cin>>px[N].cost;break; case 6:return; default :cout<<"Neverniy vuibor\n povtorite\n";getch(); } else {cout<<"Oshibka vvoda\n";getch(); cin.clear(); //î÷èñòêГ* ïîòîêГ* ââîäГ* while(cin.get()!='\n') return; } } } void hosp::add() { int i; Hospital t, *p; if(px==NULL){cout<<"massiv pyst\n";getch();return;} cout<<"Nazvanie hospitalya: ";cin>>t.name; cout<<"Napravlenie: ";cin>>t.napr; cout<<"Mestonahojdenie: ";cin>>t.addres; cout<<"Vidy uslug: ";cin>>t.usl; cout<<"Stoimost': ";cin>>t.cost; p=px; px=new Hospital[n+1]; if(px==NULL){cout<<"Net pamyati.\n";getch();return;} for(i=0;i<n;i++) px[i]=p[i]; px[n]=t; n++; delete[]p; cout<<"Zapis dobavlena\n";getch(); } void hosp::Delete() { int i,N; Hospital *t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} t=new Hospital[n-1]; if(t==NULL){cout<<"Net pamyati\n";getch();n=0;return;} if(n==1){delete[] px;px=NULL;} else {N=stroka(); for(i=0;i<N;i++) t[i]=px[i]; for(i=N+1;i<n;i++) t[i-1]=px[i]; delete[] px; px=t; } n--;cout<<"zapis udalena\n";getch(); } void hosp::rezultat() { int i; if(px==NULL){cout<<"Massiv pust\n";getch();return;} clrscr(); cout.setf(ios::left); cout<<endl<<"Rezultatui poiska\n"<<endl; cout<<setw(3)<<"N"<<setw(12)<<"Nazvanie hospitalya"<<setw(12)<<"Napravlenie"<<setw(12)<<"Adres" <<setw(12)<<"Uslugi"<<setw(12)<<"Stoimost'"<<endl; for (i=0;i<f;i++) {cout.setf(ios::left); i++; cout<<setw(3)<<i<<setw(12)<<px[i-1].name<<setw(12)<<px[i-1].napr<<setw(12)<<px[i-1].addres<<"0" <<setw(12)<<px[i-1].usl<<setw(12)<<px[i-1].cost<<endl;i--; } getch(); } void hosp::poisk_name() { int i; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Nazvanie hospitalya: "; cin>>h; f=0; for (i=0;i<n;i++) if(strcmp(px[i].name,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_napr() { int i; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Napravlenie: "; cin>>h; f=0; for (i=0;i<n;i++) if(strcmp(px[i].napr,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_addres() { int i; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Vvedite adres: "; cin>>h; f=0; for (i=0;i<n;i++) if(strcmp(px[i].addres,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_usl() { int i; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Vid uslugi: "; cin>>h; f=0; for (i=0;i<n;i++) if(strcmp(px[i].usl,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_cost() { int i,c; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Stoimost': "; cin>>c; f=0; for (i=0;i<n;i++) if(px[i].cost==c) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_name_napr() { int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Nazvanie banka: "; cin>> c; cout <<"Napravlenie: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].name,c)==0 && stricmp(px[i].napr,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_name_addres() { int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Nazvanie hospitalya: "; cin>> c; cout <<"Adres: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].name,c)==0 && stricmp(px[i].addres,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_name_usl() {{ int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Nazvanie hospitalya: "; cin>> c; cout <<"Uslugi: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].name,c)==0 && stricmp(px[i].usl,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_name_cost() {int i,c; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Nazvanie banka: "; cin>> h; cout <<"Stoimost': "; cin>> c; f=0; for (i=0;i<n;i++) if (px[i].cost==c && stricmp(px[i].name,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_napr_addres() { int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Napravlenie: "; cin>> c; cout <<"Adres: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].napr,c)==0 && stricmp(px[i].addres,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_napr_usl() { int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Napravlenie: "; cin>> c; cout <<"Uslugi: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].napr,c)==0 && stricmp(px[i].usl,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_napr_cost() { char h[10]; int i,c; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Napravlenie: "; cin>> h; cout <<"Stoimost': "; cin>> c; f=0; for (i=0;i<n;i++) if (px[i].cost==c && stricmp(px[i].napr,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_addres_usl() { int i; char h[10], c[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Adres: "; cin>> c; cout <<"Uslugi: "; cin>> h; f=0; for (i=0;i<n;i++) if (stricmp(px[i].addres,c)==0 && stricmp(px[i].usl,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_addres_cost() { char h[10]; int i,c; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Adres: "; cin>> h; cout <<"Stoimost': "; cin>> c; f=0; for (i=0;i<n;i++) if (px[i].cost==c && stricmp(px[i].addres,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::poisk_usl_cost() { int i,c; char h[10]; if(px==NULL){cout<<"Massiv pust\n";getch();return;} cout <<"Vid uslugi: "; cin>>h; cout <<"Stoimost': "; cin>> c; f=0; for (i=0;i<n;i++) if (px[i].cost==c && stricmp(px[i].usl,h)==0) { px[f]=px[i]; f++; } if(f==0) {cout<<"Net takoi zapisi\n";getch();return;} rezultat();return; } void hosp::sort_name() { int fl,i,l; Hospital t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} l=n-1; do {fl=0; for(i=0;i<l;i++) if(strcmp(px[i].name, px[i+1].name )>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } else if(strcmp(px[i].name,px[i+1].name)==0) { if(strcmp(px[i].napr, px[i+1].napr)>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } } l--; } while(fl==1); output(); return; } void hosp::sort_napr() { int fl,i,l; Perech t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} l=n-1; do {fl=0; for(i=0;i<l;i++) if(strcmp(px[i].napr, px[i+1].napr)>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } else if(strcmp(px[i].napr,px[i+1].napr)==0) { if(strcmp(px[i].addres, px[i+1].addres )>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } } l--; } while(fl==1); output(); return; } void hosp::sort_addres() { int fl,i,l; Hospital t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} l=n-1; do {fl=0; for(i=0;i<l;i++) if(strcmp(px[i].addres, px[i+1].addres)>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } else if(strcmp(px[i].addres,px[i+1].addres)==0) { if(strcmp(px[i].usl, px[i+1].usl)>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } } l--; } while(fl==1); output(); return; } void bank::sort_usl() { int fl,i,l; Hospital t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} l=n-1; do {fl=0; for(i=0;i<l;i++) if(strcmp(px[i].usl, px[i+1].usl)>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } else if(strcmp(px[i].usl,px[i+1].usl)==0) { if(px[i].cost>px[i+1].cost ) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } } l--; } while(fl==1); output(); return; } void hosp::sort_cost() { int fl,i,l; Hospital t; if(px==NULL){cout<<"Massiv pust\n";getch();return;} l=n-1; do { fl=0; for(i=0;i<l;i++) if(px[i].cost>px[i+1].cost) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } else if(px[i].cost==px[i+1].cost) { if(strcmp(px[i].name, px[i+1].name )>0) { t=px[i]; px[i]=px[i+1]; px[i+1]=t; fl=1; } } l--; } while(fl==1); output(); return; } void main () { hosp a; int j, fl; while (1) {clrscr(); cout<<" "<<"1.Novaya baza dannuih\n" <<" "<<"2.Prosmotr bazui dannuih iz faila\n" <<" "<<"3.Redaktirovanie bazui dannuih\n" <<" "<<"4.Dobavlenie novoi zapisi\n" <<" "<<"5.Udalenie zapisi\n" <<" "<<"6.Prosmotr bazui dannuih\n" <<" "<<"7.Poisk po odnomu kriteriui\n" <<" "<<"8.Sortirovka \n" <<" "<<"9.Poisk po dvum kriteriyam\n" <<" "<<"10.Sohranenie bazui dannuih\n" <<" "<<"0.Exit\n" <<"Vash vuibor:";cin>>j; if(cin.good()) switch(j) {case 1:a.New();break; case 2:a.inputfile();a.output();break; case 3:a.redakt();break; case 4:a.add();break; case 5:a.Delete();break; case 6:a.output();break; case 7:fl=0; while(fl==0) {clrscr(); cout<<"1.Poisk po nazvaniu hospitalya\n" <<"2.Poisk po napravleniy\n" <<"3.Poisk po mestonahojdeniy\n" <<"4.Poisk po vidy uslug\n" <<"5.Poisk po stoimosti\n" <<"6.B Menu\n"; cout<<"Vash vuibor:"; cin>>j; if(cin.good()) switch(j) {case 1:a.poisk_name();break; case 2:a.poisk_napr();break; case 3:a.poisk_addres();break; case 4:a.poisk_usl();break; case 5:a.poisk_cost();break; case 6:fl=1; break; default: cout<<"Net takogo pynkta\n"; cout<<"Povtorite vash vuibor\n"; getch(); } else{cout<<"Oshibka vvoda\n"; getch(); cin.clear(); while(cin.get()!='\n') continue; } }break; case 8:(fl=0); while(fl==0) {clrscr(); cout<<"1.Sortirovka po nazvaniu hospitalya\n" <<"2.Sortirovka po napravleniy\n" <<"3.Sortirovka po mestonahojdeniy\n" <<"4.Sortirovka po vidam uslug\n" <<"5.Sortirovka po stoimosti\n" <<"6.B Menu\n"; cout<<"Vash vuibor:"; cin>>j; if(cin.good()) switch(j) {case 1:a.sort_name();break; case 2:a.sort_napr();break; case 3:a.sort_addres();break; case 4:a.sort_usl();break; case 5:a.sort_cost();break; case 6:fl=1; break; default: cout<<"Net takogo pynkta\n"; cout<<"Povtorite vash vuibor\n"; getch(); } else{cout<<"Oshibka vvoda\n"; getch(); cin.clear(); while(cin.get()!='\n') continue; } }break; case 9:fl=0; while(fl==0) {clrscr(); cout<<"1.Poisk po nazvaniu banka i napravleniy\n" <<"2.Poisk po nazvaniu banka i po mestonahojdeniy\n" <<"3.Poisk po nazvaniu banka i vidy uslug\n" <<"4.Poisk po nazvaniu banka i po stoimosti\n" <<"5.Poisk po napravleniy i po mestonahojdeniy\n" <<"6.Poisk po napravleniy i vidy uslug\n" <<"7.Poisk po napravleniy i po stoimosti\n" <<"8.Poisk po mestonahojdeniy i vidy uslug\n" <<"9.Poisk po mestonahojdeniyi i po stoimosti\n" <<"10.Poisk po vidy uslug i po stoimosti\n" <<"11.Menu\n"; cout<<"Vash vuibor: "; cin>>j; if(cin.good()) switch(j) {case 1:a.poisk_name_napr();break; case 2:a.poisk_name_addres();break; case 3:a.poisk_name_usl();break; case 4:a.poisk_name_cost();break; case 5:a.poisk_napr_addres();break; case 6:a.poisk_napr_usl();break; case 7:a.poisk_napr_cost();break; case 8:a.poisk_addres_usl();break; case 9:a.poisk_addres_cost();break; case 10:a.poisk_usl_cost();break; case 11:fl=1; break; default: cout<<"Net takogo pynkta\n"; cout<<"Povtorite vash vuibor\n"; getch(); } else{cout<<"Oshibka vvoda\n"; getch(); cin.clear(); while(cin.get()!='\n') continue; } }break; case 10:a.outputfile();break; case 0:cout<<endl<<"Ne syhestvyet"<<endl;getch ();return; default :cout<<"Neverniy vuibor\n povtorite\n";getch(); } else {cout<<"Oshibka vvoda\n";getch(); cin.clear(); while(cin.get()!='\n') continue; } } }
Ошибка на 370 строке
Решение задачи: «Разработать БД "Больница" с полями Название, Направление, Местонахождение, Услуги, Стоимость»
textual
Листинг программы
1. #include <stdio.h> #include<conio.h> int main(void){ char g; char s; char p; unsigned int UnitStateWord; printf("Vvedit identufikator grupu (0/1) >"); scanf("%d",&g); printf("Vvedit kod systemu (0-16) >"); scanf("%d",&s); printf("Vvedit oznaku pruveleyovanosti (0 / 1) >"); scanf("%d",&p); UnitStateWord=((unsigned int)g&1)<<9; UnitStateWord|=((unsigned int)s&0x1F)<<11; UnitStateWord|=((unsigned int)p&1)<<8; printf("\nElement profilya korustuvacha = %04x\n" UnitStateWord); { getche(); getche(); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д