Лабораторна робота №1
“Списки в оперативній пам'яті, операції над списками”
Постановка завдання: для об'єктів, опис і функції яких були розроблені в ЛР3, розробити програму, що забезпечує уведення вихідних даних з файлу даних (файл ЛР4) у пам'ять, збереження їх у пам'яті у виді неупорядкованого лінійного 2-спрямованого списку, операції над цим списком.
Індивідуальне завдання: відділ кадрів: прізвище співробітника, ім'я, по батькові, посада, стаж роботи, оклад.
#ifndef CCONTR_H_
#define CCONTR_H_
#include "CString.h"
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
class CContr;
class Display;
class WDisk;
class DataBaseType;
class CRecord;
class DataBaseType//
{
private:
friend Display;
friend WDisk;
friend CContr;
CString CS_Surname,
CS_Name,
CS_Patronymic,
CS_Post;
int i_LengthOfService,
i_RateOfPay;
public:
DataBaseType ():i_LengthOfService(0),i_RateOfPay(0) {};
DataBaseType (char *surname, char *name, char *patronymic,
char *post,int lengthofservice, int rateofpay): CS_Surname(surname),CS_Name(name),
CS_Patronymic(patronymic),i_LengthOfService (lengthofservice),
i_RateOfPay(rateofpay){};
DataBaseType (const DataBaseType &r): CS_Surname (r.CS_Surname), CS_Name (r.CS_Name), CS_Patronymic (r.CS_Patronymic),
CS_Post (r.CS_Post), i_LengthOfService (r.i_LengthOfService), i_RateOfPay (r.i_RateOfPay) {};
virtual ~DataBaseType (){};
DataBaseType& operator= (const DataBaseType &r);
void xchg_data (DataBaseType &r);
void print ();
const CString& Surname () const {return CS_Surname;};
DataBaseType& NewData (char *surname, char *name, char *patronymic,
char *post,int lengthofservice, int rateofpay);
};
class CRecord
{
private:
friend CContr;
friend Display;
friend WDisk;
class DataBaseType record;
int IsEnd,
IsBgn;
class CRecord *next,
*pred;
public:
virtual ~CRecord () {};
CRecord ():next(0),pred(0),IsEnd(0),IsBgn(0){};
CRecord (char *surname, char *name, char *patronymic,
char *post, int lengthofservice, int rateofpay): record (surname, name, patronymic,
post,lengthofservice,rateofpay), next(0),pred(0),IsBgn(0),IsEnd (0) {};
CRecord (const CRecord &r): record (r.record), IsEnd(r.IsEnd),IsBgn(r.IsBgn),
next(r.next), pred(r.pred) {};
CRecord& operator= (const CRecord &r);
CRecord& NewData (char *surname, char *name, char *patronymic,
char *post, int lengthofservice, int rateofpay);
void xchg_data (CRecord &r);
void xchg_point (CRecord *r);
void print ();
};
class CContr
{
private:
friend WDisk;
CRecord* current_record;
CRecord* head_record;
CRecord* last_record;
void xchg(CRecord *f_record,CRecord *s_record);
public:
CContr ();
virtual ~CContr ();
void AddRecord ( const CRecord &given_record );
void sort ();
int Move (int index);
void MoveNext ();
void MovePrev ();
void MoveEnd ();
void MoveBgn ();
void DelCur ();
int IsBgn ();
int IsEnd ();
void DelNRecord (int n_field);
void print ();
int IsEmpty ();
CRecord Record ();
void DelAll ();
void Insert (int index);
void AddTempl (CRecord &new_record);
void Edit (int index);
};
class WDisk : public CContr
{
char* File_Name;
void ReadWord(FILE *file,int &ch,char *buf_str,int &index);
public:
WDisk():File_Name("DataBase.dat"){};
virtual ~WDisk(){};
void Save ();
void Restore();
};
class Display : public WDisk
{
public:
void OutData();
void mask();
Display();
virtual ~Display() {};
void AddNRecord();
};
DataBaseType& DataBaseType::operator= (const DataBaseType &r)
{
CS_Surname = r.CS_Surname;
CS_Name = r.CS_Name;
CS_Patronymic = r.CS_Patronymic;
CS_Post = r.CS_Post;
i_LengthOfService = r.i_LengthOfService;
i_RateOfPay = r.i_RateOfPay;
return *this;
}
void DataBaseType::xchg_data (DataBaseType &r)
{
CS_Surname.xchg (r.CS_Surname);
CS_Name.xchg (r.CS_Name);
CS_Patronymic.xchg (r.CS_Patronymic);
CS_Post.xchg (r.CS_Post);
int i (i_LengthOfService);
i_LengthOfService = r.i_LengthOfService;
r.i_LengthOfService = i;
i = i_RateOfPay;
i_RateOfPay = r.i_RateOfPay;
r.i_RateOfPay = i;
}
void DataBaseType :: print ()
{
int y (wherey());
gotoxy (1,y);
cout << CS_Surname;
gotoxy (11,y);
cout << CS_Name;
gotoxy (19,y);
cout << CS_Patronymic;
gotoxy (31,y);
cout << CS_Post;
gotoxy (41,y);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.