{
if (k==0)
textattr(0+(2<<4));
else
textattr(0+(7<<4));
pos[k]=wherex();
cputs(m[k]);
}
k=0;
for (;;)
{
ch=getch();
if (ch==13) break;
if (ch==0 && kbhit())
{
ch=getch();
switch (ch)
{
case 77: if (k==4) continue;
gotoxy(pos[k],1);
textattr(0+(7<<4));
cputs(m[k]);
k++;
gotoxy(pos[k],1);
textattr(0+(2<<4));
cputs(m[k]);
textattr(7+(0<<4));
break;
case 75: if (k==0) continue;
gotoxy(pos[k],1);
textattr(0+(7<<4));
cputs(m[k]);
k--;
gotoxy(pos[k],1);
textattr(0+(2<<4));
cputs(m[k]);
textattr(7+(0<<4));
break;
}
}
}
textattr(7+(0<<4));
_setcursortype(_NORMALCURSOR);
switch (k)
{
case 0: sozd_kart();
break;
case 1: prosm_kart();
break;
case 2: poisk_kart();
break;
case 3: podmenu(pos[k]);
break;
case 4: break;
}
if (k!=4) menu();
return;
}
main()
{
clrscr();
init_kart();
menu();
}
Лабораторная работа №3
Отладить и выполнить первую версию программы, используя пункты лабораторной работы №1.
2.2. Программирование создания, просмотра и поиска базы данных
Пример практического занятия №6
//вторая версия программы
//файл заголовков ind.hpp без изменений
//файл кодов ind.cpp (пока только с функциями dob_ind и sort)
#include "ind.hpp"
int dob_ind(char kl[max_pole],int &kol,tip_index index[])
{
int nom;
for (int i=0;i<kol;i++)
if (index[i].kluch[0]=='\0')
{
strcpy(index[i].kluch,kl);
return(index[i].nomer);
}
strcpy(index[kol].kluch,kl);
index[kol].nomer=kol;
nom=kol;
kol++;
return(nom);
}
void sort(int kol,tip_index index[])
{
int k=kol-1;
int p=1;
while((k>0) && (p))
{
p=0;
for (int i=0;i<k;i++)
if (strcmp(index[i].kluch,index[i+1].kluch)>0)
{
tip_index b=index[i];
index[i]=index[i+1];
index[i+1]=b;
p=1;
}
k--;
}
return;
}
int poisk_ind(char kl[max_pole],int nomer,int kol,
tip_index index[])
{
while (nomer<kol)
{
if (index[nomer].kluch[0]!='\0')
{
if (!strcmp(kl,index[nomer].kluch))
return(nomer);
}
nomer++;
}
return(-1);
}
//файл заголовков fkart.hpp без изменений
//файл кодов fkart.cpp с новыми функциями init_kart,form_kart,
//vvod_kart,vyvod_kart,sozd_kart,prosm_kart,poisk_kart
#include "fkart.hpp"
static struct t_k zap;
static struct t_k zap_null={"","","",0};
tip_index index_k[100];
int kol_k;
void init_kart()
{
fstream f;
clrscr();
f.open(imf_k,ios::in|ios::out|ios::nocreate|ios::binary);
if (!f)
{
f.open(imf_k,ios::in|ios::out|ios::binary);
if (!f)
{
gotoxy(2,23);
clreol();
cerr<<"Ошибка открытия файла "<<imf_k<<",нажмите <Enter>";
getch();
exit(-1);
}
zap=zap_null;
f.seekp((long) 0,ios::beg);
f.write((char *)&zap_null,sizeof(zap_null));
if (!f.good())
{
cout<<'\a';
gotoxy(2,23);
cerr<<"Ошибка записи в файл "<<imf_k<<",нажмите <Enter>\n";
getch();
exit(-1);
}
}
int pr=0;
int i=0;
f.seekg((long)(i*sizeof(zap)),ios::beg);
f.read((char *)&zap,sizeof(zap));
if (!f.good() && !f.eof())
{
cout<<'\a';
gotoxy(2,23);
cerr<<"Ошибка чтения файла "<<imf_k<<",нажмите <Enter>\n";
getch();
exit(-1);
}
while(!f.eof())
{
if (zap.tabn[0]=='\0')
index_k[i].kluch[0]='\0';
else
{
strcpy(index_k[i].kluch,zap.tabn);
pr=1;
}
index_k[i].nomer=i;
i++;
f.seekg((long)(i*sizeof(zap)),ios::beg);
f.read((char *)&zap,sizeof(zap));
if (!f.good() && !f.eof())
{
cout<<'\a';
gotoxy(2,23);
cerr<<"Ошибка чтения файла "<<imf_k<<",нажмите <Enter>\n";
getch();
exit(-1);
}
}
f.clear(0);
kol_k=i;
sort(kol_k,index_k);
if (!pr)
{
cout<<'\a';
gotoxy(2,23);
clreol();
cout<<"Файл "<<imf_k
<<" пустой,нажмите <Enter> и <Создание>\n";
getch();
}
f.close();
return;
}
void form_kart(char* option)
{
const int col=4;
window(10,3,70,16);
textattr(15+(1<<4));
clrscr();
gotoxy(10,2);
cputs("КАРТОТЕКА СЛУЖАЩИХ");
gotoxy(40,2);
cputs(option);
textattr(0+(7<<4));
gotoxy(col,6);
cputs(" Таб.номер : ");
gotoxy(col,8);
cputs(" Фио : ");
gotoxy(col,10);
cputs(" Должность : ");
gotoxy(col,12);
cputs(" Оклад : ");
window(1,1,80,25);
textattr(15+(0<<4));
return;
}
void vvod_kart()
{
const int col=25;
gotoxy(col,8);
cin>>zap.tabn;
cin.seekg(0,ios::end);
gotoxy(col,10);
cin.get(zap.fio,sizeof(zap.fio));
//cin>>zap.fio;
gotoxy(col,12);
cin>>zap.doljn;
do
{
gotoxy(col,14);
cout<<" ";
gotoxy(col,14);
cin.clear(0);
cin.seekg(0,ios::end);
cin>>zap.oklad;
}
while(!cin);
return;
}
void vyvod_kart()
{
const int col=25;
gotoxy(col,8);
cout<<zap.tabn;
gotoxy(col,10);
cout<<zap.fio;
gotoxy(col,12);
cout<<zap.doljn;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.