Скачиваний:
8
Добавлен:
01.04.2014
Размер:
209.92 Кб
Скачать

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

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

Программа должна осуществлять:

1) Ввод данных;

2) Удаление данных;

3) Редактирование данных;

4) Сортировку данных;

5) Сохранение данных в файл;

6) Загрузка данных из файла;

7) Просмотр данных;

  1. Определение состояния склада (сколько авто на складе и какова их суммарная стоимость).

Должны быть пройдены следующие этапы:

1) Анализ предметной области;

2) Определение методов и моделей формирования системы и определенной информационной базы системы;

3) Алгоритмизация проектных решений;

4) Построение пользовательского интерфейса программы;

5) Написание программного кода и тестирование системы;

6) Отладка программы и написание проектной документации.

Все это мы осуществляем с использованием оболочек программирования Visual C++, организация хранения и обработки данных осуществляется с использованием структур и файлов.

Шаблон структуры будет содержать поля, необходимые для хранения информации. Предполагается использование следующих полей:

1) Код записи

2) Марка авто

3) Модель авто

4) Год выпуска

5) Объём двигателя в литрах

6) Пробег в километрах

7) Цена в долларах США

2. Описание работы программы

Для выбора конкретного действия в программе предусмотрено два меню, в которых пользователь при помощи нажатия клавиши с номерами 1-8 определяет дальнейшее поведение программы.

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

При создании нового файла или загрузке записей из существующего, запрашивается имя файла и если данный файл не существует (при загрузке) или не может быть создан (при создании), выдаётся предупреждение.

Когда файл создан или загружен, на экран выводится 2-е меню, предлагающее пользователю выбрать следующее действие.

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

Переход к очередному полю осуществляется с помощью клавиши Ввод, которая, кроме того, заканчивает ввод информации в текущее поле. Поле “Код записи” заполняется автоматически. Если создаётся новый файл, код первой записи будет 1 , 2-й – 2 и т.д. Если запись добавляется в существующий файл, то новой записи будет присвоен код, на 1 на больший, чем максимальный код среди существующих в фале записей.

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

Для удаления записи программа просит ввести номер удаляемой записи и если такой записи нет, то выводится строка с предупреждением.

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

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

При выборе пункта “Отчёт о состоянии склада ” программа считывает из файла поля “цена” всех записей, суммирует их и выводит результат на экран вместе с общим количеством авто.

При выборе пункта меню 2 “Назад” на экран снова выводится меню 1.

При выборе пунктов 1-3 или 5-6 программа проверяет, не является ли файл пустым и если это верно, то выводится строка с предупреждением, и программа возвращается во 2-е меню.

Для обеспечения стабильной работы программы контролируется корректность вводимых данных – команд меню и числовых значений. Если пользователь по ошибке вместо цифр набрал буквы, программа предложит ввести команду или данные еще раз.

Для удобства использования, если пользователь передумал удалять или редактировать запись, ему предлагается нажать Enter для выхода во

2-е меню программы.

2.1 ОПИСАНИЕ НЕКОТОРЫХ ИСПОЛЬЗОВАННЫХ БИБЛИОТЕЧНЫХ ФУНКЦИЙ

Функции обработки и преобразования данных.

int atoi(const char* s) - преобразует строку, на начало которой указывает s, в число типа int. Возвращает полученное значение при преобразовании числа типа int или 0, если при преобразовании встретился символ, который не может быть преобразован. Требует подключения заголовочного файла stdlib.h

Функции для работы со строками символов. Прототипы данных функций находятся в заголовочном файле string.h.

char* strcpy(char* dest, const char* src) – функция копирует строку, на начало которой указывает src, в другое место памяти, на начало которого указывает dest. Символ ‘\0’ источника также копируется.

Функция возвращает указатель на начало строки dest[1].

char* strcat(char* dest, const char* src) — функция присоединяет строку, на начало которой указывает src в конец строки, на начало которой указывает dest. Результирующая строка завершается символом ‘\0’. Символ ‘\0’ строки dest отбрасывается, и, начиная с его позиции, помещается строка src. В результате dest становится сцеплением двух строк[1]

int strcmp(const char* s1, const char* s2) — выполняет сравнение строк, на начало которых указывают параметры s1 и s2, в лексико-графическом порядке с учетом различия строчных и прописных букв. Лексикографический порядок означает, что возвращаемое значение меньше нуля, если строка s1 располагается в упорядоченном по алфавиту «словаре» раньше слова s2. Если первые символы строк одинаковы, то рассматриваются вторые символы, затем третьи и т.д. Функция возвращает 0, если обе строки идентичны. Возвращаемое значение больше нуля, если строка s1 больше строки s2, т.е. располагается в упорядоченном по алфавиту “словаре” позже, чем слово s2.

Например:

  1. strcmp(“abc”,”ABC”); //возвращает большее нуля значение;

  2. strcmp(“ABC”,”ABC”); //возвращает нуль;

  3. strcmp(“ABB”,”ABC”); //возвращает меньшее нуля значение;

size_t strlen(const char s) — возвращает длину в байтах строки, на начало которой указывает указатель s. В возвращаемое значение, тип которого определен как unsigned, не включается символ конца строки

Функции для работы с файлами.

FILE* fopen(const char* filename, const char mode) – возвращает указатель на переменную типа файл или NULL в случае ошибки при открытии файла.

При открытии мы используем следующие режимы:

  1. r – открывается файл только для чтения;

  2. w - открывается файл только для записи.

int fclose(FILE * fp) – закрывает файл. В случае успеха возвращает 0, в противном случае – символ конца файла EOF.[1]

int fread(void * ptr, int size, int n, FILE* fp) – считывает n элементов размером size байт каждый из открытого файла fp. Помещает элементы в буфер, на который указывает ptr. Возвращается количество прочитанных элементов.

int fwrite(void * ptr, int size, int n, FILE* fp) – записывает n элементов размером size байт каждый в открытый файл fp. Элементы считываются из буфера, на который указывает ptr. Возвращается количество записанных элементов.

int fseek(File* stream, long offset, int whence) –смещает указатель чтения-записи в файле на offset байт относительно текущей позиции или относительно начала, или относительно конца, в зависимости от значения whence; Когда whence =SET_CUR=1, fseek смещает указатель относительно текущего положения.

int fgetpos(File* stream, fops_t pos) –помещает в переменную , pos, значение указателя на текущую позицию в файле.

int fsetpos(File* stream, fops_t pos) –устанавливает значение указателя чтения-записи файла в позицию, заданную pos.

int fileno(File* stream) – функция возвращает дескриптор файла, связаннй с указателем на файл stream.

long filelength(int handle) – возвращает размер файла в байтах. handle- это дескриптор файла, связаннй с указателем на данный файл.

2.2 ОПИСАНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ.

Основные функции:

void main() - выводит на экран 1-е меню

и в зависимости от введенной команды или завершает работу или передаёт управление функциям open или create.

void interface() – выводит на экран 2-е меню

и в зависимости от введенной команды или возвращает управление функции main или одну из функций view, del, edit, add, sort, sost_skl.

void add() - Осуществляет добавление записи в файл

void del() - Осуществляет удаление записи из файла

void edit() – Осуществляет редактирование записи

void view() – Осуществляет просмотр всех записей

void sort() - Осуществляет сортировку записей

void create()- Осуществляет создание нового файла для хранения базы данных

void open() – Осуществлеяет открытие файла с базой данных

void sost_skl () – Определяет состояние склада и выводит отчёт на экран.

Вспомогательные функции:

int find_max_num() – Ищет максимальный ID среди всех записей в файле

int get_number() - Определяет количество записей в файле

int check(data) – Ищет в файле запись, идентичную st

void ramka() – Выводит на экран “шапку” таблицы

void print_str(data st) – Выводит на экран запись st с разделителями

int file_empty() – Определяет пуст ли файл

char *str_cut(char *,int) - Урезает строку до размеров текстовых полей структуры