Шустрый

Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.4.2009
Репутация: нет Всего: нет
|
| Код | #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <iostream.h> #define K 20 FILE *ust,*fname; struct strrab { char nazv[K]; char gs[K]; char ks[K]; char cena[K]; char dv[K]; char dvoz[K]; char ik[K]; char ak[K];}; //прототипы функций void Inf(void); int Zapbd(int*,int*); int Korbd(int*,int*); int Prosm(int*,int*,int p=1); int Delbd(int*,int*); int Rasbd(int*,int*,int*,int*,int*); int Poisk(int*,int*); int Dopbd(int*,int*); int Sort(int*,int*); int error(int,int); int error1(int); void Vvod(int*,int j=11); struct strrab my_rab[K],buf;
int main(void) { char pr[2],otv; int menu,*t,z=0,cena=0,dv=0,dvoz=0; textcolor(WHITE); do{ do{ clrscr(); printf("\n\t Меню Базы Данных " "\n\t Информация о базе.........1" "\n\t Заполнение базы...........2" "\n\t Корректировка данных......3" "\n\t Просмотр базы данных......4" "\n\t Удаление из базы данных...5" "\n\t Расчет базы данных........6" "\n\t Поиск данных..............7" "\n\t Добавление данных.........8" "\n\t Сортировка данных.........9" "\n\t Выход из программы.......10"); printf("\n\n Введите выбранный пункт меню:"); fflush(stdin); gets(pr); menu=atoi(pr); switch(menu) { case 1: Inf();break; case 2: Zapbd(&z,t);break; case 3: Korbd(&z,t);break; case 4: Prosm(&z,t);break; case 5: Delbd(&z,t);break; case 6: Rasbd(&z,t,&cena,&dv,&dvoz);break; case 7: Poisk(&z,t);break; case 8: Dopbd(&z,t);break; case 9: Sort(&z,t);break; case 10: goto end; default: ; } }while(menu); end: ; printf("\n Продолжить работу с базой данных(Y/N):"); fflush(stdin); otv=getch(); }while(otv=='y'||otv=='Y'||otv=='Н'||otv=='н'); return 1; }
void Inf(void) { clrscr(); puts("\n\t\t--------Информация о базе данных---------------" "\n\t\t База данных содержит информацию о работе" "\n\t\tпункта проката фильмов." "\n\t\tПозволяет вывести список имеющихся фильмов;" "\n\t\tдобавить, удалить, найти и рассчитать прибыль" "\n\t\tот проката всех имеющихся в наличии фильмов." "\n\t\t Для удобства работы база данных сопровож-" "\n\t\tдается пояснениями (если вы будете следовать" "\n\t\tим,то нестандартных ситуаций не возникнет)." "\n\t\t Элемент некоторых фраз при запросе \"Y/N\"" "\n\t\tозначает, что при нажатии \"Y\" программа " "\n\t\tрасценит ответ, как положительный; при на-" "\n\t\tжатии любой другой клавиши ответ будет отри-" "\n\t\tцательный. " "\n\t\t Удачи, вам!" "\n\t\t\t\t\t Бондаренко А.А. "\n\n\n\t\tДля выхода нажмите любую клавишу..."); getch(); }
int Zapbd(int*z,int*t) { int i; if(*z==1) { clrscr(); printf("\n\t База данных уже заполнялась."); printf("\n\t Для Работы с БД выберите пункт 4 в главном меню."); getch(); return 1; } do{ clrscr(); printf("\n\t ***** Заполнение базы данных *****"); printf("\n\tВведите кол-во фильмов(не более %d) : ",K); fflush(stdin); scanf("%d",t); if(*t<1||*t>K) { printf("\n\t Будте внимательнее!!!" "\n\t Число должно лежать в диапазоне[1..%d]." "\n\t Нажмите любую клавишу и повторите ввод:",K); getch(); } }while(*t<=0||*t>K); for(i=0;i<*t;i++) Vvod(&i); printf("Нажмите любую клавишу:"); getch(); *z=1; return 0; }
int Korbd(int*z,int*t) { char q,h3[3]; int h,h1,h2,g; if(error1(*z)==1) return 1; do{ do{ g=0; clrscr(); printf("\n Корректировка базы данных. \n"); Prosm(z,t,2); printf("\n\t Номер фильма(0-отказ):"); scanf("%d",&h1); if(h1==0) return 1; if(h1<0||h1>*t) { printf("\n\n\t Такого фильма нет!" "\n\t Нажмите любую клавишу:"); g=1; getch(); fflush(stdin); } }while(g!=0); h2=h1-1; do{ clrscr(); printf("Какие именно данные желаете корректировать?" "\n 1. Название фильма." "\n 2. Год создания." "\n 3. Киностудия." "\n 4. Цена." "\n 5. Дата выдачи." "\n 6. Дата возврата." "\n 7. Ф.И.О клиента." "\n 8. Адрес клиента." "\n 9. Прибыль с проката." "\n 10. Все." "\n 11. Отказ от корректировки." "\n\n\t Введите номер пункта:"); for(int i=0;i<3;i++) h3[i]=getchar(); h=atoi(h3); }while(h<1||h>11); switch(h) { case 11: break; default: Vvod(&h2,h);break; } if(h!=11) { clrscr(); printf("\n Продолжить корректировку (Y/N)?"); q=getch(); } else q=' '; }while(q=='y'|| q=='Y'|| q=='Н'|| q=='н'); return 1; }
int Prosm(int*z,int*t,int p) { if(error1(*z)==1) return 1; ust=stdout; char q=' '; do{ clrscr(); fprintf(ust, "\n+-------------+-----+----------+----+-------------+----------------------------+" "\n| Название | Год | Кино- |Цена| Дата | Клиента |" "\n| фильма |созд.| студия | |выдачи|возвр.| Ф.И.О. | адреc |" "\n+-------------+-----+----------+----+------+------+-------------+--------------+" ); for(int j=0;j<*t;j++) { fprintf(ust,"|%13s|%5s|%10s|%4s|%6s|%6s|%13s|%14s|", my_rab[j].nazv,my_rab[j].gs,my_rab[j].ks,my_rab[j].cena, my_rab[j].dv,my_rab[j].dvoz,my_rab[j].ik,my_rab[j].ak); fprintf(ust, "+-------------+-----+----------+----+------+------+-------------+--------------+" );} if(p==1) {printf("\n\n\t Распечатать (Y/N)?"); q=getchar();} if(q=='y'||q=='Y'||q=='н'||q=='Н') q='y'; }while(q=='y'||q=='Y'||q=='н'||q=='Н'); }
int Delbd(int*z,int*t) { int r,g; char q=' '; do{ if(error1(*z)==1) return 1; do{ g=0; clrscr(); Prosm(z,t,2); printf("\n\n Название фильма удалить(0-отказ):"); scanf("%d",&r); if(r==0) return 1; if(r<0||r>*t) { printf("\n\n\t Такого фильма нет!!!" "\n\t Нажмите любую клавишу:"); g=1; getch(); fflush(stdin); } }while(g!=0); for(int i=r;i<*t;i++) my_rab[i-1]=my_rab[i]; *t=*t-1; clrscr(); printf("\n\n\t Удаление произведено!!!" "\n\t Нажмите любую клавишу:"); if(*t==0) *z=0; getch(); clrscr(); printf("\n\n\t Продолжить удаление (Y/N)?"); q=getch(); }while(q=='y'|| q=='Y'|| q=='Н'|| q=='н'); }
//подпрограмма расчета базы данных
int Rasbd(int*z,int*t,int*cena,int*dvoz,int*dv) { if(error1(*z)==1) return 1; int i,d,k,c; int sy=5,god,mes,data,god1,mes1,data1,god2,mes2,data2,prib,DP; char q=' '; clrscr();
printf("Введите начало периода"); printf("\n год:"); cin>> god1;
printf("месяц:"); cin>> mes1;
printf(" дата:"); cin>> data1;
printf("Введите конец периода:"); printf("\n год:"); cin>>god2;
printf("месяц:"); cin>> mes2;
printf(" дата:"); cin>>data2;
do{ DP=0; for(i=0;i<*t;i++) { d=atoi(my_rab[i].dv); k=atoi(my_rab[i].dvoz); c=atoi(my_rab[i].cena);
if(data1<=*dvoz && *dvoz<=data2) { prib=abs(c*(k-d)) ; DP=DP+prib; } } printf("\n Доход пункта проката с%2d %2d %4d по %2d %2d %4d ,руб: %6d",data1,mes1,god1,data2,mes2,god2,DP); printf("\n\n\t Распечатать(Y/N)?"); q=getch(); } while(q=='y'||q=='Y'||q=='Н'||q=='н'); }
//подпрограмма поиска в базе данных
int Poisk(int*z,int*t) {char film[K]="",q=' ',q1=' '; int i; ust=stdout; do{ do{ if(error1(*z)==1) return 1; int s=0; do{ clrscr(); printf("\n\n Введите название фильма:"); fflush(stdin); gets(film); for(i=0;i<*t;i++) if(strcmp(my_rab[i].nazv,film)==0) {s=1;printf("Год выпуска: %s",my_rab[i].gs); getch();} if(s!=1) { printf("\n\n\n\t Такого фильма в базе данных нет!!!"); getch(); clrscr(); goto m; } }while(s!=1); clrscr(); for(i=0;i<*t;i++) { if(strcmp(my_rab[i].gs,film)==0) printf("\n >%s",my_rab[i].gs); } printf("\n\n\t Распечатать(Y/N)?"); q=getchar(); }while(q=='y'||q=='Y'||q=='н'||q=='Н'); clrscr(); m:printf("\n\n\n\t\t Хотите продолжить поиск (Y/N):"); q1=getch(); }while(q1=='y'||q1=='Y'||q1=='Н'||q1=='н'); }
//подпрограмма дополнения базы данных
int Dopbd(int*z,int*t) { char q=' ';
do{
if(error1(*z)==1) return 1; clrscr(); if(*t+1>K) { printf("\n База полностью заполнена!!!!!!" "\n Выберите другой пункт меню!!!!!"); getch(); return 1; } Vvod(t); *t=*t+1; clrscr(); printf("\n\n\n\n\t\t Хотите продолжить дополнение(Y/N)?"); q=getch(); }while(q=='y'|| q=='Y'|| q=='н'|| q=='Н'); }
int Sort(int*z,int*t) { char q=' ',q1[2]=""; do{ if(error1(*z)==1) return 1; do{ clrscr(); printf("\n Сортировать по:" "\n 1.Названию фильма." "\n 2.Году создания." "\n Ваш выбор:"); gets(q1); if(atoi(q1)<1||atoi(q1)>2) { printf("\n\n\n\t Такого пункта в базе данных нет!"); getch(); } }while(atoi(q1)<1||atoi(q1)>2); switch(atoi(q1)) { case 1: { for(int i=0;i<*t-1;i++) for(int j=i+1;j<*t;j++) { if(strcmp(my_rab[i].nazv,my_rab[j].nazv)>0) { buf=my_rab[i]; my_rab[i]=my_rab[j]; my_rab[j]=buf; } } };break; case 2: { for(int i=0;i<*t-1;i++) for(int j=i+1;j<*t;j++) { if(strcmp(my_rab[i].gs,my_rab[j].gs)>0) { buf=my_rab[i]; my_rab[i]=my_rab[j]; my_rab[j]=buf; } } };break; } clrscr(); printf("\n\n\n\n\t\t Хотите продолжить сортировку (Y/N)?"); q=getch(); }while(q=='y'|| q=='Y'|| q=='Н'|| q=='н'); }
void Vvod(int*i,int j) { clrscr(); fflush(stdin); printf("\n Заполнение базы данных для %d фильма",*i+1); int f,g=*i,g1=4,k,p; if(j==1||j==11) { do{ f=0; printf("\n Введите название фильма:"); gets(my_rab[*i].nazv); if(strlen(my_rab[*i].nazv)>g1+9) f=error(g1,g); }while(f!=0); } if(j==2||j==11) { do{ f=0; printf("\n Введите год создания фильма:"); gets(my_rab[*i].gs); if(strlen(my_rab[*i].gs)>g1+1) f=error(g1,g); }while(f!=0); } if(j==3||j==11) { do{ f=0; printf("\n Введите киностудию:"); gets(my_rab[*i].ks); if(strlen(my_rab[*i].ks)>g1+6) f=error(g1,g); }while(f!=0); } if(j==4||j==11) { do{ f=0; printf("\n Введите цену :"); gets(my_rab[*i].cena); if(strlen(my_rab[*i].cena)>g1) f=error(g1,g); }while(f!=0); } if(j==5||j==11) { do{ f=0; printf("\n Введите дату выдачи фильма:"); gets(my_rab[*i].dv); if(strlen(my_rab[*i].dv)>g1+2) f=error(g1,g); }while(f!=0); } if(j==6||j==11) { do{ f=0; printf("\n Введите дату возврата фильма:"); gets(my_rab[*i].dvoz); if(strlen(my_rab[*i].dvoz)>g1+2) f=error(g1,g); }while(f!=0); } if(j==7||j==11) { do{ f=0; printf("\n Введите Ф.И.О клиента:"); gets(my_rab[*i].ik); if(strlen(my_rab[*i].ik)>g1+9) f=error(g1,g); }while(f!=0); } if(j==8||j==11) { do{ f=0; printf("\n Введите адрес клиента:"); gets(my_rab[*i].ak); if(strlen(my_rab[*i].ak)>g1+10) f=error(g1,g); }while(f!=0); } }
int error(int i,int j) { printf("\n\n\n\t\t Длина вводимого значения более %d" "\n\t\t Будте внимательнее!!!",i); getch(); clrscr(); printf("\n Заполнение БД для фильма %d\n",j+1); return 1; }
int error1(int z) { if(z==0) { clrscr(); printf("\n\n\n\t\t База данных пуста." "\n\t\t Выбери пункт 2 в главном меню."); getch(); return 1; } }
|
Вот код базы данных в электронном виде нужно, чтобы можно было с ней работать с диска. То есть чтобы сохранялось в файл и с него можно было ее редактировать
|