Списки в оперативній пам'яті, операції над списками. Керування програмами. Керування таймером. Системні керуючі блоки. Управління пам’яттю: таблиця векторів переривань

Страницы работы

Содержание работы

Лабораторна робота №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);

Похожие материалы

Информация о работе