МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Разработка базы данных, отражающей учет успеваемости студентов

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

    Министерство образования

    Российской Федерации

    Хабаровский Государственный Технический Университет

    Кафедра: «Программное обеспечение»

    КУРСОВАЯ РАБОТА

    По теме «Разработка базы данных,

    отражающей учет успеваемости студентов»

    Выполнил студент

    гр. ПО-02 Самойленко П.

    Р.

    Проверил преподаватель

    Белоусова Людмила

    Васильевна

    Хабаровск 2001

    Содержание:

    1. Задание на разработку, постановка задачи.

    2. Описание базы данных.

    3. Описание средств, используемых при создании программы.

    4. Первоначальные данные.

    5. Интерфейс программы.

    6. Описание используемых переменных и процедур.

    7. Возможности полученного программного продукта.

    Постановка задачи.

    Построить систему управления базой данных (в дальнейшем-СУБД), отражающую

    учет успеваемости студентов вуза. При этом надо предусмотреть, что данные

    могут вноситься разными людьми. Построить базу данных, которая была бы

    максимально гибкой. В базе данных должны содержаться данные о студентах,

    оценках, преподавателях и предметах.

    Описание базы данных.

    База данных нормализована и состоит из четырех таблиц. Она разбита на

    четыре таблицы, дабы быть максимально гибкой. При этом разные таблицы могут

    заполняться разными людьми, а потом объединяться в одну общую базу данных.

    Например, таблицу о студентах заполняют на кафедре, на которой учиться

    студент, таблицу о преподавателе и предметах – на кафедре этих

    преподавателей, а оценки ставит преподаватель.

    Структура таблиц

    |Название столбца|Описание |

    |Таблица студентов (tt1) |

    |T1 |Номер студенческого билета |

    |T2 |Фамилия студента |

    |T3 |Имя |

    |T4 |Отчество |

    |T5 |Стипендия |

    |Таблица предметов(tt2) |

    |T1 |Номер предмета |

    |T2 |Название предмета |

    |T3 |Номер преподавателя |

    |T4 |Часы |

    |T5 |Курс |

    |Таблица преподавателей(tt3) |

    |T1 |Номер учителя |

    |T2 |Фамилия учителя |

    |T3 |Его имя |

    |T4 |Отчество |

    |T5 |Дата принятия преподавателя на работу |

    |Таблица успеваемости(tt4) |

    |T1 |Код факта сдачи учебной дисциплины |

    |T2 |Оценка |

    |T3 |Дата сдачи |

    |T4 |Номер студенческого билета |

    |T5 |Код учебного предмета |

    Все атрибуты имеют строковый тип данных. Причем столбец T1 у каждой из

    таблиц является первичным ключом, то есть данные в нем уникальны.

    Изобразим связь между таблицами:

    Связь эта осуществляется через уникальные поля каждой из таблиц. Из схемы

    видно, что связь между преподавателями и например, студентами,

    осуществляется только через таблицу предметов. Такая организация базы

    данных позволяет избежать дублирования данных. Например, если бы у нас

    таблица предметов была объединена с таблицей преподавателей, то мог

    выползти такой случай – один преподаватель ведет два предмета,

    следовательно его фамилия, имя и отчество будут повторятся в таблице

    дважды. А это уже называется избыточностью данных.

    Описание средств, используемых при создании программы

    Данный программный продукт работает в текстовом режиме, периодически

    меняя цвет выводимых символов с помощью процедуры 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¦

    ¦ 2002¦ Химия¦ 4002¦ 68¦

    ¦ 2003¦ Математика¦ 4003¦ 68¦

    ¦ 2004¦ Философия¦ 4005¦ 17¦

    ¦ 2005¦ Экономика¦ 4004¦ 17¦

    +-------------------------------------------------------------------------

    -+

    Преподаватели

    +-------------------------------------------------------------------------

    -+

    ¦ Код преподав.¦ Фамилия¦ Имя¦ Отчество¦ Начало

    работы¦

    +--------------+--------------+--------------+--------------+-------------

    ¦ 4001¦ Викулина¦ Валентина¦ Ивановна¦

    01/04/1984¦

    ¦ 4002¦ Костыркин¦ Олег¦ Владимирович¦

    01/09/1997¦

    ¦ 4003¦ Казанко¦ Виталий¦ Владимирович¦

    01/09/1988¦

    ¦ 4004¦ Позднякова¦ Любовь¦ Алексеевна¦

    01/09/1998¦

    ¦ 4005¦ Загарийчук¦ Игорь¦ Дмитриевич¦

    10/05/1989¦

    +-------------------------------------------------------------------------

    -+

    Оценки

    +-------------------------------------------------------------------------

    -+

    ¦ Код сдачи¦ Оценка¦ Дата сдачи¦ Студенческий¦ Код

    предмета¦

    +--------------+--------------+--------------+--------------+-------------

    ¦ 1001¦ 5¦ 10/06/1999¦ 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,issor:boolean – Логические переменные. Exist – служит для

    выхода из программы. Vfile – позволяет пускать одну процедуру по двум путям

    – либо выводить данные на экран, либо в файл. Issor – показывает меню

    выбора таблиц, что следующим шагом должна быть сортировка данной таблицы.

    5) nast:pered – Типизированная переменная, в которой хранятся строки

    текущего меню. Описание типа pered имеется в модуле:

    pered=record

    st:array[1..12] of string;

    m:byte; {количество строк в

    меню}

    end;

    temr,tt1,tt2,tt3,tt4:cc – Таблицы базы данных. Тут tt1 – таблица с

    данными о студентах, tt2 – предметы, tt3 – преподаватели, tt4 – оценки

    (успеваемость). Temr – временная таблица. Все эти переменные являются

    динамическими списками. Они описаны в файле tips.pas:

    tabl2=record {Сама таблица}

    t1,t2,t3,t4,t5:string[12]; {Состоит из строк}

    end;

    cc=^tab;

    tab=record {Создание

    динамического списка}

    tabl:tabl2;

    sled: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 textcolor(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 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;

    Данная процедура имеет параметр символьного типа. По содержанию ch

    определяется – вверх или вниз сдвинулась активная строка. Обращение к этой

    процедуре идет из основного блока программы. Больше процедур такого рода

    нет (ко всем другим процедурам обращение идет из процедуры main).

    Эта процедура затирает элемент, который был активен перед этим цветом по

    умолчанию (голубым) и стирает предыдущее положение звездочки. После этого

    исходя из значения ch изменяется значение tek и выделяется элемент, на

    который был осуществлен переход. В подпрограмме вставлены два условия:

    if tek=1 then tek:=nast.m

    else if tek=nast.m+1 then tek:=2;

    Они срабатывают когда активным является верхний элемент меню и

    пользователь нажал кнопку вверх, тогда текущей становится последняя строка,

    и наоборот – текущая строка является последней, а пользователь нажал кнопку

    вниз, тогда активной станет первая строка активного меню.

    Процедуры следующего типа осуществляют загрузку и выгрузку данных из

    файла. Я не буду здесь приводить полный текст процедур, так как его можно

    посмотреть в приложении. Чтение осуществляется с помощью readetip, а запись

    – writetip. В этих процедурах используются глобальные переменные. Загрузка

    идет посредством таблиц tt1, tt2, tt3, tt4. При работе пользователь

    работает как бы с одним файлом, хотя реально каждая из таблиц сохраняется в

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

    названию добавляется слева цифра – 1, 2, 3 или 4. Например если при

    сохранении в типизированный файл имени сохраняемого файла присвоить

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.