Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include "mod.h"
  3. void main(void)
  4. {
  5. s_ochered ochered;
  6. ochered.begin=0;
  7. ochered.end=0;
  8. Menu (&ochered);
  9. }
  10.  
  11. **************************************
  12.  
  13. struct student
  14. {
  15. char name[100];
  16. int mark;
  17. student* next;
  18. student* prev;
  19. };
  20. struct s_ochered
  21. {
  22. student* begin;
  23. student* end;
  24. };
  25. student* Get_Info (void);
  26. student* Get_info_From_Txt (FILE*fp);
  27. student* Get_info_From_Bin (FILE*fp);
  28.  
  29. void Add (s_ochered* ochered);
  30. void Add_From_Txt (char* filename, s_ochered* ochered);
  31. void Add_From_Bin (char* filename, s_ochered* ochered);
  32.  
  33. void Print (s_ochered* ochered);
  34. void Print_To_Txt (char* filename, s_ochered* ochered);
  35. void Print_To_Bin (char* filename, s_ochered* ochered);
  36.  
  37. void Delete (s_ochered* ochered);
  38. void Banned_Delete (s_ochered* ochered);
  39.  
  40. void Clear (s_ochered* ochered);
  41. void Menu (s_ochered* ochered);
  42.  
  43. **************************************
  44.  
  45. #include <stdio.h>
  46. #include <conio.h>
  47. #include <stdlib.h>
  48. #include "mod.h"
  49. student* Get_Info (void)
  50. {
  51. student*s=(student*)malloc(sizeof(student));
  52. printf ("vvedite imya: ");
  53. scanf ("%s", &s->name);
  54. printf ("vvedite ocenku: ");
  55. scanf ("%d", &s->mark);
  56. return s;
  57. }
  58. student* Get_info_From_Txt (FILE*fp)
  59. {
  60. student*s=(student*)malloc(sizeof(student));
  61. fscanf (fp, "%s ", &s->name);
  62. fscanf (fp, "%d ", &s->mark);
  63. return s;
  64. }
  65. student* Get_info_From_Bin (FILE*fp)
  66. {
  67. student*s=(student*)malloc(sizeof(student));
  68. fread (s,sizeof(student),1, fp);
  69. return s;
  70. }
  71. void Add (s_ochered* ochered)
  72. {
  73. student*s=Get_Info ();
  74. if (ochered->end==0 && ochered->begin==0)
  75. {
  76. ochered->end=s;
  77. ochered->begin=s;
  78. s->next=0;
  79. s->prev=0;
  80. }
  81. else
  82. {
  83. ochered->end->prev=s;
  84. s->next=ochered->end;
  85. s->prev=0;
  86. ochered->end=s;
  87. }
  88. }
  89. void Add_From_Txt (char* filename, s_ochered* ochered)
  90. {
  91. FILE*fp=fopen(filename, "r");
  92. if (fp==0)
  93. {
  94. printf ("File not found\n");
  95. getch();
  96. exit (3);
  97. }
  98. while (feof(fp)==0)
  99. {
  100. student*s=Get_info_From_Txt (fp);
  101. if (ochered->end==0 && ochered->begin==0)
  102. {
  103. ochered->end=s;
  104. ochered->begin=s;
  105. s->next=0;
  106. s->prev=0;
  107. }
  108. else
  109. {
  110. ochered->end->prev=s;
  111. s->next=ochered->end;
  112. s->prev=0;
  113. ochered->end=s;
  114. }
  115. }
  116. fclose(fp);
  117. }
  118. void Add_From_Bin (char* filename, s_ochered* ochered)
  119. {
  120. FILE*fp=fopen(filename, "rb");
  121. if (fp==0)
  122. {
  123. printf ("File not found\n");
  124. getch();
  125. exit (3);
  126. }
  127. while (feof(fp)==0)
  128. {
  129.  
  130. student*s=Get_info_From_Bin (fp);
  131. if (ochered->end==0 && ochered->begin==0)
  132. {
  133. ochered->end=s;
  134. ochered->begin=s;
  135. s->next=0;
  136. s->prev=0;
  137. }
  138. else
  139. {
  140. ochered->end->prev=s;
  141. s->next=ochered->end;
  142. s->prev=0;
  143. ochered->end=s;
  144. }
  145. }
  146. Banned_Delete(ochered);
  147. fclose(fp);
  148. }
  149. void Delete (s_ochered* ochered)
  150. {
  151. if (ochered->end==0 && ochered->begin==0)
  152. {
  153. printf ("ochered pusta\n");
  154. getch();
  155. exit(1);
  156. }
  157. else
  158. if (ochered->end==ochered->begin)
  159. {
  160. free (ochered->end);
  161. ochered->end=0;
  162. ochered->begin=0;
  163. }
  164. else
  165. {
  166. ochered->begin=ochered->begin->prev;
  167. free(ochered->begin->next);
  168. ochered->begin->next=0;
  169. }
  170. }
  171.  
  172. void Banned_Delete (s_ochered* ochered)
  173. {
  174. if (ochered->end==ochered->begin)
  175. {
  176. free (ochered->end);
  177. ochered->end=0;
  178. ochered->begin=0;
  179. }
  180. else
  181. {
  182. ochered->end=ochered->end->next;
  183. free(ochered->end->prev);
  184. ochered->end->prev=0;
  185. }
  186. }
  187. void Print (s_ochered* ochered)
  188. {
  189. if(ochered->end==0 && ochered->begin==0)
  190. printf ("ochered pusta\n");
  191. while (ochered->end!=0 && ochered->begin!=0)
  192. {
  193. printf ("\nname: %s\nmark: %d", ochered->begin->name, ochered->begin->mark);
  194. Delete (ochered);
  195. }
  196. }
  197. void Print_To_Txt (char* filename, s_ochered* ochered)
  198. {
  199. FILE* fp=fopen(filename, "w");
  200. if(ochered->end==0 && ochered->begin==0)
  201. printf ("\nOchered pusta\n");
  202. while (ochered->end!=0 && ochered->begin!=0)
  203. {
  204. fprintf (fp, "%s %d ", ochered->begin->name, ochered->begin->mark);
  205. Delete (ochered);
  206. }
  207. fclose(fp);
  208. }
  209. void Print_To_Bin (char* filename, s_ochered* ochered)
  210. {
  211. FILE* fp=fopen(filename, "wb");
  212. if(ochered->end==0 && ochered->begin==0)
  213. printf ("\nOchered pusta\n");
  214. while (ochered->end!=0 && ochered->begin!=0)
  215. {
  216. fwrite(ochered->begin,sizeof(student),1, fp);
  217. Delete (ochered);
  218. }
  219. fclose(fp);
  220. }
  221. void Clear (s_ochered* ochered)
  222. {
  223. while (ochered->end!=0 && ochered->begin!=0)
  224. {
  225. Delete (ochered);
  226. }
  227. }
  228. void Menu (s_ochered* ochered)
  229. {
  230. int k;
  231. re: printf ("\nWhat do you want to do: \n1. Add elem\n2. Clear\n3. Print elem\n4. Exit\n");
  232. scanf ("%d", &k);
  233. switch(k)
  234. {
  235. case 1:
  236. printf ("\nAdd from: \n1. Keyboard\n2. Txt file\n3. Bin file\n");
  237. scanf ("%d",&k);
  238. switch(k)
  239. {
  240. case 1:
  241. Add (ochered);
  242. break;
  243. case 2:
  244. Add_From_Txt("data.txt",ochered);
  245. break;
  246. case 3:
  247. Add_From_Bin ("data.bin",ochered);
  248. break;
  249. }
  250. break;
  251. case 2:
  252. Clear(ochered);
  253. break;
  254. case 3:
  255. printf ("\nPrint to: \n1. Screen\n2. Txt file\n3. Bin file\n");
  256. scanf ("%d",&k);
  257. switch(k)
  258. {
  259. case 1:
  260. Print(ochered);
  261. break;
  262. case 2:
  263. Print_To_Txt("data.txt",ochered);
  264. break;
  265. case 3:
  266. Print_To_Bin("data.bin",ochered);
  267. }
  268. break;
  269. case 4:
  270. exit(2);
  271. break;
  272. default:
  273. printf ("\nWrong choose");
  274. }
  275. goto re;
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement