Формирование массива данных и отчетности по студентам, предусмотреть меню операций - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста! Написать программу для формирования массива данных и отчетности по студентам. Предусмотреть меню операций, состоящих из следующих команд: 1: новый студент (сделать запись в файл) 2: изменение данных о студентах 3: удаление данных о студентах 4: обмен местами двух студентов 5: формирование отчета по студентам 6: загрузка данных из файла 7: сохранение данных в файл 0: выход из программы Массив должен содержать следующие характеристики каждого студента:
  • ФИО
  • Группа (цифра)
  • Год рождения
  • Пол
В набор отчетов включать:
  • полный список студентов
  • список фамилий по заданной букве
  • список студентов по группе
  • список студентов по году рождения
  • список студентов по полу
Как я понял, нужно организовать цикл Repeat - Until с условием окончания при вводе нуля. В него включить оператор Case с соответствующим разветвлением (1-7). А вот что внутри из них - завис :/ Может кто помочь с решением?
Up.

Решение задачи: «Формирование массива данных и отчетности по студентам, предусмотреть меню операций»

textual
Листинг программы
{ Подготовить данные содержащие информацию о странах мира, данные оформить
в виде записи, содержащей следующие поля: Страна, Столица, Часть мира,
Население, Площадь. Создать программу записей подготовленных данных
во внешний файл, и программу обработки этого файла выполняет
следующие команды:
1 Выводит на экран введенные данные.
2 Добавляет записи в начало или конец файла.
3 Удаляет все данные о стране, найменивання которой задан с клавиатуры и
выводит на экран обновленное содержимое файла.
4 Сортировка названия столиц по алфавиту.
5 Список стран, площадь которых превышает 500 000 км квадратных }
 
uses
  crt;
type
  geo=record
    country:string[80];
    capital:string[64];
    continent:string[32];
    population:int64;
    area:real;
  end;
 
var
  geo_bd : file of geo;
  my_geo : geo;
  choice : integer;
 
procedure output_rec;
begin
  clrscr;
  writeln('Страны мира:');
  reset(geo_bd);
  while not eof(geo_bd) do
    begin
      read(geo_bd,my_geo);
      with my_geo do
        begin
          write(country,' ');
          write(capital,' ');
          write(continent,' ');
          write(population);
          write(area:16:2);
        end;
      writeln;
    end;
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
  closefile(geo_bd);
end;
 
procedure append_rec;
begin
  clrscr;
  writeln('Добавление записи в базу данных "Страны мира":');
  reset(geo_bd);
  with my_geo do
    begin
      write('Название страны:');     readln(country);
      write('Название столицы:');    readln(capital);
      write('Название континента:'); readln(continent);
      write('Население:');           readln(population);
      write('Площадь:');             readln(area);
    end;
  seek(geo_bd,filesize(geo_bd));
  write(geo_bd,my_geo);
  writeln;
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
  closefile(geo_bd);
end;
 
procedure delete_rec;
var
  n,i : integer;
  s : String;
  t : geo;
begin
  clrscr;
  writeln('Удаление записи из базы данных "Страны мира":');
  write('Введите название столицы: '); readln(s);
  i:=0;
  n:=-maxint;
  Reset(geo_bd);
  while not eof (geo_bd) do
    begin
      read(geo_bd,t);
      inc(i);
      if t.capital=s then
        begin
          n:=i;
          break;
        end;
    end;
  if (filesize(geo_bd)<n) or (n<0) then
    begin
      writeln('В файле нет такой записи');
      closefile(geo_bd);
      writeln;
      writeln('Нажмите Enter для перехода в главное меню.');
      readln;
      exit;
    end;
  seek(geo_bd,n-1);
  for i:=n-1 to filesize(geo_bd)-2 do
    begin
      seek(geo_bd,i+1);
      read(geo_bd,t);
      seek(geo_bd,i);
      write(geo_bd,t);
    end;
  seek(geo_bd,filesize(geo_bd)-1);
  truncate(geo_bd);
  closefile(geo_bd);
  output_rec;
  writeln;
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
 
end;
 
procedure sort_rec;
const
  n=100;
var
  geo_arr : array [1..n] of geo;
  num,j,i : integer;
  t : geo;
begin
  clrscr;
  writeln('Страны мира, отсортированные по названиям столиц:');
  i:=0;
  reset(geo_bd);
  while not eof(geo_bd) do
    begin
      read(geo_bd,geo_arr[i+1]);
      inc(i);
    end;
  num:=i;
  for i:=1 to num do
    for j:=i+1 to num do
      if geo_arr[i].capital>geo_arr[j].capital then
        begin
          t := geo_arr[i];
          geo_arr[i]:=geo_arr[j];
          geo_arr[j]:=t;
        end;
  for i:=1 to num do
    begin
      with geo_arr[i] do
        begin
          write(country,' ');
          write(capital,' ');
          write(continent,' ');
          write(population);
          write(area:16:2);
        end;
      writeln;
    end;
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
  closefile(geo_bd);
end;
 
procedure list_rec;
begin
  clrscr;
  writeln('Страны мира, площадь которых больше 500 000 кв. км.:');
  reset(geo_bd);
  while not eof(geo_bd) do
    begin
      read(geo_bd,my_geo);
      if my_geo.area>500000 then
        begin
          with my_geo do
            begin
              write(country,' ');
              write(capital,' ');
              write(continent,' ');
              write(population);
              write(area:16:2);
            end;
          writeln;
        end;
    end;
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
  closefile(geo_bd);
end;
 
procedure create_bd;
begin
  clrscr;
  writeln('Создание новой базы данных:');
  rewrite(geo_bd);
  with my_geo do
    begin
      write('Название страны:');     readln(country);
      write('Название столицы:');    readln(capital);
      write('Название континента:'); readln(continent);
      write('Население:');           readln(population);
      write('Площадь:');             readln(area);
    end;
  write(geo_bd,my_geo);
  closefile(geo_bd);
  writeln('Нажмите Enter для перехода в главное меню.');
  readln;
end;
 
begin
  clrscr;
  assignfile(geo_bd,'geo.dat');
  { main loop }
  while true do
    begin
      clrscr;
      writeln('Выберите соответствующий пункт меню:');
      writeln('1. Вывод данных.');
      writeln('2. Добавление записи.');
      writeln('3. Удаление записи.');
      writeln('4. Сортировка названия столиц по алфавиту.');
      writeln('5. Список стран, площадь которых превышает 500000 кв. км.');
      writeln('6. Создание новой базы данных.');
      writeln('0. Выход.');
      readln(choice);
      case choice of
        1 : output_rec;
        2 : append_rec;
        3 : delete_rec;
        4 : sort_rec;
        5 : list_rec;
        6 : create_bd;
        0 : exit;
      end; { of case }
    end;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы