ОПИСАНИЕ ОРГАНИЗАЦИИ СТРУКТУР ХРАНИМЫХ ДАННЫХ ВВЕДЕНИЕ Компьютеры проникли во все сферы жизни и деятельности человека, начиная с начального образования и заканчивая космическими технологиями. Благодаря разнообразию программного и аппаратного обеспечения, сегодня возможно использование максимального потенциала компьютеров и компьютерных технологий. Современные технологии позволяют хранить огромное количество данных, занимая при этом минимальное место. Целую библиотеку можно записать на USB-флеш-накопитель, который легко умещается в руке. Так же компьютерные технологии позволяют быстро форматировать и обрабатывать информацию, располагают средствами для надежной ее защиты. Широкое распространение персональных компьютеров создало огромный рынок труда, ведь автоматизация многих процессов позволяет гораздо быстрее справляться с работой, на которую раньше уходило много времени. На разработку новых проектов уходит меньше времени, потому что не нужно тратить его на вычисления и расчеты, можно полностью посвятить самому проекту. Большую роль развитие IT-технологий отыграло в медицине, где они используются для моделирования заболеваний, сбора статистики о заболеваниях, расчетов при создании новых препаратов. Компьютер – это средство общения, а сама связь на данный момент самая дешевая. Для людей с ограниченными возможностями это порой единственный способ общаться, самореализоваться, получать работу и вести нормальную жизнь. Применение компьютерных технологий облегчает образовательный процесс в средних, высших учебных заведениях для студентов, учеников, преподавателей и другого рабочего персонала. Этому и посвящена данная курсовая работа. Перейдём к рассмотрению цели данного курсового проекта по предмету «Основы конструирования программ». Целью данной курсовой работы является составление программы для университета, для учета неуспевающих студентов. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ОБ ИСПОЛЬЗУЕМЫХ АЛГОРИТМАХ Алгоритмом называется точная инструкция исполнителю в понятной для него форме, определяющая процесс достижения поставленной цели на основе имеющихся исходных данных за конечное число шагов. Основными свойствами алгоритмов являются: 1. Универсальность (массовость) - применимость алгоритма к различным наборам исходных данных. 2. Дискретность - процесс решения задачи по алгоритму разбит на отдельные действия. 3. Однозначность - правила и порядок выполнения действий алгоритма имеют единственное толкование. 4. Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются. 5. Результативность - по завершении выполнения алгоритма обязательно получается конечный результат. 6. Выполнимость - результата алгоритма достигается за конечное число шагов. Алгоритм считается правильным, если его выполнение дает правильный результат. Соответственно алгоритм содержит ошибки, если можно указать такие допустимые исходные данные или условия, при которых выполнение алгоритма либо не завершится вообще, либо не будет получено никаких результатов, либо полученные результаты окажутся неправильными. При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов: линейный, ветвящийся, циклический. Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов. Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого-либо логического условия). Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. Линейный поиск Линейный поиск в массивах, или как его ещё называют, поиск в ЛОБ эффективен в массивах, с небольшим количеством элементов, причём элементы в таких массивах никак не отсортированы и не упорядочены. Алгоритм линейного поиска в массивах последовательно проверяет все элементы массива и сравнивает их с ключевым значением. Таким образом, в среднем необходимо проверить половину значений в массиве, чтобы найти искомое значение. Чтобы убедиться, в отсутствии искомого значения необходимо проверить все элементы массива. 1. ОПИСАНИЕ ОРГАНИЗАЦИИ СТРУКТУР ХРАНИМЫХ ДАННЫХ Данные организованы в виде динамического списка. Информация о каждом студенте представляет собой узел. Далее представлены используемые структуры. struct progress { int english; //отметка по английскому языку int physics; //отметка по физике int mathematics; //отметка по математике int informatics; //отметка по информатике }; struct studData { progress stud; char first_name[64]; //имя учащегося char last_name[64]; //фамилия int group; //номер группы int course; //текущий курс }; struct info { studData data; int id; info *next; info *prev; }; struct users { char login[20]; users *next, *prev; }; Структура info хранит данные об успеваемости студентов. В неё вложена структура studData, хранящая информацию о студнете, а в структуру studData в свою очередь вложена структура progress, хранящая данные об успеваемости по выбранным предметам. Структура progress int english; - отметка по английскому языку int physics; - отметка по физике int mathematics; - отметка по математике int informatics; - отметка по информатике Структура studData progress stud; - вложенная структура progress char first_name[64]; - имя учащегося char last_name[64]; - фамилия учащегося int group; - номер группы студента int course; - текущий курс Структура info studData data; - вложенная структура studData int id; - номер записи info *next; - указатель на следующий узел info *prev; - указатель на предыдущий узел Структура users char login[20]; - логин пользователя users *next, *prev; - указатели на следующий и предыдущий узел соответственно.
|