Программирование на C / C++ / Курсовая работа - База данных Сооружения аэропорта / Курсовая
.pdfcreate()
Ввод 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