Advertisement
ALTracer

Credits

Jul 3rd, 2018
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 13.30 KB | None | 0 0
  1. program BazaDannih;
  2. //uses crt;
  3. type credit = record
  4.     summa: longint;
  5.     fio: string[45];
  6.     schet: longint;
  7.     vip: longint;
  8.     srok: longint;
  9. end;
  10. var chi: credit; //для обмена при сорт.пузырьком
  11.   ch: array[1..1000] of credit; //БД в ОЗУ
  12.   filename:string;
  13.   f: file of credit;
  14.   n: integer; //кол-во записей в БД
  15.  
  16. procedure Enter(n: integer); //n -- номер вводимой записи
  17. var er: integer;
  18. begin
  19.   repeat
  20.     er := 0;
  21.     Write(n, '. Сумма кредита: ');
  22.     Readln(ch[n].summa);
  23.     if (ch[n].summa < 1000) then
  24.     begin
  25.       inc(er);
  26.       writeln('Хотя бы тысячу!');
  27.     end;
  28.   until er = 0;
  29.   repeat
  30.     er := 0;
  31.     Write('ФИО: ');
  32.     Readln(ch[n].fio);
  33.   until er = 0;
  34.   repeat
  35.     er := 0;
  36.     Write('9-значный банковский счет: ');
  37.     Readln(ch[n].schet);
  38.     if (ch[n].schet < 100000000) or (ch[n].schet > 999999999) then
  39.     begin
  40.       inc(er);
  41.       writeln(ch[n].schet,' -- Не девятизначное число!');
  42.     end;
  43.   until er = 0;
  44.   repeat
  45.     er := 0;
  46.     Write('Выплаченная сумма: ');
  47.     Readln(ch[n].vip);
  48.     if (ch[n].vip < 0) or (ch[n].vip > ch[n].summa) then
  49.     begin
  50.       inc(er);
  51.       writeln('Выплата должна быть меньше суммы кредита (но положительная)');
  52.     end;
  53.   until er = 0;
  54.   repeat
  55.     er := 0;
  56.     Write('Срок погашения кредита (ГГММДД): ');
  57.     Readln(ch[n].srok);
  58.     if (ch[n].srok < 100000) or (ch[n].srok > 991231) then
  59.     begin
  60.       inc(er);
  61.       writeln(ch[n].schet,' -- Не шестизначное число!');
  62.     end;
  63.   until er = 0;
  64.   {write('Остановить сейчас? (Ctrl+Z)');
  65.   if eof then exit else writeln('нет');  }
  66. end;
  67.  
  68. procedure create;
  69. var i : integer;
  70. begin
  71.   //clrscr;
  72.   rewrite(f);
  73.   i := 0;
  74.   while not eof do // Символ EOF =Ctrl+Z. Ещё надо Enter.
  75.   begin
  76.     inc(i);
  77.     //clrscr;
  78.     Enter(i);
  79.     Write(f, ch[i]);
  80.     write('Ввод завершён? (Ctrl+Z)');
  81.   end;
  82.   close(f);
  83. end;
  84.  
  85. procedure Display;
  86. var i:integer;
  87. begin
  88.   reset(f);
  89.   //clrscr;
  90.   writeln('|**|************|****************************|*************|************|**************|');
  91.   writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  92.   writeln('|**|************|****************************|*************|************|**************|');
  93.   i:=0;
  94.   while not eof(f) do
  95.   begin
  96.     inc(i);
  97.     read(f, ch[i]);
  98.     writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  99.     writeln('|**|************|****************************|*************|************|**************|');
  100.   end;
  101.   close(f);
  102.   readln;
  103. end;
  104.  
  105. procedure Add;
  106. var i:integer;
  107. begin
  108.   reset(f);
  109.   i := 1; // с первой записи
  110.   while not EOF(f) do
  111.   begin
  112.     read(f, ch[i]);
  113.     inc(i);
  114.   end;
  115.   close(f);
  116.   Enter(i); //добавляем
  117.   n := i;
  118.   rewrite(f); //сбросим весь ch[] в базу теперь
  119.   for i := 1 to n do
  120.     write(f, ch[i]);
  121.   close(f);
  122. end;
  123.  
  124. procedure Search;
  125. var er:longint; // счётчик ошибок
  126.   c,ee,n1,ts:longint;
  127.   i:integer;
  128.   r: string;
  129.   pp:Char; //выбор2
  130. begin
  131.   //clrscr;
  132.   writeln(' Поиск:' );
  133.   writeln('1: Поиск по сумме кредита');
  134.   writeln('2: Поиск по ФИО');
  135.   writeln('3: Поиск по номеру счета');
  136.   writeln('4: Поиск по выплаченной сумме');
  137.   writeln('5: Поиск по сроку погашения');
  138.   writeln;
  139.   writeln(' ''-'' для отмены');
  140.   writeln;
  141.   readln(pp);
  142.   if pp = '-' then exit;
  143.  
  144.   reset(f);
  145.   i:=1; n:=0;
  146.   while not eof(f) do
  147.   begin
  148.     read(f, ch[i]);
  149.     inc(i); inc(n);
  150.   end;
  151.   close(f);  
  152.   WriteLn('Прочитана база размером ',n);
  153.  
  154.   if pp = '1' then begin
  155.     //clrscr;
  156.     writeln('Введите сумму кредита');
  157.     readln(ee);
  158.     n1 := 0;
  159.     for i := 1 to n do
  160.       if ch[i].summa = ee then
  161.       begin
  162.         inc(n1);
  163.         writeln('|**|************|****************************|*************|************|**************|');
  164.         writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  165.         writeln('|**|************|****************************|*************|************|**************|');
  166.         writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  167.       end;
  168.     if n1 = 0 then
  169.       writeln('Не найдено');
  170.     readln;
  171.   end;
  172.  
  173.   if PP = '2' then begin
  174.     //clrscr;
  175.     writeln('Введите любую часть ФИО');
  176.     readln(r);
  177.     n1 := 0;
  178.     for i := 1 to n do
  179.       if Pos(r,ch[i].fio)<>0 then
  180.       begin
  181.         inc(n1);
  182.         writeln('|**|************|****************************|*************|************|**************|');
  183.         writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  184.         writeln('|**|************|****************************|*************|************|**************|');
  185.         writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  186.       end;
  187.     if n1 = 0 then
  188.       writeln('Не найдено');
  189.     readln;
  190.   end;
  191.  
  192.   if PP = '3' then begin
  193.     //clrscr;
  194.     writeln('Введите номер счета');
  195.     readln(c);
  196.     n1 := 0;
  197.     for i := 1 to n do
  198.       if ch[i].schet = c then
  199.       begin
  200.         inc(n1);
  201.         writeln('|**|************|****************************|*************|************|**************|');
  202.         writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  203.         writeln('|**|************|****************************|*************|************|**************|');
  204.         writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  205.       end;
  206.     if n1 = 0 then writeln('Нет совпадений.');
  207.     readln;
  208.   end;
  209.  
  210.   if PP = '4' then begin
  211.     //clrscr;
  212.     writeln('Введите выплаченную сумму');
  213.     readln(er);
  214.     n1 := 0;
  215.     for i := 1 to n do
  216.       if ch[i].vip = er then
  217.       begin
  218.         inc(n1);
  219.         writeln('|**|************|****************************|*************|************|**************|');
  220.         writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  221.         writeln('|**|************|****************************|*************|************|**************|');
  222.         writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  223.       end;
  224.     if n1 = 0 then writeln('Не найдено');
  225.     readln;
  226.   end;
  227.  
  228.   if PP = '5' then begin
  229.     //clrscr
  230.     writeln('Введите срок погашения');
  231.     readln(ts);
  232.     n1 := 0;
  233.     for i := 1 to n do
  234.       if ch[i].srok = ts then
  235.       begin
  236.         inc(n1);
  237.         writeln('|**|************|****************************|*************|************|**************|');
  238.         writeln('| №|   Сумма    |            ФИО             | Номер счета |  Выплачено |Срок погашения|');
  239.         writeln('|**|************|****************************|*************|************|**************|');
  240.         writeln('|', i:2, '|', ch[i].summa:12, '|', ch[i].fio:28, '|', ch[i].schet:13, '|', ch[i].vip:12, '|', ch[i].srok:14, '|');
  241.       end;
  242.     if n1 = 0 then writeln('Не найдено');
  243.     readln;
  244.   end;
  245.  
  246.   if (pp in ['1', '2', '3', '4', '5']) = false then
  247.   begin
  248.     writeln('Неверный ввод');
  249.     readln;
  250.   end;
  251. end;
  252.  
  253. procedure Sort;
  254. var p: Char;
  255.   i,j,n:Integer;
  256. begin
  257.   //clrscr;
  258.   writeln(' Сортировка:' );
  259.   writeln('1: Сортировка по сумме кредита');
  260.   writeln('2: Сортировка по ФИО');
  261.   writeln('3: Сортировка по номеру счета');
  262.   writeln('4: Сортировка по выплаченной сумме');
  263.   writeln('5: Сортировка по сроку погашения');
  264.   writeln;
  265.   writeln('''-'' для отмены');
  266.   writeln;
  267.   readln(p);
  268.   if p = '-' then exit;
  269.  
  270.   reset(f);
  271.   i:=1; n:=0; //n -- число записей
  272.   while not eof(f) do
  273.   begin
  274.     read(f, ch[i]);
  275.     inc(i); inc(n);
  276.   end;
  277.   close(f);
  278.  
  279.   if p = '1' then begin
  280.     //clrscr;
  281.     for i := 1 to n - 1 do
  282.       for j := i + 1 to n do
  283.         if ch[i].summa > ch[j].summa then
  284.         begin
  285.           chi := ch[i];
  286.           ch[i] := ch[j];
  287.           ch[j] := chi;
  288.         end;
  289.    end;
  290.  
  291.   if p = '2' then begin
  292.     //clrscr;
  293.     for i := 1 to n - 1 do
  294.       for j := i + 1 to n do
  295.         if ch[i].fio > ch[j].fio then
  296.         begin
  297.           chi := ch[i];
  298.           ch[i] := ch[j];
  299.           ch[j] := chi;
  300.         end;
  301.   end;
  302.  
  303.   if p = '3' then begin
  304.     //clrscr;
  305.     for i := 1 to n - 1 do
  306.       for j := i + 1 to n do
  307.         if ch[i].schet > ch[j].schet then
  308.         begin
  309.           chi := ch[i];
  310.           ch[i] := ch[j];
  311.           ch[j] := chi;
  312.         end;
  313.   end;
  314.  
  315.   if p = '4' then begin
  316.     //clrscr;
  317.     for i := 1 to n - 1 do
  318.       for j := i + 1 to n do
  319.         if ch[i].vip > ch[j].vip then
  320.         begin
  321.           chi := ch[i];
  322.           ch[i] := ch[j];
  323.           ch[j] := chi;
  324.         end;
  325.   end;
  326.  
  327.   if p = '5' then begin
  328.     //clrscr;
  329.     for i := 1 to n - 1 do
  330.       for j := i + 1 to n do
  331.         if (ch[i].srok) > (ch[j].srok) then
  332.         begin
  333.           chi := ch[i];
  334.           ch[i] := ch[j];
  335.           ch[j] := chi;
  336.         end;
  337.   end;
  338.  
  339.   if (p in ['1', '2', '3', '4', '5']) = false then
  340.   begin
  341.     writeln('Неверный ввод');
  342.     readln;
  343.   end else begin //some sort succeeded
  344.     rewrite(f);
  345.     for i := 1 to n do write(f, ch[i]);
  346.     close(f);
  347.   end;
  348. end;
  349.  
  350. procedure Delete;
  351. var i,m: integer;
  352. begin
  353.   //clrscr;
  354.   reset(f);
  355.   i:=1; n:=0;
  356.   while not eof(f) do
  357.   begin
  358.     read(f, ch[i]);
  359.     Inc(i); Inc(n);
  360.   end;
  361.   WriteLn('В этой базе ',n,' записей.');
  362.   write('Номер удаляемой записи: (0-отмена)');
  363.   readln(m);
  364.   if m<>0 then begin
  365.   for i := m to n do
  366.   begin
  367.     ch[i]:=ch[i+1];
  368.     {ch[i].summa := ch[i + 1].summa;
  369.     ch[i].fio := ch[i + 1].fio;
  370.     ch[i].schet := ch[i + 1].schet;
  371.     ch[i].vip := ch[i + 1].vip;
  372.     ch[i].srok := ch[i + 1].srok;}
  373.   end;
  374.   n := n - 1;
  375.   close(f);
  376.   rewrite(f);
  377.   for i := 1 to n do write(f, ch[i]);
  378.   close(f);
  379.   writeln('Удаление завершено');
  380.   end else WriteLn('Отменено.');
  381.   readln;
  382. end;
  383.  
  384. procedure Correct;
  385. var i,k,n:Integer;
  386. begin
  387.   //clrscr;
  388.   reset(f);
  389.   i:=1; n:=0;
  390.   while not eof(f) do
  391.     begin
  392.       read(f, ch[i]);
  393.       inc(i); inc(n);
  394.     end;
  395.   close(f);
  396.   WriteLn('В этой базе ',n,' записей.');
  397.   write('Номер заменяемой записи: '); readln(k);
  398.   Enter(k);
  399.   rewrite(f);
  400.   for i := 1 to n do write(f, ch[i]);
  401.   close(f);
  402. end;
  403.  
  404. procedure ChooseFile;
  405. begin
  406.   writeln('Введите имя файла. ''-'' для отмены');
  407.   readln(filename);
  408.   if (filename = '-') then exit;
  409.   assign(f, filename);
  410. end;
  411.  
  412. procedure menu;
  413. var m:Char;
  414. begin
  415.   //clrscr;
  416.   Writeln('':20, '      *Меню*       ');
  417.   Writeln('':20, '|*****************|');
  418.   Writeln('':20, '| 1 - Создать     |');
  419.   Writeln('':20, '| 2 - Вывести     |');
  420.   Writeln('':20, '| 3 - Добавить    |');
  421.   Writeln('':20, '| 4 - Найти       |');
  422.   Writeln('':20, '| 5 - Сортировать |');
  423.   Writeln('':20, '| 6 - Удалить     |');
  424.   Writeln('':20, '| 7 - Править     |');
  425.   Writeln('':20, '| 8 - Выбрать файл|');
  426.   Writeln('':20, '| 0 - Выйти       |');
  427.   Writeln('':20, '|*****************|');
  428.   Writeln;
  429.   if FileExists(filename)
  430.     then WriteLn('Сейчас выбран файл ',filename)
  431.     else WriteLn('Файл ',filename,' не существует или не выбран');
  432.   Readln(m);
  433.   case m of
  434.       '1': Create;
  435.       '2': Display;
  436.       '3': Add;
  437.       '4': Search;
  438.       '5': Sort;
  439.       '6': Delete;
  440.       '7': Correct;
  441.       '8': ChooseFile;
  442.       '0': Halt;
  443.   end;
  444. end;
  445.  
  446. begin
  447.   writeln(' Курсовая работа по информатике');
  448.   writeln(' На тему: "Разработка информационно-поисковой системы');
  449.   writeln(' "Кредитование".');
  450.   writeln(' Выполнила: студентка группы ЭЭ-21-17 ');
  451.   writeln(' Семёнова Анастасия ');
  452.   writeln(' Проверил: доцент Мочалов М. Ю.');
  453.   writeln;
  454.   writeln;
  455.   writeln(' Для продолжения нажмите Enter');
  456.   readln;
  457.   ChooseFile;
  458.   while True do Menu;
  459. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement