Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
26.05.2014
Размер:
5.06 Кб
Скачать
#include<stdio.h>
#include<conio.h>
#include<io.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys\stat.h>

struct z {
 int no;
 char surname[14];
 char name[10];
 int mark;
}s[20];

int max=0;

int menu()
{
 int x;
 clrscr();
 puts("   >>>>>>>>>>>>>> DB STUDENT <<<<<<<<<<<<<<");
 puts("   1> Vvod dannyh                    ");
 puts("   2> Udalenie dannyh	            ");
 puts("   3> Izmenenie dannyh               ");
 puts("   4> Sortirovka dannhyh po stolbcu  ");
 puts("   5> Vyvod dannyh na display        ");
 puts("   6> Exit                           ");
 printf("\n   Choose any number:            ");
 scanf("%d",&x);
 return(x);
}

void read() {
 int handle, len;
 len=sizeof(z);
 z temp;
 if ((handle=open("os_lab3.txt",O_RDONLY|O_CREAT|O_BINARY,S_IREAD|S_IWRITE))==-1) {
  clrscr();
  printf("ERROR, EXIT!!!");
  exit(1);
 }
 max=0;
 while (!eof(handle)) {
  read( handle, &temp, len);
  s[max]=temp;
  s[max].no=max+1;
  max++;
 }
 close(handle);
}

void save() {
 int handle, len, i;
 len=sizeof(z);
 z temp;
 if((handle=open("os_lab3.txt",O_RDWR|O_CREAT|O_BINARY|O_TRUNC,S_IREAD|S_IWRITE))==-1) {
  clrscr();
  printf("ERROR, EXIT!!!\n");
  exit(1);
 }
 for (i=1; i<=max; i++) {
  temp=s[i-1];
  write(handle, &temp, len);
 }
 close(handle);
}
//------------------------------
void view() {
 int i,j;
 struct z t;
 read();
 clrscr();
 puts("ЙНННСННННННННННННStudentННННННСНННННННННН»");
 puts("є ь і   Surname    і   Name   і   Mark   є");
 puts("ЗДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДє");
 j=0;
 for(i=0;i<max;i++) {
  cout << "є" << s[i].no;
  gotoxy(5,wherey());
  cout << "і" << s[i].surname;
  gotoxy(20,wherey());
  cout << "і" << s[i].name;
  gotoxy(31,wherey());
  cout << "і" << s[i].mark;
  gotoxy(42,wherey());
  cout << "є\n";
  j++;
  if((j==20)&(j<max)) {
   j=0;
   puts("ИНННПННННННННННННННПННННННННННПННННННННННј");
   printf("\n Press any key to continue");
   getch();
   clrscr();
   puts("ЙНННСНННННННННННStudentННННННСНННННННННН»");
   puts("є ь і   Surname   і   Name   і   Mark   є");
   puts("ЗДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДє");
  }
 }
   puts("ИНННПННННННННННННННПННННННННННПННННННННННј");
 printf("\n Press any key to continue");
 getch();
}

void sort()
{
 read();
 z obj;
 int i,j,x;
 clrscr();
 printf("\nVvedite nomer stolbca dlya sortirovki (\"0\" for cancel): ");
 cin >> x;
 if (!(int)x)
  {printf("\nERROR"); getch(); return;}
 if (x>max)
  {printf("\nERROR"); getch(); return;}
 if (x<0)
  {printf("\nERROR"); getch(); return;}
 if (x==0)
  {printf("\nSortirovka otmenena"); getch(); return;}
 if (x==1) {
  for (i=0;i<(max-1);i++)
   for (j=0;j<(max-1);j++)
    if ( stricmp ( s[j].surname , s[j+1].surname ) > 0) {
     obj=s[j];
     s[j]=s[j+1];
     s[j+1]=obj;
    }
 }
 else if (x==2) {
  for (i=0;i<(max-1);i++)
   for (j=0;j<(max-1);j++)
    if ( stricmp ( s[j].name , s[j+1].name ) > 0) {
     obj=s[j];
     s[j]=s[j+1];
     s[j+1]=obj;
    }
 }
 else if (x==3) {
  for (i=0; i <(max-1); i++)
   for (j=0; j<(max-1); j++)
    if ( s[j].mark < s[j+1].mark ) {
     obj=s[j];
     s[j]=s[j+1];
     s[j+1]=obj;
    }
 }
 save();
 clrscr();
 printf(" Sortirovka zavershena. Press any key to continue!");
 getch();
 clrscr();
}

void new_b()
{
 clrscr();
 puts("\tVvod novyh dannyh ");
 printf("Surname:     ");
 cin >> s[max].surname;
 printf("Name:        ");
 cin >> s[max].name;
 printf("Mark:        ");
 cin >> s[max].mark;
 s[max].no=max;
 max++;
 save();
}
void del()
{
 int x;
 int i;
 view();
 printf("\nVvedite nomer zapisi dlya udaleniya (\"0\" for cancel): ");
 cin >> x;
 if (!(int)x)
  {printf("\nERROR"); getch(); return;}
 if (x>max)
  {printf("\nERROR"); getch(); return;}
 if (x<0)
  {printf("\nERROR"); getch(); return;}
 if (x==0)
  {printf("\nUdalenie otmeneno"); getch(); return;}
 for (i=x; i<max; i++)
 {
  s[i-1]=s[i];
 }
 max--;
 save();
}

void edit()
 {
  int n_f;
  view();
  printf("\nVvedite nomer zapisi dlya izmeneniya (\"0\" - for cancel): ");
  cin >> n_f;
  if(!(int)n_f)
   {printf("\nERROR"); getch(); return;}
  if (n_f>max)
   {printf("\nERROR"); getch(); return;}
  if (n_f<0)
   {printf("\nERROR"); getch(); return;}
  if (n_f==0)
   {printf("\nIzmenenie otmeneno"); getch(); return;}
  printf("Izmenenie %d zapisi",n_f);
  printf("\nSurname: %s",s[n_f-1].surname);
  printf("\nNew Surname: ");
  cin >> s[n_f-1].surname;
  printf("Name: %s",s[n_f-1].name);
  printf("\nNew name: ");
  cin >> s[n_f-1].name;
  printf("Mark: %d",s[n_f-1].mark);
  printf("\nNew mark: ");
  cin >> s[n_f-1].mark;
  save();
 }
void main() {
 int x;
 read();
 do {
  x=menu();
  switch(x) {
   case 1: new_b(); break;
   case 2: del(); break;
   case 3: edit(); break;
   case 4: sort();break;
   case 5: view();break;
   default: break;
  }
 }
 while((x>0)&&(x<6));
 clrscr();
}



Соседние файлы в папке лабы по Осям