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

Запуск программы из среды Turbo C 2.0. Число строк в файле. Формирование алфавитного порядка. Метод линейного поиска. Функциональная структура программы. Структура записи файла. Последовательный просмотр элементов таблицы. Информация о входном файле.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.03.2013
Размер файла 688,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

СОДЕРЖАНИЕ

1. ЗАДАНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.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 Выходные данные

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

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

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

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

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

Hisameev F.P.

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

Net 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

3. V base nevernie dannie proverte basu

4. vvedite iskomuu mashinu

5. Net takoi mashini

6. Net mashin

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

int main ()

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

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

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

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

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

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

void Fioponomer (FILE *f)

fio - фамилия и инициалы пациента marki - марки автомобиля

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

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

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

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

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

char fio[20]; -Ф.И.О.

char nomer[8]; - номер

void Fioinomerpomarki (FILE *f) struct alfavita *sled; - ссылка на следующий элемент

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

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

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

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

void kolmarok (FILE *f) int kol; - количество

struct kolmarok *sled; - ссылка на следующий элемент

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

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

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

void vivodafamiliiinomerov (struct alfavita **p)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void vivodakolmarok(struct kolmarok **p)

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

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

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

Литература

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

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

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

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

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

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

7. INTUIT.ru.

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

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

struct izfaila

{

char fio[20];

char marki[10];

char nomer[8];

};

void fioponomer(FILE *f)

{

struct izfaila stroka;

char vvodnomer[6];

int ind=0;

puts("vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)");

gets(vvodnomer);

puts("Familii");

while((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL)

{

stroka.fio[19]='\0';

stroka.nomer[6]='\0';

if(strcmp(vvodnomer,stroka.nomer)==0)

{

puts(stroka.fio);ind++;

}

}

if(ind==0)printf("Net mashini s ukazanimi vami nomerom");

if(ind>1)printf("V base nevernie dannie proverte basu");

}

struct alfavita

{

char fio[20];

char nomer[8];

struct alfavita *sled;

};

void vivodafamiliiinomerov(struct alfavita **p)

{

struct alfavita *i;

printf("\nFamiliya Nomer\n");

for(i=*p;i!=NULL;i=i->sled)

{

i->fio[19]='\0';

i->nomer[6]='\0';

printf("%s",i->fio);

printf("%s\n",i->nomer);

}

}

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

{

struct alfavita *pt,*k,*j;

pt=malloc(sizeof(struct alfavita));

strcpy(pt->fio,fio);

strcpy(pt->nomer,nomer);

if(*p==NULL||strcmp(pt->fio,(*p)->fio)<0)

{

pt->sled=*p;

*p=pt;

}

else

{

k=*p;

while(k!=NULL && strcmp(pt->fio,k->fio)>=0)

{

j=k;

k=k->sled;

}

j->sled=pt;pt->sled=k;

}

}

void fioinomerpomarki(FILE *f)

{

int ind=0;

struct izfaila stroka;

struct alfavita *p;

char marka[9];

p=NULL;

puts("vvedite iskomuu mashinu");

gets(marka);

while((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL)

{

stroka.fio[19]='\0';

stroka.marki[strlen(marka)]='\0';

if(strcmp(marka,stroka.marki)==0)

{

alfavit(&p,stroka.fio,stroka.nomer);

ind=1;

}

}

vivodafamiliiinomerov(&p);

if(ind==0)printf("Net takoi mashini");

}

struct kolmarok{

char marka[10];

int kol;

struct kolmarok *sled;

};

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

{

struct kolmarok *pt,*k,*j;

int ind=0;

pt=malloc(sizeof(struct alfavita));

strcpy(pt->marka,marka);

if(*p==NULL)

{

pt->sled=*p;

pt->kol=1;

*p=pt;

}

else

{

k=*p;

while(k!=NULL)

{

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

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

k=k->sled;

}

if(ind==0)

{

pt->sled=*p;

pt->kol=1;

*p=pt;

}

}

}

void vivodakolmarok(struct kolmarok **p)

{

struct kolmarok *i;

printf("\nMarka kolichestvo\n");

for(i=*p;i!=NULL;i=i->sled)

{

printf("%s",i->marka);

printf("%d\n",i->kol);

}

}

/*functia vivoda kolichestvo marok*/

void kolmarok(FILE *f)

{

struct izfaila stroka; /*budet vviditsya stroka iz faila v tip struct farall*/

struct kolmarok *p;

p=NULL;

while((fgets((char*)&stroka,sizeof(struct izfaila),f))!=NULL) /*schitivaet kajduu slduchuu stroku i proveryaet ee na nalichie*/

{

stroka.marki[9]='\0';

chet(&p,stroka.marki);

}

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

vivodakolmarok(&p);

}

main()

{

FILE *f;

int k;

while(1){

k=0;

if((f=fopen("avto.txt","r"))==NULL)

{

puts("not file");

return 1;

}

printf("\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");

scanf("%d",&k);

getchar();

switch (k)

{

case 1: fioponomer(f);fclose(f);break;

case 2: fioinomerpomarki(f);fclose(f);break;

case 3: kolmarok(f);fclose(f);break;

case 4: return 1;

default:printf("vi veli ne korrektnoe chislo poprobuite eche");fclose(f);

}

}

}

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

Antonov I.I. BMW AA001A

Ribkov R.R. HONDA DF005L

Firovalov H.H. HONDA ER067J

Tugrikov G.H. MERSEDES KL666P

Nikolaev E.T. BMW RT567U

Jampletov K.Q. HAMMER GH567L

Hisameev F.P. FERRARI FP987P

Pankov O.V. LADA AS568B

Akchetnifov B.B. BMW RR489K

Belobrisov N.L. HONDA LK794G

Filimonov G.J. BMW AA001A

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

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

Результат:

Not file

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

Тест 2 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

1

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

AA001A

Familiya

Antonov I.I.

Filimonov G.J.

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 3 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

1

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

LK794G

Familiya

Belobrisov N.L.

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 4 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

1

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

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

Familiya

Net mashini s ukazanimi vami nomerom

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 5 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

2

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

BMW

Familiya Nomer

Akchetnifov B.B. RR489K

Antonov I.I. AA001A

Filimonov G.J. AA001A

Nikolaev E.T. RT567U

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 6 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

2

vvedite ickomii nomer zaglavnimi bukvami(6 simvolov)

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

Familiya Nomer

Net takoi mashini

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 7 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

3

Marka Kolichestvo

BMW 4

HONDA 3

MERSEDES 1

HAMMER 1

FERRARI 1

LADA 1

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 9 .

======================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

Ввод не верных данных

vi veli ne korrektnoe chislo poprobuite eche

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

Тест 10 .

=====================================================

Vvedite chislo v zavisimosti ot togo chto hotite sdelat

1-uznat familiu avtovladelca s zadannim nomerom

2-familii vladelcev i nomera avtomobilei dannoi marki

3-kolichestvo avtomobilei kajdoi marki

4-vixod

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

4

Размещено на Allbest.ru


Подобные документы

  • Входные данные программы в файле "School.txt". Метод решения задачи и функциональная структура программы. Main – главная функция, формирование таблицы данных из файла. Блок-схема функции вывода фамилии победителей, занявших первые три призовых места.

    курсовая работа [68,4 K], добавлен 17.06.2012

  • Разработка программы для работы с множеством данных, перечень и работа ее модулей. Проверка работы программы. Реализация поиска элемента в файле по его номеру и добавление элементов в конец уже созданного НД. Возможности и особенности применения программы

    курсовая работа [3,5 M], добавлен 22.06.2012

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Классификация баз данных. Создание списковой структуры, просмотр, удаление, сохранение в типизированном файле, восстановление из типизированного файла, поиск нужного элемента, создание отчета. Ввод, отображение и редактирование текстового материала.

    курсовая работа [2,8 M], добавлен 22.12.2016

  • Создание программы для обработки структуры данных. Возможность ввода и записи данных на персональном компьютере. Прикладное программирование на языке Turbo Pascal. Свободное редактирование записанных данных с помощью программы, написанной на Turbo Pascal.

    лабораторная работа [11,4 K], добавлен 13.05.2011

  • Создание работоспособного приложения, обеспечивающего сокрытие информации произвольного размера в файле формата JPEG и доступ к уже имеющейся информации. Определение основных понятий стеганографии. Структура файла формата JPEG. Метод сокрытия данных.

    курсовая работа [57,5 K], добавлен 30.03.2009

  • Цикл с выходом по выбору определенного пункта меню. Хранение данных о предметной области в текстовом файле. Загрузка данных из текстового файла, хранение, удаление, сохранение и обработка. Создание новой базы данных. Структура программного комплекса.

    курсовая работа [1,1 M], добавлен 19.01.2016

  • Разработка тестирующей программы для проверки знаний студента по математике на языке программирования Turbo Pascal с использованием подпрограмм "Vvod" (создание файла с вопросами и ответами) и "Initialization" (запуск тестирование и инициализация файла).

    курсовая работа [137,7 K], добавлен 28.03.2010

  • Программа обработки экономической информации, осуществляющая ввод исходной информации из файла. Просмотр таблицы исходных данных и ее редактирование. Внутреннее представление данных. Хранение записей входного файла. Добавление и удаление строк из списка.

    курсовая работа [131,8 K], добавлен 28.12.2012

  • Функциональная структура системы. Формирование отчета о расходе продуктов и их стоимости в проектируемой информационной системе. Структура базы данных. Логическая модель базы данных. Триггер на удаление и изменение записи таблицы продукты, рецепты.

    курсовая работа [327,1 K], добавлен 20.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.