Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Структуры данных






 

Основной файл

 

 

Назначение Имя Тип Размер, байт
Ф.И.О fio string 30
код должности k integer 2
 

Файл справочник

 

Назначение Имя Тип Размер, байт
код должности kl integer 2
Наименование
Должности nm string 30
зарплата sl integer 2

 

PROGRAM T_2F;

USES CRT;

TYPE

rec_g = ЗАПИСЬ ОСНОВНОГО ФАЙЛА

RECORD

k: INTEGER;

fio: STRING[30];

END;

rec_s = ЗАПИСЬ ФАЙЛА-СПРАВОЧНИКА

RECORD

kl: INTEGER; КОД ДОЛЖНОСТИ

nm: STRING[30]; НАИМЕНОВАНИЕ ДОЛЖНОСТИ

sl: INTEGER; ЗАРПЛАТА

END;

VAR

nameg, names: STRING;

PROCEDURE inp_g(fname: STRING); ПРОЦЕДУРА ВВОДА ОСНОВНОГО ФАЙЛА

Fname – ВХОДНОЙ ПАРАМЕТР – ИМЯ ОСНОВНОГО ФАЙЛА

VAR

f_g: FILE OF rec_g;

r_g: rec_g; ВСПОМОГАТЕЛЬНАЯ

BEGIN

ASSIGN(f_g, fname);

{$I-}

Reset(f_g);

{$I+}

if IoResult< > 0 then

begin

Rewrite(f_g);

with r_g do

begin

WRITE('Введите код должности: ');

READLN(k);

WHILE k < > 0 DO

BEGIN

WRITE(' Введите фамилию: ');

READLN(fio);

WRITE(f_g, r_g);

WRITE('Введите код должности: ');

READLN(k);

END;

end;

end;

CLOSE(f_g);

END;

 

PROCEDURE inp_s(fname: STRING);

ПРОЦЕДУРА ВВОДА ФАЙЛА СПРАВОЧНИКА

Fname – ВХОДНОЙАРАМЕТР ИМЯ ФАЙЛА

VAR

f_s: FILE OF rec_s;

r_s: rec_s;

BEGIN

ASSIGN(f_s, fname);

{$I-}

Reset(f_s);

{$I+}

if IoResult< > 0 then

begin

Rewrite(f_s);

with r_s do

begin

WRITE(' Введите код должности: ');

READLN(kl);

WHILE kl< > 0 DO

BEGIN

WRITE('Bвeдите название должности: ');

READLN(nm);

WRITE('Bвeдите оклад: ');

READLN(sl);

WRITE(f_s, r_s);

WRITE(' Введите код должности: ');

READLN(kl);

END;

end;

end;

CLOSE(f_s);

END;

 

PROCEDURE proc(g_name, s_name: STRING);

ПРОЦЕДУРА ВЫВОДА РЕЗУЛЬТИРУЮЩЕЙ ТАБЛИЦЫ

ВХОДНЫЕ ПАРАМЕТРЫ:

g_name – ИМЯ ОСНОВНОГО ФАЙЛА

s_name – ИМЯ ФАЙЛА СПРАВОЧНИКА ДОЛЖНОСТЕЙ

VAR

f_g: FILE OF rec_g;

f_s: FILE OF rec_s;

r_g: rec_g;

r_s: rec_s;

n: INTEGER;

BEGIN

ASSIGN(f_g, g_name);

Reset(f_g);

ASSIGN(f_s, s_name);

Reset(f_s);

n: = 1;

clrscr;

WHILE NOT EOF(f_g) do

BEGIN

READ(f_g, r_g); СЧИТАТЬ ЗАПИСЬ ОСНОВГО ФАЙЛА

READ(f_s, r_s);

НАЙТИ СООТВЕТСВУЮЩУЮ ЗАПИСЬ ФАЙЛА СПРАВОЧНИКА И СЧИТАТЬ ЕЕ

while (NOT EOF(f_s) and (r_g.k < > r_s.kl)) do READ(f_s, r_s);

GOTOXY(1, n); ВЫВОД ИНФОРМАЦИИ

WRITE(r_g.fio);

GOTOXY(20, n);

WRITE(r_s.nm);

GOTOXY(40, n);

WRITE(r_s.sl);

n: = n+1;

seek(f_s, 0);

END;

CLOSE(f_g);

CLOSE(f_s);

END;

 

BEGIN

clrscr;

WRITE(' Введите имя основного файла: ');

READLN(nameg);

WRITE ('Введите имя файла-справочника: ');

READLN(names);

CLRSCR;

inp_g(nameg);

inp_s(names);

proc(nameg, names);

READLN;

END.

 

Недостатки:

1. Нет меню

2. Нет обработки ошибок пользователя

3. Нет контроля за соответствием кодов должностей

иначе нужна проверка целостности данных

Более сложные проблемы:

1. Сеть. Одновременная работа с файлами данных нескольких пользователей

2. Хранение истории изменений

3. Распределенная обработка

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.