Void Spisok::udalenie1()
{
node *q,*q1,*q2;
q = Res->next;
if (q!=NULL)
{
Res->value = q->value;
Res->next = q->next;
delete q;
}
else
{
q1 = phead;
q2 = q1->next;
while (q2!=Res)
{
q1 = q2;
q2 = q2->next;
}
q1->next = NULL;
q2 = NULL;
delete Res;
}
}
ЗАДАЧА.
Побудувати список, в якому зберігається база відділу кадрів підприємства. Кожен запис бази містить відомості про одного співробітника. Формат запису: прізвище і ініціали (30 поз., прізвище повинне починатися з першої позиції), рік народження (5 поз.), оклад (10 поз.). Програма повинна забезпечувати пошук в базі по заданих критеріях, коректування і доповнення бази.
#include <iostream.h>
#include <string.h>
#include <windows.h>
const int l_name = 31;
struct Man
{
char name[l_name];
int birth_day;
float pay;
Man* next;
};
class Spisok
{
private:
Man* phead;
Man* Res;
public:
Spisok()
{
phead = new Man;
phead->next=NULL;
Res=NULL;
}
~Spisok()
{
delete phead;
}
void POSTROENIE();
void VYVOD();
Man* POISK (char* n, int bd, float p);
void VSTAVKA (char* n1, int bd1, float p1);
void VSTAVKA1 (char* n1, int bd1, float p1);
void UDALENIE();
void UDALENIE1();
void OCHISTKA();
};
--------------------------------------------------------------------------
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char name[l_name], name1[l_name];
int day, day1;
float pay, pay1;
int n=0;
Spisok A;
while (true)
{
cout<<"\nМЕНЮ:\n";
cout<<"Построить список: 1\n";
cout<<"Найти элемент списка: 2\n";
cout<<"Вставить элемент списка, после: 3\n";
cout<<"Вставить элемент списка, перед: 4\n";
cout<<"Удалить элемент списка, после: 5\n";
cout<<"Удалить выбранный элемент списка: 6\n";
cout<<"Вывести список: 7\n";
cout<<"Выход: 8\n";
cin >> n;
switch (n)
{
case 1: A.POSTROENIE();
break;
case 2: cout<<"\nВведите данные сотрудника, которого ищите в списке.\n";
cout<<"Введите фамилию и инициалы: ";
cin.get();
cin.getline(name, l_name);
cout<<"Введите год рождения: ";
cin >> day;
cout<<"Введите оклад: ";
cin >> pay;
if (A.POISK(name, day, pay)!= NULL)
cout<<"\nДанный сотрудник в списке есть!\n";
else
cout<<"\nДанного сотрудника в списке нет!\n";
break;
case 3: cout<<"\nВведите данные сотрудника, после которого осуществляется вставка.\n";
cout<<"Введите фамилию и инициалы: ";
cin.get();
cin.getline(name, l_name);
cout<<"Введите год рождения: ";
cin >> day;
cout<<"Введите оклад: ";
cin >> pay;
cin.get();
cout<<"Введите данные сотрудника которого помещаете в список\n";
cout<<"Введите фамилию и инициалы: ";
cin.getline(name1, l_name);
cout<<"Введите год рождения: ";
cin >> day1;
cout<<"Введите оклад: ";
cin >> pay1;
if (A.POISK(name, day, pay)!= NULL)
A.VSTAVKA(name1, day1, pay1);
else
cout<<"\nДанного сотрудника в списке нет!\n";
break;
case 4: cout<<"\nВведите данные сотрудника, перед которым осуществляется вставка\n";
cout<<"Введите фамилию и инициалы: ";
cin.get();
cin.getline(name, l_name);
cout<<"Введите год рождения: ";
cin >> day;
cout<<"Введите оклад: ";
cin >> pay;
cin.get();
cout<<"Введите данные сотрудника которого помещаете в список:\n";
cout<<"Введите фамилию и инициалы: ";
cin.getline(name1, l_name);
cout<<"Введите год рождения: ";
cin >> day1;
cout<<"Введите оклад: ";
cin >> pay1;
if (A.POISK(name, day, pay)!= NULL)
A.VSTAVKA1(name1, day1, pay1);
else
cout<<"\nДанного сотрудника в списке нет!\n";
break;
case 5: cout<<"\nВведите данные сотрудника после которого\n";
cout<<" хотите удалить элемент списка\n";
cout<<"Введите фамилию и инициалы: ";
cin.get();
cin.getline(name, l_name);
cout<<"Введите год рождения: ";
cin >> day;
cout<<"Введите оклад: ";
cin >> pay;
if (A.POISK(name, day, pay)!= NULL)
A.UDALENIE();
else
cout<<"\nДанного сотрудника в списке нет!\n";
break;
case 6: cout<<"\nВведите данные сотрудника которого хотите удалить из списка:\n";
cout<<"Введите фамилию и инициалы: ";
cin.get();
cin.getline(name, l_name);
cout<<"Введите год рождения: ";
cin >> day;
cout<<"Введите оклад: ";
cin >> pay;
cin.get();
if (A.POISK(name, day, pay)!= NULL)
A.UDALENIE1();
else
cout<<"\nДанного сотрудника в списке нет!\n";
break;
case 7: A.VYVOD ();
break;
case 8: A.OCHISTKA ();
return 0;
break;
default : cout<<"\nВведите цифру от 1 до 8!\n";
}
}
return 0;
}
--------------------------------------------------------------------------
