Введение
1 Структуры в языке С
1.1 Понятие о структурах, структурный тип данных
1.2 Структурные переменные. Массивы структур
1.3 Битовые поля
2 Файлы в языке С
2.1 Понятие файла. Основные характеристики файла
2.2 Понятие потока и буфера. Виды потоков
2.3 Работа с файлами. Этапы работы с файлами
2.4 Позиционирование в файле
2.5 Осуществление ввода-вывода в поток
2.6 Обработка ошибок при работе с файлами
2.7 Функции для очистки буфера
3 Разработка приложения и описание его работы
3.1 Постановка задачи
3.2 Используемый структурный тип
3.3 Описание работы приложения
Заключение
Список использованных источников
Приложение
Введение
Язык Си (C) появился в 1969 г. Он родился в «Белл телефон лабораторис» (Bell Telefon Laboratoris) (научно-исследовательской фирме, принадлежащей корпорации «Американ телефон энд телеграф» (American Telephone and Telegraph), AT&T, и расположенной в Мюррей-хилл, шт. Нью-Джерси) в атмосфере, которую один из участников разработки определил как «благотворное пренебрежение». Название «Си» (C) появилось так же случайно, как и сам язык. Он оказался преемником ранее созданного языка для внутреннего использования, получившего название Би (B). Отчасти язык Би основывался на созданном в Кембриджском университете языке БКПЛ (BCPL, от Basic Combined Programming Language - базовый комбинированный язык программирования), который в свою очередь был потомком Алгола-60. Язык Си разработал в 1972 г. Денис Ритчи (Dennis Ritchie), 31-летний специалист по системному программированию, который, получив степень бакалавра по прикладной математике в Гарвардском университете, поступил в 1968 г. на службу в «Белл телефон лабораторис». Ритчи надеялся, что его новый язык пригодится для программирования новой операционной системы «Юникс» (UNIX), работа над которой тоже не входила в официальные планы компании. Ради повышения скорости работы операционных систем они традиционно писались на языке низкого уровня - ассемблере, но язык Си настолько хорошо зарекомендовал себя, что в конечном счете на нем было написано более 90% всего кода центральной программы (ядра) системы «Юникс». Поскольку антитрестовское законодательство запрещало продавать «Юникс», корпорация AT&T распространила систему по колледжам и другим некоммерческим организациям лишь за небольшую лицензионную плату. Как только система «Юникс» получила признание, язык Си обрел популярность как так называемый язык среднего уровня, в котором удобство, краткость и мобильность языков высокого уровня сочетаются с возможностью непосредственного доступа к аппаратуре, что традиционно обеспечивалось ассемблером. Целью курсового проекта является разработка визуального приложения в среде Builder C++, реализующего работу со структурами и файлами языка С в заданной предметной области (Учет мероприятий, проведенных в университете).
1 Структуры в языке С
1.1 Понятие о структурах, структурный тип данных
Структура – это объединение нескольких объектов, возможно, различного типа под одним именем, которое является типом структуры. В качестве объектов могут выступать переменные, массивы, указатели и другие структуры. Структуры позволяют трактовать группу связанных между собой объектов не как множество отдельных элементов, а как единое целое. Структура представляет собой сложный тип данных, составленный из простых типов.
Общая форма объявления структуры:
struct тип_структуры
{
тип ИмяЭлемента1;
тип ИмяЭлемента2;
. . .
тип ИмяЭлементаn;
};
После закрывающей фигурной скобки } в объявлении структуры обязательно ставится точка с запятой. При объявлении структур, их разрешается вкладывать одну в другую.
Инициализация полей структуры может осуществляться двумя способами:
– присвоение значений элементам структуры в процессе объявления переменной, относящейся к типу структуры;
– присвоение начальных значений элементам структуры с использованием функций ввода-вывода (например, printf() и scanf()).
Имя элемента структуры является составным. Для обращения к элементу структуры нужно указать имя структуры и имя самого элемента. Они разделяются точкой. Имя структурной переменной может быть указано при объявлении структуры. В этом случае оно размещается после закрывающей фигурной скобки «}». Область видимости такой структурной переменной будет определяться местом описания структуры. Указатель на структуру создаётся как обычно. Отличие заключается в том, что можно обращаться к полям структуры через указатель с помощью операции "стрелка" (минус + больше). Пример – пользователь вводит число – размер массива пользователей. Поле этого вводит для каждого из них логин и пароль. Третье поле – идентификатор – задаётся автоматически.
2 Файлы в языке С
2.1 Понятие файла. Основные характеристики файла
Файл – именованная область внешней памяти, выделенная для хранения массива данных. Данные, содержащиеся в файлах, имеют самый разнообразный характер: программы на алгоритмическом или машинном языке; исходные данные для работы программ или результаты выполнения программ; произвольные тексты; графические изображения и т. п. Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные. Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде. Работа с текстовым файлом похожа работу с консолью: с помощью функций форматированного ввода сохраняются данные в файл, с помощью функций форматированного вывода данные из файла считываются. Основные операции, которые необходимо проделать, это:
– открыть файл, для того, чтобы к нему можно было обращаться. Соответственно, открывать можно для чтения, записи, чтения и записи, переписывания или записи в конец файла и т.п. Когда открывается файл, может также произойти ряд ошибок – файла может не существовать, это может быть файл не того типа, могут отсутствовать права доступа к файлу и т.д. Всё это необходимо учитывать:
– непосредственно работа с файлом – запись и чтение. Здесь также нужно понимать, что работа проводится не с памятью с произвольным доступом, а с буферизированным потоком, что добавляет свою специфику.
– закрыть файл. Так как файл является внешним по отношению к программе ресурсом, то если его не закрыть, то он продолжит висеть в памяти, возможно, даже после закрытия программы (например, нельзя будет удалить открытый файл или внести изменения и т.п.). Кроме того, иногда необходимо не закрывать, а "переоткрывать" файл для того, чтобы, например, изменить режим доступа.
Кроме того, существует ряд задач, когда нет необходимости обращаться к содержимому файла: переименование, перемещение, копирование и т.д. В стандарте Си нет описания функций для этих нужд. Они, безусловно, имеются для каждой из реализаций компилятора. Считывание содержимого каталога (папки, директории) – это тоже обращение к файлу, потому что папка сама по себе является файлом с метаинформацией.
3 Разработка приложения и описание его работы
3.1 Постановка задачи
Согласно заданию курсового проекта необходимо было разработать приложение, реализующее работу в предметной области «Учет мероприятий, проведенных в университете», которое включает:
1. Создание файла.
2. Добавление записей в конец файла.
3. Добавление записи по номеру.
4. Вывод на экран всех записей в виде таблицы (использовать компонент StringGrid).
5. Удаление записи по номеру.
6. Удаление файла.
7. Копирование данных из файла в резервный файл.
8. Восстановление файла из резервного файла.
9. Удалить все записи по заданному мероприятию.
10. Заменить количество человек для заданного мероприятия.
11. Вывести все сведения о мероприятиях заданного типа.
3.2 Используемый структурный тип
Для чтения/записи информации в файл была создана структура univer и переменная mas типа данной структуры:
struct univer
{
int udk;
char name[100];
char type[100];
char data[100];
int count;
char fams[100];
}mas;
Данная структура использовалась для ввода/вывода следующей информации по предметной области:
1. УДК мероприятия.
2. Название мероприятия.
3. Тип мероприятия (спортивное, учебное, воспитательное).
4. Дата мероприятия.
5. Количество человек принявших участие в мероприятии.
6. Фамилии отличившихся студентов (если такие были).
Заключение
В процессе выполнения курсового проекта было создано в среде Builder С++ визуальное приложение для работы в предметной области «Учет мероприятий, проведенных в университете». Для этого были изучены теоретические аспекты работы со структурами и файлами в языке С. Разработанное приложение позволяет осуществлять добавление, удаление, вставку, отображение записей, отбор записей из файла по условию