Формирование массива данных и отчетности по студентам, предусмотреть меню операций - Pascal ABC
Формулировка задачи:
Помогите пожалуйста!
Написать программу для формирования массива данных и отчетности по студентам. Предусмотреть меню операций, состоящих из следующих команд:
1: новый студент (сделать запись в файл)
2: изменение данных о студентах
3: удаление данных о студентах
4: обмен местами двух студентов
5: формирование отчета по студентам
6: загрузка данных из файла
7: сохранение данных в файл
0: выход из программы
Массив должен содержать следующие характеристики каждого студента:
- ФИО
- Группа (цифра)
- Год рождения
- Пол
- полный список студентов
- список фамилий по заданной букве
- список студентов по группе
- список студентов по году рождения
- список студентов по полу
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д