Московский Авиационный Институт
(государственный технический университет) Факультет прикладной математики
Кафедра вычислительной математики и программирования
Курсовой проект
по теме
«Обработка последовательной файловой структуры»
2 семестр
Задание VI
Студентка: Смирнова С.И.
Группа: 08-105, 12 вар.
Руководитель: Титов В.К.
Оценка
Дата
Москва
2012 год
Постановка задачи
Разработать последовательную структуру данных для представления простейшей базы данных на файлах СП Си в соответствие с заданным вариантом.
Составить программу генерацию нетекстового файла заданной структуры, содержащего представительный набор записей (15-20).
Распечатать содержимое генерируемого файла в виде таблицы и выполнить над ним заданное действие для 2-3 значений параметров запроса p и распечатать результат.
Действие по выборе данных из файла оформить с параметрами запроса, вводимыми из стандартного входного текстового файла, или получаемых из стандартной строки ввода UNIX. Получение параметров из командной строки производится с помощью стандартных библиотечных функций argc и argv.
Число наборов текстов должно быть не менее трех.
Задание(34 вариант):
Найти пассажиров, имеющих более p вещей.
Общий метод решения
Создаем тестовые файлы. Содержимое и структура файла включает:
а) фамилию, инициалы пассажира
б) количество вещей
в) общий вес вещей
г) пункт назначения
д)время вылета
е)наличие пересадки ж)сведения о детях
Используем команды обработки текстовых файлов OC UNIX и переадресацию ввода-вывода.
Составляем программу генерацию внешнего нетекстового файла.
Перенапрявляем всё содержимое нетекстового представления в файл out.dat. Туда происходит постоянная дозапись. Следовательно, необходимо при повторной работе с ним в дальнейшем удалять его.
Распечатываем содержимое файла в виде таблицы.
4) При помощи функций printf(…) и scanf(…) задаем значение параметра p.
5) Сравниваем при помощи условия if{…} значение параметра p и число вещей каждого из пассажиров. Если число вещей данного пассажира больше p, то выводим всю информацию об этом пассажире (имя, кол-во вещей, вес вещей и т.д.)
Общие сведения о программе
Операционная система: Ubuntu 10.04 LTS Lucid Lynx
Язык программирования: C++
Полное имя программы: /home/ kp6
Компиляция и запуск программы:
g++ 6kp.cpp –o 6kp.exe
./ 6kp.exe list1
Функциональное назначение
Данная программа, преобразующая текстовой файл в нетекстовой, генерирующая внешний нетекстовой файл, распечатывающая таблицу, доказывает, что представление в нетекстовом виде очень удобна. Во-первых, в памяти компьютера хранить бинарные коды намного проще, памяти меньше занимается. Во-вторых, всевозможные операции производить с файлом в нетекстовом представлении быстрее и удобнее. К тому же нетекстовой файл хранится в оперативной памяти в таком же изначальном виде, в каком был создан файл. Таким образом, нетекстовое представление обладает большими преимуществами.
Описание логической структуры
Структура struct {….}; в которую мы помещаем информацию о студенте:
Имя |
Тип |
Назначение |
name |
char |
Массив для хранения имени |
numberofthings |
int |
Кол-во вещей |
weightofthing |
float |
Нецелое значение веса вещей |
destination |
char |
Массив для хранения пункта назначения |
time |
float |
Время вылета(час.мин) |
transplantation |
char |
Массив для хранения наличия пересадки |
children |
char |
Массив для хранения сведений о детях |
файл generation.c:
Прочитывает файл value.h и работает на основе этих данных:
Используемые функции:
void write_student(FILE* out, student s) – функция, преобразующая данные из файла (08-105, 08-106, 08-108) в нетекстовое представление текстового файла. Направляет запись в файл out.
int information_about_student(FILE* list, student* s) – функция, возвращающая указатели на фамилию, имя, отчество, пол, номер группы, оценки по предмету.
int main() – функция, печатающая содержимое файла в виде таблицы.
файл rabota.c:
int TR(student s) – функция, подсчитающая количество студентов, имеющих больше двух трое. Создаем счетчик q, увеличиваем его на 1, если находим студента, имеющего больше двух троек.
int read_student(FILE* list, student* s) - функция, читающая данные, записанные в нетекстовом представлении.
int main(int a, char b*[c]) - функция, печатающая таблицу. Если мы направили туда все группы, то они сольются в одну для удобной сортировки. Также тут выполняется печать второй таблицы, где представлены студенты, имеющие больше двух троек.