Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
02.05.2014
Размер:
9.46 Кб
Скачать
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip.h>
#include<string.h>
struct wrkr
{
char fam[50];
char im[50];
char ot[50];
char dep[50];
char number[50];
char hrs[10];
char money[10];
char extr1[10];
char extr2[10];
char extrf[15];
char extri[10];
char extro[15];
};
ofstream fout;
ifstream fin;
void input(wrkr s[], int &m)
{
int l;
cout<<"Enter information-1,cancel-0: "<<endl;
cin>>l;
cout<<"  F.I.O."<<setw(29)<<"OTDEL"<<setw(10)<<"HOMEP"<<setw(10)<<"4ACbI"<<setw(10)<<"ZARPLATA"<<endl;
m=0;
cin>>s[m].fam>>s[m].im>>s[m].ot>>s[m].dep>>s[m].number>>s[m].hrs>>s[m].money;
cout<<"Continue?(1-Yes,0-No):";
cin>>l;
if (l==0)
{
m=m+1;
return;
}
do
{
m++;
cin>>s[m].fam>>s[m].im>>s[m].ot>>s[m].dep>>s[m].number>>s[m].hrs>>s[m].money;
cout<<"Continue?(1-Yes,0-No):"; 
cin>>l;
} while(l!=0);
m=m+1;
};
void outputtofile(wrkr s[],int m)
{
int i;
for(i=0;i<m;i++)
fout<<s[i].fam<<" "<<s[i].im<<" "<<s[i].ot<<" "<<s[i].dep<<" "<<s[i].number<<" "<<s[i].hrs<<" "<<s[i].money<<endl;
};
void inputfrmfile(wrkr s[],int &m)
{
m=0;
fin>>s[m].fam>>s[m].im>>s[m].ot>>s[m].dep>>s[m].number>>s[m].hrs>>s[m].money;
while(fin.good())
{	
m++;
fin>>s[m].fam>>s[m].im>>s[m].ot>>s[m].dep>>s[m].number>>s[m].hrs>>s[m].money;
}
};
void output(wrkr s[],int m)
{
int i;
cout<<setw(12)<<"F.I.O."<<setw(29)<<"OTDEL"<<setw(6)<<"HOMEP"<<setw(6)<<"4ACbI"<<setw(9)<<"ZARPLATA"<<endl;
for (i=0;i<m;i++)
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
};
void add(wrkr s[],int m,int &x)
{
int l=1;
m=m-1;
cout<<"To continue enter 1, to cancel enter 0: "<<endl;
cin>>l;
do
{
m++;
cout<<"  F.I.O."<<setw(29)<<"OTDEL"<<setw(10)<<"HOMEP"<<setw(10)<<"4ACbI"<<setw(10)<<"ZARPLATA"<<endl;
cin>>s[m].fam>>s[m].im>>s[m].ot>>s[m].dep>>s[m].number>>s[m].hrs>>s[m].money;
cout<<"Continue?(1-Yes,0-No):";
cin>>l;
} 
while(l!=0);
x=m;
};
void del(wrkr s[],int m,int z)
{
int i;
for(i=(z-1);i<(m-1);i++)
s[i]=s[i+1];
};
void search1(wrkr s[],int m)
{
int f1,o,i,h;
char w1[15];
cout<<"Select search field(1-5):"<<endl;
cout<<"1-F.I.O."<<endl;
cout<<"2-OTDEL"<<endl;
cout<<"3-HOMEP"<<endl;
cout<<"4-4ACbI"<<endl;
cout<<"5-ZARPLATA"<<endl;
cin>>f1;
cout<<"Enter word to search: ";
cin>>w1;
for(i=0;i<m;i++)
{
switch(f1)
{
case 1:
o=1;
strcpy(s[i].extrf,s[i].fam);
strcpy(s[i].extri,s[i].im);
strcpy(s[i].extro,s[i].ot);
break;
case 2:
strcpy(s[i].extr1,s[i].dep);
break;
case 3:
strcpy(s[i].extr1,s[i].number);
break;
case 4:
strcpy(s[i].extr1,s[i].hrs);
break;
case 5:
strcpy(s[i].extr1,s[i].money);
break;
}
}
h=0;
if (o==1)
{
for(i=0;i<m;i++)
if((strcmpi(s[i].extrf,w1)==0)||(strcmpi(s[i].extri,w1)==0)||(strcmpi(s[i].extro,w1)==0))
{
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
h=i;
}
}
for(i=0;i<m;i++)
if (strcmpi(s[i].extr1,w1)==0)
{
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
h=i;
}
if (h==0)
{
cout<<"No results"<<endl;
}
};
void search2(wrkr s[],int m)
{
int i,h,o,p,f1,f2;
char w1[15],w2[15];
cout<<"1-F.I.O."<<endl;
cout<<"2-OTDEL"<<endl;
cout<<"3-HOMEP"<<endl;
cout<<"4-4ACbI"<<endl;
cout<<"5-ZARPLATA"<<endl;
cout<<"Select 1st field: "; cin>>f1;
cout<<"Select 2nd field: "; cin>>f2;
cout<<"Enter word to search in 1st field: ";cin>>w1;
cout<<"Enter word to search in 2nd field: ";cin>>w2;
for(i=0;i<m;i++)
{
switch(f1)
{
case 1:
o=1;
strcpy(s[i].extrf,s[i].fam);
strcpy(s[i].extri,s[i].im);
strcpy(s[i].extro,s[i].ot);
break;
case 2:
strcpy(s[i].extr1,s[i].dep);
break;
case 3:
strcpy(s[i].extr1,s[i].number);
break;
case 4:
strcpy(s[i].extr1,s[i].hrs);
break;
case 5:
strcpy(s[i].extr1,s[i].money);
break;
};
switch(f2)
{
case 1:
p=1;
strcpy(s[i].extrf,s[i].fam);
strcpy(s[i].extri,s[i].im);
strcpy(s[i].extro,s[i].ot);
break;
case 2:
strcpy(s[i].extr2,s[i].dep);
break;
case 3:
strcpy(s[i].extr2,s[i].number);
break;
case 4:
strcpy(s[i].extr2,s[i].hrs);
break;
case 5:
strcpy(s[i].extr2,s[i].money);
break;
};
}
h=0;
if(o==1)
{
for(i=0;i<m;i++)
if(((strcmpi(s[i].extrf,w1)==0)||(strcmpi(s[i].extri,w1)==0)||(strcmpi(s[i].extro,w1)==0))&(strcmpi(s[i].extr2,w2)==0))
{
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
h++;
}
}
if(p==1)
{
for(i=0;i<m;i++)
if(((strcmpi(s[i].extrf,w2)==0)||(strcmpi(s[i].extri,w2)==0)||(strcmpi(s[i].extro,w2)==0))&((strcmpi(s[i].extr1,w1)==0)))
{
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
h++;
}
};
for(i=0;i<m;i++)
if((strcmpi(s[i].extr1,w1)==0)&(strcmpi(s[i].extr2,w2)==0))
{
cout<<setw(2)<<i+1<<setw(10)<<s[i].fam<<setw(10)<<s[i].im<<setw(13)<<s[i].ot<<setw(6)<<s[i].dep<<setw(6)<<s[i].number<<setw(6)<<s[i].hrs<<setw(9)<<s[i].money<<endl;
h++;
}
};
void sort(wrkr s[],int m)
{
int i,fl,j,g;
wrkr z;
int v1,v2;
v1=0;
v2=0;
cout<<"1-F.I.O."<<endl;
cout<<"2-OTDEL"<<endl;
cout<<"3-HOMEP"<<endl;
cout<<"4-4ACbI"<<endl;
cout<<"5-ZARPLATA"<<endl;
cout<<"Select field to sort by: "; 
cin>>g;
j=m-1;
switch (g)
{
case 1:
{
do
{
fl=0;
for(i=0;i<j;i++)
if (stricmp(s[i].fam,s[i+1].fam)>0)
{ 
z=s[i];
s[i]=s[i+1];
s[i+1]=z;
fl=1;
}
j--;
}while (fl==1);
}break;
case 2:
{
do
{
fl=0;
for(i=0;i<j;i++)
if (stricmp(s[i].dep,s[i+1].dep)>0)
{ 
z=s[i];
s[i]=s[i+1];
s[i+1]=z;
fl=1;
}
j--;
}while (fl==1);
}break;
case 3:
{
do
{
fl=0;
for(i=0;i<j;i++)
{
v1=atoi(s[i].number);
v2=atoi(s[i+1].number);
if (v1>v2)
{ 
z=s[i];
s[i]=s[i+1];
s[i+1]=z;
fl=1;
}
}
j--;
}while (fl==1);
}break;
case 4:
{
do
{
fl=0;
for(i=0;i<j;i++)
if (stricmp(s[i].hrs,s[i+1].hrs)>0)
{ 
z=s[i];
s[i]=s[i+1];
s[i+1]=z;
fl=1;
}
j--;
}while (fl==1);
}break;
case 5:
{
do
{
fl=0;
for(i=0;i<j;i++)
{
v1=atoi(s[i].money);
v2=atoi(s[i+1].money);
if (v1>v2)
{ 
z=s[i];
s[i]=s[i+1];
s[i+1]=z;
fl=1;
}
}
j--;
}while (fl==1);
}break;
}
};
void main()
{
const int Q=50;
char file[5];
int a,d,e,s,X,tag,num;
wrkr w[Q];
cout<<"Enter filename: ";
cin>>file;
cout<<"Select operation with base: "<<endl;
cout<<"1-Create new base"<<endl;
cout<<"2-View existing base"<<endl;
cout<<"3-Edit existing base"<<endl;
cout<<"4-Add new entry to base"<<endl;
cout<<"5-Delete entry from base"<<endl;
cout<<"6-Search in base"<<endl;
cout<<"7-Sort base"<<endl;
cout<<"0-Exit program"<<endl;
do
{
cout<<"\nSelect operation with base: ";
cin>>X;
switch(X)
{
case 1:
{
input(w,a);
fout.open(file);
if (fout==NULL)
{
cout<<"The file has not been created";
int getch();
exit(1);
}
outputtofile(w,a);
fout.close();
} 
break;
case 2:
{
fin.open(file);
if (fin==NULL)
{
cout<<"File wasn`t found!";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
output(w,a);
} 
break;
case 3:
{
fin.open(file);
if (fout==NULL)
{
cout<<"File wasn`t found!";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
cout<<"Continue input,to cancel enter 0."<<endl;
cout<<"  F.I.O."<<setw(29)<<"OTDEL"<<setw(10)<<"HOMEP"<<setw(10)<<"4ACbI"<<setw(10)<<"ZARPLATA"<<endl;
do
{
cout<<"Enter number of entry to edit: "; 
cin>>num;
if (num>a) cout<<"There is no such entry.";
else
{
cout<<"Editing entry number "<<num<<":"<<endl;
cin>>w[num-1].fam>>w[num-1].im>>w[num-1].ot>>w[num-1].dep>>w[num-1].number>>w[num-1].hrs>>w[num-1].money;
}
cout<<"Continue?:"; cin>>s;
} while(s!=0);
fout.open(file);
if (fout==NULL)
{
cout<<"The file has not been created";
int getch();
exit(1);
}
outputtofile(w,a);
fout.close();
} 
break;
case 4:
{
fin.open(file);
if (fin==NULL)
{
cout<<"File wasn`t found!";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
add(w,a,d);
fout.open(file);
if (fout==NULL)
{
cout<<"The file has not been created";
int getch();
exit(1);
}
outputtofile(w,d+1);
fout.close();
} 
break;
case 5:
{
fin.open(file);
if (fin==NULL)
{
cout<<"File wasn`t found!";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
cout<<"Deleting entries from base, to cancel enter 0"<<endl;
cout<<"Enter number of entry: "; 
cin>>e;
if (e!=0)
{
del(w,a,e);
a=a-1;
fout.open(file);
if (fout==NULL)
{
cout<<"The file has not been created";
int getch();
exit(1);
}
outputtofile(w,a);
fout.close();
}
}
break;
case 6:
{
fin.open(file);
if (fin==NULL)
{
cout<<"File wasn`t found";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
cout<<"Enter the number of search parametrs\n1 or 2?: ";
cin>>tag;
if(tag==1)
{
search1(w,a);
}
if(tag==2)
{
search2(w,a);
}
}
break;
case 7:
{
fin.open(file);
if (fin==NULL)
{
cout<<"File wasn`t found";
int getch();
exit(1);
}
inputfrmfile(w,a);
fin.close();
sort(w,a);
fout.open(file);
if (fout==NULL)
{
cout<<"Error writing to file";
int getch();
exit(1);
}
outputtofile(w,a);
fout.close();
cout<<"List have been sorted";
}
break;
}
}while(X!=0);
}
Соседние файлы в папке лаба 3