Связанные: Курсовая работа ООАиП (Деятельность салона красоты)
procedure ResFile(var f: c_file);
begin if not fileexists(fname) then begin writeln('Файл ', fname, ' не найден!');
readln;
exit;
end;
reset(f);
end;
{ добавление одной записи }
procedure AddClient(var f: c_file);
var gm1, gm2: client;
canWrite: boolean;
begin ResFile(f);
writeln('Введите данные о клиенте: ');
with gm1 do begin write(' ФИО: ');
readln(name);
write(' Услуга: ');
readln(service);
write(' Год: ');
readln(date.year);
write(' Месяц: ');
readln(date.month);
write(' День: ');
readln(date.day);
write(' Часы: ');
readln(date.hh);
write(' Минуты: ');
readln(date.mm);
write(' Стоимость услуги в рублях: ');
readln(price);
end;
canWrite := true;
while not eof(f) do begin read(f, gm2);
if (gm1.date.year = gm2.date.year) and (gm1.date.month = gm2.date.month) and (gm1.date.day = gm2.date.day) and (abs(gm1.date.hh * 60 + gm1.date.mm -
gm2.date.hh * 60 - gm2.date.mm) < 45) then begin writeln('Уже есть запись на это время!');
canWrite := false;
break;
end;
end;
if canWrite then begin seek(f, filesize(f)); { переход в конец файла}
write(f, gm1); { запись данных в файл }
close(f);
write('Добавление записи завершено. . . ');
readln;
end;
readln;
end;
{ процедура редактирования записи }
procedure EditClient(var f: c_file);
var n: integer;
gm: client;
begin write('Редактировать запись под номером: ');
readln(n);
ResFile(f);
if (filesize(f) < n) or (n < 0) then { если № отрицательный или больше, чем записей в файле}
begin writeln('В файле нет такой записи. . . ');
close(f);
readln;
exit;
end;
writeln('Введите новые данные: ');
with gm do begin write(' ФИО: ');
readln(name);
write(' Услуга: ');
readln(service);
write(' Год: ');
readln(date.year);
write(' Месяц: ');
readln(date.month);
write(' День: ');
readln(date.day);
write(' Часы: ');
readln(date.hh);
write(' Минуты: ');
readln(date.mm);
write(' Стоимость услуги в рублях: ');
readln(price);
end;
seek(f, n - 1); { на 1 меньше, отсчет с нуля }
write(f, gm); { записываем новые данные }
close(f);
write('Редактирование записи завершено. . . ');
readln;
end;
{ удаление записи }
procedure RemoveClient(var f: c_file);
var n, i: integer;
gm: client;
begin write('Удалить запись под номером: ');
readln(n);
ResFile(f);
if (filesize(f) < n) or (n < 0) then begin writeln('В файле нет такой записи. . . ');
close(f);
readln;
exit;
end;
seek(f, n - 1);
for i := n - 1 to filesize(f) - 2 do { сдвиг хвоста файла вверх, запись исчезает }
begin seek(f, i + 1);
read(f, gm);
seek(f, i);
write(f, gm);
end;
seek(f, filesize(f) - 1); { переход к месту за последней записью }
truncate(f); { обрезка файла }
close(f);
write('Удаление записи завершено. . . ');
readln;
end;
procedure PrintTable;{ вспомогательная процедура для рисования заголовка расписания }
begin writeln;
writeln('---------------------------------------------------------------------------------------------------------------------------------');
writeln('| ФИО | Услуга | Дата | Время | Стоимость, руб. ');
writeln('---------------------------------------------------------------------------------------------------------------------------------');