![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Структуры данных
Основной файл
Файл справочник
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. Распределенная обработка
|