Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Интерфейс программы в режиме выполнения
Результаты работы программы выглядят следующим образом: Задание 5. Постановка задачи В соответствии с вариантом написать программу, позволяющую с помощью меню: 1. Создавать одномерный массив записей; 2. Просматривать содержимое массива на экране монитора в виде таблицы; 3. Производить поиск данных в массиве по указанному значению ключевого поля. 4. Сортировать записи в массиве по одному из казанных значений ключевого поля. Программа должна иметь простой интерфейс, позволяющий выбрать необходимое действие. Реализовать программу в процедурном стиле программирования. Данные в структуре нулевого варианта: 0. Поля данных: Фамилия И.О. студента, № группы, Успеваемость (массив из 5 оценок). Ключевые поля: № группы, Успеваемость (средний балл). Теоретическое введение (самостоятельно)... Описание программы Программа написана на алгоритмическом языке ПАСКАЛЬ и реализована в среде Borland Pascal-7.0 Windows XP/MS DOS, на платформе х86. Описание логической структуры программы. Для решения задачи необходимо: - Организовать необходимые процедуры и функции: o Read_Student – для ввода данных о студенте; o Write_Student – для вывода данных о студенте; o Menu – для организации интерфейса пользовательского меню; o Find(key) – для поиска по определенному условию выборки (key – целочисленный параметр определяющий вид поиска: =1 – выборка студентов по указанному номеру группы; =2 – выборка студентов "по успеваемости"); o Menu – для организации интерфейса пользовательского меню; o Sort – сортировка студентов по фамилии в алфавитном порядке; - Организовать в основной программе пользовательский интерфейс в виде циклически предлагаемого выбора процедур, соответствующих пунктам пользовательского меню
Описание входных данных Student = record FIO :String; Number :Integer; Bal :array[1..5]of Byte; end; – определение типа "Студент"
A:array[1..10]ofStudent – массив из элементов типа "Студент" count – количество студентов в массиве – переменная типа Integer;
Описание выходных данных Вывод на экран результатов выборок из массива А Описание программы (листинг) Program ZAD_5; uses Crt; const Nmax=10; type Student = record FIO :String; Number :Integer; Bal :array[1..5]of Byte; end; var A :array [1..Nmax] of Student; n,num,i,count :integer;
Procedure Read_Student(var s :Student); var i:integer; begin writeln; writeln('=== Ввод студента ==='); write(' ФИО: '); readln(s.FIO); write(' №гр: '); readln(s.Number); for i:=1 to 5 do begin write(' оценка ',i,': '); readln( s.Bal[i] ); end; writeln('==== ok.'); end;
Procedure Write_Student( s :Student); var i:integer; begin write(' ', s.FIO, ' гр ', s.Number, ' оценки: '); for i:=1 to 5 do write(s.Bal[i], ' ' ); writeln; end;
function Menu :integer; var c:char; n,code:integer; begin ClrScr; repeat writeln; writeln('*****************************'); writeln('* 1. Добавить студента *'); writeln('* 2. Показать всех *'); writeln('* 3. Выборка по № группы *'); writeln('* 4. Выборка по ср.баллу *'); writeln('* 5. Сортировать по ФИО *'); writeln('* 6. Выход *'); writeln('*****************************'); write('выбери пункт меню: ');readln(c); val(c,n,code); until (c in ['1'..'6'])and(code=0) ; ClrScr; Menu:=n; end;
Procedure Find(key:integer); var gr,k,i,j :integer; b,sb :real; begin
case key of
1: {поиск по № группы} begin write('Введи № группы для выборки: '); readln(gr); writeln; writeln('Список студентов гр.№ ',gr); writeln('-------------------------------------------'); k:=0; for i:=1 to count do if A[i].Number=gr then begin k:=k+1; write(k,'. '); Write_Student(A[i]); end; writeln('-------------------------------------------'); writeln('найдено записей: ',k); end;
2: поиск по успеваемости} begin write('Введи средний балл: '); readln(b); writeln; writeln('Список студентов, чей средний балл > ',b); writeln('-------------------------------------------'); k:=0; for i:=1 to count do begin sb:=0; for j:=1 to 5 do sb:=sb+ A[i].Bal[j]; sb:=sb/5; if sb >= b then begin k:=k+1; write(k,'. (',sb:3:2,') '); Write_Student(A[i]); end; end; writeln('-------------------------------------------'); writeln(' найдено записей: ',k); end; end;
end;
procedure Sort; var i,j:integer; s:Student; begin for j:=0 to count-2 do for i:=2 to count-j do if a[i-1].FIO > a[i].FIO then begin s:=a[i-1]; a[i-1]:=a[i]; a[i]:=s; end;
end;
Begin
count:=0;
repeat num:=Menu; case num of 1: begin count:=count+1; if count>Nmax then begin writeln('Массив переполнен'); count:=count-1; end else Read_Student(A[count]); write('нажми Enter для продолжения');readln; end;
2: begin writeln; if count=0 then writeln('Массив пуст'); writeln('Список всех студентов'); writeln('-------------------------------------'); for i:=1 to count do begin write(i,'. '); Write_Student(A[i]); end; writeln('-------------------------------------'); write('нажми Enter для продолжения');readln; end;
3: begin Find(1); write('нажми Enter для продолжения ');readln; end; 4: begin Find(2); write('нажми Enter для продолжения ');readln; end; 5: begin Sort; end;
end; until num=6;
{readln;} End. Тестовые примеры Необходимо протестировать программу для различных тестовых примеров (подобрать самостоятельно). |
||
Последнее изменение этой страницы: 2018-05-30; просмотров: 208. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |