Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовик9
.CPP
/* Љгаб®ў п а Ў®в .Џа®Ја ¬¬ ЇаҐ¤ § зҐ ¤«п ᮧ¤ Ёп,
б®еа ҐЁп Ё ®Ўа Ў®вЄЁ ЎЁЎ«Ё®вҐз®© Ў §л ¤ ле. */
#include <stdio.h>
#include <string.h>
#include <alloc.h> // „«п дгЄжЁ© ¤Ё ¬ЁзҐбЄ®© Ї ¬пвЁ
#include <conio.h> // „«п дгЄжЁЁ ®взЁбвЄЁ нЄа
/*ЋЇаҐ¤Ґ«ҐЁҐ и Ў«® бвагЄвгал вЁЇ BOOK */
typedef struct BOOK { char name [20]; //H §ў ЁҐ ЄЁЈЁ
char avtor [20]; //Ђўв®а
int year; //ѓ®¤ Ё§¤ Ёп
};
/*ЋЇаҐ¤Ґ«ҐЁҐ и Ў«® бвагЄвгал вЁЇ BOOKS */
typedef struct BOOKS{
BOOK*bk; //“Є-«м бва.BOOK
BOOKS*next;//“Є-«м c«Ґ¤гйго бва.BOOKS
};
BOOKS *first,*ptr,*prev;//“Є. ЇҐаўго,⥪гйго Ё ЇаҐ¤л¤гйго бва.BOOKS
#define size sizeof (BOOK)//„«Ё бва.BOOK ў Ў ©в е
/* ЋЇаҐ¤Ґ«ҐЁҐ Ј«®Ў «мле ЇҐаҐ¬Ґле */
int i,k;
FILE*fp; // “Є § вҐ«м Ї®в®Є
char fname [20]; // ‘Ё¬ў®«мл© ¬ ббЁў ¤«п Ё¬ҐЁ д ©«
/* Џа®в®вЁЇл дгЄжЁ© */
int file (void); // ‡ ЇЁбм Ў §л ¤ ле ў д ©«
int load (void); // —⥨Ґ Ё ўлў®¤ нЄа Ў.¤.Ё§ д ©«
void vvod (void); // ‚ў®¤ Ў §л ¤ ле
void print(void); // ЏҐз вм ᮤҐа¦Ё¬®Ј® Ў.¤.
void point (void); //Џ®ЁбЄ ўбҐе ЄЁЈ ®¤®Ј® ўв®а
void stop (void); //ЏаҐ®бв ®ўЄЁ Їа®Ја ¬¬л
/* Ћб®ў п дгЄжЁп(Їа®Ја ¬¬ )*/
void main (void)
{
char numb[10]; // Њ ббЁў ¤«п ®¬Ґа Ё§ ¬Ґо
while (1)
{
/* ‚лў®¤ ¬Ґо нЄа */
clrscr();
printf ("\n 1.€ЁжЁ «Ё§ жЁп Ў §л ¤ ле.");
printf ("\n 2.‡ Јаг§Є Ў §л ¤ ле ў д ©«.");
printf ("\n 3.‡ Јаг§Є Ў §л ¤ ле Ё§ д ©« .");
printf ("\n 4.ЏҐз вм Ў §л ¤ ле.");
printf ("\n 5.Џ®ЁбЄ ўбҐе ЄЁЈ 㦮Ј® ўв®а .");
printf ("\n 6.ЋЄ®з ЁҐ а Ў®вл.");
printf ("\n\n ‚ўҐ¤ЁвҐ ®¬Ґа ЇгЄв ¬Ґо ");
scanf ("%s",&numb);
/* ЋЇҐа в®а ЇҐаҐЄ«оз ⥫м */
switch(numb[0])
{
case '1':
vvod(); // ‚맮ў дгЄжЁЁ ўў®¤
break;
case '2':
file(); // ‚맮ў дгЄжЁЁ § ЇЁбЁ
break;
case '3':
load(); // ‚맮ў дгЄжЁЁ ўлў®¤
break;
case '4':
print(); //‚맮ў д-ЁЁ ўлў®¤ нЄа Ў.¤.
break;
case '5':
point(); //‚맮ў д-ЁЁ Ї®ЁбЄ ЄЁЈ 㦮Ј® ўв®а .
break;
case '6':
return;
default:break;
}
}
}
/* ”гЄжЁп ўў®¤ Ў §л ¤ ле */
void vvod (void)
{
i=1; //‘зҐвзЁЄ зЁб« н«-®ў бЇЁбЄ .
clrscr();
char buf[10]; //‘Ё¬ў®«мл© ¬ ббЁў buf Ё ЇҐаҐ¬Ґ п
int end=1; //end ¤«п ®аЈ Ё§ жЁЁ жЁЄ« ўў®¤ ¤ ле.
fflush(stdin);
/*‚ў®¤ ¤ ле ЇҐаў®Ј® н«Ґ¬Ґв бЇЁбЄ .*/
first=new BOOKS;//‚л¤.Ї ¬пвЁ ¤«п ЇҐаў®© бва.BOOKS
first->bk=new BOOK;//‚л¤.Ї ¬пвЁ ¤«п ЇҐаў®© бва.BOOK,гЄ § вҐ«м Є®в.
//пў«.Ї®«Ґ¬ бвагЄвгал BOOKS
ptr=first; //H бва®©Є гЄ § ⥫Ґ©.
puts (" ‚ўҐ¤ЁвҐ §ў ЁҐ ЄЁЈЁ(Ґ Ў®«миҐ 19 бЁ¬ў®«®ў):");
fflush(stdin);
gets(ptr->bk->name);
puts("\n ‚ўҐ¤ЁвҐ ўв®а ЄЁЈЁ(Ґ Ў®«миҐ 19 бЁ¬ў®«®ў):");
gets(ptr->bk->avtor);
puts("\n ‚ўҐ¤ЁвҐ Ј®¤ Ё§¤ Ёп ЄЁЈЁ:");
scanf ("%d",&ptr->bk->year);
ptr->next=NULL; //ЏаЁбў®ҐЁҐ гЄ §. б«Ґ¤.н«-в бЇЁбЄ § 票п NULL.
prev=ptr; //Џа-Ґ гЄ §. ЇаҐ¤.н«-в бЇЁбЄ § з.⥪г饣®.
/*–ЁЄ« ўў®¤ Ї®б«Ґ¤гойЁе н«-®ў бЇЁбЄ .*/
while(end)
{
clrscr();
ptr=new BOOKS;
ptr->bk=new BOOK;
puts ("‚ўҐ¤ЁвҐ §ў ЁҐ ЄЁЈЁ(Ґ Ў®«миҐ 19 бЁ¬ў®«®ў):");
fflush(stdin);
gets(ptr->bk->name);
puts ("\n ‚ўҐ¤ЁвҐ ўв®а ЄЁЈЁ(Ґ Ў®«миҐ 19 бЁ¬ў®«®ў):");
gets(ptr->bk->avtor);
puts ("\n ‚ўҐ¤ЁвҐ Ј®¤ Ё§¤ Ёп ЄЁЈЁ:");
scanf ("%d",&ptr->bk->year);
ptr->next=NULL;
prev->next=ptr;
prev=ptr;
i++;
printf ("\n•®вЁвҐ Їа®¤®«¦Ёвм?…б«Ё ¤ , ЎҐаЁвҐ '¤'");
scanf ("%s",&buf);
if(strcmp(buf,"¤")!=0)end=0;
}
}
/* ”гЄжЁп § ЇЁбЁ Ў §л ¤ ле ў д ©« */
int file (void)
{
clrscr();
char *c; // “Є § ⥫м бЁ¬ў®«
puts ("\n ‚ўҐ¤ЁвҐ Ё¬п д ©« :"); //§ Їа®б Ё¬ҐЁ д ©«
fflush(stdin);
gets (fname);
/*®вЄалвЁҐ д ©« ¤«п § ЇЁбЁ */
if ((fp=fopen(fname,"w"))==NULL) // Џа®ўҐаЄ १г«мв в ®вЄалвЁп д ©«
{
printf("\nHг¦л© ў ¬ д ©« ®вЄалвм Ґ г¤ «®бм");
stop();
return -1;
}
else
{
// § ЇЁбЁ ᮤҐа¦Ё¬®Ј® Ў §л ¤ ле ў д ©«.
fflush(stdout);
fprintf(fp,"%d",i); //‡ ЇЁбм зЁб« н«-®ў бЇЁбЄ .
ptr=first; //H бва.гЄ-«п ЇҐаўл© н«-в бЇЁбЄ .
while(ptr!=NULL)
{
c=(char*)ptr->bk;
for(k=0;k<size;k++)
putc(*c++,fp);
ptr=ptr->next; //‘¤ўЁЈ ®¤Ё н«-в.
}
printf("\nЃ § ¤ ле § Ја㦥 ў д ©« %-20s",fname);
fclose(fp); //‡ ЄапвЁҐ д ©« .
stop();
return 0;
}
}
/* ”гЄжЁп § Јаг§ЄЁ Ё ўлў®¤ нЄа Ў §л Ё§ д ©« . */
int load (void)
{
int k,z,n;
char *c; // “Є-«м бЁ¬ў®«.
clrscr(); // ЋвзЁбвЄ нЄа .
printf ("\n ‚ўҐ¤ЁвҐ Ё¬п д ©« :"); //‡ Їа®б Ё¬ҐЁ д ©« .
fflush(stdin);
gets (fname);
if ((fp=fopen(fname,"r"))==NULL) //Џа®ўҐаЄ १. ®вЄалвЁп д ©«
{
printf("\nHг¦л© ў ¬ д ©« ®вЄалвм Ґ г¤ «®бм");
stop();
return -1;
}
else
{
fscanf(fp,"%d",&z); //—⥨Ґ зЁб« н«Ґ¬Ґв®ў бЇЁбЄ .
i=z;
first=new BOOKS; //‚뤥«ҐЁҐ Ї ¬пвЁ ¤«п ЇҐаў®© бва.BOOKS.
first->bk=new BOOK; //‚л¤.Ї ¬пвЁ ¤«п ЇҐаў®© бва.BOOK.
ptr=first; //H бва®©Є
c=(char*)ptr->bk; //гЄ § ⥫Ґ©.
/*–ЁЄ« звҐЁп ЇҐаў®Ј® н«-в бЇЁбЄ .*/
for(k=0;k<size;k++)
*c++=getc(fp);
ptr->next=NULL; //ЏаЁбў®ҐЁҐ гЄ. б«Ґ¤.н«-в бЇЁбЄ § з.NULL.
prev=ptr; //Џа.гЄ §. ЇаҐ¤.н«-в бЇЁбЄ § з.⥪г饣®.
/*–ЁЄ« ў®ббв ®ў«ҐЁп ўбҐе ®бв ўиЁебп н«-®ў бЇЁбЄ .*/
for(n=1;n<z;n++)
{
ptr=new BOOKS;
ptr->bk=new BOOK;
c=(char*)ptr->bk;
for(k=0;k<size;k++)
*c++=getc(fp);
ptr->next=NULL;
prev->next=ptr;
prev=ptr;
}
}
printf("\nЃ § ¤ ле § Ја㦥 Ё§ д ©« %-20s",fname);
stop();
fclose(fp); //‡ ЄалвЁҐ д ©«
return 0;
}
void print (void)
{
clrscr();
ptr=first;
printf ("\n H §ў ЁҐ ЄЁЈЁ Ђўв®а ѓ®¤ Ё§¤ Ёп \n");
while(ptr!=NULL)
{
printf ("\n %-20s %-20s %-15d",ptr->bk->name,ptr->bk->avtor,ptr->bk->year);
ptr=ptr->next;
}
stop();
}
void stop (void) //”-п ЇаҐ®бв ®ўЄЁ Їа®Ја ¬¬л
{
char buf[5];
printf("\n\n „«п ўл§®ў ¬Ґо ¦¬ЁвҐ ENTER:");
fflush(stdin);
gets(buf);
} //Џа®в®вЁЇл д-Ё©
void sort (void); //‘®ав-ЄЁ ЄЁЈ ®¤®Ј® ўв®а Ї® Ј®¤г Ё§¤ Ёп
void poisk (void); //Џ®ЁбЄ ЄЁЈЁ Ї® §ў Ёо
void delet (void); //“¤ «ҐЁп ўлЎа ®Ј® н-в
void book (void); //‚бв ўЄЁ ®ў®Ј® н-в
void korr (void); //Љ®аа-ЄЁ ¤ ле ўлЎа ®Ј® н-в
int j,t;
BOOKS*bs[20],*b; //Њ ббЁў гЄ. бва.BOOKS ¤«п д-Ё© point Ё sort
void point (void) //”-п Ї®ЁбЄ ўбҐе ЄЁЈ ®¤®Ј® ўв®а
{
t=0;
clrscr();
ptr=first;
char buf[20];
printf("\n ‚ўҐ¤ЁвҐ д ¬Ё«Ёо 㦮Ј® ўв®а :");
fflush(stdin);
gets(buf);
while(ptr!=NULL)
{
if(strcmp((ptr->bk->avtor),buf)==0)
{
bs[t]=ptr;
t++;
}
ptr=ptr->next;
}
if(t) //…б«Ё Ґбвм е®вм ®¤ ЄЁЈ 㦮Ј® ўв®а
{
printf ("\n H §ў ЁҐ ЄЁЈЁ Ђўв®а ѓ®¤ Ё§¤ Ёп\n\n");
for(j=0;j<t;j++)
printf(" %-20s %-20s %-15d\n",bs[j]->bk->name,bs[j]->bk->avtor,bs[j]->bk->year);
}
else //…б«Ё ЄЁЈ 㦮Ј® ўв®а Ґв
{
printf("\n ЉЁЈ ¤ ®Ј® ўв®а ў ЎЁЎ«Ё®вҐЄҐ Ґ ®Ў а㦥®:");
stop();
return;
}
stop();
char numb[10];
while(1) //ЊҐо
{
clrscr();
printf("\n 1.‘®авЁа®ўЄ ЄЁЈ ¤ ®Ј® ўв®а Ї® Ј®¤г Ё§¤ Ёп.");
printf("\n 2.Џ®ЁбЄ 㦮© ЄЁЈЁ Ё§ ўлЎа ле.");
printf("\n 3.ЋЄ®з ЁҐ а Ў®вл.");
printf("\n\n ‚ўҐ¤ЁвҐ ®¬Ґа ЇгЄв ¬Ґо. ");
scanf("%s",&numb);
switch(numb[0])
{
case '1': sort(); //‚맮ў д-ЁЁ б®авЁа®ўЄЁ ЄЁЈ ®¤®Ј® ўв®а
break;
case '2': poisk();//‚맮ў д-ЁЁ Ї®ЁбЄ ЄЁЈЁ Ї® §ў Ёо
break;
case '3': //‚л室 Ё§ д-ЁЁ
return;
default:break;
}
}
}
void sort (void) //”-п б®авЁа®ўЄЁ ЄЁЈ ®¤®Ј® ўв®а Ї® Ј®¤г Ё§¤ Ёп
{
BOOKS*br; //“-«м ¤«п б®авЁа®ўЄЁ(ЇҐаҐбв ®ўЄЁ)¬ ббЁў гЄ-Ґ©
int i;
for(j=0;j<t;j++) //–ЁЄ« ба ўҐЁп Ї®«Ґ© year ўлЎа ле н-®ў
for(i=j+1;i<t;i++)
{
if((bs[j]->bk->year)>(bs[i]->bk->year))
{
br=bs[j];
bs[j]=bs[i];
bs[i]=br;
}
}
for(j=0;j<t;j++)
printf("\n %-20s %-20s %-15d",bs[j]->bk->name,bs[j]->bk->avtor,bs[j]->bk->year);
stop();
}
void poisk (void) //”-п Ї®ЁбЄ ЄЁЈЁ Ї® §ў Ёо
{
int t=0; //ЏҐаҐ¬Ґ п ¤«п Їа®ўҐаЄЁ १-в Ї®ЁбЄ
char buf[20];
printf("\n ‚ўҐ¤ЁвҐ §ў ЁҐ 㦮© ЄЁЈЁ. ");
fflush(stdin);
gets(buf);
ptr=first;
while(ptr!=NULL)
{
if(strcmp((ptr->bk->name),buf)==0)
{
b=ptr;
t=1;
}
ptr=ptr->next;
}
if(t) //…б«Ё ЄЁЈ ©¤Ґ
printf ("\n\n%-20s %-20s %-15d ",b->bk->name,b->bk->avtor,b->bk->year);
else //…б«Ё в Є®© ЄЁЈЁ Ґв
{
printf ("\n H㦮© ў ¬ ЄЁЈЁ ў ЎЁЎ«Ё®вҐЄҐ Ґ Ё¬ҐҐвбп.");
stop();
return; //‚л室 Ё§ Їа®Ја ¬¬л
}
stop();
char numb[10];
while(1)
{
clrscr();
printf("\n 1.“¤ «ҐЁҐ ¤ ле ® ўлЎа ®© ЄЁЈҐ Ё§ ЎЁЎ«Ё®вҐЄЁ.");
printf("\n 2.„®Ў ў«ҐЁҐ ¤ ле ® ®ў®© ЄЁЈҐ ў ЎЁЎ«Ё®вҐЄг.");
printf("\n 3.Љ®а४вЁа®ўЄ ¤ ле ўлЎа ®© ЄЁЈЁ.");
printf("\n 4.ЋЄ®з ЁҐ а Ў®вл.\n");
printf("\n ‚ўҐ¤ЁвҐ ®¬Ґа ЇгЄв ¬Ґо: ");
scanf("%s",&numb);
switch(numb[0])
{
case '1': delet(); //‚›§®ў д-Ё г¤ «ҐЁп ўлЎа ®Ј® н-в
return;
case '2': book(); //‚맮ў д-Ё ўбв ўЄЁ ®ў®Ј® н-в
break;
case '3':korr(); //‚맮ў д-Ё Є®аа.Ї®«Ґ© ўлЎа ®Ј® н-в
break;
case '4':return; //‚л室 Ё§ д-ЁЁ
default:break;
}
}
}
void delet (void) //”-п г¤ «ҐЁп ўлЎа ®Ј® н-в Ё§ бЇЁбЄ
{
int x=0; //ЏҐаҐ¬Ґ п ¤« ®ЇаҐ¤-п ¬Ґбв ўлЎа-®Ј® н-в ў бЇЁбЄҐ
ptr=first;
while(ptr!=b) //H бва®©Є гЄ-Ґ© ўлЎа л© н-в
{
prev=ptr;
ptr=ptr->next;
x++;
}
if(x!=0) //…б«Ё Ґ ЇҐаўл© н-в
{
if(x==i) //…б«Ё Ї®б«Ґ¤Ё© н-в
prev->next=NULL;
else //…б«Ё Ґ Єа ©Ё© н-в
prev->next=ptr->next;
}
else //…б«Ё ЇҐаўл© н-в
first=first->next;
printf("\n „ лҐ ® Ґг¦®© ў ¬ ЄЁЈҐ г¤ «Ґл Ё§ ЎЁЎ«Ё®вҐЄЁ.");
i--; //“¬Ґм襨Ґ ®ЎйҐЈ® зЁб« н-®ў Ґ¤ЁЁжг
stop();
}
void book (void) //”-п ўбв ўЄЁ ®ў®Ј® н-в ў бЇЁб®Є
{
int x=0; //„«п ®ЇаҐ¤Ґ«ҐЁп ¬Ґбв ўлЎ-®Ј® н-в ў бЇЁбЄҐ
char numb[10];
BOOKS*nov;
ptr=first;
while(ptr!=b) //H бва®©Є гЄ § ⥫Ґ© ўлЎа. н-в
{
prev=ptr;
ptr=ptr->next;
x++;
}
nov=new BOOKS; //‚뤥«ҐЁҐ Ї ¬пвЁ ¤«п ®ў®Ј® н-в
nov->bk=new BOOK;
printf("\n„«п ®ў®© ЄЁЈЁ :");
printf("\n ‚ўҐ¤ЁвҐ §ў ЁҐ(Ґ Ў®«миҐ 19 бЁ¬ў®«®ў).");
fflush(stdin);
gets(nov->bk->name);
printf("\n ‚ўҐ¤ЁвҐ ўв®а (Ґ Ў®«миҐ 19 бЁ¬ў®«®ў).");
gets(nov->bk->avtor);
printf("\n ‚ўҐ¤¤ЁвҐ Ј®¤ Ё§¤ Ёп.");
scanf("%d",&nov->bk->year);
clrscr();
while(1)
{
printf("\n 1.„ лҐ ® ®ў®© ЄЁЈҐ ўбв ўЁвм ¤® ўлЎа ®©.");
printf("\n 2.„ ҐҐ ® ®ў®© ЄЁЈҐ ўбв ўЁвм Ї®б«Ґ ўлЎа ®©.");
printf("\n 3.ЋЄ®з ЁҐ а Ў®вл(¤ лҐ ® ®ў®© ЄЁЈҐ ўбв ў«Ґл Ґ Ўг¤гв).");
printf("\n\n ‚ўҐ¤ЁвҐ ®¬Ґа ЇгЄв ¬Ґо ");
scanf("%s",&numb);
switch(numb[0])
{
case'1': //‚бв ўЄ ®ў®Ј® н-в ЇҐаҐ¤ ўлЎа л¬
{ if(x!=0) //…б«Ё Ґ ЇҐаўл© н-в
{
nov->next=ptr;
prev->next=nov;
}
else //…б«Ё ЇҐаўл© н-в
{
nov->next=first;
first=nov;
}
i++; //“ўҐ«ЁзҐЁҐ ®ЎйҐЈ® зЁб« н-®ў Ґ¤ЁЁжг
printf("\n„ лҐ ® ®ў®© ЄЁЈҐ Ї®¬ҐйҐл ў ЎЁЎ«Ё®вҐЄг");
stop();
}return;
case'2': //‚бв ўЄ ®ў®Ј® н-в Ї®б«Ґ ўлЎа ®Ј®
{
if(x==i) //…б«Ё Ї®б«Ґ¤Ё© н-в
{
nov->next=NULL;
ptr->next=nov;
}
else //…б«Ё Ґ Ї®б«Ґ¤Ё© н-в
{
nov->next=ptr->next;
ptr->next=nov;
}
i++; //“ўҐ«ЁзҐЁҐ ®ЎйҐЈ® зЁб« н-®ў Ґ¤ЁЁжг
printf("\n„ лҐ ® ®ў®© ЄЁЈҐ Ї®¬ҐйҐл ў ЎЁЎ«Ё®вҐЄг");
stop();
}return;
case '3':
return;
default: break;
}
}
}
void trr(void); //Џа®в®вЁЇ д-ЁЁ ЇҐз вЁ Ё§¬ҐҐ®Ј® н-в
void korr (void) //”-п Є®а४樨 Ї®«Ґ© ўлЎа ®Ј® н-в
{
char numb[10];
while(1)
{
clrscr();
printf("\n 1.Љ®а४вЁа®ўЄ §ў Ёп ўлЎа ®© ЄЁЈЁ.");
printf("\n 2.Љ®а४вЁа®ўЄ ўв®а ўлЎа ®© ЄЁЈЁ.");
printf("\n 3.Љ®а४вЁа®ўЄ Ј®¤ Ё§¤ Ёп ЄЁЈЁ.");
printf("\n 4.ЋЄ®з ЁҐ а Ў®вл.\n");
printf("\n ‚ўҐ¤ЁвҐ ®¬Ґа ЇгЄв ¬Ґо.");
scanf("%s",&numb);
fflush(stdin);
switch(numb[0])
{
case '1':
{
printf("\n ‚ўҐ¤ЁвҐ Ё§¬ҐҐ®Ґ §ў ЁҐ ЄЁЈЁ.\n");
gets(b->bk->name);
trr();
}break;
case '2':
{
printf("\n ‚ўҐ¤ЁвҐ Ё§¬ҐҐ®Ј® ўв®а ЄЁЈЁ.\n");
gets(b->bk->avtor);
trr();
}break;
case '3':
{
printf("\n ‚ўҐ¤ЁвҐ Ё§¬ҐҐл© Ј®¤ Ё§¤ Ёп ЄЁЈЁ.\n");
scanf("%d",&b->bk->year);
trr();
}break;
case '4': return; //‚л室 Ё§ д-ЁЁ
default: break;
}
}
}
void trr (void)
{
printf("\n €§¬ҐҐлҐ ¤ лҐ ® ўлЎа ®© ў ¬Ё ЄЁЈҐ: \n");
printf("\n %-20s %-20s %-15d",b->bk->name,b->bk->avtor,b->bk->year);
stop();
}
Соседние файлы в предмете Программирование