Скачиваний:
97
Добавлен:
02.05.2014
Размер:
601.72 Кб
Скачать

create()

Ввод name

f=fopen(name,"w")

да

f=NULL

нет

 

 

file=new char(strlen(name)); strcpy(file,name);fclose(f);open(file);

return 0

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

open(char *base)

load(base)

Ввод ch

ch=’7’

ch

ch=’1’

 

 

view(base)

 

 

 

ch=’2’ edit(base)

ch=’3’ add(base)

ch=’4’ delet(base)

ch=’5’ find(base)

ch=’6’ sort(base)

return 0

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

11

load(char *base)

f=fopen(name,"r")

нет !feof(f)

size=--j; fclose(f);да

return 0

да

fscanf(f,"%s %f %u %u %f", &tmp.na, ,&tmp.pl, &tmp.et, &tmp.ye, &tmp.ze);

да strcmp(tmp.na,"")<>0 нет

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

list[j].pl=tmp.pl;list[j].et=tmp.et;

list[j].ye=tmp.ye;list[j].ze=tmp.ze;

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

strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;

tmp.ye=0;tmp.ze=0;

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

save(char *base)

f=fopen(name,"w") j=0

fprintf(f,"%s %1.2f %u %u %1.2f", list[j].na, list[j].pl, list[j].et, list[j].ye, list[j].ze) j=1

нет

j<=size

да

 

 

fprintf(f,"%s %1.2f %u %u %1.2f", list[j].na, list[j].pl, list[j].et, list[j].ye, list[j].ze)

fclose(f);

да

 

 

 

 

j=j+1

да

 

 

 

 

 

 

 

 

return 0

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

12

add(char *base)

f=fopen(name,"a")

printf("Naimenovanie: ");cin.getline(tmp.na,30); printf("Ploshad (m^2): ");scanf("%f",&tmp.pl); printf("Etagnost: ");scanf("%u",&tmp.et); printf("God soorugeniya: ");scanf("%u",&tmp.ye); printf("Zena (mln. rub.): ");scanf("%f",&tmp.ze); char *css;int t=0;

нет t<=strlen(tmp.na) да

css=strchr (tmp.na,' ');

size++;strcpy(list[size].na,tmp.na); list[size].pl=tmp.pl;list[size].et=tmp.et; *(css)='_' t=t+1да list[size].ye=tmp.ye;list[size].ze=tmp.ze;

strcpy(tmp.na, "");tmp.pl=0;tmp.et=0; tmp.ye=0;tmp.ze=0;fclose(f);

save(base); open(base);

да

return 0

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

view(char *base)

 

z=0

 

нет

z<=size

да

 

 

cprintf("%3u",list[z].id) cprintf("%20s", list[z].na) cprintf("%15.2f", list[z].pl) cprintf("%4u", list[z].et) cprintf("%15u", list[z].ye) cprintf("%15.2f", list[z].ze)

z=z+1

open(base);

return 0

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

13

edit(char *base)

Ввод i

i=i-1

scanf("%s", &list[i].na) scanf("%f", &list[i].pl) scanf("%u", &list[i].et) scanf("%u", &list[i].ye) scanf("%f", &list[i].ze) save(base)

open(base);

return 0

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

delet(char *base)

Ввод i

да

i=size

нет

 

 

 

 

 

size=size-1

 

j=i

 

 

 

j<size

нет

 

да

size=size-1

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

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

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

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

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

j=j+1

save(base)

open(base)

return 0

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

14

find(char *base)

printf("Naimenovanie:

");cin.getline(tmp.na,30);

 

 

 

 

 

 

 

 

printf("Ploshad (m^2):

");scanf("%f",&tmp.pl);

 

 

 

 

 

 

 

 

printf("Etagnost:

");scanf("%u",&tmp.et);

 

 

 

 

 

 

 

 

printf("God soorugeniya: ");scanf("%u",&tmp.ye);

 

 

 

 

 

 

 

 

printf("Zena (mln. rub.): ");scanf("%f",&tmp.ze);

 

 

 

 

 

 

 

 

char *css;int t=0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

t<=strlen(tmp.na)

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

css=strchr (tmp.na,' ');

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=0 i=0

да

 

 

 

 

 

 

 

 

 

 

 

 

*(css)='_' t=t+1да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j<size

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fs=i-1

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tmp.na=list[j].na или

 

 

 

tmp.pl=0;tmp.et=0;tmp.ye=0;

 

 

нет

 

 

tmp.ze=0;getch();

 

tmp.pl=list[j].pl или tmp.et=list[j].et

 

 

 

 

 

 

 

 

 

 

или tmp.ye=list[j].ye или

 

 

 

 

 

 

 

 

 

 

 

 

tmp.ze=list[j].ze)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z=0

да

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

fin[i].pl=list[j].pl;fin[i].et=list[j].et; z<=fs нет fin[i].ye=list[j].ye;fin[i].ze=list[j].ze; да

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

 

 

 

 

 

 

 

 

 

 

cprintf("%3u",fin[z].id)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cprintf("%20s", fin[z].na)

 

 

 

j=j+1

да

 

 

 

ccprintf("%15.2f", fin[z].pl)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cprintf("%4u", fin[z].et)

 

 

 

 

 

 

 

 

 

 

cprintf("%15u", fin[z].ye)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cprintf("%15.2f", fin[z].ze)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getch()

да

 

 

 

 

 

 

 

 

 

 

open(base)

 

 

 

 

 

 

z=z+1

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выход

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

15

sort(char *base)

Ввод ch

ch

ch=’1’

sort1()

 

save(base)

ch=’2’

sort2()

 

 

open(base)

ch=’3’

sort3()

 

Выход

ch=’4’

sort4()

 

 

ch=’5’

sort5()

 

ch=’6’

open(base)

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

16

sort1()

i=0 j=0

i<size Нет

Да

Выход

j=0

i=i+1

Нет j<size

Да

list[j].na<list[j+1].na Нет Да

replace(j)

j=j+1

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

replace(int x)

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

tmp.pl=list[x].pl;tmp.et=list[x].et;

tmp.ye=list[x].ye;tmp.ze=list[x].ze;

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

list[x].pl=list[x+1].pl;list[x].et=list[x+1].et;

list[x].ye=list[x+1].ye;list[x].ze=list[x+1].ze;

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

list[x+1].pl=tmp.pl;list[x+1].et=tmp.et;

list[x+1].ye=tmp.ye;list[x+1].ze=tmp.ze; strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;tmp.ye=0;tmp.ze=0;

Выход

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

1 Функции sort1(), sort2(),sort3(), sort4(),sort5() аналогичны с той лишь разницей, что они сравнивают разные поля структуры kyrs

17

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

Главный файл – “kyrs.cpp”

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<stdlib.h>

#include<string.h>

#include<iostream.h>

#include"kyrs_ope.cpp" #include"kyrs_cre.cpp"

//Constations ::begin const int GRAPH_REW=3; // ::end

//Global variable ::begin char ch,*file;

int err=0, size=0; // ::end

//Fuction for graphics ::begin void intro();

void intro_table();

void intro_graph(int,int); // ::end

//BEGIN PROGRAMM e2e4; void main(){

clrscr();intro();closegraph();clrscr();

textmode(3); _setcursortype(_NOCURSOR);textcolor(14); cprintf("\r\n");cprintf("\r\n");cprintf("\r\n");cprintf("\r\n");cprintf("\r\n"); for (int i=0;i<30;i++)cprintf(" ");cprintf("%c",char(201));

for (i=0;i<16;i++)cprintf("%c",char(205));cprintf("%c\r\n",char(187));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c Select action: %c\r\n",char(186),char(186)); for (i=0;i<30;i++)cprintf(" ");cprintf("%c1. Open table %c\r\n",char(186),char(186)); for (i=0;i<30;i++)cprintf(" ");cprintf("%c2. Create table %c\r\n",char(186),char(186)); for (i=0;i<30;i++)cprintf(" ");cprintf("%c3. Exit %c\r\n",char(186),char(186)); for (i=0;i<30;i++)cprintf(" ");cprintf("%c",char(200));

for (i=0;i<16;i++)cprintf("%c",char(205));cprintf("%c\r\n",char(188)); do ch=getch();while((ch!='1')&&(ch!='2')&&(ch!='3'));

if (ch=='3') exit(0); if (ch=='2') create(); if (ch=='1') { textcolor(2);

while (err==0){

for (i=0;i<20;i++)cprintf(" ");cprintf("Please enter name file: "); char *name;

FILE *f; scanf("%s",name);

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

for (i=0;i<20;i++)cprintf(" ");cprintf("File not found!\r\n"); textcolor(2);}else{

err=1;

file=new char(strlen(name)); strcpy(file,name);

fclose(f);

18

open(file);

}

}

}

delete file;

}

//END PROGRAMM

//Graphics module //BEGIN

void intro(){

int gd=DETECT, gm, t=0,c=0,f=0,i;

initgraph(&gd, &gm, "");setcolor(2);setwritemode(0); intro_table();

while (c==0){ intro_graph(t,300);setcolor(0);intro_graph(t,300);setcolor(2); t++;if (t==680) {t=0;f++;}; if (f==GRAPH_REW) c=1;} intro_graph(200,300);

for(i=0; i<20; i++)printf("\n"); printf("Press any key...");getch();} void intro_table(){

printf("%c",char(201));for(int i=0;i<78;i++)printf("%c",char(205)); printf("%c%c",char(187),char(186));for(i=0;i<78;i++)printf(" "); printf("%c%c",char(186),char(186));for(i=0;i<31;i++)printf(" "); printf("Data Base v1.0");for(i=0;i<31;i++)printf(" "); printf("%c%c",char(186),char(186));for(i=0;i<78;i++)printf(" "); printf("%c%c",char(186),char(186));for(i=0;i<78;i++)printf(" "); printf("%c%c",char(186),char(186));for(i=0;i<29;i++)printf(" "); printf("Stroeniya aeroporta");for(i=0;i<29;i++)printf(" "); printf("%c%c",char(186),char(186));for(i=0;i<78;i++)printf(" "); printf("%c%c",char(186),char(200));for(i=0;i<78;i++)printf("%c",char(205)); printf("%c",char(188));}

void intro_graph(int a, int b){ moveto(a+25,b);

lineto(a+39,b); moveto(a+200, b); linerel(-95,0); moveto(a+200,b); arc(getx(),gety()-15,-90,90,15);moveto(getx(), gety()-30); lineto(a,b-30); linerel(-20,-50); linerel(40,0);

lineto(a+50,b-30); moveto(a+50,b-15); linerel(-40,0); linerel(-25,10); linerel(30,0); lineto(a+50,b-15); line(a,b-30,a+5,b-14); line(a+9,b-5,a+10,b); moveto(a+10,b); lineto(a+25,b);

line(a+150,b-15,a+75,b-15); moveto(a+75, b-15); linerel(-70,30); linerel(50,0); lineto(a+150,b-15); arc(a+175,b-30,0,90,15); line(a+175,b-45,a+165,b-45); arc(a+165,b-30,90,180,15);} //END

Файл – “kyrs_cre.cpp”

extern char *file; void create(){ textcolor(2);

cprintf("Please enter name new file: "); char *name;

cscanf("%s",name); cprintf("\r\nCreating new file...\r\n"); FILE *f;

if ((f=fopen(name,"w"))==NULL){ textcolor(4);

cprintf("Error!!!");

getch();

exit(1);

19

}

file=new char(strlen(name)); strcpy(file,name);

fclose(f);

open(file);

}

Файл – “kyrs_ope.cpp” extern char ch;

extern int size; int fs=0;

const int tab=1; const int zag=4; const int tex=7;

struct kyrs { char na[30]; float pl, ze; int et, ye, id;

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

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();

textcolor(9);

cprintf("\r\n");cprintf("\r\n");cprintf("\r\n");cprintf("\r\n");cprintf("\r\n"); for (int i=0;i<30;i++)cprintf(" ");cprintf("%c",char(201));

for (i=0;i<16;i++)cprintf("%c",char(205));cprintf("%c\r\n",char(187));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c Select action: %c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c1. View table

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c2. Edit table

 

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c3. Add record

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c4. Delete

 

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c5. Find

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c6. Sort

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c7. Exit

%c\r\n",char(186),char(186));

for (i=0;i<30;i++)cprintf(" ");cprintf("%c",char(200));

for (i=0;i<16;i++)cprintf("%c",char(205));cprintf("%c\r\n",char(188));

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

20

Соседние файлы в папке Курсовая работа - База данных Сооружения аэропорта