Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РКР.docx
Скачиваний:
21
Добавлен:
19.12.2018
Размер:
126.6 Кб
Скачать

2. Описание программы

2.1. Схема алгоритма программы.

При запуске программы, выполняется ее основная функция- функция main(). С помощью данной функции вводятся все элементы структуры, а затем записываются в файл. После чего выполняется функция menu().

Функции viewFile(),addFile(), sortirovka(), editFile(), deleterecord(), tablica() по окончанию выполнения автоматически переходят к функции menu().

2.2. Описание использованных функций

Главная функция void main().

Это главная функция в программе.

Функция имеет приблизительно следующий вид в программе:

void main()

{

int k;

l=0;

printf("Vvedite fiksiryyschii god\n");

scanf("%d",&t);

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

{

printf("Vvedite avtor(do 10 simvolov)\n");

fflush(stdin);

gets(book[i].avtor);

printf("Vvedite Imia(do 10 simvolov)\n");

fflush(stdin);

gets(book[i].imia);

printf("Vvedite izdanie(do 14 simvolov)\n");

fflush(stdin);

gets(book[i].izdanie);

printf("Vvedite nomer knigi(bukva i 4 zifry)\n");

fflush(stdin);

gets(book[i].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[i].stranici);

printf("Vvedite god izdania\n");

fflush(stdin);

scanf("%d",&book[i].year);

l++;

printf("hotite prodolgit'? (vyhod 0)");

scanf("%d",&k);

if(k==0) break;

}

rkr=fopen("rkr.doc","wb");

for(i=0;i<(l+n);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

system("cls");

menu();

}

Вызываемая функция menu().

Функция, которая вызывается из главной функции. От неё зависит, какая функция будет выполняться потом.

Имеет следующий вид:

void menu()

{

int x;

printf("\n\n");

printf(" '1' prosmotr faila\n");

printf(" '2' dobavlenie nowoi sapisi\n");

printf(" '3' korektirovka sapisei\n");

printf(" '4' udalenie sapisi\n");

printf(" '5' sortirovka sapisei\n");

printf(" '6' vyvod tablicy\n");

printf(" '7' vyhod\n");

scanf("%d",&x);

switch(x)

{

case 1:viewFile();break;

case 2:addFile();break;

case 3: editFile();break;

case 4:deleterecord();break;

case 5:sortirovka();break;

case 6:tablica();break;

case 7:exit(1);

}

}

Функция viewFile().

Функция вывода данных.

Данная функция отвечает за вывод на экран массива структур из файла, с которым производится работа в данной программе.

void viewFile()

{

printf("\n\n");

rkr=fopen("rkr.doc","rb");

for(i=0;i<(l+n);i++)

{

fscanf(rkr,"%10s ",&book[i].avtor);

fscanf(rkr,"%10s ",&book[i].imia);

fscanf(rkr,"%14s\t",&book[i].izdanie);

fscanf(rkr,"%5s\t",&book[i].nomer_knigi);

fscanf(rkr,"%lf\t",&book[i].stranici);

fscanf(rkr,"%d\n",&book[i].year);

}

printf("\t\tavtor,imia,izdanie\t\t\tnomer knigi stranic year\n");

printf("-----------------------------------------------------------------\n");

for(i=0;i<(l+n);i++)

{

printf("%10s %10s %14s\t %5s\t %.2lf %d\n",book[i].avtor,book[i].imia,book[i].izdanie,book[i].nomer_knigi,book[i].stranici,book[i].year);

}

fclose(rkr);

menu();

}

Функция addFile().

Функция отвечает за добавление новой записи в структуру и файл, путём ввода новых данных с клавиатуры.

Функция в программе имеет вид:

void addFile()

{

int c;

printf("\n\n");

rkr=fopen("rkr.doc","ab");

for(i=l;i<z;i++)

{

printf("Vvedite avtora\n");

fflush(stdin);

gets(book[i].avtor);

fprintf(rkr,"%10s ",book[i].avtor);

printf("Vvedite imia\n");

fflush(stdin);

gets(book[i].imia);

fprintf(rkr,"%10s ",book[i].imia);

printf("Vvedite izdanie\n");

fflush(stdin);

gets(book[i].izdanie);

fprintf(rkr,"%10s\t",book[i].izdanie);

printf("Vvedite nomer knigi\n");

fflush(stdin);

gets(book[i].nomer_knigi);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[i].stranici);

fprintf(rkr,"%lf\t",book[i].stranici);

printf("Vvedite year\n");

fflush(stdin);

scanf("%d",&book[i].year);

fprintf(rkr,"%d\n",book[i].year);

n++;

printf("hotite prodolgit' vvodit' novye dannye? (vyhod 0)");

scanf("%d",&c);

if(c==0) break;

}

fclose(rkr);

menu();

}

Функция editFile().

Функция отвечает за изменения данных. При вызове данной функции, пользователю будет предложено ввести фамилию автора, затем информация считывается из файла, если такая фамилия существует, то можно изменить все данные этой книги.

Функция в программе имеет вид:

void editFile()

{

printf("\n\n");

printf("Vvedite avtora,dannye kotorogo vy hotite ismenit':\n");

char u[10];

int v,p=0;

scanf("%10s",&u);

rkr=fopen("rkr.doc","rb");

for(i=0;i<(l+n);i++)

{

fscanf(rkr,"%10s",book[i].avtor);

if(strcmp(book[i].avtor,u)==0)

{

v=i;

p++;

}

if (p==1) break;

}

fclose(rkr);

printf("Vvedite novogo avtora\n");

fflush(stdin);

gets(book[v].avtor);

printf("Vvedite imia\n");

fflush(stdin);

gets(book[v].imia);

printf("Vvedite izdanie\n");

fflush(stdin);

gets(book[v].izdanie);

printf("Vvedite nomer_knigi\n");

fflush(stdin);

gets(book[v].nomer_knigi);

printf("Vvedite stranici\n");

fflush(stdin);

scanf("%lf",&book[v].stranici);

printf("Vvedite year\n");

fflush(stdin);

scanf("%d",&book[v].year);

rkr=fopen("rkr.doc","wb");

for(i=0;i<(l+n);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

menu();

}

Функция deleterecord().

Данная функция производит удаление элемента из файла. Функция в программе имеет вид:

void deleterecord()

{

printf("\n\n");

int b;

printf("Vvedite nomer elementa,kotoryi hotite udalit':\n");

scanf("%d",&b);

rkr=fopen("rkr.doc","wb");

for(i=0;i<(b-1);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

for(i=b;i<(l+n);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

l=l-1;

fclose(rkr);

menu();

}

Функция tablica().

При вызове данной функции, программа выведет на экран таблицу при помощи цикла for .

void tablica()

{

printf("\t\tavtor,imia,izdanie\t\t\tnomer knigi stranic year\n");

printf("-----------------------------------------------------------------\n");

for(i=0;i<(l+n);i++)

{

printf("%10s %10s %14s\t %5s\t %.2lf %d\n",book[i].avtor,book[i].imia,book[i].izdanie,book[i].nomer_knigi,book[i].stranici,book[i].year);

}

menu();

}

Функция sortirovka().

Даная функция отвечает за сортировку введенных данных. Сортировка данных осуществляется при помощи цикла for и if.

Функция в программе имеет вид:

void sortirovka()

{

printf("\n\n");

int v=0;

for(j=0;j<(l+n);j++)

{

for(i=0;i<(l+n);i++)

{

if(book[i].year>book[j].year)

{

g=book[i];

book[i]=book[j];

book[j]=g;

}

}

}

for(i=0;i<(l+n);i++)

{

if(book[i].year>=t)

{

v=i;

break;

}

}

if((l+n-v)>1)

{

for(j=v;j<(l+n);j++)

{

for(i=v;i<(l+n);i++)

{

if(book[i].stranici<book[j].stranici)

{

g=book[i];

book[i]=book[j];

book[j]=g;

}

}

}

}

rkr=fopen("rkr.doc","wb");

for(i=0;i<(l+n);i++)

{

fprintf(rkr,"%10s ",book[i].avtor);

fprintf(rkr,"%10s ",book[i].imia);

fprintf(rkr,"%14s\t",book[i].izdanie);

fprintf(rkr,"%5s\t",book[i].nomer_knigi);

fprintf(rkr,"%lf\t",book[i].stranici);

fprintf(rkr,"%d\n",book[i].year);

}

fclose(rkr);

printf("znachenie fiksiryyschego goda=%d\n",t);

viewFile();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]