Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

База данных на СИ Кулинарная книга

78K
28 декабря 2011 года
nastya211292
1 / / 28.12.2011
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void vRead();
void write();
int iProsmotr();
int iRedaktor();
int iGroupSel();
void addGroup();
void delGroup();
void corGroup();
void typeScore(int GroupNum);
void addStud(int GroupNum);
void delStud();
void REKitemdelGroup(int rek, int grp);

FILE *fBase; //глобально линким файл

//конфигурационные переменные
int cfg1, cfg2;

//структуры
struct Table //структура усех записей
{
char fio[30];
int group;
int xams[20];
float srball;
};

struct GroupInf //список груп
{
char title[7];
int cfg;
struct //название предметов
{
char title[15];
}exams[20];
};

int ballcomp(Table* a, Table* b);
void ballSort();
int alphcomp(Table* a, Table* b);
void alphSort();

Table tbl[100];
GroupInf gTitle[50];

//------------

void vRead() // компиляшка всех записей в структуры
{
int i, j, k, g, q;
char sbook[255];
fBase = fopen("base.txt", "r+");
fscanf(fBase, "%i %i", &cfg1, &cfg2); // читаем конфигурационную строку
g = 0;
while (g < cfg2)
{
fscanf(fBase, "%s", &sbook);
i = 0;
j = 0;
k = 0;
// забиваем группы в структуру
while (sbook[i - 1] != ';')
{
if ((sbook == ':') || (sbook == ';'))
{
q = 0;
if (k == 0)
{
while (j < i)
{
gTitle[g].title[q++] = sbook[j];
j++;
}
}//if (k == 0)
else
if (k == 1)
{
char buf[10];
while (j < i)
{
buf[q++] = sbook[j];
j++;
}
buf[q] = '\0';
gTitle[g].cfg = atoi(buf);
}//if (k == 1)
else
{
while (j < i)
{
gTitle[g].exams[k - 2].title[q++] = sbook[j];
j++;
}
}//else
j++;
k++;
}// if ((sbook == ':') || (sbook == ';'))
i++;
}
g++;
}// while (g < cfg2)
g = 0; //формируем список всех студентов
while (g < cfg1)
{
char buf[10];
fscanf(fBase, "%s %s ", &tbl[g].fio, &sbook);
i=0;
j=0;
k=0;
while (sbook[i - 1] != ';')
{
if ((sbook == ':') || (sbook == ';'))
{
q = 0;
if (k == 0)
{
while (j < i)
{
buf[q++] = sbook[j];
j++;
}
buf[q] = '\0';
tbl[g].group = atoi(buf);
}
else
{
while (j < i)
{
buf[q++] = sbook[j];
j++;
}
buf[q] = '\0';
tbl[g].xams[k - 1] = atoi(buf);
}// if (k == 0)
j++;
k++;
}// if ((sbook == ':') || (sbook == ';'))
i++;
}// while (sbook[i - 1] != ';')
g++;
}// while(g < cfg1)
fclose(fBase);
ballSort();
alphSort();
} // void vRead()


void write()
{
int i, j;
fBase = fopen("base.txt", "w");
fprintf(fBase, "%i %i ", cfg1, cfg2);
i = 0;
while (i < cfg2)
{
fputs(gTitle.title, fBase);
fprintf(fBase, ":%i", gTitle.cfg);
j = 0;
while (j < gTitle.cfg)
{
fputs(":", fBase);
fputs(gTitle.exams[j++].title, fBase);
}
fputs("; ", fBase);
i++;
}// while(i < cfg2)
fputs("\n", fBase);
i = 0;
while (i < cfg1)
{
fputs(tbl.fio, fBase);
fprintf(fBase, " %i", tbl.group);
j = 0;
while (j < gTitle[tbl.group].cfg)
{
fputs(":", fBase);
fprintf(fBase, "%i", tbl.xams[j++]);
}
fputs("; ", fBase);
fprintf(fBase, "\n");
i++;
}// while(i < cfg1)
fclose(fBase);
}// void write()

int iGroupSel()
{
int iinput, i;
system("cls");
i = 0;
while(i < cfg2)
{
printf("%i - %s \n", i + 1, gTitle[i++].title);
}
printf(" 0 - Nazad\n");
scanf("%i", &iinput);
if(iinput <= cfg2)
{
switch (iinput)
{
case 0:
return (-1);

default:
return(iinput - 1);
} // switch
}// if(iinput <= cfg2)
return (-1);
} // void groupSel()

void typeScore(int GroupNum)
{
system("cls");
printf("Nomer gruppi: \nVyberete examen :", gTitle[GroupNum].title);
int i = 0;
while (i < gTitle[GroupNum].cfg)
{
printf("\n %i - %s", i, gTitle[GroupNum].exams[i++].title);
}
printf("\n");
int SelExam;
scanf("%i", &SelExam);
system("cls");
printf("%s: \n", gTitle[GroupNum].exams[SelExam].title);
i = 0;
while (i < cfg1)
{
if (tbl.group == GroupNum)
{
printf("%s: ", tbl.fio);
scanf("%i", &tbl.xams[SelExam]);
printf("\n");
}
i++;
}
write();
vRead();
}

void addStud(int GroupNum)
{
int i;
system("cls");
printf("FIO: ");
scanf("%s", tbl[cfg1].fio);
tbl[cfg1].group = GroupNum;
i = 0;
while (i < gTitle[GroupNum].cfg)
{
printf("\n%s : ", gTitle[GroupNum].exams.title);
scanf("%i", &tbl[cfg1].xams[i++]);
}
cfg1++;
write();
vRead();
}

void delStud()
{
int id;
printf("Enter student ID: ");
scanf("%i", &id);
while (id < (cfg1 - 1))
{
tbl[id] = tbl[id+1];
id++;
}
cfg1--;
write();
vRead();
}


int ballcomp(Table* a, Table* b)
{
if ((a->srball) > (b->srball)) return -1;
if ((a->srball) < (b->srball)) return 1;
return 0;
}

void ballSort()
{
int i = 0;
while (i < cfg1)
{
tbl.srball = 0;
int j = 0;
while (j <= gTitle[tbl.group].cfg) tbl.srball += tbl.xams[j++];
tbl.srball = tbl.srball / (j - 1);
i++;
}
qsort (tbl, cfg1, sizeof (Table), (int (*)(const void *, const void *)) ballcomp);
}

int alphcomp(Table* a, Table* b)
{
return strcmp(a->fio, b->fio);
}

void alphSort()
{

qsort (tbl, cfg1, sizeof (Table), (int (*)(const void *, const void *)) alphcomp);
}


int iProsmotr() //просматривалка
{
int q, iinput, g = 0;
int i = iGroupSel();
if (i == -1) return(0);
system("cls");
printf("Sortirovka \n 1 - Po Alfavitu\n 2 - Po srednemu ballu\n ");
scanf("%i", &iinput);
switch (iinput)
{
case 2:
ballSort();break;
default:
alphSort();
} // switch
system("cls");
printf("# FIO Gruppa ");
while (g < gTitle.cfg)
{
printf("%10s ", gTitle.exams[g++].title);
}
printf(" Sr. BALL ");
printf("\n");
g = 0;
while (g < cfg1)
{
if (tbl[g].group == i)
{
printf("%3i %10s %7s ", g, tbl[g].fio, gTitle[tbl[g].group].title);
q = 0;
while (q < gTitle.cfg)
{
printf("%10d ", tbl[g].xams[q++]);
}
printf(" %1.2f ", tbl[g].srball);
printf("\n");
}
g++;
}
printf("\n 1 - Prostavit ocenki\n 2 - Dobavit studenta\n 3 - Udalit studenta\n 0 - Nazad\n");
scanf("%i", &iinput);
switch (iinput)
{
case 1:
typeScore(i); break;
case 2:
addStud(i); break;
case 3:
delStud(); break;
case 0:
iProsmotr(); return(0);
} // switch
return (1);
} // void vProsmotr()

int iRedaktor()
{
int iinput;
system("cls");
printf("\n 1 - Dobavit gruppu\n 2 - Udalit gruppu\n 3 - Corektirovat gruppu\n 0 - Nazad\n");
scanf("%i", &iinput);
switch (iinput)
{
case 1:
addGroup(); break;
case 2:
delGroup(); break;
case 3:
corGroup(); break;
case 0:
return(0);
} // switch
return(1);
} // void vRedaktor()

void addGroup()
{
int i;
system("cls");
printf("Nomer gruppi: ");
scanf("%s", gTitle[cfg2].title);
printf("\nKolichestvo ekzamenov ");
scanf("%i", &gTitle[cfg2].cfg);
i = 0;
while (i < gTitle[cfg2].cfg)
{
printf("\nNazvanie examena %i ", i);
scanf("%s", gTitle[cfg2].exams[i++].title);
}
cfg2++;
write();
vRead();
}

void REKitemdelGroup(int rek, int grp)
{
while (rek < cfg1)
{
if (tbl[rek].group == grp)
{
REKitemdelGroup(rek + 1, grp);
while (rek < (cfg1 - 1))
{
tbl[rek] = tbl[rek+1];
rek++;
}
cfg1--;
}
rek++;
}
}

void delGroup()
{
int i;
while (i == -1) i = iGroupSel();
REKitemdelGroup(0, i);
while (i < (cfg2 - 1))
{
gTitle = gTitle[i + 1];
i++;
}
cfg2--;
write();
vRead();
}

void corGroup()
{
int i, j;
i = iGroupSel();
while (i == -1) i = iGroupSel();
system("cls");
printf("Nomer gruppi(%s) : ", gTitle.title);
scanf("%s", gTitle.title);
printf("\nKolichestvo ekzamenov(%i) : ", gTitle.cfg);
scanf("%i", &gTitle.cfg);
j = 0;
while (j < gTitle.cfg)
{
printf("\nNazvanie examena %i : ", j);
scanf("%s", gTitle.exams[j++].title);
}
write();
vRead();
}


//----------------------------------

int main()
{
int iinput;
while (1)
{
system("cls");
vRead();
printf("1 - prosmotr, 2 - redaktirovanie struktur\n");
scanf("%i", &iinput);
switch (iinput)
{
case 1:
while(iProsmotr()); break;

case 2:
while(iRedaktor()); break;
} // switch
}
return 0;
}
база данных деканат можете посмотреть как ее можно переделать в кулинарную книгу
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог