Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <io.h>
- #include <conio.h>
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct Students {
- char FIO[30];
- int year_birthday;
- int num_group;
- int balls[4];
- double s_ball;
- };
- Students student;
- FILE *Fs, *Ft;
- char fs_name[] = "students.dat";
- char ft_name[] = "result.txt";
- int size_of_type = sizeof(Students);
- void create();
- void add();
- bool view();
- void out(Students, int);
- void edit(int);
- void save(Students *, int);
- void zadanie();
- void main() {
- int kod, kod_edit, edit_number;
- Ft = _fsopen(ft_name, "w", _SH_DENYWR);
- //fopen_s(&Ft, ft_name, "w");
- while (1) {
- puts("\n1 - Create\t2 - View\t3 - Edit\t4 - Zadanie\t0 - Exit\n");
- puts("Input the code here: ");
- scanf_s("%d", &kod);
- switch (kod) {
- case 0:
- fclose(Ft);
- return;
- case 1: // Create File
- create();
- if (!Fs) {
- puts("\nCreate Error!");
- return;
- }
- break;
- case 2: // View
- if (!view()) {
- puts("\n\nError View!\n");
- return;
- }
- break;
- case 3: // Edit
- puts("\n1 - Add\t2 - Edit\n");
- scanf_s("%d", &kod_edit);
- switch (kod_edit) {
- case 1: // Add new record
- add();
- puts("Add a new line");
- break;
- case 2:
- // Edit record
- view();
- printf("\n\nVvedite nomer izmenyaemoj zapisi:\t");
- scanf_s("%d", &edit_number);
- edit(edit_number);
- break;
- }
- break;
- case 4:
- zadanie();
- break;
- }
- }
- _getch();
- }
- void create() {
- fopen_s(&Fs, fs_name, "wb");
- puts("\nFile Created!\n");
- fclose(Fs);
- }
- void add() {
- Students student1;
- double fiz, mat, inf, khi, sball;
- fflush(stdin);
- cout << "Please, enter your FIO - ";
- cin.getline(student.FIO, 30);
- printf("\nBirthday Year, Number Group - ");
- scanf_s("%d %d", &student.year_birthday, &student.num_group);
- printf("\nInput Balls: fizik, matem, informatic, khimya - ");
- scanf_s("%d %d %d %d", &student.balls[0], &student.balls[1],
- &student.balls[2], &student.balls[3]);
- fiz = student.balls[0];
- mat = student.balls[1];
- inf = student.balls[2];
- khi = student.balls[3];
- sball = (fiz + mat + inf + khi) / 4;
- printf("%6.2lf", sball);
- student.s_ball = sball;
- Fs = _fsopen(fs_name, "ab", _SH_DENYWR);
- //fopen_s(&Fs, fs_name, "ab");
- fwrite(&student, size_of_type, 1, Fs);
- fclose(Fs);
- }
- bool view() {
- int i = 1;
- fopen_s(&Fs, fs_name, "rb");
- if (!Fs)
- return false;
- printf("\n\t--------------- Informations ---------------\n");
- fprintf(Ft, "\n\n\n\t--------------- Informations ---------------\n");
- while (1) {
- if (!fread(&student, size_of_type, 1, Fs)) break;
- out(student, i);
- i++;
- }
- puts("\n\n\n");
- fclose(Fs);
- return true;
- }
- void out(Students s, int i = 0) {
- 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);
- 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);
- }
- void edit(int edit_number) {
- Students *st, newStudent;
- int descriptor, i, kol;
- long len;
- printf("\nEdit student:\nFIO - ");
- fflush(stdin);
- cin.getline(newStudent.FIO, 30);
- printf("\nBirthday Year, Number Group - ");
- scanf_s("%d %d", &newStudent.year_birthday, &newStudent.num_group);
- printf("\nInput Balls: fizik, matem, informatic, khimya - ");
- scanf_s("%d %d %d %d", &newStudent.balls[0], &newStudent.balls[1], &newStudent.balls[2], &newStudent.balls[3]);
- newStudent.s_ball = (newStudent.balls[0] + newStudent.balls[1] + newStudent.balls[2] + newStudent.balls[3]) / 4;
- Fs = _fsopen(fs_name, "rb", _SH_DENYWR);
- //fopen_s(&Fs, fs_name, "rb");
- descriptor = _fileno(Fs);
- len = _filelength(descriptor);
- kol = len / size_of_type;
- st = new Students[kol];
- for (i = 0; i<kol; i++) {
- fread((st + i), size_of_type, 1, Fs);
- }
- fclose(Fs);
- st[edit_number - 1] = newStudent;
- for (i = 0; i<kol; i++)
- out(st[i], i + 1);
- save(st, kol);
- delete[]st;
- }
- void save(Students *st, int num) {
- int i;
- Fs = _fsopen(fs_name, "wb", _SH_DENYWR);
- //fopen_s(&Fs, fs_name, "wb");
- for (i = 0; i<num; i++)
- fwrite(&st[i], size_of_type, 1, Fs);
- fclose(Fs);
- }
- void zadanie() {
- Students *st;
- int descriptor, i, j = 0, kol;
- long len;
- printf("\n ------- Studenti sdavwie sesiyu na fizic 4 or 5 and other > 8 ------- ");
- fprintf(Ft, "\n ------- Studenti sdavwie sesiyu na fizic 4 or 5 and other > 8------- ");
- Fs = _fsopen(fs_name, "rb", _SH_DENYWR);
- //fopen_s(&Fs, fs_name, "rb");
- descriptor = _fileno(Fs);
- len = _filelength(descriptor);
- kol = len / size_of_type;
- st = new Students[kol];
- for (i = 0; i<kol; i++) {
- fread((st + i), size_of_type, 1, Fs);
- }
- fclose(Fs);
- for (i = 0; i<kol; i++) {
- 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)
- out(st[i], 0);
- }
- delete[]st;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement