Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "mod.h"
- void main(void)
- {
- s_ochered ochered;
- ochered.begin=0;
- ochered.end=0;
- Menu (&ochered);
- }
- **************************************
- struct student
- {
- char name[100];
- int mark;
- student* next;
- student* prev;
- };
- struct s_ochered
- {
- student* begin;
- student* end;
- };
- student* Get_Info (void);
- student* Get_info_From_Txt (FILE*fp);
- student* Get_info_From_Bin (FILE*fp);
- void Add (s_ochered* ochered);
- void Add_From_Txt (char* filename, s_ochered* ochered);
- void Add_From_Bin (char* filename, s_ochered* ochered);
- void Print (s_ochered* ochered);
- void Print_To_Txt (char* filename, s_ochered* ochered);
- void Print_To_Bin (char* filename, s_ochered* ochered);
- void Delete (s_ochered* ochered);
- void Banned_Delete (s_ochered* ochered);
- void Clear (s_ochered* ochered);
- void Menu (s_ochered* ochered);
- **************************************
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include "mod.h"
- student* Get_Info (void)
- {
- student*s=(student*)malloc(sizeof(student));
- printf ("vvedite imya: ");
- scanf ("%s", &s->name);
- printf ("vvedite ocenku: ");
- scanf ("%d", &s->mark);
- return s;
- }
- student* Get_info_From_Txt (FILE*fp)
- {
- student*s=(student*)malloc(sizeof(student));
- fscanf (fp, "%s ", &s->name);
- fscanf (fp, "%d ", &s->mark);
- return s;
- }
- student* Get_info_From_Bin (FILE*fp)
- {
- student*s=(student*)malloc(sizeof(student));
- fread (s,sizeof(student),1, fp);
- return s;
- }
- void Add (s_ochered* ochered)
- {
- student*s=Get_Info ();
- if (ochered->end==0 && ochered->begin==0)
- {
- ochered->end=s;
- ochered->begin=s;
- s->next=0;
- s->prev=0;
- }
- else
- {
- ochered->end->prev=s;
- s->next=ochered->end;
- s->prev=0;
- ochered->end=s;
- }
- }
- void Add_From_Txt (char* filename, s_ochered* ochered)
- {
- FILE*fp=fopen(filename, "r");
- if (fp==0)
- {
- printf ("File not found\n");
- getch();
- exit (3);
- }
- while (feof(fp)==0)
- {
- student*s=Get_info_From_Txt (fp);
- if (ochered->end==0 && ochered->begin==0)
- {
- ochered->end=s;
- ochered->begin=s;
- s->next=0;
- s->prev=0;
- }
- else
- {
- ochered->end->prev=s;
- s->next=ochered->end;
- s->prev=0;
- ochered->end=s;
- }
- }
- fclose(fp);
- }
- void Add_From_Bin (char* filename, s_ochered* ochered)
- {
- FILE*fp=fopen(filename, "rb");
- if (fp==0)
- {
- printf ("File not found\n");
- getch();
- exit (3);
- }
- while (feof(fp)==0)
- {
- student*s=Get_info_From_Bin (fp);
- if (ochered->end==0 && ochered->begin==0)
- {
- ochered->end=s;
- ochered->begin=s;
- s->next=0;
- s->prev=0;
- }
- else
- {
- ochered->end->prev=s;
- s->next=ochered->end;
- s->prev=0;
- ochered->end=s;
- }
- }
- Banned_Delete(ochered);
- fclose(fp);
- }
- void Delete (s_ochered* ochered)
- {
- if (ochered->end==0 && ochered->begin==0)
- {
- printf ("ochered pusta\n");
- getch();
- exit(1);
- }
- else
- if (ochered->end==ochered->begin)
- {
- free (ochered->end);
- ochered->end=0;
- ochered->begin=0;
- }
- else
- {
- ochered->begin=ochered->begin->prev;
- free(ochered->begin->next);
- ochered->begin->next=0;
- }
- }
- void Banned_Delete (s_ochered* ochered)
- {
- if (ochered->end==ochered->begin)
- {
- free (ochered->end);
- ochered->end=0;
- ochered->begin=0;
- }
- else
- {
- ochered->end=ochered->end->next;
- free(ochered->end->prev);
- ochered->end->prev=0;
- }
- }
- void Print (s_ochered* ochered)
- {
- if(ochered->end==0 && ochered->begin==0)
- printf ("ochered pusta\n");
- while (ochered->end!=0 && ochered->begin!=0)
- {
- printf ("\nname: %s\nmark: %d", ochered->begin->name, ochered->begin->mark);
- Delete (ochered);
- }
- }
- void Print_To_Txt (char* filename, s_ochered* ochered)
- {
- FILE* fp=fopen(filename, "w");
- if(ochered->end==0 && ochered->begin==0)
- printf ("\nOchered pusta\n");
- while (ochered->end!=0 && ochered->begin!=0)
- {
- fprintf (fp, "%s %d ", ochered->begin->name, ochered->begin->mark);
- Delete (ochered);
- }
- fclose(fp);
- }
- void Print_To_Bin (char* filename, s_ochered* ochered)
- {
- FILE* fp=fopen(filename, "wb");
- if(ochered->end==0 && ochered->begin==0)
- printf ("\nOchered pusta\n");
- while (ochered->end!=0 && ochered->begin!=0)
- {
- fwrite(ochered->begin,sizeof(student),1, fp);
- Delete (ochered);
- }
- fclose(fp);
- }
- void Clear (s_ochered* ochered)
- {
- while (ochered->end!=0 && ochered->begin!=0)
- {
- Delete (ochered);
- }
- }
- void Menu (s_ochered* ochered)
- {
- int k;
- re: printf ("\nWhat do you want to do: \n1. Add elem\n2. Clear\n3. Print elem\n4. Exit\n");
- scanf ("%d", &k);
- switch(k)
- {
- case 1:
- printf ("\nAdd from: \n1. Keyboard\n2. Txt file\n3. Bin file\n");
- scanf ("%d",&k);
- switch(k)
- {
- case 1:
- Add (ochered);
- break;
- case 2:
- Add_From_Txt("data.txt",ochered);
- break;
- case 3:
- Add_From_Bin ("data.bin",ochered);
- break;
- }
- break;
- case 2:
- Clear(ochered);
- break;
- case 3:
- printf ("\nPrint to: \n1. Screen\n2. Txt file\n3. Bin file\n");
- scanf ("%d",&k);
- switch(k)
- {
- case 1:
- Print(ochered);
- break;
- case 2:
- Print_To_Txt("data.txt",ochered);
- break;
- case 3:
- Print_To_Bin("data.bin",ochered);
- }
- break;
- case 4:
- exit(2);
- break;
- default:
- printf ("\nWrong choose");
- }
- goto re;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement