Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program BazaDannih;
- //uses crt;
- type credit = record
- summa: longint;
- fio: string[45];
- schet: longint;
- vip: longint;
- srok: longint;
- end;
- var chi: credit; //для обмена при сорт.пузырьком
- ch: array[1..1000] of credit; //БД в ОЗУ
- filename:string;
- f: file of credit;
- n: integer; //кол-во записей в БД
- procedure Enter(n: integer); //n -- номер вводимой записи
- var er: integer;
- begin
- repeat
- er := 0;
- Write(n, '. Сумма кредита: ');
- Readln(ch[n].summa);
- if (ch[n].summa < 1000) then
- begin
- inc(er);
- writeln('Хотя бы тысячу!');
- end;
- until er = 0;
- repeat
- er := 0;
- Write('ФИО: ');
- Readln(ch[n].fio);
- until er = 0;
- repeat
- er := 0;
- Write('9-значный банковский счет: ');
- Readln(ch[n].schet);
- if (ch[n].schet < 100000000) or (ch[n].schet > 999999999) then
- begin
- inc(er);
- writeln(ch[n].schet,' -- Не девятизначное число!');
- end;
- until er = 0;
- repeat
- er := 0;
- Write('Выплаченная сумма: ');
- Readln(ch[n].vip);
- if (ch[n].vip < 0) or (ch[n].vip > ch[n].summa) then
- begin
- inc(er);
- writeln('Выплата должна быть меньше суммы кредита (но положительная)');
- end;
- until er = 0;
- repeat
- er := 0;
- Write('Срок погашения кредита (ГГММДД): ');
- Readln(ch[n].srok);
- if (ch[n].srok < 100000) or (ch[n].srok > 991231) then
- begin
- inc(er);
- writeln(ch[n].schet,' -- Не шестизначное число!');
- end;
- until er = 0;
- {write('Остановить сейчас? (Ctrl+Z)');
- if eof then exit else writeln('нет'); }
- end;
- procedure create;
- var i : integer;
- begin
- //clrscr;
- rewrite(f);
- i := 0;
- while not eof do // Символ EOF =Ctrl+Z. Ещё надо Enter.
- begin
- inc(i);
- //clrscr;
- Enter(i);
- Write(f, ch[i]);
- write('Ввод завершён? (Ctrl+Z)');
- end;
- close(f);
- end;
- procedure Display;
- var i:integer;
- begin
- reset(f);
- //clrscr;
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- i:=0;
- while not eof(f) do
- begin
- inc(i);
- read(f, ch[i]);
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- writeln('|**|************|****************************|*************|************|**************|');
- end;
- close(f);
- readln;
- end;
- procedure Add;
- var i:integer;
- begin
- reset(f);
- i := 1; // с первой записи
- while not EOF(f) do
- begin
- read(f, ch[i]);
- inc(i);
- end;
- close(f);
- Enter(i); //добавляем
- n := i;
- rewrite(f); //сбросим весь ch[] в базу теперь
- for i := 1 to n do
- write(f, ch[i]);
- close(f);
- end;
- procedure Search;
- var er:longint; // счётчик ошибок
- c,ee,n1,ts:longint;
- i:integer;
- r: string;
- pp:Char; //выбор2
- begin
- //clrscr;
- writeln(' Поиск:' );
- writeln('1: Поиск по сумме кредита');
- writeln('2: Поиск по ФИО');
- writeln('3: Поиск по номеру счета');
- writeln('4: Поиск по выплаченной сумме');
- writeln('5: Поиск по сроку погашения');
- writeln;
- writeln(' ''-'' для отмены');
- writeln;
- readln(pp);
- if pp = '-' then exit;
- reset(f);
- i:=1; n:=0;
- while not eof(f) do
- begin
- read(f, ch[i]);
- inc(i); inc(n);
- end;
- close(f);
- WriteLn('Прочитана база размером ',n);
- if pp = '1' then begin
- //clrscr;
- writeln('Введите сумму кредита');
- readln(ee);
- n1 := 0;
- for i := 1 to n do
- if ch[i].summa = ee then
- begin
- inc(n1);
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- end;
- if n1 = 0 then
- writeln('Не найдено');
- readln;
- end;
- if PP = '2' then begin
- //clrscr;
- writeln('Введите любую часть ФИО');
- readln(r);
- n1 := 0;
- for i := 1 to n do
- if Pos(r,ch[i].fio)<>0 then
- begin
- inc(n1);
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- end;
- if n1 = 0 then
- writeln('Не найдено');
- readln;
- end;
- if PP = '3' then begin
- //clrscr;
- writeln('Введите номер счета');
- readln(c);
- n1 := 0;
- for i := 1 to n do
- if ch[i].schet = c then
- begin
- inc(n1);
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- end;
- if n1 = 0 then writeln('Нет совпадений.');
- readln;
- end;
- if PP = '4' then begin
- //clrscr;
- writeln('Введите выплаченную сумму');
- readln(er);
- n1 := 0;
- for i := 1 to n do
- if ch[i].vip = er then
- begin
- inc(n1);
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- end;
- if n1 = 0 then writeln('Не найдено');
- readln;
- end;
- if PP = '5' then begin
- //clrscr
- writeln('Введите срок погашения');
- readln(ts);
- n1 := 0;
- for i := 1 to n do
- if ch[i].srok = ts then
- begin
- inc(n1);
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('| №| Сумма | ФИО | Номер счета | Выплачено |Срок погашения|');
- writeln('|**|************|****************************|*************|************|**************|');
- writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
- end;
- if n1 = 0 then writeln('Не найдено');
- readln;
- end;
- if (pp in ['1', '2', '3', '4', '5']) = false then
- begin
- writeln('Неверный ввод');
- readln;
- end;
- end;
- procedure Sort;
- var p: Char;
- i,j,n:Integer;
- begin
- //clrscr;
- writeln(' Сортировка:' );
- writeln('1: Сортировка по сумме кредита');
- writeln('2: Сортировка по ФИО');
- writeln('3: Сортировка по номеру счета');
- writeln('4: Сортировка по выплаченной сумме');
- writeln('5: Сортировка по сроку погашения');
- writeln;
- writeln('''-'' для отмены');
- writeln;
- readln(p);
- if p = '-' then exit;
- reset(f);
- i:=1; n:=0; //n -- число записей
- while not eof(f) do
- begin
- read(f, ch[i]);
- inc(i); inc(n);
- end;
- close(f);
- if p = '1' then begin
- //clrscr;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if ch[i].summa > ch[j].summa then
- begin
- chi := ch[i];
- ch[i] := ch[j];
- ch[j] := chi;
- end;
- end;
- if p = '2' then begin
- //clrscr;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if ch[i].fio > ch[j].fio then
- begin
- chi := ch[i];
- ch[i] := ch[j];
- ch[j] := chi;
- end;
- end;
- if p = '3' then begin
- //clrscr;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if ch[i].schet > ch[j].schet then
- begin
- chi := ch[i];
- ch[i] := ch[j];
- ch[j] := chi;
- end;
- end;
- if p = '4' then begin
- //clrscr;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if ch[i].vip > ch[j].vip then
- begin
- chi := ch[i];
- ch[i] := ch[j];
- ch[j] := chi;
- end;
- end;
- if p = '5' then begin
- //clrscr;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if (ch[i].srok) > (ch[j].srok) then
- begin
- chi := ch[i];
- ch[i] := ch[j];
- ch[j] := chi;
- end;
- end;
- if (p in ['1', '2', '3', '4', '5']) = false then
- begin
- writeln('Неверный ввод');
- readln;
- end else begin //some sort succeeded
- rewrite(f);
- for i := 1 to n do write(f, ch[i]);
- close(f);
- end;
- end;
- procedure Delete;
- var i,m: integer;
- begin
- //clrscr;
- reset(f);
- i:=1; n:=0;
- while not eof(f) do
- begin
- read(f, ch[i]);
- Inc(i); Inc(n);
- end;
- WriteLn('В этой базе ',n,' записей.');
- write('Номер удаляемой записи: (0-отмена)');
- readln(m);
- if m<>0 then begin
- for i := m to n do
- begin
- ch[i]:=ch[i+1];
- {ch[i].summa := ch[i + 1].summa;
- ch[i].fio := ch[i + 1].fio;
- ch[i].schet := ch[i + 1].schet;
- ch[i].vip := ch[i + 1].vip;
- ch[i].srok := ch[i + 1].srok;}
- end;
- n := n - 1;
- close(f);
- rewrite(f);
- for i := 1 to n do write(f, ch[i]);
- close(f);
- writeln('Удаление завершено');
- end else WriteLn('Отменено.');
- readln;
- end;
- procedure Correct;
- var i,k,n:Integer;
- begin
- //clrscr;
- reset(f);
- i:=1; n:=0;
- while not eof(f) do
- begin
- read(f, ch[i]);
- inc(i); inc(n);
- end;
- close(f);
- WriteLn('В этой базе ',n,' записей.');
- write('Номер заменяемой записи: '); readln(k);
- Enter(k);
- rewrite(f);
- for i := 1 to n do write(f, ch[i]);
- close(f);
- end;
- procedure ChooseFile;
- begin
- writeln('Введите имя файла. ''-'' для отмены');
- readln(filename);
- if (filename = '-') then exit;
- assign(f, filename);
- end;
- procedure menu;
- var m:Char;
- begin
- //clrscr;
- Writeln('':20, ' *Меню* ');
- Writeln('':20, '|*****************|');
- Writeln('':20, '| 1 - Создать |');
- Writeln('':20, '| 2 - Вывести |');
- Writeln('':20, '| 3 - Добавить |');
- Writeln('':20, '| 4 - Найти |');
- Writeln('':20, '| 5 - Сортировать |');
- Writeln('':20, '| 6 - Удалить |');
- Writeln('':20, '| 7 - Править |');
- Writeln('':20, '| 8 - Выбрать файл|');
- Writeln('':20, '| 0 - Выйти |');
- Writeln('':20, '|*****************|');
- Writeln;
- if FileExists(filename)
- then WriteLn('Сейчас выбран файл ',filename)
- else WriteLn('Файл ',filename,' не существует или не выбран');
- Readln(m);
- case m of
- '1': Create;
- '2': Display;
- '3': Add;
- '4': Search;
- '5': Sort;
- '6': Delete;
- '7': Correct;
- '8': ChooseFile;
- '0': Halt;
- end;
- end;
- begin
- writeln(' Курсовая работа по информатике');
- writeln(' На тему: "Разработка информационно-поисковой системы');
- writeln(' "Кредитование".');
- writeln(' Выполнила: студентка группы ЭЭ-21-17 ');
- writeln(' Семёнова Анастасия ');
- writeln(' Проверил: доцент Мочалов М. Ю.');
- writeln;
- writeln;
- writeln(' Для продолжения нажмите Enter');
- readln;
- ChooseFile;
- while True do Menu;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement