Создание базы данных владельцев автомобилей

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    180,56 Кб
  • Опубликовано:
    2013-03-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание базы данных владельцев автомобилей

СОДЕРЖАНИЕ

1. ЗАДАНИЕ

. ОПИСАНИЕ ПРИМЕНЕНИЯ

.1. Запуск программы

.2. Входные данные

.3. Выходные данные

.4. Сообщения программы

. ОПИСАНИЕ ПРОГРАММЫ

.1. Метод решения задачи

.2. Структура программы

.3. Описание функций 

.3.1. main - главная функция

.3.2. fioponomer - вывод Ф.И.О. по номеру машины        

.3.3. fioinomerpomarki - формирует вывод Ф.И.О. и номер автомобиля по марке

.3.4. kolmarok - формирует вывод количества автомобилей каждой марки

.3.5 vivodafamiliiinomerov - вывод Ф.И.О. и номер машины по марке автомобиля

.3.6 alfavit - сортирует Ф.И.О. в алфавитном порядке

.3.7 chet - считает количество автомобилей

.3.8 vivodakolmarok -вывод количества автомобилей каждой марки

ЛИТЕРАТУРА

Приложение 1. Текст программы

Приложение 2. Пример входного файла AVTO.txt

Приложение 3. Результаты тестирования программы     

1. ЗАДАНИЕ

Дан файл, содержащий сведения о владельцах автомобилей. Каждая строка файла содержит запись об одном пациенте. Структура записи файла:

фамилия и инициалы владельца;

марка автомобиля;

номер автомобиля.

Написать программу, которая печатает:

фамилию владельца автомобиля с заданным номером;

фамилии владельцев и номера автомобилей заданной марки (в алфавитном порядке);

количество автомобилей каждой марки.

2. ОПИСАНИЕ ПРИМЕНЕНИЯ

2.1 Запуск программы

Запуск программы (файл RUSLANKU.c) можно выполнить из среды Turbo C 2.0 (или Borland C++ 3.1), либо из командной строки MS DOS, введя patient.exe .

2.2 Входные данные

Входные данные программы находятся в файле “patient.txt”. Число строк в файле - произвольное. Каждая строка содержит фамилию с инициалами (20 символов), марку автомобиля(10 символов), номер автомобиля(6 символов). Пример строки файла:

Анисимов Д.Г.             марка                  номер

| 20    | 10           | 6 |

Пример входного файла приведен в приложении 2.

По запросу программы с клавиатуры необходимо ввести номер пункта меню (см. раздел 2.3), номер автомобиля (заглавными буками), например:AA001A , марку автомобиля.

2.3 Выходные данные

Программа выводит на экран меню:

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

-vixod

При выборе пункта 1 на экран выводится сообщение:

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

После ввода номера, например FP987P, выводится результат в виде:

№ Фамилия И.О. Год рожд. Диагноз

---------------------------------------------------------------------------

Hisameev F.P.

Если ввести номер, которого нет в файле, выводится сообщение:

mashini s ukazanimi vami nomerom

Если в файле вдруг оказалось два человека с заданным номером выведется сооющение: V base nevernie dannie proverte basu

Примеры выходных данных для остальных пунктов меню см. в приложении 3.

2.4 Сообщения программы

Ниже приводится перечень возможных сообщений программы:

1.      vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

2.      Net mashini s ukazanimi vami nomerom

.        V base nevernie dannie proverte basu

.        vvedite iskomuu mashinu

.        Net takoi mashini

.        Net mashin

.        Vvedite chislo v zavisimosti ot togo chto hotite sdelatvi veli ne korrektnoe chislo poprobuite eche

3. ОПИСАНИЕ ПРОГРАММЫ

3.1 Метод решения задачи

Задачу можно разбить на семь отдельные подзадачи:

2.      Поиск в файле записей, в которых марка автомобиля совпадает с заданной маркой, направления на формирование алфавитного порядка(alfavit) и на вывод владельцев и номеров с данной маркой(vivodafamiliiinomerov).

.        Поочередный проход всех строк во входном файле записей, направление этих данных на подсчет количества автомобилей(chet) и направление на вывод количества(vivodakolmarok).

.        Выводит Ф.И.О. и номер автомобиля.

.        Получает Ф.И.О. владельцев автомобилей и сортирует их в алфавитном порядке.

6.      Получает марку автомобиля и считает количество автомобилей.

.        Выводит количество автомобилей каждой марки.

Каждая подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы).

Чтобы пользователь мог выбирать, какие подзадачи решать и в каком порядке, программа выводит на экран меню (см. раздел 2.3).

3.2 Структура программы

Рис.1. Функциональная структура программы

программа файл алфавитный поиск

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

1.      fioponomer - вывод Ф.И.О. по номеру машины

2.      fioinomerpomarki - формирует вывод Ф.И.О. и номер машины по марке автомобиля

3.      kolmarok - формирует вывод количества автомобилей каждой марки

4.      vivodafamiliiinomerov - вывод Ф.И.О. и номер машины по марке автомобиля

.        alfavit - сортирует Ф.И.О. в алфавитном порядке

.        chet - считает количество автомобилей

7.      vivodakolmarok -вывод количества автомобилей каждой марки.

3.3 Описание функций

.3.1 main - главная функция

Заголовок функции:

int main ()

Значение функции:

- в случае успешного завершения;

- если входной файл не найден.

Рабочие данные:

f - указатель на;

k - номер пункта меню.

Рис.1. Блок-схема функции main()

3.3.2 Fioponomer - вывод Ф.И.О. по номеру машины

Заголовок функции:  Структура записи файла:

void Fioponomer (FILE *f)- фамилия и инициалы пациента marki - марки автомобиля

Входные данные:                                     nomer - номер автомобиля

f - ссылка на входной файл

Рис.2. Блок-схема вывода Ф.И.О. по номеру машины

3.3.3.Fioinomerpomarki - формирует вывод Ф.И.О. и номер машины по марке автомобиля

Заголовок функции:              Структура записи файла:

char fio[20]; -Ф.И.О.nomer[8]; - номерFioinomerpomarki (FILE *f)      struct alfavita *sled; - ссылка на следующий элемент

Рис.3. Блок-схема функции формирует вывод Ф.И.О. и номер машины по марке автомобиля.

3.3.4 kolmarok - формирует вывод количества автомобилей каждой марки

Структура записи файла:

Заголовок функции:                       char marka[10]; - название марки

void kolmarok (FILE *f)                                     int kol; - количество kolmarok *sled; - ссылка на следующий элемент

Рис.4. Схема функции формирует вывод количества автомобилей каждой марки.

3.3.5 vivodafamiliiinomerov - вывод Ф.И.О. и номер машины по марке автомобиля

Заголовок функции:vivodafamiliiinomerov (struct alfavita **p)

Входные данные:

**p - ссылка на начало списка.

Рис.5. Схема функции выводит количества автомобилей каждой марки.

3.3.6 alfavit -сортирует Ф.И.О. автовладельца в алфавитном порядке

Заголовок функции:alfavit (struct alfavita **p,char fio[],char nomer[])

Входные данные:

**p - ссылка на начало списка.;

char fio[] - Ф.И.О. автовладельца;

char nomer[] - номер автомобиля;

Рис.6. Схема функции сортирует Ф.И.О. в алфавитном порядке.

3.3.8 chet -считает количество автомобилей каждой марки

Заголовок функции:chet(struct kolmarok **p,char marka[])

Входные данные:

struct kolmarok **p - ссылку на новую машину;

char marka[] - марка этой машины;


3.3.9 vivodakolmarok -выводит количество автомобилей каждой марки

Заголовок функции:

void vivodakolmarok(struct kolmarok **p)

Входные данные:

struct kolmarok **p - ссылку на начало списка;

Рис.7. Схема функции вывода количество автомобилей каждой марки.

Литература


1. Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. - Казань. Изд-во Казан. гос. техн. ун-та , 2005. - 63 с.

. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - СПб: Питер, 2009г. - 461с.

. Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. - СПб: Питер, 2006 г. - 240с.

. Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во Казан. гос. техн. ун-та, 2010. - 102 с.

5. Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан. гос. техн. ун-та, 2009. - 48 с.

6. Бикмурзина А.Р. Лабораторный практикум по программированию. - Казань: Изд-во Казан. гос. техн. ун-та, 2011г.

. INTUIT.ru.

Приложение 1. Текст программы

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>izfaila

{fio[20];marki[10];nomer[8];

};fioponomer(FILE *f)

{izfaila stroka;vvodnomer[6];ind=0;("vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)");(vvodnomer);("Familii");((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL)

{.fio[19]='\0';.nomer[6]='\0';(strcmp(vvodnomer,stroka.nomer)==0)

{(stroka.fio);ind++;

}

}(ind==0)printf("Net mashini s ukazanimi vami nomerom");(ind>1)printf("V base nevernie dannie proverte basu");

}alfavita

{fio[20];nomer[8];alfavita *sled;

};vivodafamiliiinomerov(struct alfavita **p)

{alfavita *i;("\nFamiliya Nomer\n");(i=*p;i!=NULL;i=i->sled)

{>fio[19]='\0';>nomer[6]='\0';("%s",i->fio);("%s\n",i->nomer);

}

}alfavit(struct alfavita **p,char fio[],char nomer[])

{alfavita *pt,*k,*j;=malloc(sizeof(struct alfavita));(pt->fio,fio);(pt->nomer,nomer);(*p==NULL||strcmp(pt->fio,(*p)->fio)<0)

{>sled=*p;

*p=pt;

}

{=*p;(k!=NULL && strcmp(pt->fio,k->fio)>=0)

{=k;=k->sled;

}>sled=pt;pt->sled=k;

}

}fioinomerpomarki(FILE *f)

{ind=0;izfaila stroka;alfavita *p;marka[9];=NULL;("vvedite iskomuu mashinu");(marka);((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL)

{.fio[19]='\0';.marki[strlen(marka)]='\0';(strcmp(marka,stroka.marki)==0)

{(&p,stroka.fio,stroka.nomer);=1;

}

}(&p);(ind==0)printf("Net takoi mashini");

}kolmarok{marka[10];kol;kolmarok *sled;

};chet(struct kolmarok **p,char marka[])

{kolmarok *pt,*k,*j;ind=0;=malloc(sizeof(struct alfavita));(pt->marka,marka);(*p==NULL)

{>sled=*p;>kol=1;

*p=pt;

}

{=*p;(k!=NULL)

{(strcmp(k->marka,pt->marka)==0)

{k->kol++;ind=1;break;}=k->sled;

}(ind==0)

{>sled=*p;>kol=1;

*p=pt;

}

}

}vivodakolmarok(struct kolmarok **p)

{kolmarok *i;("\nMarka kolichestvo\n");(i=*p;i!=NULL;i=i->sled)

{("%s",i->marka);("%d\n",i->kol);

}

}

/*functia vivoda kolichestvo marok*/kolmarok(FILE *f)

{izfaila stroka; /*budet vviditsya stroka iz faila v tip struct farall*/kolmarok *p;=NULL;((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL) /*schitivaet kajduu slduchuu stroku i proveryaet ee na nalichie*/

{.marki[9]='\0';(&p,stroka.marki);

}(p==NULL){puts("Net mashin");}else(&p);

{*f;k;(1){=0;((f=fopen("avto.txt","r"))==NULL)

{("not file");1;

}("\n\n\n\nVvedite chislo v zavisimosti ot togo chto hotite sdelat\n\n1-uznat familiu avtovladelca s zadannim nomerom\n2-familii vladelcev i nomera avtomobilei dannoi marki\n3-kolichestvo avtomobilei kajdoi marki\n4-vixod\n");("%d",&k);();(k)

{1:     fioponomer(f);fclose(f);break;2: fioinomerpomarki(f);fclose(f);break;3: kolmarok(f);fclose(f);break;4: return 1;:printf("vi veli ne korrektnoe chislo poprobuite eche");fclose(f);

}

}

}

Приложение 2. Пример входного файла AVTO.txt

Antonov I.I. BMW AA001AR.R. HONDA DF005LH.H. HONDA ER067JG.H. MERSEDES KL666PE.T. BMW RT567UK.Q. HAMMER GH567LF.P. FERRARI FP987PO.V. LADA AS568BB.B. BMW RR489KN.L. HONDA LK794GG.J. BMW AA001A

Приложение 3. Результаты тестирования программы

Тест 1. Входного файла нет в текущем каталоге.

Результат:

Not file

В следующих тестах используется файл из приложения 2.

Тест 2 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)A

Antonov I.I.G.J.

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 3 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)G

Belobrisov N.L.

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 4 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

При введении не существующего номера

Familiya

Net mashini s ukazanimi vami nomerom

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 5 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)Nomer

Akchetnifov B.B.                   RR489KI.I.                   AA001AG.J.                AA001AE.T.                RT567U

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-vixod

Тест 6 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

При введении не существующей марки

Familiya Nomer

Net takoi mashini

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 7 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

                            Kolichestvo                            4                 3                 1                 1                   1                 1chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 9 .

======================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

Ввод не верных данныхveli ne korrektnoe chislo poprobuite echechislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

Тест 10 .

=====================================================chislo v zavisimosti ot togo chto hotite sdelat

-uznat familiu avtovladelca s zadannim nomerom

-familii vladelcev i nomera avtomobilei dannoi marki

-kolichestvo avtomobilei kajdoi marki

-vixod

-----------------------------------------------------------------------------------

Похожие работы на - Создание базы данных владельцев автомобилей

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!