Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

База данных - файл Курсач.doc


База данных
скачать (137.4 kb.)

Доступные файлы (9):

12.BAK
12.CPP
12.EXE
12.OBJ
BASE
FUNC.BAK
FUNC.CPP
MAIN.BAK
Курсач.doc262kb.15.06.2009 14:33скачать

содержание
Загрузка...

Курсач.doc

Реклама MarketGid:
Загрузка...
Уфимский государственный авиационный технический университет

Кафедра технической кибернетики факультет информатики и робототехники


Задание
на курсовое проектирование по информатике, программированию и основам алгоритмизации

на тему «Экскурсии»

выдано 30 марта 2009г. студенту первого курса

группы УТС-117

Шумкову Алексею Владимировичу

Руководитель проекта: Доцент кафедры ТК

Ганеев Артур Рифович.


Уфа 2009
Постановка задачи: разработать программу на языке Си для обработки данных типа структура. Обработка данных должна включать следующие функции:

  1. создание новой базы данных (с возможностью задания имени файла)

  2. просмотр существующей базы данных (чтение данных осуществить из файла);

  3. редактирование базы данных (с сохранением изменений в файле);

  4. дополнение базы данных новыми записями (с сохранением в файле);

  5. удаление записей из базы данных (с сохранением в файле);

  6. поиск в базе данных (по одному и двум поисковым признакам) с выводом на экран найденных записей или сообщения о неуспешном поиске;

  7. сортировка данных по заданному полю (с сохранением в файле).



Вариант № 19 «Экскурсии»

Наименование

Страна

Стоимость

Продолжительность

Транспорт
















Введение:

Целью работы является разработка программы на языке Си для обработки данных (требования к программе изложены в аннотации), моя программа должна корректно обрабатывать данные представление виде следующей таблицы:

Наименование

Страна

Стоимость

Продолжительность

Транспорт


Разработанная программа позволяет выполнять следующие задачи:

  1. 1. Просмотр существующей базы данных

  2. 2. Создание новой базы данных

  3. 3. Редактирование базы данных (добавление, исправление и удаление записей)

  4. 4. Поиск в базе данных по одному или всем полям

  5. 5. Сортировка базы данных по определённому полю

1. Описание основных переменных и функций:

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

В программе используются следующие основные функции (табл. 1)

Таблица №1

Название функции

Параметры

Назначение

void main

()

основная функция программы

void create

()

создание файла новой базы данных

void load

(char *base)

загрузка данных из файла в массив структур, base – имя файла базы данных

void save

(char *base)

запись содержания структур в файл, base – имя файла базы данных

void add

(char *base)

добавление записи в массив структур, base – имя файла базы данных

void view

(char *base)

просмотр содержания массива, base – имя файла базы данных

void edit

(char *base)

правка записи, base – имя файла базы данных

void delet

(char *base)

удаление записи, base – имя файла базы данных

void find

(char *base)

поиск записи (кол-во условий от 1 до 5) , base – имя файла базы данных

void sort

(char *base)

сортировка базы данных, base – имя файла базы данных

void sort1

()

сортировка по названию

void sort2

()

сортировка по стране

void sort3

()

сортировка по стоимости

void sort4

()

сортировка по продолжительности

void sort5

()

сортировка по виду транспорта

void replace

(int x)

меняет местами значения в массиве, элемент[x] меняется значением с элементом[x+1]

1.2 Описание переменных

В программе используются следующие основные переменные (табл. 2)

Таблица №2

Название переменной

Тип

Назначение

Кол-во символов

ch

char

хранит текущий пункт меню

1

err

int

код ошибки

1

*file

char

имя файла

1

size

int

кол-во записей в БД

1

*f

FILE

указатель на файл

1

*name

char

имя файла

1

list[]

kyrs

массив, в котором хранится БД

300

fin[]

kyrs

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

300

tmp

kyrs

временное хранилище записи БД

1

j

int

счётчик цикла или элемент массива

1

i

int

счётчик цикла или элемент массива

1

2. Блок-схемы:

2.1 Общий принцип работы программы:


2.2 Блок-схемы основных функции программы:
Рис 2. – Блок-схема главной функции – main():



Рис 3. – Функция create(), создает файл базы данных

Рис 4. – Функции open(), открывает файл базы данных


Рис 5. – Функции load(), загружает данные из файла в базу данных



Рис 6. – Функции save(), сохраняет изменения в файле базы данных



Рис 7. – Функции add(), добавляет запись в базу данных


Рис 8. – Функции view(), осуществляет просмотр базы данных



Рис 9. – Функции edit(), изменяет содержимое записи базы данных


Рис 10. – Функции delet(), удаляет запись из базы данных


Рис 11. – Функции find(), поиск записи с базе данных



Рис 12. – Функции sort(), сортировка быза данных


Рис 13. – Функции sort1()…sort5()1,осуществляют сортировку базы данных


Рис 14. – Функции replace(int x), меняет местами значения элементов массива


Листинг программы:

//12.cpp

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream.h>

#include <fstream.h>

#include <iomanip.h>

#include <io.h>

#include <dos.h>

#include "FUNC.cpp"

char ch, *file;

int err=0, size=0;


extern char *file;
void create();

void main()

{

clrscr();

cout<<"Viberite deistvie:"<<endl;

cout<<"1. Otkrit' bazu"<<endl;

cout<<"2. Sozdat' bazu"<<endl;

cout<<"3. Vihod"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3'));

if (ch=='3') exit(0);

if (ch=='2') create();

if (ch=='1') {

while (err==0){

cout<<"Please enter name file: "<<endl;

char *name;

FILE *f;

cin>>name;

if ((f=fopen(name,"r"))==NULL){

cout<<"File not found!"<<endl;

}

else{

err=1;

file=new char(strlen(name));

strcpy(file,name);

fclose(f);

open(file);

}

}

}

delete file;

}
//FUNC.cpp
extern char ch;

extern int size;

int fs=0;

/*const int tab=1;

const int zag=4;

const int tex=7;*/

struct EXCURSION {

char na[30],country[30],tr[30];

int cost,du,id;

} list[300],tmp, fin[300];

void load(char *base);

void save(char *base);

void add(char *base);

void view(char *base);

void edit(char *base);

void delet(char *base);

void find(char *base);

void sort(char *base);

void sort1();

void sort2();

void sort3();

void sort4();

void sort5();

void replace(int);
void open(char *base){

load(base);

clrscr();

cout<<"Vibirite deistvie:"<<endl;

cout<<"1. Prosmotr"<<endl;

cout<<"2. Pravka bazi"<<endl;

cout<<"3. Dobavlenie "<<endl;

cout<<"4. Udalenie zapisi"<<endl;

cout<<"5. Poisk "<<endl;

cout<<"6. Sortirovka"<<endl;

cout<<"7. Vihod"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5')&&(ch!='6')&&(ch!='7'));

switch (ch){

case '1': view(base);break;

case '2': edit(base);break;

case '3': add(base);break;

case '4': delet(base);break;

case '5': find(base);break;

case '6': sort(base);break;

case '7': exit(0); break;

default: exit(0);

}}
void sort(char *base){

clrscr();

cout<<"Please select field:\r\n1.Nazvanie 2.Strana 3.Cena 4.Prodolzhitelnost' 5.Transport\n6.Back to menu"<<endl;

do ch=getch();

while((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5')&&(ch!='6'));

switch (ch){

case '1': sort1();break;

case '2': sort2();break;

case '3': sort3();break;

case '4': sort4();break;

case '5': sort5();break;

case '6': open(base);break;

default: exit(0);}

save(base);

cout<<"\r\nSorting...OK! View base";

getch();

open(base);}
void sort1(){

int i,j;

for (i=0; i<size; i++)

for (j=0; j<size; j++)

if (strcmp(list[j].na,list[j+1].na)>0) replace(j);

}
void sort2(){

int i,j;

for (i=0; i<size; i++)

for (j=0; j<size; j++)

if (strcmp(list[j].country,list[j+1].country)>0) replace(j);

}
void sort3(){

int i,j;

for (i=0; i<size; i++)

for (j=0; j<size; j++)

if (list[j].cost<list[j+1].cost) replace(j);}
void sort4(){

int i,j;

for (i=0; i<size; i++)

for (j=0; j<size; j++)

if (list[j].du<list[j+1].du) replace(j);}
void sort5(){

int i,j;

for (i=0; i<size; i++)

for (j=0; j<size; j++)

if (strcmp(list[j].tr,list[j+1].tr)>0) replace(j);}
void replace(int x){

strcpy(tmp.na,list[x].na);

strcpy(tmp.country,list[x].country);

tmp.cost=list[x].cost;

tmp.du=list[x].du;

strcpy(tmp.tr,list[x].tr);//1

strcpy(list[x].na,list[x+1].na);

strcpy(list[x].country,list[x+1].country);

list[x].cost=list[x+1].cost;

list[x].du=list[x+1].du;

strcpy(list[x].tr,list[x+1].tr);//2

strcpy(list[x+1].na,tmp.na);

strcpy(list[x+1].country,tmp.country);

list[x+1].cost=tmp.cost;

list[x+1].du=tmp.du;

strcpy(list[x+1].tr,tmp.tr);//3

strcpy(tmp.na, "");

strcpy(tmp.country, "");

tmp.cost=0;

tmp.du=0;

strcpy(tmp.tr, "");

}
void find(char *base){

clrscr();

cout<<"Please enter find record:\r\n";

cout<<"Nazvanie: "<<endl; cin>>tmp.na;

cout<<"Strana: "<<endl; cin>>tmp.country;

cout<<"Cena "<<endl; cin>>tmp.cost;

cout<<"Prodolzhitelnost: "<<endl; cin>>tmp.du;

cout<<"Transport: "<<endl; cin>>tmp.tr;

char *css;

int t=0;

for (;t<=strlen(tmp.na);t++){

css=strchr (tmp.na,' '); if (css) *(css)='_';}

int j=0,i=0;

for (;j<=size;j++)

if ((strcmp(tmp.na,list[j].na)==0)||(strcmp(tmp.country,list[j].country)==0)||(tmp.cost==list[j].cost)||(tmp.du==list[j].du)||(strcmp(tmp.tr,list[j].tr)==0)){

strcpy(fin[i].na,list[j].na);

strcpy(fin[i].country,list[j].country);

fin[i].cost=list[j].cost;

fin[i].du=list[j].du;

strcpy(fin[i].tr,list[j].tr);

fin[i].id=list[j].id;i++;

}

fs=--i;

strcpy(tmp.na, "");

strcpy(tmp.country, "");

tmp.cost=0;

tmp.du=0;

strcpy(tmp.tr, "");

getch();

int z,l,p=0;clrscr();
cout<<" ID ";

cout<<" Nazvanie ";

cout<<" Strana ";

cout<<" Cena ";

cout<<" Prodolzhtelnost' ";

cout<<" Transport ";

cout<<endl;

for(z=0; z<=fs; z++){

cout<<fin[z].id<<" ";

cout<<fin[z].na<<" ";

cout<<fin[z].country<<" ";

cout<<fin[z].cost<<" ";

cout<<fin[z].du<<" ";

cout<<fin[z].tr<<" ";

cout<<endl;

p++;

if (p==10){

p=0;getch();}}

getch();open(base);}
void delet (char *base){

clrscr();

int i,j;

cout<<"ID: ";

cin>>i;

--i;

if (i==size) --size;

else{

for (j=i;j<size;j++){

strcpy(list[j].na,list[j+1].na);

strcpy(list[j].country,list[j+1].country);

list[j].cost=list[j+1].cost;

list[j].du=list[j+1].du;

strcpy(list[j].tr,list[j+1].tr);

}

--size;}

cout<<"\r\nDelete record"<<i+1<<"OK!\r\n";

getch();

save(base);

open(base);}
void edit(char *base){

clrscr();

int i;

cout<<"ID: "; cin>>i; --i;

cout<<"\r\nOLD:\r\n";

cout<<"Nazvanie : \n"<<list[i].na;

cout<<"Strana : \n"<<list[i].country;

cout<<"Cena : \n"<<list[i].cost;

cout<<"Prodolzhitelnost' : \n"<<list[i].du;

cout<<"Transport\n"<<list[i].tr;

cout<<"\r\nNEW:\r\n";

cout<<"Nazvanie: "; cin>>tmp.na;

cout<<"Strana: "; cin>>tmp.country;

cout<<"Cena: "; cin>>tmp.cost;

cout<<"Prodolzhitelnost': "; cin>>tmp.du;

cout<<"Transport: "; cin>>tmp.tr;

char *css;

int t=0;

for (;t<=strlen(tmp.na);t++){

css=strchr (tmp.na,' '); if (css) *(css)='_';}

strcpy(list[i].na,tmp.na);

strcpy(list[i].country,tmp.country);

list[i].cost=tmp.cost;

list[i].du=tmp.du;

strcpy(list[i].tr,tmp.tr);

strcpy(tmp.na, "");

strcpy(tmp.country, "");

tmp.cost=0;

tmp.du=0;

strcpy(tmp.tr,"");

save(base);

getch();

open(base);}
void view(char *base){

int z,l,p=0;

clrscr();
cout<<" ID: ";

cout<<" Nazvanie: ";

cout<<" Strana: ";

cout<<" Cena: ";

cout<<" Prodolzhitelnost': ";

cout<<" Transport: ";

cout<<endl;

for(z=0; z<=size; z++){

cout<<list[z].id<<" ";

cout<<list[z].na<<" ";

cout<<list[z].country<<" ";

cout<<list[z].cost<<" ";

cout<<list[z].du<<" ";

cout<<list[z].tr<<" ";

cout<<endl;

p++;

if (p==10){

p=0;getch();}}

getch();

open(base);

}
void add(char *base){

clrscr();

FILE *f=fopen(base,"a");

cout<<"Nazvanie: "; cin>>tmp.na;

cout<<"Strana: "; cin>>tmp.country;

cout<<"Cena: "; cin>>tmp.cost;

cout<<"Prodolzhtelnost': "; cin>>tmp.du;

cout<<"Transport: "; cin>>tmp.tr;

char *css;

int t=0;

for (;t<=strlen(tmp.na);t++){

css=strchr (tmp.na,' '); if (css) *(css)='_';}

size++;

strcpy(list[size].na,tmp.na);

strcpy(list[size].country,tmp.country);

list[size].cost=tmp.cost;

list[size].du=tmp.du;

strcpy(list[size].tr,tmp.tr);

strcpy(tmp.na, "");

strcpy(tmp.country, "");

tmp.cost=0;

tmp.du=0;

strcpy(tmp.tr, "");

fclose(f);

save(base);

open(base);

}
void save(char *base){

int j=0;

FILE *f=fopen(base,"w");

fprintf(f,"%s %s %u %u %s", list[j].na, list[j].country, list[j].cost, list[j].du, list[j].tr);

for (j=1;j<=size;j++)

fprintf(f,"\n%s %s %u %u %s", list[j].na, list[j].country, list[j].cost, list[j].du, list[j].tr);

fclose(f);

}
void load(char *base){

int j=0;

FILE *f=fopen(base,"r");

while(!feof(f)){

fscanf(f,"%s %s %u %u %s", &tmp.na , &tmp.country, &tmp.cost, &tmp.du, &tmp.tr);

if (strcmp(tmp.na,"")!=0){

strcpy(list[j].na,tmp.na);

strcpy(list[j].country,tmp.country);

list[j].cost=tmp.cost;

list[j].du=tmp.du;

strcpy(list[j].tr,tmp.tr);

list[j].id=j+1;

j++;}

strcpy(tmp.na, "");

strcpy(tmp.country, "");

tmp.cost=0;

tmp.du=0;

strcpy(tmp.tr, "");}

size=--j;

fclose(f);}
Тестирование программы:
Рис.1 - Главное меню



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


^ Рис.2 - Меню выбора действий


На рисунке 2 представлено меню программы для работы с БД, позволяющее открытие, редактирование, поиск и сортировку базы данных


Рис.3 - Просмотр базы


Рис.4 – Изменение записи в БД.


Рис. 5 – Результаты поиска




На рисунке 5 представлен результат поиска в БД


Рис.6 – Сортировка




На рисунке 6 представлен процесс сортировки БД


Заключение:

В ходе выполнения курсовой работы разработана программа на языке Си для обработки данных типа структура. Обработка данных включает:

  1. - создания новой БД

  2. - просмотр существующей БД

  3. - редактирование БД

  4. - дополнение БД

  5. - удаление записей из БД

  6. - сортировка БД по определённому полю

  7. - поиск записи по одному или нескольким критериям

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

Разработанная программа позволяет повысить эффективность обработки данных и сократить время на поиск необходимых записей.


Скачать файл (137.4 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru