Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <io.h>
  3. #include <conio.h>
  4. #include <iostream>
  5. #include <fstream>
  6. using namespace std;
  7.  
  8.  
  9. struct Students {
  10.     char FIO[30];
  11.     int year_birthday;
  12.     int num_group;
  13.     int balls[4];
  14.     double s_ball;
  15. };
  16. Students student;
  17. FILE *Fs, *Ft;
  18. char fs_name[] = "students.dat";
  19. char ft_name[] = "result.txt";
  20. int size_of_type = sizeof(Students);
  21.  
  22. void create();
  23. void add();
  24. bool view();
  25. void out(Students, int);
  26. void edit(int);
  27. void save(Students *, int);
  28. void zadanie();
  29.  
  30. void main() {
  31.     int kod, kod_edit, edit_number;
  32.     Ft = _fsopen(ft_name, "w", _SH_DENYWR);
  33.     //fopen_s(&Ft, ft_name, "w");
  34.     while (1) {
  35.         puts("\n1 - Create\t2 - View\t3 - Edit\t4 - Zadanie\t0 - Exit\n");
  36.         puts("Input the code here: ");
  37.         scanf_s("%d", &kod);
  38.         switch (kod) {
  39.         case 0:
  40.             fclose(Ft);
  41.             return;
  42.         case 1: // Create File
  43.             create();
  44.             if (!Fs) {
  45.                 puts("\nCreate Error!");
  46.                 return;
  47.             }
  48.             break;
  49.         case 2: // View
  50.             if (!view()) {
  51.                 puts("\n\nError View!\n");
  52.                 return;
  53.             }
  54.             break;
  55.         case 3: // Edit
  56.             puts("\n1 - Add\t2 - Edit\n");
  57.             scanf_s("%d", &kod_edit);
  58.             switch (kod_edit) {
  59.             case 1: // Add new record
  60.                 add();
  61.                 puts("Add a new line");
  62.                 break;
  63.             case 2:
  64.                 // Edit record
  65.                 view();
  66.                 printf("\n\nVvedite nomer izmenyaemoj zapisi:\t");
  67.                 scanf_s("%d", &edit_number);
  68.                 edit(edit_number);
  69.                 break;
  70.             }
  71.             break;
  72.         case 4:
  73.             zadanie();
  74.             break;
  75.         }
  76.     }
  77.     _getch();
  78. }
  79. void create() {
  80.     fopen_s(&Fs, fs_name, "wb");
  81.     puts("\nFile Created!\n");
  82.     fclose(Fs);
  83. }
  84. void add() {
  85.     Students student1;
  86.     double fiz, mat, inf, khi, sball;
  87.     fflush(stdin);
  88.     cout << "Please, enter your FIO - ";
  89.     cin.getline(student.FIO, 30);  
  90.     printf("\nBirthday Year, Number Group - ");
  91.     scanf_s("%d %d", &student.year_birthday, &student.num_group);
  92.     printf("\nInput Balls: fizik, matem, informatic, khimya - ");
  93.     scanf_s("%d %d %d %d", &student.balls[0], &student.balls[1],
  94.         &student.balls[2], &student.balls[3]);
  95.     fiz = student.balls[0];
  96.     mat = student.balls[1];
  97.     inf = student.balls[2];
  98.     khi = student.balls[3];
  99.     sball = (fiz + mat + inf + khi) / 4;
  100.     printf("%6.2lf", sball);
  101.     student.s_ball = sball;
  102.     Fs = _fsopen(fs_name, "ab", _SH_DENYWR);
  103.     //fopen_s(&Fs, fs_name, "ab");
  104.     fwrite(&student, size_of_type, 1, Fs);
  105.     fclose(Fs);
  106. }
  107.  
  108. bool view() {
  109.     int i = 1;
  110.     fopen_s(&Fs, fs_name, "rb");
  111.     if (!Fs)
  112.         return false;
  113.     printf("\n\t--------------- Informations ---------------\n");
  114.     fprintf(Ft, "\n\n\n\t--------------- Informations ---------------\n");
  115.     while (1) {
  116.         if (!fread(&student, size_of_type, 1, Fs)) break;
  117.         out(student, i);
  118.         i++;
  119.     }
  120.     puts("\n\n\n");
  121.     fclose(Fs);
  122.     return true;
  123. }
  124.  
  125. void out(Students s, int i = 0) {
  126.     printf("\n%d. %s - %d, group: %d; Fizik: %d, Matem: %d, Informatic: %d, Khimiya: %d, Sredni ball: %1.2lf", i, s.FIO, s.year_birthday, s.num_group, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.s_ball);
  127.     fprintf(Ft, "\n%s - %d, group: %d; Fizik: %d, Matem: %d, Informatic: %d, Khimiya: %d, Sredni ball: %1.2lf", s.FIO, s.year_birthday, s.num_group, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.s_ball);
  128. }
  129.  
  130. void edit(int edit_number) {
  131.     Students *st, newStudent;
  132.     int descriptor, i, kol;
  133.     long len;
  134.     printf("\nEdit student:\nFIO - ");
  135.     fflush(stdin);
  136.     cin.getline(newStudent.FIO, 30);
  137.     printf("\nBirthday Year, Number Group - ");
  138.     scanf_s("%d %d", &newStudent.year_birthday, &newStudent.num_group);
  139.     printf("\nInput Balls: fizik, matem, informatic, khimya - ");
  140.     scanf_s("%d %d %d %d", &newStudent.balls[0], &newStudent.balls[1], &newStudent.balls[2], &newStudent.balls[3]);
  141.     newStudent.s_ball = (newStudent.balls[0] + newStudent.balls[1] + newStudent.balls[2] + newStudent.balls[3]) / 4;
  142.     Fs = _fsopen(fs_name, "rb", _SH_DENYWR);
  143.     //fopen_s(&Fs, fs_name, "rb");
  144.     descriptor = _fileno(Fs);
  145.     len = _filelength(descriptor);
  146.     kol = len / size_of_type;
  147.     st = new Students[kol];
  148.     for (i = 0; i<kol; i++) {
  149.         fread((st + i), size_of_type, 1, Fs);
  150.     }
  151.     fclose(Fs);
  152.     st[edit_number - 1] = newStudent;
  153.     for (i = 0; i<kol; i++)
  154.         out(st[i], i + 1);
  155.     save(st, kol);
  156.     delete[]st;
  157. }
  158.  
  159. void save(Students *st, int num) {
  160.     int i;
  161.     Fs = _fsopen(fs_name, "wb", _SH_DENYWR);
  162.     //fopen_s(&Fs, fs_name, "wb");
  163.     for (i = 0; i<num; i++)
  164.         fwrite(&st[i], size_of_type, 1, Fs);
  165.     fclose(Fs);
  166. }
  167.  
  168.  
  169. void zadanie() {
  170.     Students *st;
  171.     int descriptor, i, j = 0, kol;
  172.     long len;
  173.     printf("\n ------- Studenti sdavwie sesiyu na fizic 4 or 5 and other > 8 ------- ");
  174.     fprintf(Ft, "\n ------- Studenti sdavwie sesiyu na fizic 4 or 5  and other > 8------- ");
  175.     Fs = _fsopen(fs_name, "rb", _SH_DENYWR);
  176.     //fopen_s(&Fs, fs_name, "rb");
  177.     descriptor = _fileno(Fs);
  178.     len = _filelength(descriptor);
  179.     kol = len / size_of_type;
  180.     st = new Students[kol];
  181.     for (i = 0; i<kol; i++) {
  182.         fread((st + i), size_of_type, 1, Fs);
  183.     }
  184.     fclose(Fs);
  185.     for (i = 0; i<kol; i++) {
  186.         if ((st[i].balls[0] == 4 || st[i].balls[0] == 5) && st[i].balls[1] > 8 && st[i].balls[2] > 8 && st[i].balls[3] > 8)
  187.             out(st[i], 0);
  188.     }
  189.     delete[]st;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement