Ðåôåðàò: Îò÷åò ïî ó÷åáíîé ïðàêòèêå ÎÀèÏ áàçà äàííûõ ñòóäåíòîâ (ñîçäàíèå, ïîèñê, óäàëåíèå, ñîðòèðîâêà, âñå, ÷òî íàäî íàïèñàííàÿ íà Ñ++)
return;
}
if (pr) {
textcolor(11);
gotoxy(4,25);
cprintf("\r Îøèáêà. Íåò çàïèñè ñ òàêèì íîìåðîì ");
getch();
textcolor(WHITE);
}
}
clrscr();
}
void edit(char *fn)
{
FILE *fp;
data st;
int pr=1;
int number,size=sizeof(data);
fpos_t filepos;
gotoxy(4,25);
textcolor(11);
cprintf("Ââåäèòå ¹ çàïèñè äëÿ ðåäàêòèðîâàíèÿ : ");
textcolor(YELLOW);
gotoxy(44,25);
int key = 0;
cscanf("%d",&number);
textcolor(WHITE);
while( kbhit())
if( !(key = getch()))
key << 8;
if( key == '\r' )
{
if ((fp = fopen(fn,"rb+")) == NULL)
{
printf("File could not be opened.\n");
return;
}
while(fread(&st,size,1,fp))
{
if (feof(fp))
break;
if (st.num == number)
{
fseek(fp,-1*size,1);
fgetpos(fp,&filepos);
pr=1;
break;
}
else
pr=0;
}
if (pr)
{
while (1)
{
clrscr();
_setcursortype(_SOLIDCURSOR);
gotoxy(20,6);cout<<"Ôàìèëèÿ : ";
cin>>st.lastName;
gotoxy(20,8);cout<<"Èìÿ : ";
cin>>st.firstName;
gotoxy(20,10);cout<<"Îò÷åñòâî : ";
cin>>st.midName;
gotoxy(20,12);cout<<"¹ ãðóïïû : ";
cin>>st.groupNumber;
gotoxy(20,14);cout<<"Ñðåäíèé áàëë ñòóäåíòà : ";
scanf("%f",&st.mark);
if (!check(fn, st))
{
fsetpos(fp,&filepos);
fwrite(&st, sizeof(data),1,fp);
break;
}
else {
gotoxy(20,18);
cout<<"Òàêàÿ çàïèñü óæå ñóùåñòâóåò";
getch();
}
}
}
else {
textcolor(11);
gotoxy(4,25);
cprintf("\r Îøèáêà... Íåò çàïèñè ñ òàêèì íîìåðîì ");
getch();
textcolor(WHITE);
}
fclose(fp);
}
}
void view(char *fn,int n)
{
void ramka();
FILE *fp;
data st;
char c;
int counter=0;
if ((fp = fopen(fn,"rb")) == NULL) {
printf("File could not be opened.\n");
return;
}
ramka();
window(1,6,80,23);
fseek(fp,(n-1)*sizeof(data),SEEK_SET);
while (counter != 18)
{
fread(&st,sizeof(data),1,fp);
if (feof(fp))
break;
else
{
printf(" %4d %-16s %-12s %-17s %8s "
"%7.2f\n",st.num,st.lastName,st.firstName,
st.midName,st.groupNumber,st.mark);
counter++;
}
}
window(1,24,80,25);
cprintf("-----------------------------------"
"---------------------------------------------");
cprintf(" %c - ââåðõ, %c - âíèç , %c - âëåâî,"
" %c - âïðàâî, ESC - îòìåíà ",0x018,0x019,0x01B,0x01A);
textcolor(10); textbackground(1); cprintf("%14s",fn);
window(1,1,80,25); textcolor(15);
fclose(fp);
}
void sort(char *fn)
{
FILE *fp;
data s1,s2;
int num=1,size=sizeof(data),counter=0,key=0;
int oldfs,newfs,color[]={0,4,4,4,4};
while(1)
{
_setcursortype(_NOCURSOR); textcolor(10);
cprintf("::::::::::::::::::::::::: Ì å í þ ñ î ð ò è ð î â ê è "
":::::::::::::::::::::::::");
switch(key)
{
case LEFT: if (counter>0) {
color[counter]=4;
color[--counter]=0;
}
break;
case RIGHT: if (counter<4) {
color[counter]=4;
color[++counter]=0;
}
break;
}
textbackground(4); cprintf(" "); textcolor(WHITE);
textbackground(color[0]);cprintf(" ïî ¹ çàïèñè ");
textbackground(color[1]);cprintf(" ïî Ô.È.Î ");
textbackground(color[2]);cprintf(" ïî ¹ ãðóïïû ");
textbackground(color[3]);cprintf(" ïî ñð.áàëó ");
textbackground(color[4]);cprintf(" Íàçàä ");
textbackground(4);cprintf(" "); textbackground(1);
view(fn,num);
key=bioskey(0);
switch(key)
{
case UP: num--;if (num==0)
num=1;
view(fn,num); break;
case DOWN: num++;if (num+16>=get_number(fn))
num--;
view(fn,num); break;
}
if (key==283)
return;
if (key == ENTER)
{
if ((fp=fopen(fn,"rb+")) == NULL)
{
cout<<"error.file does not exist.";
return;
}
switch(counter) {
case 1: /*-----------ïî Ô.È.Î--------------------*/
oldfs=1; newfs=0;
fread(&s1,size,1,fp);
while(oldfs) {
fread(&s2,size,1,fp);
if(feof(fp)) {
if(!newfs)
break;
oldfs=1; newfs=0;
rewind(fp);
fread(&s1,size,1,fp);
continue;
}
if (strcmp(s1.lastName,s2.lastName) > 0) {
fseek(fp,-2*size,1);
fwrite(&s2,size,1,fp);
fwrite(&s1,size,1,fp);
newfs=1;
}
if (strcmp(s1.lastName,s2.lastName) == 0)