Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.56 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. typedef struct {
  4. int curs;
  5. int seminar;
  6. }absente;
  7. typedef struct {
  8. int indicator;
  9. int id;
  10. char nume[25];
  11. int an;
  12. int grupa;
  13. absente d[15];
  14. } student;
  15.  
  16. void creare(char nume_f[25]) // asta nu trebuie!!Fisierul organizat e deja creat
  17. {
  18. FILE *f;
  19. int i;
  20. student a;
  21. f = fopen(nume_f, "wb");
  22. printf("Indicator de stare: ");
  23. scanf("%d", &a.indicator);
  24. fflush(stdin);
  25.  
  26. while (!feof(stdin))
  27. {
  28. printf("ID=");
  29. getc(stdin);
  30. scanf("%d", &a.id);
  31. printf("Nume: "); getc(stdin); gets(a.nume);
  32. printf("An:"); scanf("%d", &a.an);
  33. printf("Grupa:"); scanf("%d", &a.grupa);
  34. for (int i = 0; i < 15; i++)
  35. {
  36. printf("Absente curs disciplina %d : ", i+1);
  37. scanf("%d", &a.d[i].curs);
  38. printf("Absente seminar disciplina %d : ", i+1);
  39. scanf("%d", &a.d[i].seminar);
  40. }
  41. fwrite(&a, sizeof(a), 1, f);
  42. fflush(stdin);
  43. printf("Indicator de stare: "); getc(stdin); scanf("%d", &a.indicator);
  44. fflush(stdin);
  45. }
  46. fclose(f);
  47. }
  48.  
  49. void absenta(char nume_f[25])
  50. {
  51. FILE *f;
  52. student x;
  53. int cod1, vb;
  54. int disciplina;
  55. char y[20];
  56. if (!(f = fopen(nume_f, "rb+")))
  57. printf("nu exista fisierul");
  58. else {
  59. printf("Numarul matricol al elevului cautat: ");
  60. scanf("%d", &cod1);
  61. printf("Disciplina: ");
  62. scanf("%d", &disciplina);
  63. printf("C/S: ");
  64. getc(stdin);
  65. gets(y);
  66. while (!feof(stdin))
  67. {
  68. rewind(f);
  69. vb = 0;
  70. fread(&x, sizeof(x), 1, f);
  71. while (!feof(f) && (vb == 0))
  72. {
  73. if (cod1 == x.id)
  74. {
  75. if (y[0] == 'C' || y[0]=='c')
  76. {
  77. x.d[disciplina-1].curs++;
  78. fseek(f, ftell(f) - sizeof(x), 0);
  79. fwrite(&x, sizeof(x), 1, f);
  80. vb = 1;
  81. }
  82. if (y[0] == 'S' || y[0] == 's')
  83. {
  84. x.d[disciplina-1].seminar++;
  85. fseek(f, ftell(f) - sizeof(x), 0);
  86. fwrite(&x, sizeof(x), 1, f);
  87. vb = 1;
  88. }
  89. }
  90. else fread(&x, sizeof(x), 1, f);
  91. }
  92. if (vb == 0) printf("codul nu exista");
  93. printf("Numarul matricol al elevului cautat: ");
  94. scanf("%d", &cod1);
  95. printf("Disciplina: ");
  96. scanf("%d", &disciplina);
  97. printf("C/S: ");
  98. getc(stdin);
  99. gets(y);
  100.  
  101. }
  102. fclose(f);
  103. }
  104.  
  105. }
  106. void afisare(char nume_f[20]) //cerinta 2
  107. {
  108. FILE *f, *g;
  109. student x;
  110. int i = 0;
  111. if (!(f = fopen(nume_f, "rb"))) printf("nu exista fisierul");
  112. else
  113. {
  114. g = fopen("lista2.txt", "w");
  115. printf("\n ");
  116. fprintf(g, " ABSENTE \n");
  117. fprintf(g, "============================================================================================================================================================================================================================== \n ");
  118. fprintf(g, " || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || \n");
  119. fprintf(g, "============================================================================================================================================================================================================================== \n ");
  120. fprintf(g, "Indicator de stare || ID || Nume || An || Grupa || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || C || S || \n ");
  121. fprintf(g, "==============================================================================================================================================================================================================================\n ");
  122. fread(&x, sizeof(x), 1, f);
  123. while (!feof(f))
  124. {
  125. fprintf(g, "\n %-18d || %2d || %-14s|| %5d || %8d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d || %d ||", x.indicator, x.id, x.nume, x.an, x.grupa, x.d[0].curs, x.d[0].seminar, x.d[1].curs, x.d[1].seminar, x.d[2].curs, x.d[2].seminar, x.d[3].curs, x.d[3].seminar, x.d[4].curs, x.d[4].seminar, x.d[5].curs, x.d[5].seminar, x.d[6].curs, x.d[6].seminar, x.d[7].curs, x.d[7].seminar, x.d[8].curs, x.d[8].seminar, x.d[9].curs, x.d[9].seminar, x.d[10].curs, x.d[10].seminar, x.d[11].curs, x.d[11].seminar, x.d[12].curs, x.d[12].seminar, x.d[13].curs, x.d[13].seminar, x.d[14].curs, x.d[14].seminar);
  126. fread(&x, sizeof(x), 1, f);
  127. }
  128. fclose(f); fclose(g);
  129. }
  130. }
  131.  
  132. void main()
  133. {
  134. FILE *f;
  135. char nume_f[25];
  136. printf("\n nume fisier secvential:");
  137. gets(nume_f);
  138. //creare(nume_f);
  139. absenta(nume_f);
  140. afisare(nume_f);
  141.  
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement