Курсовая: Разработка базы данных, отражающей учет успеваемости студентов - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Разработка базы данных, отражающей учет успеваемости студентов

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Архив Zip, 69 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

Министерство образования Российской Федерации Хабаровский Государ с твенный Технический Университет Кафедра : «Программн ое обеспечение» КУРСОВАЯ РАБОТА По теме «Разработка базы данных, отражающей учет успеваемости студентов» Выполнил студент гр . ПО -02 Самойленко П . Р. Проверил преподава тель Белоусов а Людмила Васильевна Хабаровск 2001 Содержание : 1. Задание на разработку , постановка задачи. 2. Описание базы данных. 3. Описание средств , испо льзуемых при создании программы. 4. Первоначальные данные. 5. Интерфейс программы. 6. Описание используемых пе ременных и процедур. 7. Возможности полученного программного продукта. Постановка задачи. Построить систем у управления базой данных (в дальнейшем-СУБД ), отражающую учет успеваемости студентов вуза . При этом надо предусмотреть , что данные могут вноситься разными людьми . Построить базу данных , которая была бы максимально гибкой . В базе данных должны содержаться данные о студентах , оценках , преподавателях и предметах. Описание базы данных. База данных нормализована и состоит из четырех таблиц . Она разбита на четыре таблицы , дабы быть максимально гибкой . При этом разные таблицы могут заполняться разными людьми , а потом объединяться в одну общую базу данных . Например , таблицу о студентах заполн яют на кафедре , на которой учиться студент , таблицу о преподавателе и предме тах – на кафедре этих преподавателей , а оценки ставит преподаватель. Структура таблиц Наз вание столбца Описание Таблица студентов ( tt 1) T1 Номер студенческ ого билета T 2 Фамилия студента T 3 Имя T 4 Отчеств о T5 Стипендия Табл ица предметов ( tt 2) T1 Номер предмета T 2 Название предмета T 3 Номер преподавателя T 4 Часы T 5 Курс Таблица преподавателей ( tt 3) T1 Номер учителя T 2 Фамилия учителя T 3 Его имя T 4 Отчеств о T 5 Дата принятия препо давателя на работу Таблица успеваемости ( tt 4) T1 Код факт а сдачи учебной дисциплины T 2 Оценка T 3 Дата сдачи T4 Номер студенческого билета T5 Код учебного предмета Все атрибуты имеют строковый тип да нных . Причем столбец T 1 у каждой из таблиц является первичным ключом , то есть данные в нем уникальны. Изобра зим связь между таблицами : Связь эта осуществляется через уникальные поля каждой из таблиц . Из схемы видно , что связь межд у преподавателями и например , студентами , осуществляется только чер ез таблицу предметов . Такая организация базы данных позволяет избежать дублирования данны х . Например , если бы у нас таблица пред метов была объединена с таблицей преподавател ей , то мог выпо л зти такой случ ай – один преподаватель ведет два предме та , следовательно его фамилия , имя и отчес тво будут повторятся в таблице дважды . А это уже называется избыточностью данных. Описание средст в , используемых при создании программы Данный программн ый проду кт работает в текстовом режим е , периодически меняя цвет выводимых символов с помощью процедуры textcolor (). Эта процедура принадлежит модулю crt . Помимо нее из этого модуля использ уется еще две процедуры : clrscr – для отчистки эк рана , да gotoxy – для перех ода на заданные координаты экрана. В программе используются списки , записи , собственные модули . Какие же преимущества д ают использованные средства ? Списки позволяют рационально использовать память компьютера и выделять ее динамическ и , не занимая ее попусту . Правда при использовании списков я заметил значительное увеличение кода программы по сравнению с о случаем , если бы мы использовали массивы и записи . Но работать с записями намн ого эффективнее , особенно при создании баз данных . При работе над данной СУБД я использовал стандартные процедуры для работы с указателями : New () – в ыделение памяти для переменной Dispose () - Возвра щение памяти в кучу. Указатель в моем случае указывает на следующий кортеж в данной таблице. Четыре таблицы хранятся в динамическом спи ске . Список заканчивается , как только следующий элемент принимает значение nil , то есть н и на что не указывает. Записи помогают структурировать данные , и збежать избыточности. Модуль я использую для предопределения в нем типов и заполнения записей , значе ния которых будут потом использованы в основной программе . В этих записях я храню массивы строк – строк меню . Таким образом , этот код не «захламляет» код основной программы . И добавлять новые элеме нты в меню намного проще – не надо переделывать всю программу. Первоначал ьные данные Для прим ера я ввел некоторые данные и сохранил в файле pasha . Вот эти данные , выведенные с помощь ю команды – « Сохр . в текст . файл » : Студенты +--------------------------------------------------------------------------+ ¦ Студенческий ¦ Фамилия¦ Имя¦ Отчество¦ Стипендия¦ +--------------+--------------+--------------+--------------+--------------¦ ¦ 3412¦ Поляков¦ Анатолий¦ Алексеевич¦ 54.50¦ ¦ 3413¦ Старова¦ Л юбовь¦ Михай ловна¦ 17.00¦ ¦ 3414¦ Гриценко¦ Владимир¦ Николаевич ¦ 0.00¦ ¦ 3415¦ Котенко¦ Анатолий¦ Николаевич¦ 0.00¦ ¦ 3416¦ Нагорный¦ Евгений¦ Васильевич¦ 25.50¦ +--------------------------------------------------------------------------+ Предметы +--------------------------------------------------------------------------+ ¦ Код предмета¦ Название¦ Код препо дав.¦ Время учебы¦ Курс¦ +--- -----------+--------------+--------------+--------------+--------------¦ ¦ 2001¦ Физика¦ 4001¦ 34¦ 1¦ ¦ 2002¦ Химия¦ 4002¦ 68¦ 1¦ ¦ 2003¦ Математик а¦ 4003¦ 68¦ 1¦ ¦ 2004¦ Философия¦ 4005¦ 17¦ 2¦ ¦ 2005¦ Экономика¦ 4004¦ 17¦ 3¦ +----------------------------------------------------- ---------------------+ Преподава тели +--------------------------------------------------------------------------+ ¦ Код преподав.¦ Фамилия¦ Имя¦ О тчество¦ Начало работы¦ +--------------+--------------+--------------+-------------- +--------------¦ ¦ 4001¦ Викулина¦ Валентина¦ Ивановна¦ 01/04/1984¦ ¦ 4002¦ Костыркин¦ Олег¦ Владимирович¦ 01/09/1997¦ ¦ 4003¦ Казанко¦ Виталий¦ Владимирович ¦ 01/09/1988¦ ¦ 4004¦ Позднякова¦ Любовь¦ Алекс еевна¦ 01/09/1998¦ ¦ 4005¦ Загарийчук¦ Игорь¦ Дмитриевич¦ 10/05/1989¦ +--------------------------------------------------------------------------+ Оценки +----------------- ---------------------------------------------------------+ ¦ Код сдачи¦ Оценка¦ Дата сдачи¦ Студенческий¦ Код предмета¦ +--------------+--------------+--------------+--------------+--------------¦ ¦ 1001¦ 5¦ 10/06/19 99¦ 3412¦ 2001¦ ¦ 1002¦ 4¦ 10/06/1999¦ 3413¦ 2003¦ ¦ 1003¦ 3¦ 11/06/1999¦ 3414¦ 2005¦ ¦ 1004¦ 4¦ 12/06/1999¦ 3412¦ 2003¦ ¦ 1005¦ 5¦ 12/06/1999¦ 3416¦ 2004¦ +--------------------------------------------------------------------------+ Эти данные будут использоваться в примерах. Интерфейс прогр аммы Для того , чтоб понять , что де лает программа рассмотрим ее меню : На рисунке 1 представлено главное меню программы , которое появляется при ее запуске . Тут : « Загрузка » - ввод базы данных из типизированного файла. « Сохр . в тип . файл » - сохранение базы данных в ти пизированном файле. « Сохр . в текст . файл » - сохранение выбранной таблицы в текстовой файл. « Просмотр » - просмотр данных таблиц. « Корректировка » - изменение запис ей таблиц. « Сортировка » - сортировка записей по определенному полю. « Запросы » - п оиск данных в четырех таблицах , соответствующ ие заданному условию. « Выход » - вых од из программы. Главное меню содержит вложенные . Например на 2 рисунке показано меню , служащее для выбора таблицы (одной из четырех ). Вход в него может быть осуществлен по разному . То есть это меню вы будете проходить при просмотре данны х , при корректировке и при сохранении в текстовой файл . Эт о меню в комментариях не нуждается. При выборе «Корректировка» вы перейдете к меню , показанному на рисунке 3. « Добавление » - добавление нового кортежа в заданн ую с помощью предыдущего меню таблицу. « Удаление » - удаление строки из таблицы , причем запись в таблице ищется по первому столбцу. « Изменение » - изменение свойств существующей в базе данных строки. Последнее подменю – это подменю запр осов , на котором надо остановиться поподробне е . Рассмотрим рисунок : «Найти оценку» - найти оценку студента по его фамилии и предмету , который он сдавал. «Кто принимал экзамен» - фамилия преподавателя , принимавшего данный предмет. «Найти размер стипендии» - разм ер стипендии выбранного студента. «Вывод по оценке» - показать всех студ ентов , получивших данную оценку. «Дата сдачи экзамена» - найти даты , ког да принимался данный предмет. В запросах используются реальные названия предметов , фамилии студентов , а не их но мера (для студентов например номер с оответствует номеру студенческого билета ). Больше в программе меню такого типа нет , но есть много строчного ввода , н апример выполним запрос с поиском оценок . После запроса экран будет выглядеть так (искали четверочников ): Результат запроса отображается красным цв етом. Описание и спользуемых процедур. В приложении используются как глобальные , так и локальны е переменные . К глобальным переменным от носятся : 1) names , namer : string [10] – строковые переменные , которые вынесены в глобальные , ч тобы сделать программу более компактной . Инач е бы в разных процедурах надо было вв одить аналогичные типы данных , а так можно обойтись лишь п арой глобальных перем енных. 2) key , kr : char – символьные переменные . В переменной key хранится код нажатой клавиши . А в переменной kr находится текущее положение звездочки . Звездочк а будет рассмотрена ниже. 3) tek , i , j , izm : integer – целочислен ные перемен ные . Из них i и j – циклические , временные переменные . Tek и izm показывают , как ое меню активно в текущий момент . Они помогают понять программе от какого меню к какому перешли , тоесть помогает восстановит ь последовательность действий . 4) exist , vfile , isso r : boolean – Логические пе ременные . Exist – служит для выхода из программы . Vfile – позволяет пускать одну процедуру по двум путям – либо выводить данные на экран , либо в файл . Issor – показывает меню выбора т аблиц , что следующим шагом должна быть сор тировк а данной таблицы. 5) nast : pered – Типизирован ная переменная , в которой хранятся строки текущего меню . Описание типа pered имеется в мод уле : pered=record st:array[1..12] of string; m:byte; количество строк в мен ю end; temr , tt 1, tt 2, tt 3, tt 4: cc – Таблицы базы данных . Тут tt 1 – таблица с данными о студент ах , tt 2 – пр едметы , tt 3 – преподаватели , tt 4 – оценки (успеваемость ). Temr – временная таблица . Все эти переменные являются динамическими спи сками . Они описаны в файле tips . pas : tabl 2= record Сама таблица t 1, t 2, t 3, t 4, t 5: string [12]; Состоит из строк end ; cc =^ tab ; tab = record Создание динамического списка tabl:tabl2; sle d:cc; end; Программа отвеча ет на то , какую клавишу нажал пользователь и передает управление процедуре main . Процедура readkey использует ся в основном блоке программы . Для работы с управляющими клавишами используются их коды в таблице ISCII . Тут : 80 – курсор вверх 72 – курсор вниз 27 – ESC 13 – Enter При нажатии на клавишу «Ввод» управле ние передается продцедуре main . При этом используются глобальн ые переменные. В процедуре main управление переходит к подпрограмме , согласно текущему меню , но порой надо знать откуда был осуществлен вход . Как я уже говорил , зайти в меню выбора таблиц можно по разному . Все меню имеют разные заголовки , которые и используются для их идентификации . При нажатии на кнопк у « Выход » , текущ ем становится первоначальное меню. Интерфей сная часть программы состоит из трех процедур : procedure menus(m:pered;max:byte); Вывод меню begin clrscr; For i:=1 to max do begin if i=1 then begin textcolor(1); gotoxy(9,2); write(m.st[i]); end else begin if i=2 then textcolo r(9) else textcolor(3); gotoxy(8,i+3);write(m.st[i]); end ; end ; end ; С помощью этой процедуры на экране меняются меню . Нужно учесть , что мы первоначально знаем , из сколки строк со стоит каждое меню , что упрощает задачу . За головок и содержа ние меню пишутся раз ными цветами . Изменение цвета выводимых симво лов идет с помощью команды textcolor , параметром котором являе тся предопределенная константа. Следующая процедура : procedure krutis; Звездочка рядом с активн ым элементом begin textcolor( 14); if kr='/' then kr:='-' else if kr='-' then kr:='\' else if kr='\' then kr:='|' else kr:='/'; gotoxy(6,tek+3);write(kr); textcolor (3); end ; Эта процедура работает таким образом – обращение к ней идет из основного блока программы , в котором стоит бесконечный цикл . На эк ране отображается что то похожее на бенга льский огонь . Это достигается путем последова тельного вывода на одном и том же мес те символов : \, |, /, — . В переменной tek у нас соде ржится номер активной строки , а относите льно нее мы и должны поставить зв ездочку. Следующая процедура : procedure ramka(ch:char); перемещение указателя begin gotoxy(6,tek+3);Writeln(' '); textcolor(3);gotoxy(8,tek+3);write(nast.st[tek]); if ch='+' then tek:=tek+1 else tek:=tek-1; if t ek=1 then tek:=nast.m else if tek=nast.m+1 then tek:=2; key:=#0; textcolor(9);gotoxy(8,tek+3);write(nast.st[tek]); krutis; end; Данная процедура имеет параметр символьного типа . По содержанию ch определяется – вверх или вниз сдвинулась активная стр ока . Обращение к этой процедуре идет из основного блока программы . Больше проц едур такого рода нет (ко всем другим п роцедурам обращение идет из процедуры main ). Эта процедура затирает элемент , который был активен перед этим цветом по умолч анию (голубым ) и стирает предыдущее полож ение звездочки . После этого исходя из знач ения ch изменяе тся значение tek и выделяется элемент , на который бы л осуществлен переход . В подпрограмме вставле ны два условия : if tek =1 then tek := nast . m else if tek=nast.m+1 then tek:=2 ; Они срабатывают когда активным является верхний элемент меню и пользователь нажал кнопку вверх , то гда текущей становится последняя строка , и наоборот – текущая строка является послед ней , а пользователь нажал кнопку вниз , тог да активной станет первая стро ка акти вного меню. Процедуры следующего типа осущест вляют загрузку и выгрузку данных из файла . Я не буду здесь приводить полный тек ст процедур , так как его можно посмотреть в приложении . Чтение осуществляется с пом ощью readetip , а запись – writetip . В этих процедурах используются г лобальные переменные . Загрузка идет посредством таблиц tt 1, tt 2, tt 3, tt 4. При работе пользователь работает как бы с одним файлом , хотя реально каждая из таблиц сохраняется в свой файл . При запросе пользователь вводит название фай ла , а потом к этому названию добавляется слева цифра – 1, 2, 3 или 4. Например если при сохранении в типизированный файл имени сохраняемого файла присвоить значение pasha , то та блица tt 1 будет сохранена в файле 1 pasha , tt 2 – 2 pasha , tt 3 – 3 pasha , tt 4 – 4 pasha . При выгрузке из файла присвоение имен идет таким же образом . Для сохранения в текстовой фай л используется процедура tabl11(t:integer;rab:cc), где rab – сохраняемая таблица , а t – помогает найти заголовки столбцов текущей таблицы . Результат выполнен ия д анной процедуры можно посмотреть выше , где показаны таблицы первоначальных данных . Для вывода содержимого таблицы на экран исполь зуется процедура tabl1(t:integer;rab:cc;yd:boolean), действие которой анало гично предыдущей , только добавляется параметр yd , от которог о зависит , нужно ли затирать таблицу сразу или она должна повисеть на экране , по ка пользователь не ввел какие либо данные . Например при удалении записей из таблиц ы , пользователю будет удобнее , если он буд ет содержание таблицы перед глазами . Н а пример покажем содержание таблицы студен тов , которые будут вывед ены после нажатии на кнопку «Просмотр» : Следующая процедура - obrabotka(iz,t:integer; var rab:cc). Эта проце дура вызывается при корректировке записей . Че рез параметр iz процедура выбирает путь дальнейшего хо да . То есть надо ли добавить запись , из менить или удалить . Параметр rab – это таблица , котора я передается в процедуру , и параметр var показывает , что данную таблицу можно изменять непосред ственно из процедуры. В ней используются локальные переменные – dlud:string; bis:boolean; tems,temr,tem:cc; Здесь все переменные типа cc – временные , dlud служит для ввода данных , а bis показывает , выполнимо ли выбран ное действие или нет. Продцедура sort(iz,t:integer; var rab:cc) осуществляет сортировку за писей в выбранной таблице по выбранному п олю . Ее работа и параметры с переменными аналогичны предыдущей процедуре. При з апросах выполняется процедура zapros(num:integer), где через параметр num передается , какой именно запрос должен выполняться . Потом через условие case идет обраб отка запросов . Как показано на схеме взаим одействия таблиц , чтобы перейти от студентам к препод авателям надо пройти через таблицу оценок . Связь между таблицами осуще ствляется по уникальным полям . Например для нахождении оценки студента надо сначала из таблицы студентов найти номер его студен ческого , а потом найти номер сдаваемого пр едмета из табли ц ы , а уже после этого , используя полученные номера , найти из таблицы успеваемости полученную студентом оценку . То есть связь идет по трем таб лицам . В запросах я старался как можно больше показать возможности моей базы данн ых . На последнем рисунке показан о д ин из запросов и результат его вы полнения . Возможность создания гибких запросов является важнейшей задачей программирования ба з данных. Возможности пол ученного программного продукта Таким образом мы построили гибкую модель базы данных , в которой легко соз дать нужный запро с , данные представлены в удобном для польз ователя виде . Интерфейс программы построен бе з излишков и настроен на максимальное удо бство пользователя . Программа позволяет заполнять базу данных одновременно несколькими пользов ателями , каждый и з которых будет заполнять свою таблицу . Так как программа работает с динамическими списками , то она быстра и позволяет избежать избыточности д анных в таблицах. Текст программы Kurs . pas program Delphins; uses crt,tips; var names,namer:string[10]; key,kr :char; tek,i,j,izm:integer; exist,vfile,issor:boolean; nast:pered; temr,tt1,tt2,tt3,tt4:cc; outf:file of tabl2; procedure menus(m:pered;max:byte); Вывод меню begin clrscr; For i:=1 to max do begin if i=1 then begin textcolor(1); gotoxy(9,2); write(m.st[i]); end else begin if i=2 then textcolor(9) else textcolor(3); gotoxy(8,i+3);write(m.st[i]); end; end; end; procedure krutis; Звездочка рядом с активны м элементом begin textc olor(14); if kr='/' then kr:='-' else if kr='-' then kr:='\' else if kr='\' then kr:='|' else kr:='/'; gotoxy(6,tek+3);write(kr); textcolor(3); end; procedure ramka(ch:char); перемещение указателя begin gotoxy(6,tek+3);Writeln(' '); textcolor(3);gotoxy(8,tek+3);write(nast.st[tek]); if ch='+' then tek:=tek+1 else tek:=tek-1; if tek=1 then tek:=nast.m else if tek=nast.m+1 then tek:=2; key:=#0; textcolor(9);gotoxy(8,tek+3);write(nast.st[tek]) ; krutis; end; procedure tabl11(t:integer;rab:cc); Вывод таблицы в файл var ooutf:text; tem:cc; begin clrscr; writeln('Введите имя файла '); readln(names); assign(ooutf,names); rewrite(ooutf); writeln(ooutf,menu2.st[t]); writeln(ooutf ,'+--------------------------------------------------------------------------+'); writeln(ooutf,'¦ ',mm[t-1,1]:14,'¦ ',mm[t-1,2]:14,'¦ ',mm[t-1,3]:14,'¦ ',mm[t-1,4]:14,'¦ ',mm[t-1,5]:14,'¦ '); writeln(ooutf,'+--------------+--------------+--------------+-- ------------+--------------¦ '); tem:=rab; while tem<>nil do begin writeln(ooutf,'¦ ',tem^.tabl.t1:14,'¦ ',tem^.tabl.t2:14,'¦ ',tem^.tabl.t3:14,'¦ ',tem^.tabl.t4:14, '¦ ',tem^.tabl.t5:14,'¦ '); tem:=tem^.sled; end; writeln(ooutf,'+--------------------------------------------------------------------------+'); close(ooutf); nast:=menu1; menus(nast,nast.m); tek:=2; end; procedure tabl1(t:integer;rab:cc;yd:boolean); Вывод таблицы на экран var tem:cc; b egin clrscr; writeln(menu2.st[t]); writeln('+--------------------------------------------------------------------------+'); writeln('¦ ',mm[t-1,1]:14,'¦ ',mm[t-1,2]:14,'¦ ',mm[t-1,3]:14,'¦ ',mm[t-1,4]:14,'¦ ',mm[t-1,5]:14,'¦ '); writeln('+----------- ---+--------------+--------------+--------------+--------------¦ '); tem:=rab; while tem<>nil do begin writeln('¦ ',tem^.tabl.t1:14,'¦ ',tem^.tabl.t2:14,'¦ ',tem^.tabl.t3:14,'¦ ',tem^.tabl.t4:14, '¦ ',tem^.tabl.t5:14,'¦ '); tem:=tem^.sled; end; writeln('+--------------------------------------------------------------------------+'); if not yd then begin readln; nast:=menu1; menus(nast,nast.m); tek:=2; end; yd:=false; end; procedure sort(iz,t:integer; var rab:cc); Сортировка по полю var po:integer; te1,te2,tem:cc; str1,str2:string; ttrtt:tabl2; begin tabl1(tek,rab,true); writeln('Введите номер столбца по которому надо отсортировать данные '); readln(po); te1:=rab; while te1<>nil do begin te2:=te1^.sled; while te2<>nil do begin case po of 1:begin str1:=te1^.tabl.t1; str2:=te2^.tabl.t1; end; 2:begin str1:=te1^.tabl.t2; str2:=te2^.tabl.t2; end; 3:begin str1:=te1^.tabl .t3; str2:=te2^.tabl.t3; end; 4:begin str1:=te1^.tabl.t4; str2:=te2^.tabl.t4; end; 5:begin str1:=te1^.tabl.t5; str2:=te2^.tabl.t5; end; end; if str1>str2 then begin ttrtt:=te1^.tabl; te1^.tabl:=te2^.tabl; te2^.tabl:=ttrtt; end; te2:=te2^.sled; end; te1:=te1^.sled; end; tabl1(tek,rab,false); end; procedure obrabotka(iz,t:integer; var rab:cc); Обработка записей var dlud:string; bis:boolean; tems,temr,tem:cc; begin clrscr; if iz=1 then begin добавление записи if rab<>nil then begin tem:=rab; while tem^.sled<>nil do tem:=tem^.sled; new(tem^.sled); tem:=tem^.sled; end else begin new(rab); tem:=rab; end; writeln(mm[t,1]);readln(tem^.tabl.t1); writeln(mm[t,2]);readln(tem^.tabl.t2); writeln(mm[t,3]);readln(tem^.tabl.t3); writeln(mm[t,4]);readln(tem^.tabl.t4); writeln(mm[t,5]);readln(tem^.tabl.t5); tem^.sled:=nil; tem :=rab; izm:=0; nast:=menu1; menus(nast,nast.m); tek:=2; iz:=0; end else if iz=2 then begin Удаление записи tems:=rab; tabl1(tek,rab,true); writeln('Введите уникальный номер '); readln(dlud); bis:=true; if rab^ .tabl.t1 = dlud then begin rab:=rab^.sled; bis:=false; end else begin while tems<>nil do begin if tems^.sled^.tabl.t1=dlud then begin tem:=tems^.sled; tems^.sled:=tems^.sled^.sled; dispose(tem); bis:=false; break; end; tems:=tems^.sled; end; end; if bis then writeln(' Данной записи не обнаруженно '); nast:=menu1; menus(nast,nast.m); tabl1(tek,rab,false); izm:=0; tek:=2; e nd else if iz=3 then begin изменение данных tems:=rab; tabl1(tek,rab,true); writeln('Введите уникальный номе р '); readln(dlud); bis:=true; while tems<>nil do begin if tems^.tabl.t1=dlud then begin writeln(mm[t,1 ]);readln(tems^.tabl.t1); writeln(mm[t,2]);readln(tems^.tabl.t2); writeln(mm[t,3]);readln(tems^.tabl.t3); writeln(mm[t,4]);readln(tems^.tabl.t4); writeln(mm[t,5]);readln(tems^.tabl.t5); break; end; tems:=tems^.sled; end; if bis then writeln('Данной записи не обнаруженно '); nast:=menu1; menus(nast,nast.m); tabl1(tek,rab,false); izm:=0; tek:=2; end; end; procedure zapros(num:integer); Запросы var str1,str2, str3:string; tem1,tem2:cc; nay:boolean; zz:tabl2; begin clrscr; nay:=false; case num of 2:begin Найти оценку tem1:=tt1; writeln(' Введите фамилию '); readln(str1); writeln('Введите название предме та ');readln(str2); while te m1<>nil do begin if tem1^.tabl.t2=str1 then begin str1:=tem1^.tabl.t1; break; end; tem1:=tem1^.sled; end; tem1:=tt2; while tem1<>nil do begin if tem1^.tabl.t2=str2 then begin str2:=tem1^.tabl.t1; break; end; tem1:=tem1^.sled; end; tem1:=tt4; while tem1<>nil do begin if ((tem1^.tabl.t5=str2) and (tem1^.tabl.t4=str1)) then begin textcolor(red); writeln(' Оценка этого студента -',tem1^.tabl.t2); nay:=true; break; end; tem1:=tem1^.sled; end; end; 3:begin Преподаватель writeln('Выедите название предме та '); readln(str1); tem1:=tt2; while tem1<>nil do begin if tem1^.tabl.t2=str1 then begin str1:=tem1^.tabl.t3; break; end; tem1:=tem1^.sled; end; tem1:=tt3; while tem1<>nil do begin if tem1^.tabl.t1=str1 then begin textcolor(red); writeln(' Преподаватель -'); with tem1^.tabl do write(' ',t2,', ',t3,', ',t4); nay:=true; break; end; tem1:=tem1^.sled; end; end; 4:begin Найти размер стипендии writeln(' Введите фамилию студента '); readln(str1); tem1:=tt1; while tem1<>nil do begin if tem1^.tabl.t2 =str1 then begin textcolor(red); writeln(' Стипендия -',tem1^.tabl.t5); nay:=true; break; end; tem1:=tem1^.sled; end; end; 5:begin Вывод всех студентов с избранной оценкой writeln('Введите оц енку '); readln(str1); tem1:=tt4; tem2:=tt1; textcolor(red); while tem1<>nil do begin if tem1^.tabl.t2=str1 then begin str2:=tem1^.tabl.t4; while tem2<>nil do begin if tem2^.tabl.t1=str2 then begin with tem2^.tabl do writeln(' Студент -',t3,' ',t4,' ',t2); nay:=true; end; tem2:=tem2^.sled; end; end; tem2:=tt1; tem1:=tem1^.sled; end; end; 6:begin Найти д ату сдачи предмета writeln('Введите название предмета '); readln(str1); tem1:=tt2; while tem1<>nil do begin if tem1^.tabl.t2=str1 then begin str1:=tem1^.tabl.t1; break; end; tem1:=tem1^.sled; end; tem1:=tt4; while tem1< >nil do begin if tem1^.tabl.t5=str1 then begin textcolor(red); writeln(' Дата сдачи -',tem1^.tabl.t3); nay:=true; end; tem1:=tem1^.sled; end; end; end; textcolor(red); if not nay then writeln(' Запрос невыполн им '); textcolor(3); readln; nast:=menu1; menus(nast,nast.m); tek:=2; end; procedure writetip(temr:cc); begin clrscr; write(' Введите имя файла '); writeln('в котором хотите сох ранить данные '); readln(names); for i:=1 to 4 do begin if temr<>nil then begin temr:=nil; end; case i of 1:begin temr:=tt1; namer:='1'+names; end; 2:begin temr:=tt2; namer:='2'+names; end; 3:begin temr:=tt3; namer:='3'+names; end; 4:begin temr:=tt4; namer:='4'+names; end; end; assign(outf,name r); rewrite(outf); while temr<>nil do begin write(outf, temr^.tabl); temr:=temr^.sled; end; CLOSE(outf); end; nast:=menu1; menus(nast,nast.m); tek:=2; end; procedure readtip(temr:cc); var tems:cc; begin clrscr; write(' Введите имя файл а '); writeln('из которого надо взя ть данные '); readln(names); for i:=1 to 4 do begin if temr<>nil then begin temr:=nil; end; if tems<>nil then begin tems:=nil; end; case i of 1:begin new(tt1); temr:=tt1; namer:='1'+names; end; 2:begin new(tt2); temr:=tt2; namer:='2'+names; end; 3:begin new(tt3); temr:=tt3; namer:='3'+names; end; 4:begin new(tt4); temr:=tt4; namer:='4'+names; end; end; assign(outf,namer); reset(outf); if eof(outf) then begin case i o f 1:begin dispose(tt1);tt1:=nil;end; 2:begin dispose(tt2);tt2:=nil;end; 3:begin dispose(tt3);tt3:=nil;end; 4:begin dispose(tt4);tt4:=nil;end; end; end else begin tems:=temr; while temr<>nil do begin if eof(outf) then break; read(outf,temr^.tabl); if eof(outf) then break; new(temr^.sled); temr:=temr^.sled; end; temr^.sled:=nil; case i of 1:tt1:=tems; 2:tt2:=tems; 3:tt3:=tems; 4:tt4:=tems; end; end; C LOSE(outf); end; nast:=menu1; menus(nast,nast.m); tek:=2; end; procedure main; begin key:=#0; if nast.st[1]=menu1.st[1] then begin Если меню - основное case tek of 2:readtip(temr); 3:writetip(temr); 4,5,7:begin nast:=menu2; menus(nast,nast.m); if tek=7 then issor:=true; if tek=4 then vfile:=true else if tek=5 then vfile:=false; tek:=2; end; 6:begin nast:=menu3; menus(nast,nast.m); tek:=2; end; 8:begin n ast:=menu4; menus(nast,nast.m); tek:=2; end; 9: begin exist:=true; end; end; end else if nast.st[1]=menu3.st[1] then begin Если текущее меню -menu3 case tek of 2,3,4:begin izm:=tek-1; nast:=menu2; menus(n ast,nast.m); tek:=2; end; 5:begin nast:=menu1; menus(nast,nast.m); tek:=2; end; end; end else if nast.st[1]=menu4.st[1] then begin Если текущее меню -menu4 case tek of 2,3,4,5,6:zapros(tek); 7:begin nast:=menu1; menus(nast,nast.m); tek:=2; end; end; end else if nast.st[1]=menu2.st[1] then begin Если текущее меню -menu2 if izm>0 then begin case tek of 2:obrabotka(izm, tek-1,tt1); 3:obrabotka( izm, tek-1,tt2); 4:obrabotka(izm, tek-1,tt3); 5:obrabotka(izm, tek-1,tt4); 6:begin nast:=menu1; menus(nast,nast.m); izm:=0; tek:=2; end; end; end else if issor=true then begin issor:=false; case tek of 2:sort(izm, tek-1,tt1); 3:sort(izm, tek-1,tt2); 4:sort(izm, tek-1,tt3); 5:sort(izm, tek-1,tt4); 6:begin nast:=menu1; menus(nast,nast.m); izm:=0; tek:=2; en d; end; end else begin case tek of 2:if vfile then tabl11(tek,tt1) else tabl1(tek,tt1,false); 3:if vfile then tabl11(tek,tt2) else tabl1(tek,tt2,false); 4:if vfile then tabl11(tek,tt3 ) else tabl1(tek,tt3,false); 5:if vfile then tabl11(tek,tt4) else tabl1(tek,tt4,false); 6:begin nast:=menu1; menus(nast,nast.m); izm:=0; tek:=2; end; end; end; end; end; begin clrscr; textBackground(black); tek:=2; kr:='-'; exist:=false; nast:=menu1; menus(nast,nast.m); while 1>0 do begin if keypressed then key:=readkey; case key of #80:ramka('+'); #72:ramka('-'); #27:exist:=true; #13:main; en d; if exist then exit; krutis; end; end. Текст модуля Tips . pas Unit tips; interface type pered=record st:array[1..12] of string; m:byte; end; tabl2=record t1,t2,t3,t4,t5:string[12]; end; cc=^tab; tab=record tabl:tabl2; sled:cc; end; var menu1,menu2,menu3,menu4:pered; mm:array[1..5,1..5] of string[50]; implementation begin with menu1 do begin st[1]:='БАЗА ДАННЫХ '; st[2]:='Загрузка '; st[3]:='Сохр . в тип . файл '; st[4]:='Сохр . в текст . файл '; st[5]:='Просмо тр '; st[6]:='Корректировка '; st[7]:='Сортировка '; st[8]:='Запросы '; st[9]:=' Выход '; m:=9; end; mm[1,1]:='Студенческий '; mm[1,2]:='Фамилия '; mm[1,3]:='Имя '; mm[1,4]:='Отчество '; mm[1,5]:='Стипендия '; mm[2,1]:='Код предмета '; mm[2,2]:='Название '; mm[2,3]:='Код преподав .'; mm[2,4]:='Время учебы '; mm[2,5]:='Курс '; mm[3,1]:='Код преподав .'; mm[3,2]:='Фамилия '; mm[3,3]:='Имя '; mm[3,4]:='Отчество '; mm[3,5]:='Начало работы '; mm[4,1]:='Код сдачи '; mm[4,2]:='Оценк а '; mm[4,3]:='Дата сдачи '; mm[4,4]:='Студенческий '; mm[4,5]:='Код предмета '; with menu2 do begin st[1]:='ПРОСМОТР '; st[2]:='Студенты '; st[3]:='Предметы '; st[4]:='Преподаватели '; st[5]:=' Оценки '; st[6]:=' Выход '; m:=6; end; with menu3 do begin st[1]:='КОРРЕКТИРОВКА '; st[2]:='Добавление '; st[3]:='Удаление '; st[4]:='Изменение '; st [5]:=' Выход '; m :=5; end; with menu4 do begin st[1]:=' ЗА ПРОСЫ '; st[2]:='Найти оценку '; st[3]:='Кто принимал экзамен '; st[4]:='Найти размер стипендии '; st[5]:='Вывод по оценке '; st[6]:='Дата сдачи экзамена '; st [7]:=' Выход '; m:=7; end; end.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
- Англия ушла, теперь Франция с Германией будут выяснять, кто из них круче.
- Ну, сколько можно о политике?
- Я - не о политике, я - о футболе.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Разработка базы данных, отражающей учет успеваемости студентов", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru