Министерство образования Российской Федерации Хабаровский Государственный Технический Университет Кафедра Программное обеспечение КУРСОВАЯ РАБОТА По теме Разработка базы данных, отражающей учет успеваемости студентов Выполнил студент гр. ПО-02 Самойленко П. Р. Проверил преподаватель Белоусова Людмила Васильевна Хабаровск 2001Содержание 1.
Задание на разработку, постановка задачи. 2. Описание базы данных. 3. Описание средств, используемых при создании программы. 4. Первоначальные данные. 5. Интерфейс программы. 6. Описание используемых переменных и процедур. 7. Возможности полученного программного продукта. Постановка задачи. Построить систему управления базой данных в дальнейшем-
СУБД, отражающую учет успеваемости студентов вуза. При этом надо предусмотреть, что данные могут вноситься разными людьми. Построить базу данных, которая была бы максимально гибкой. В базе данных должны содержаться данные о студентах, оценках, преподавателях и предметах. Описание базы данных. База данных нормализована и состоит из четырех таблиц.
Она разбита на четыре таблицы, дабы быть максимально гибкой. При этом разные таблицы могут заполняться разными людьми, а потом объединяться в одну общую базу данных. Например, таблицу о студентах заполняют на кафедре, на которой учиться студент, таблицу о преподавателе и предметах на кафедре этих преподавателей, а оценки ставит преподаватель. Структура таблиц Название столбцаОписаниеТаблица студентов tt1T1Номер студенческого билетаT2Фамилия
студентаT3ИмяT4ОтчествоT5СтипендияТаблиц а предметовtt2T1Номер предметаT2Название предметаT3Номер преподавателяT4ЧасыT5КурсТаблица преподавателейtt3T1Номер учителяT2Фамилия учителяT3Его имяT4ОтчествоT5Дата принятия преподавателя на работуТаблица успеваемостиtt4T1Код факта сдачи учебной дисциплиныT2ОценкаT3Дата сдачиT4Номер студенческого билетаT5Код учебного предмета Все атрибуты имеют строковый тип данных. Причем столбец T1 у каждой из таблиц является первичным ключом, то есть данные в нем уникальны.
Изобразим связь между таблицами Связь эта осуществляется через уникальные поля каждой из таблиц. Из схемы видно, что связь между преподавателями и например, студентами, осуществляется только через таблицу предметов. Такая организация базы данных позволяет избежать дублирования данных. Например, если бы у нас таблица предметов была объединена с таблицей преподавателей, то мог выползти такой случай один преподаватель ведет два предмета, следовательно его фамилия, имя и отчество будут
повторятся в таблице дважды. А это уже называется избыточностью данных. Описание средств, используемых при создании программы Данный программный продукт работает в текстовом режиме, периодически меняя цвет выводимых символов с помощью процедуры textcolor. Эта процедура принадлежит модулю crt. Помимо нее из этого модуля используется еще две процедуры clrscr для отчистки экрана, да gotoxy для
перехода на заданные координаты экрана. В программе используются списки, записи, собственные модули. Какие же преимущества дают использованные средства Списки позволяют рационально использовать память компьютера и выделять ее динамически, не занимая ее попусту. Правда при использовании списков я заметил значительное увеличение кода программы по сравнению со случаем, если бы мы использовали массивы и записи.
Но работать с записями намного эффективнее, особенно при создании баз данных. При работе над данной СУБД я использовал стандартные процедуры для работы с указателями New выделение памяти для переменной Dispose - Возвращение памяти в кучу. Указатель в моем случае указывает на следующий кортеж в данной таблице. Четыре таблицы хранятся в динамическом списке. Список заканчивается, как только следующий элемент принимает
Сохр. в текст. файл - сохранение выбранной таблицы в текстовой файл. Просмотр - просмотр данных таблиц. Корректировка - изменение записей таблиц. Сортировка - сортировка записей по определенному полю. Запросы - поиск данных в четырех таблицах, соответствующие заданному условию. Выход - выход из программы. Главное меню содержит вложенные.
Например на 2 рисунке показано меню, служащее для выбора таблицы одной из четырех. Вход в него может быть осуществлен по разному. То есть это меню вы будете проходить при просмотре данных, при корректировке и при сохранении в текстовой файл. Это меню в комментариях не нуждается. При выборе Корректировка вы перейдете к меню, показанному на рисунке 3. Добавление - добавление нового кортежа в заданную с помощью предыдущего меню таблицу.
Удаление - удаление строки из таблицы, причем запись в таблице ищется по первому столбцу. Изменение - изменение свойств существующей в базе данных строки. Последнее подменю это подменю запросов, на котором надо остановиться поподробнее. Рассмотрим рисунок Найти оценку - найти оценку студента по его фамилии и предмету, который он сдавал. Кто принимал экзамен - фамилия преподавателя, принимавшего данный предмет.
Найти размер стипендии - размер стипендии выбранного студента. Вывод по оценке - показать всех студентов, получивших данную оценку. Дата сдачи экзамена - найти даты, когда принимался данный предмет. В запросах используются реальные названия предметов, фамилии студентов, а не их номера для студентов например номер соответствует номеру студенческого билета.
Больше в программе меню такого типа нет, но есть много строчного ввода, например выполним запрос с поиском оценок. После запроса экран будет выглядеть так искали четверочников Результат запроса отображается красным цветом. Описание используемых процедур. В приложении используются как глобальные, так и локальные переменные. К глобальным переменным относятся 1 names,namerstring10 строковые переменные, которые вынесены в глобальные,
чтобы сделать программу более компактной. Иначе бы в разных процедурах надо было вводить аналогичные типы данных, а так можно обойтись лишь парой глобальных переменных. 2 key,krchar символьные переменные. В переменной key хранится код нажатой клавиши. А в переменной kr находится текущее положение звездочки. Звездочка будет рассмотрена ниже. 3 tek,i,j,izminteger целочисленные переменные.
Из них i и j циклические, временные переменные. Tek и izm показывают, какое меню активно в текущий момент. Они помогают понять программе от какого меню к какому перешли, тоесть помогает восстановить последовательность действий. 4 exist,vfile,issorboolean Логические переменные. Exist служит для выхода из программы. Vfile позволяет пускать одну процедуру по двум путям либо выводить данные на экран, либо в файл.
Issor показывает меню выбора таблиц, что следующим шагом должна быть сортировка данной таблицы. 5 nastpered Типизированная переменная, в которой хранятся строки текущего меню. Описание типа pered имеется в модуле peredrecord starray1 12 of string mbyte количество строк в меню end temr,tt1,tt2,tt3,tt4cc Таблицы базы данных. Тут tt1 таблица с данными о студентах, tt2 предметы, tt3 преподаватели, tt4 оценки успеваемость. Temr временная таблица.
Все эти переменные являются динамическими списками. Они описаны в файле tips.pas tabl2record Сама таблица t1,t2,t3,t4,t5string12 Состоит из строк end cctab tabrecord Создание динамического списка tabltabl2 sledcc end Программа отвечает на то, какую клавишу нажал пользователь и передает управление процедуре main. Процедура readkey используется в основном блоке программы.
Для работы с управляющими клавишами используются их коды в таблице ISCII. Тут 80 курсор вверх 72 курсор вниз 27 ESC 13 Enter При нажатии на клавишу Ввод управление передается продцедуре main. При этом используются глобальные переменные. В процедуре main управление переходит к подпрограмме, согласно текущему меню, но порой надо знать откуда был осуществлен вход.
Как я уже говорил, зайти в меню выбора таблиц можно по разному. Все меню имеют разные заголовки, которые и используются для их идентификации. При нажатии на кнопку Выход, текущем становится первоначальное меню. Интерфейсная часть программы состоит из трех процедур procedure menusmperedmaxbyte Вывод меню begin clrscr For i1 to max do begin if i1 then begin textcolor1 gotoxy9,2 writem.sti end
else begin if i2 then textcolor9 else textcolor3 gotoxy8,i3writem.sti end end end С помощью этой процедуры на экране меняются меню. Нужно учесть, что мы первоначально знаем, из сколки строк состоит каждое меню, что упрощает задачу. Заголовок и содержание меню пишутся разными цветами. Изменение цвета выводимых символов идет с помощью команды textcolor, параметром котором является предопределенная константа. Следующая процедура procedure krutis Звездочка рядом с активным элементом begin textcolor14
if kr then kr- else if kr- then kr else if kr then kr else kr gotoxy6,tek3writekr textcolor3 end Эта процедура работает таким образом обращение к ней идет из основного блока программы, в котором стоит бесконечный цикл. На экране отображается что то похожее на бенгальский огонь. Это достигается путем последовательного вывода на одном и том же месте символов В переменной tek у нас содержится номер активной строки, а относительно нее мы и должны поставить звездочку.
Следующая процедура procedure ramkachchar перемещение указателя begin gotoxy6,tek3Writeln textcolor3gotoxy8,tek3writenast.sttek if ch then tektek1 else tektek-1 if tek1 then teknast.m else if teknast.m1 then tek2 key0 textcolor9gotoxy8,tek3writenast.sttek krutis end Данная процедура имеет параметр символьного типа. По содержанию ch определяется вверх или вниз сдвинулась активная строка. Обращение к этой процедуре идет из основного блока программы.
Больше процедур такого рода нет ко всем другим процедурам обращение идет из процедуры main. Эта процедура затирает элемент, который был активен перед этим цветом по умолчанию голубым и стирает предыдущее положение звездочки. После этого исходя из значения ch изменяется значение tek и выделяется элемент, на который был осуществлен переход. В подпрограмме вставлены два условия if tek1 then teknast.m else if teknast.m1 then tek2 Они срабатывают когда активным является верхний элемент меню и пользователь
нажал кнопку вверх, тогда текущей становится последняя строка, и наоборот текущая строка является последней, а пользователь нажал кнопку вниз, тогда активной станет первая строка активного меню. Процедуры следующего типа осуществляют загрузку и выгрузку данных из файла. Я не буду здесь приводить полный текст процедур, так как его можно посмотреть в приложении. Чтение осуществляется с помощью readetip, а запись writetip.
В этих процедурах используются глобальные переменные. Загрузка идет посредством таблиц tt1, tt2, tt3, tt4. При работе пользователь работает как бы с одним файлом, хотя реально каждая из таблиц сохраняется в свой файл. При запросе пользователь вводит название файла, а потом к этому названию добавляется слева цифра 1, 2, 3 или 4. Например если при сохранении в типизированный файл имени сохраняемого файла присвоить
значение pasha, то таблица tt1 будет сохранена в файле 1pasha, tt2 2pasha, tt3 3pasha, tt4 4pasha. При выгрузке из файла присвоение имен идет таким же образом. Для сохранения в текстовой файл используется процедура tabl11tintegerrabcc, где rab сохраняемая таблица, а t помогает найти заголовки столбцов текущей таблицы. Результат выполнения данной процедуры можно посмотреть выше, где показаны таблицы первоначальных данных.
Для вывода содержимого таблицы на экран используется процедура tabl1tintegerrabccydboolean, действие которой аналогично предыдущей, только добавляется параметр yd, от которого зависит, нужно ли затирать таблицу сразу или она должна повисеть на экране, пока пользователь не ввел какие либо данные. Например при удалении записей из таблицы, пользователю будет удобнее, если он будет содержание таблицы перед глазами. Например покажем содержание таблицы студентов, которые будут выведены после нажатии на
кнопку Просмотр Следующая процедура - obrabotkaiz,tinteger var rabcc. Эта процедура вызывается при корректировке записей. Через параметр iz процедура выбирает путь дальнейшего хода. То есть надо ли добавить запись, изменить или удалить. Параметр rab это таблица, которая передается в процедуру, и параметр var показывает, что данную таблицу
можно изменять непосредственно из процедуры. В ней используются локальные переменные dludstring bisboolean tems,temr,temcc Здесь все переменные типа cc временные, dlud служит для ввода данных, а bis показывает, выполнимо ли выбранное действие или нет. Продцедура sortiz,tinteger var rabcc осуществляет сортировку записей в выбранной таблице по выбранному полю. Ее работа и параметры с переменными аналогичны предыдущей процедуре. При запросах выполняется процедура zaprosnuminteger, где через параметр num передается, какой
именно запрос должен выполняться. Потом через условие case идет обработка запросов. Как показано на схеме взаимодействия таблиц, чтобы перейти от студентам к преподавателям надо пройти через таблицу оценок. Связь между таблицами осуществляется по уникальным полям. Например для нахождении оценки студента надо сначала из таблицы студентов найти номер его студенческого, а потом найти номер сдаваемого предмета из таблицы, а уже после этого, используя полученные номера,
найти из таблицы успеваемости полученную студентом оценку. То есть связь идет по трем таблицам. В запросах я старался как можно больше показать возможности моей базы данных. На последнем рисунке показан один из запросов и результат его выполнения. Возможность создания гибких запросов является важнейшей задачей программирования баз данных. Возможности полученного программного продукта Таким образом мы построили гибкую модель базы данных,
в которой легко создать нужный запрос, данные представлены в удобном для пользователя виде. Интерфейс программы построен без излишков и настроен на максимальное удобство пользователя. Программа позволяет заполнять базу данных одновременно несколькими пользователями, каждый из которых будет заполнять свою таблицу. Так как программа работает с динамическими списками, то она быстра и позволяет избежать избыточности данных в таблицах. Текст программы
Kurs.pas program Delphins uses crt,tips var names,namerstring10 key,krchar tek,i,j,izminteger exist,vfile,issorboolean nastpered temr,tt1,tt2,tt3,tt4cc outffile of tabl2 procedure menusmperedmaxbyte Вывод меню begin clrscr For i1 to max do begin if i1 then begin textcolor1 gotoxy9,2 writem.sti end else begin if i2 then textcolor9 else textcolor3 gotoxy8,i3writem.sti end end end procedure krutis Звездочка рядом с активным элементом begin textcolor14 if kr then kr- else if kr- then kr else if kr
then kr else kr gotoxy6,tek3writekr textcolor3 end procedure ramkachchar перемещение указателя begin gotoxy6,tek3Writeln textcolor3gotoxy8,tek3writenast.sttek if ch then tektek1 else tektek-1 if tek1 then teknast.m else if teknast.m1 then tek2 key0 textcolor9gotoxy8,tek3writenast.sttek krutis end procedure tabl11tintegerrabcc Вывод таблицы в файл var ooutftext temcc begin clrscr writelnВведите имя файла readlnnames assignooutf,names rewriteooutf writelnooutf,menu2.stt writelnooutf writelnooutf mmt-1,114 mmt-1,214
mmt-1,314 mmt-1,414 mmt-1,514, writelnooutf temrab while tem nil do begin writelnooutf tem.tabl.t114 tem.tabl.t214 tem.tabl.t314 tem.tabl.t414, ,tem.tabl.t514, temtem.sled end writelnooutf closeooutf nastmenu1 menusnast,nast.m tek2 end procedure tabl1tintegerrabccydboolean Вывод таблицы на экран var temcc begin clrscr writelnmenu2.stt writeln writeln,mmt-1,114 mmt-1,214 mmt-1,314 mmt-1,414 mmt-1,514, writeln temrab while tem nil do begin writeln,tem.tabl.t114 tem.tabl.t214 tem.tabl.
t314 tem.tabl.t414, ,tem.tabl.t514, temtem.sled end writeln if not yd then begin readln nastmenu1 menusnast,nast.m tek2 end ydfalse end procedure sortiz,tinteger var rabcc Сортировка по полю var pointeger te1,te2,temcc str1,str2string ttrtttabl2 begin tabl1tek,rab,true writelnВведите номер столбца по которому надо отсортировать данные readlnpo te1rab while te1 nil do begin te2te1.sled while te2 nil do begin case po of 1begin str1te1.tabl.t1 str2te2.tabl.t1 end 2begin str1te1.tabl.t2
str2te2.tabl.t2 end 3begin str1te1.tabl.t3 str2te2.tabl.t3 end 4begin str1te1.tabl.t4 str2te2.tabl.t4 end 5begin str1te1.tabl.t5 str2te2.tabl.t5 end end if str1 str2 then begin ttrttte1.tabl te1.tablte2.tabl te2.tablttrtt end te2te2.sled end te1te1.sled end tabl1tek,rab,false end procedure obrabotkaiz,tinteger var rabcc Обработка записей var dludstring bisboolean tems,temr,temcc begin clrscr if iz1 then begin добавление записи if rab nil then begin temrab while tem.sled nil do temtem.sled newtem.sled temtem.
sled end else begin newrab temrab end writelnmmt,1readlntem.tabl.t1 writelnmmt,2readlntem.tabl.t2 writelnmmt,3readlntem.tabl.t3 writelnmmt,4readlntem.tabl.t4 writelnmmt,5readlntem.tabl.t5 tem.slednil temrab izm0 nastmenu1 menusnast,nast.m tek2 iz0 end else if iz2 then begin Удаление записи temsrab tabl1tek,rab,true writelnВведите уникальный номер readlndlud bistrue if rab.tabl.t1 dlud then begin rabrab.sled bisfalse end else begin while tems nil do begin if tems.sled.tabl.
t1dlud then begin temtems.sled tems.sledtems.sled.sled disposetem bisfalse break end temstems.sled end end if bis then writelnДанной записи не обнаруженно nastmenu1 menusnast,nast.m tabl1tek,rab,false izm0 tek2 end else if iz3 then begin изменение данных temsrab tabl1tek,rab,true writelnВведите уникальный номер readlndlud bistrue while tems nil do begin if tems.tabl.t1dlud then begin writelnmmt,1readlntems.tabl.t1 writelnmmt,2readlntems.tabl.t2 writelnmmt,3readlntems.tabl.t3 writelnmmt,4readlntems.tabl.t4
writelnmmt,5readlntems.tabl.t5 break end temstems.sled end if bis then writelnДанной записи не обнаруженно nastmenu1 menusnast,nast.m tabl1tek,rab,false izm0 tek2 end end procedure zaprosnuminteger Запросы var str1,str2,str3string tem1,tem2cc nayboolean zztabl2 begin clrscr nayfalse case num of 2begin Найти оценку tem1tt1 writelnВведите фамилию readlnstr1 writelnВведите название предметаreadlnstr2 while tem1 nil do begin if tem1.tabl.t2str1 then begin str1tem1.tabl.t1 break end tem1tem1.sled end tem1tt2
while tem1 nil do begin if tem1.tabl.t2str2 then begin str2tem1.tabl.t1 break end tem1tem1.sled end tem1tt4 while tem1 nil do begin if tem1.tabl.t5str2 and tem1.tabl.t4str1 then begin textcolorred writelnОценка этого студента tem1.tabl.t2 naytrue break end tem1tem1.sled end end 3begin Преподаватель writelnВыедите название предмета readlnstr1 tem1tt2 while tem1 nil do begin if tem1.tabl.t2str1 then begin str1tem1.tabl.t3 break end tem1tem1.sled end tem1tt3 while tem1 nil do begin if tem1.tabl.
t1str1 then begin textcolorred writelnПреподаватель- with tem1.tabl do write ,t2 ,t3 ,t4 naytrue break end tem1tem1.sled end end 4begin Найти размер стипендии writelnВведите фамилию студента readlnstr1 tem1tt1 while tem1 nil do begin if tem1.tabl.t2str1 then begin textcolorred writelnСтипендия tem1.tabl.t5 naytrue break end tem1tem1.sled end end 5begin Вывод всех студентов с избранной оценкой writelnВведите оценку readlnstr1 tem1tt4 tem2tt1 textcolorred while tem1 nil do begin if tem1.tabl.t2str1 then begin str2tem1.tabl.
t4 while tem2 nil do begin if tem2.tabl.t1str2 then begin with tem2.tabl do writelnСтудент t3, ,t4, ,t2 naytrue end tem2tem2.sled end end tem2tt1 tem1tem1.sled end end 6begin Найти дату сдачи предмета writelnВведите название предмета readlnstr1 tem1tt2 while tem1 nil do begin if tem1.tabl.t2str1 then begin str1tem1.tabl.t1 break end tem1tem1.sled end tem1tt4 while tem1 nil do begin if tem1.tabl.t5str1 then begin textcolorred writelnДата сдачи tem1.tabl.t3 naytrue end tem1tem1.sled
end end end textcolorred if not nay then writelnЗапрос невыполним textcolor3 readln nastmenu1 menusnast,nast.m tek2 end procedure writetiptemrcc begin clrscr writeВведите имя файла writelnв котором хотите сохранить данные readlnnames for i1 to 4 do begin if temr nil then begin temrnil end case i of 1begin temrtt1 namer1names end 2begin temrtt2 namer2names end 3begin temrtt3 namer3names end 4begin temrtt4 namer4names end end assignoutf,namer rewriteoutf while temr nil do begin writeoutf, temr.tabl temrtemr.
sled end CLOSEoutf end nastmenu1 menusnast,nast.m tek2 end procedure readtiptemrcc var temscc begin clrscr writeВведите имя файла writelnиз которого надо взять данные readlnnames for i1 to 4 do begin if temr nil then begin temrnil end if tems nil then begin temsnil end case i of 1begin newtt1 temrtt1 namer1names end 2begin newtt2 temrtt2 namer2names end 3begin newtt3 temrtt3 namer3names end 4begin newtt4 temrtt4 namer4names end end assignoutf,namer resetoutf if eofoutf then begin case i of 1begin disposett1tt1nilend 2begin
disposett2tt2nilend 3begin disposett3tt3nilend 4begin disposett4tt4nilend end end else begin temstemr while temr nil do begin if eofoutf then break readoutf,temr.tabl if eofoutf then break newtemr.sled temrtemr.sled end temr.slednil case i of 1tt1tems 2tt2tems 3tt3tems 4tt4tems end end CLOSEoutf end nastmenu1 menusnast,nast.m tek2 end procedure main begin key0 if nast.st1menu1.st1 then begin Если меню - основное case tek of 2readtiptemr 3writetiptemr 4,5,7begin nastmenu2 menusnast,nast.
m if tek7 then issortrue if tek4 then vfiletrue else if tek5 then vfilefalse tek2 end 6begin nastmenu3 menusnast,nast.m tek2 end 8begin nastmenu4 menusnast,nast.m tek2 end 9 begin existtrue end end end else if nast.st1menu3.st1 then begin Если текущее меню-menu3 case tek of 2,3,4begin izmtek-1 nastmenu2 menusnast,nast.m tek2 end 5begin nastmenu1 menusnast,nast.m tek2 end end end else if nast.st1menu4.st1 then begin Если текущее меню-menu4 case tek of 2,3,4,5,6zaprostek 7begin nastmenu1 menusnast,nast.m tek2 end end
end else if nast.st1menu2.st1 then begin Если текущее меню-menu2 if izm 0 then begin case tek of 2obrabotkaizm, tek-1,tt1 3obrabotkaizm, tek-1,tt2 4obrabotkaizm, tek-1,tt3 5obrabotkaizm, tek-1,tt4 6begin nastmenu1 menusnast,nast.m izm0 tek2 end end end else if issortrue then begin issorfalse case tek of 2sortizm, tek-1,tt1 3sortizm, tek-1,tt2 4sortizm, tek-1,tt3 5sortizm, tek-1,tt4 6begin nastmenu1 menusnast,nast.m izm0 tek2 end end end else begin case tek of 2if vfile then tabl11tek,tt1 else tabl1tek,tt1,false 3if
vfile then tabl11tek,tt2 else tabl1tek,tt2,false 4if vfile then tabl11tek,tt3 else tabl1tek,tt3,false 5if vfile then tabl11tek,tt4 else tabl1tek,tt4,false 6begin nastmenu1 menusnast,nast.m izm0 tek2 end end end end end begin clrscr textBackgroundblack tek2 kr- existfalse nastmenu1 menusnast,nast.m while 1 0 do begin if keypressed then keyreadkey case key of 80ramka 72ramka- 27existtrue 13main end if exist then exit krutis end end.
Текст модуля Tips.pas Unit tips interface type peredrecord starray1 12 of string mbyte end tabl2record t1,t2,t3,t4,t5string12 end cctab tabrecord tabltabl2 sledcc end var menu1,menu2,menu3,menu4pered mmarray1 5,1 5 of string50 implementation begin with menu1 do begin st1БАЗА ДАННЫХ st2Загрузка st3Сохр. в тип. файл st4Сохр. в текст. файл st5Просмотр st6Корректировка st7Сортировка st8Запросы st9Выход m9 end mm1,1Студенческий mm1,2Фамилия mm1,3Имя mm1,4Отчество mm1,5Стипендия mm2,1Код
предмета mm2,2Название mm2,3Код преподав. mm2,4Время учебы mm2,5Курс mm3,1Код преподав. mm3,2Фамилия mm3,3Имя mm3,4Отчество mm3,5Начало работы mm4,1Код сдачи mm4,2Оценка mm4,3Дата сдачи mm4,4Студенческий mm4,5Код предмета with menu2 do begin st1ПРОСМОТР st2Студенты st3Предметы st4Преподаватели st5Оценки st6Выход m6 end with menu3 do begin st1КОРРЕКТИРОВКА st2Добавление st3Удаление st4Изменение st5Выход m5 end with menu4 do begin st1ЗАПРОСЫ st2Найти оценку st3Кто принимал экзамен st4Найти размер стипендии
st5Вывод по оценке st6Дата сдачи экзамена st7Выход m7 end end.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |