Выбор классов определяется экономическими понятиями разрабатываемой системы. В нашем случае - это акты, расценки, ведомости (классы-понятия akt, cena, ved). Для создания системы управления базами данных с индексной организацией требуется еще "служебный" класс (index). Класс ved является производным от классов akt и cena. Класс index является базовым для akt, cena и ved. Для функционирования нашей системы создадим файл управления, содержащий главную функцию и меню.
Структура программы (иерархия классов) будет выглядеть следующим образом:
index
/ \
акт cena
\ /
ved
|
файл управления
Вид главного меню и подменю:
Акты Расценки Ведомости Выход
Создание Создание
Просмотр Просмотр
Удаление Удаление
Замена Замена
Выход Выход
Классы представлены в программе файлом заголовков (определение класса) и файлом кодов (элементы-функции класса).
//первая версия программы (файл управления и интерфейсы классов)
//файл заголовков index.hpp
#ifndef index_hpp
#define index_hpp
#include <conio.h>
#include <iostream.h>
#include <string.h>
#define zaglushka(st) gotoxy(2,23); cprintf("%*s",60," "); \
gotoxy(2,23); cprintf("%s",st); getch();
const int max_mass=100;
const int max_pole=10;
class ind //определение базового класса
{
private: //закрытые элементы класса
struct tip_index //индексный массив
{
char kluch[max_pole]; //ключ записи
int nomer; //номер записи в файле данных
} index[max_mass];
int kol; //кол-во элементов индексного массива
public: //открытые элементы класса
char* imf; //имя файла данных
int razm_zap; //размер записи файла данных
ind(char* im):imf(im) {kol=0;} //конструктор
void init_ind(int,char*); //инициализация элемента массива
void init_kol(int); //инициализация количества элементов
int dob_ind(char*); //добавление нового элемента
int poisk_ind(char*,int,int&);//поиск элемента массива
void cor_ind(int,char*); //корректировка массива
};
#endif
//файл кодов index.cpp еще не требуется
//файл заголовков akt.hpp
#ifndef akt_hpp
#define akt_hpp
#include <fstream.h>
#include <stdlib.h>
#include <dos.h>
#include "index.hpp"
class akt : public ind //определение производного класса akt
{ //простое наследование с атрибутом public
protected: //защищенные элементы класса
char tabn[10]; //табельный номер рабочего
char fio[30]; //ф.и.о.
char vid[10]; //вид выполненной работы
float objem; //объем выполненной работы
public: //открытые элементы класса
akt(char* im):ind(im) //конструктор
{
tabn[0]='\0';
fio[0]='\0';
vid[0]='\0';
objem=0;
} //прототипы элементов-функций класса:
void init(); //инициализация индексного массива
void sozdanie(); //ввод новых документов и запись в файл
void correct(int); //корректировка (замена, удаление)
protected:
void zapis_zap(int); //запись записи в файл
void chtenie_zap(int);//чтение записи из файла
private: //закрытые элементы-функции класса
void formecran(char* podmenu);//вывод формы документа
void vvod(); //ввод содержимого документа
void vyvod(); //вывод содержимого документа
};
#endif
//файл кодов akt.cpp (с заглушками)
#include "akt.hpp"
fstream p_akt;
//функция init
void akt::init()
{ zaglushka("Вызвана функция akt::init"); }
//функция sozdanie
void akt::sozdanie()
{ zaglushka("Вызвана функция akt::sozdanie"); }
//функция correct
void akt::correct(int x)
{ zaglushka("Вызвана функция akt::correct"); }
//файл заголовков cena.hpp
#ifndef cena_hpp
#define cena_hpp
#include <fstream.h>
#include <stdlib.h>
#include <dos.h>
#include "index.hpp"
class cena : public ind //определение производного класса cena
{ //простое наследование с атрибутом public
protected: //защищенные элементы класса
char vid[10]; //вид работы
char naim[30]; //наименование работы
float rascenka; //расценка работы
public: //открытые элементы класса
cena(char* im):ind(im)//конструктор
{
vid[0]='\0';
naim[0]='\0';
rascenka=0;
} //прототипы элементов-функций класса:
void init(); //инициализация индексного массива
void sozdanie(); //ввод новых документов и запись в файл
void correct(int); //корректировка (замена, удаление)
protected:
void zapis_zap(int); //запись записи в файл
void chtenie_zap(int);//чтение записи из файла
private: //закрытые элементы класса
void formecran(char* podmenu);//вывод формы документа
void vvod(); //ввод содержимого документа
void vyvod(); //вывод содержимого документа
};
#endif
//файл кодов cena.cpp (с заглушками)
#include "cena.hpp"
fstream p_cena;
//функция init
void cena::init()
{ zaglushka("Вызвана функция cena::init"); }
//функция sozdanie
void cena::sozdanie()
{ zaglushka("Вызвана функция cena::sozdanie"); }
//функция correct
void cena::correct(int x)
{ zaglushka("Вызвана функция cena::correct"); }
//файл заголовков vedom.hpp
#ifndef vedom_hpp
#define vedom_hpp
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <dos.h>
#include "akt.hpp"
#include "cena.hpp"
class ved : public akt,public cena //определение производного
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.