Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Интерфейс программы в режиме выполнения




Результаты работы программы выглядят следующим образом:

Задание 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; просмотров: 177.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...