Работа со структурами на C++. Задание на создание базыданных работников фирмы с заданными полями.
Это маленькая программка является примером того, как начинать программировать базы данных в среде c++. С возможностью чтения и записи в файл, а также редактирование данных.
1 - Ввод информации о рабочих.
2 - Просмотр информации о рабочих.
3 - Редактирование базы.
4 - Сохранение базы в файл.
5 - Загрузка базы из файла.
6 - Поиск рабочих.
7 - Удаление файла базы.
8 - Выход из системы.
Вся программа реализована на функциях. Так что и как пособие по работе с функциями она тоже может быть полезна.
#pragma hdrstop
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
struct WORKER
{
char fam[15];
char prof[15];
int date;
};
void Input(WORKER *x);
void Read(WORKER *x);
void Find(WORKER *x);
void Edit(WORKER *x);
void Save(WORKER *x);
void Load(WORKER *x);
void Remove();
int main(int argc, char* argv[])
{
clrscr();
textcolor(RED);
textbackground(WHITE);
clrscr();
int n;
char ex;
WORKER work[5], *ptr;
do
{
clrscr();
cout<<"Добро пожаловать, в базу данных рабочих, выберите (< 1 - 7 >) : \n"<<endl;
cout<<"\t 1 - Ввод информации о рабочих."<<endl;
cout<<"\t 2 - Просмотр информации о рабочих."<<endl;
cout<<"\t 3 - Редактирование базы."<<endl;
cout<<"\t 4 - Сохранение базы в файл."<<endl;
cout<<"\t 5 - Загрузка базы из файла."<<endl;
cout<<"\t 6 - Поиск рабчих."<<endl;
cout<<"\t 7 - Удаление файла базы."<<endl;
cout<<"\t 8 - Выход из системы."<<endl;
cin>>n;
switch (n)
{
case 1 :
Input(work);
break;
case 2 :
Read(work);
break;
case 3 :
Edit(work);
break;
case 4 :
Save(work);
break;
case 5 :
Load(work);
break;
case 6 :
Find(work);
break;
case 7 :
Remove();
break;
case 8 :
cout<<"\n\n\n\t\t Выйти?[Y/N] : ";
cin>>ex;
if (ex=='n') ex='n';
break;
default:
cout<<"\a\t Не умничай , повтори ввод! :)";
cout<<"\n\a Нажми любую кнопку ";
getch();
exit(1);
}
} while (n!=8);
}
//////////////Input information////
void Input(WORKER *x)
{
int i;
for(i=0;i<5;i++)
{
clrscr();
cout<<" [ Ввод данных о рабочем ] "<<i+1<<"";
cout<<"\t Введите имя рабочего : ";
cin>>x[i].fam;
cout<<"\n\t Введите должность рабочего : ";
cin>>x[i].prof;
cout<<"\n\t Введите год поступления не работу (xxxx.г) : ";
cin>>x[i].date;
}
}
void Read(WORKER *x)
{
int var;
clrscr();
cout<<"\t Просмотр информации о рабочих"<<endl<<endl;
cout<<"Фамилия. Должность. Год поступления."<<endl;
for(int i=0;i<5;i++)
{
cout<<x[i].fam;
var=15-(strlen(x[i].fam));
for(int j=1;j<var;j++)cout<<" ";
cout<<x[i].prof;
var=15-(strlen(x[i].prof));
for(int j=1;j<var;j++)cout<<" ";
cout<<x[i].date<<endl;
}
getch();
if (strlen(x[0].fam) == 0)
{
clrscr();
cout<<"\t База пуста \a"<<endl;
cout<<"\n\a Нажмите любую кнопку ";
getch();
}
}
void Find(WORKER *x)
{
int abc,k;
char *fami,xi;
clrscr();
cout<<"\t Поиск рабочих, введите по чему чскать : "<<endl;
cout<<"1 - Поиск по фамилии"<<endl;
cout<<"2 - Поиск по должности"<<endl;
cout<<"3 - Поиск по дате приема"<<endl;
cout<<"4 - Выход"<<endl;
cin>>abc;
if(abc<0 || abc>4)
{
cout<<"Такой категории не существует, повторите ввод.";
cin>>abc;
}
switch (abc)
{
case 1 :
clrscr();
cout<<"Введите фамилию для поиска - ";
cin>>fami;
for(int i=0;i<5;i++)
{
if (strcmp(x[i].fam,fami)==0)
{
cout<<endl<<"Это : "<<x[i].fam<<" "<<x[i].prof<<" "<<x[i].date;
k++;
}
}
if (k==0)
{
cout<<" Такой не найден !!!";
}
getch();
break;
case 2 :
clrscr();
cout<<"Введите должность для поиска - ";
cin>>fami;
for(int i=0;i<5;i++)
{
if (strcmp(x[i].prof,fami)==0)
{
cout<<endl<<"Это : "<<x[i].fam<<" "<<x[i].prof<<" "<<x[i].date;
k++;
}
}
if (k==0)
{
cout<<" Такой не найден !!!";
}
getch();
break;
case 3 :
clrscr();
int god;
cout<<"Введите год для поиска (гггг) - ";
cin>>god;
if (god<1999 || god>2003)
{
cout<<"Ошибка ввода даты, повторите ввод (1990-2003)"<<endl;
cin>>god;
}
for(int i=0;i<5;i++)
{
if (x[i].date == god)
{
cout<<endl<<"Это : "<<x[i].fam<<" "<<x[i].prof<<" "<<x[i].date;
k++;
}
}
if (k==0)
{
cout<<" Такой не найден !!!";
}
getch();
break;
case 4 :
cout<<"\n\n\n\t\t Выйти?[Y/N] : ";
cin>>xi;
if (xi=='n') abc=4;
break;
default :
cout<<"\a\t Не умничай :)";
getch();
exit(1);
break;
}
}
void Edit(WORKER *x)
{
int s,i,var;
clrscr();
cout<<" Редактирование базы данных..."<<endl;
cout<<"No Фамилия. Должность. Год поступления."<<endl;
for(int i=0;i<5;i++)
{
cout<<i+1<<" ";
cout<<x[i].fam;
var=15-(strlen(x[i].fam));
for(int j=1;j < var;j++) cout<<" ";
cout<<x[i].prof;
var=15-(strlen(x[i].prof));
for(int j=1;j < var;j++) cout<<" ";
cout<<x[i].date<<endl;
}
cout<<"Введите номер рабочего, которого редактить : ";
cin>>s;
if(s<1 || s>5 || s==0)
{
cout<<"\a Рабочий с таким номером не существует, повторите ввод!"<<endl;
cin>>s;
}
s--;
clrscr();
cout<<"Редактируем рабочего "<<s+1<<endl;
cout<<"Вводите поочередно : ";
cout<<"\nФамилия :";
cin>>x[s].fam;
cout<<"\nДолжность :";
cin>>x[s].prof;
cout<<"\nГод приема на работу :";
cin>>x[s].date;
cout<<"\n Рабочий[ "<<i+1<<" ]изменен в базе."<<endl;
cout<<"\n\a Нажмите любую кнопку. ";
getch();
}
void Load(WORKER *x)
{
clrscr();
cout<<" Читаем информацию из файла ......."<<endl;
FILE *fp;
if ((fp=fopen("data.txt","rt+")) == NULL)
{
cout<<" Ошибка! Файл не существует. \a"<<endl;
cout<<"\n\a Нажмите любую кнопку. ";
getch();
}
else
{
fread(x,sizeof(WORKER),5,fp);
fclose(fp);
cout<<"\n\a Информация считана !Нажмите любую кнопку. ";
getch();
}
}
void Save(WORKER *x)
{
clrscr();
cout<<" Записываем информацию в файл ......."<<endl;
FILE *fp;
if ((fp = fopen("data.txt","wt+")) =
= NULL)
{
cout<<"Ошибка доступа. Файл не создан !!!\a"<<endl;
cout<<"\n\a Нажмите любую кнопку. ";
getch();
}
fwrite(x,sizeof(WORKER),5,fp);
fclose(fp);
cout<<"\n\a Информация записана !Нажмите любую кнопку. ";
getch();
}
void Remove()
{
int a = remove("data.txt");
cout<<"\n\a Файл базы удален! Нажмите любую кнопку ";
getch();
}
Написать комментарий