Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. КУРСОВА РОБОТА.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆
  1. Опис завдання

Завдання № 15

Створити типований файл записів, який містить дані про підсумки зимової сесії Вашої групи. Поля запису – прізвище, 5 екзаменаційних оцінок, 4 заліки.

Довідки для пошуку:

  • студентів, які склали іспити на “відмінно” і “добре”;

  • студентів, що мають академзаборгованості;

  • назви дисципліни, яку здали найкраще.

  1. Постановка задачі

У завданні потрібно створити інформаційно-пошукову систему за допомогою мови програмування С з виконанням усіх поставлених вимог, щодо системи. Для досягнення результатів у цього завданні необхідно використати такі інструменти програмування мовою С, як:

  • умови;

  • масиви;

  • рядки;

  • функції;

  • структури і т. д.

Результатом виконання поставленого завдання мають бути таблиці з верхівками в яких передбачено ПІБ студента, та оцінки за 5 екзаменів та 4 заліки.

Також необхідно створити файл з внесеною в нього необхідною інформацією.

  1. Код програми на мові с

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <stdbool.h>

#include <windows.h>

FILE *f1;

typedef struct

{

char pib[30];

int ekz_pr1; // Оцінка за екзамен з предмету 1

int ekz_pr2; // Оцінка за екзамен з предмету 2

int ekz_pr3; // Оцінка за екзамен з предмету 3

int ekz_pr4; // Оцінка за екзамен з предмету 4

int ekz_pr5; // Оцінка за екзамен з предмету 5

int z_pr6; // Оцінка за екзамен з предмету 6

int z_pr7; // Оцінка за екзамен з предмету 7

int z_pr8; // Оцінка за екзамен з предмету 8

int z_pr9; // Оцінка за екзамен з предмету 9

} SSesiya;

SSesiya sesiya[80]; // Масив структур

char name[20]; // Ім’я файлу

int kst=0; //Кількість введених структур

int menu(); // Меню

void crwf(); // Створити та заповнити файл

void vf(); // Відкрити файл

void vz(); // Вивести всі записи

void dov1(); // Вивести студентів, які склали іспити на “відмінно” і “добре”

void dov2(); // Вивести студентів, що мають академзаборгованість

void dov3(); // Вивести назву дисципліни, яку здали найкраще

char pr1[10]="АІП"; // Предмет 1

char pr2[10]="Фізика"; // Предмет 2

char pr3[10]="ПІС"; // Предмет 3

char pr4[10]="Історія "; // Предмет 4

char pr5[10]="Вища_мат."; // Предмет 5

char pr6[10]="Екологія"; // Предмет 6

char pr7[10]="БЖД"; // Предмет 7

char pr8[10]="Анг.мова"; // Предмет 8

char pr9[10]="Фіз.вих."; // Предмет 9

int main()

{

SetConsoleCP(1251); SetConsoleOutputCP(1251); // Робота з кирилицею + Lucida Console â Console

while (true)

{

switch (menu())

{

case 1: crwf(); break;

case 2: vf(); break;

case 3: vz(); break;

case 4: dov1(); break;

case 5: dov2(); break;

case 6: dov3(); break;

case 7: return 0;

default: "error!";

}

puts("Press any key to continue");

getch(); system("cls");

}

}

int menu() // Меню

{

puts("\n\n\n\t\t\t Інформаційно-пошукова система ");

puts("\n\t1. Створити та заповнити файл ");

puts("\t2. Відкрити файл ");

puts("\t3. Вивести всі записи ");

puts("\t4. Вивести студентів, які склали іспити на “відмінно” і “добре”);

puts("\t5. Вивести студентів, що мають академзаборгованість ");

puts("\t6. Вивести назву дисципліни, яку здали найкраще ");

puts("\t7. Вихід");

printf("\n\t Пункт: ");

int i;

scanf("%d",&i);

return i;

}

void crwf() // Створити та заповнити файл

{

system("cls");

//*** Ввести ім’я файлу ***

fflush(stdin);

printf("Ведіть ім’я файлу: ");

gets(name);

//*** Створити файл ***

if((f1 = fopen(name,"wb"))==NULL)

{

puts("create error");

exit(1);

}

puts("OK");

//*** Ввести дані ***

if((f1 = fopen(name,"rb+"))==NULL)

{

puts("create error");

exit(1);

}

printf("Введіть кількість студентів: ");

scanf("%d",&kst);

int i;

for(i=0; i<kst; i++)

{

fflush(stdin);

printf("Введіть ПІБ: ");

gets(sesiya[i].pib);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr1);

scanf("%d",&sesiya[i].ekz_pr1);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr2);

scanf("%d",&sesiya[i].ekz_pr2);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr3);

scanf("%d",&sesiya[i].ekz_pr3);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr4);

scanf("%d",&sesiya[i].ekz_pr4);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr5);

scanf("%d",&sesiya[i].ekz_pr5);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr6);

scanf("%d",&sesiya[i].z_pr6);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr7);

scanf("%d",&sesiya[i].z_pr7);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr8);

scanf("%d",&sesiya[i].z_pr8);

fflush(stdin);

printf("Введіть оцінку за предмет %s: ",pr9);

scanf("%d",&sesiya[i].z_pr9);

fwrite( &sesiya[i], sizeof(SSesiya), 1, f1 );

}

fclose(f1);

}

void vf() // Відкрити файл

{

system("cls");

//*** Ввести ім’я файлу ***

fflush(stdin);

puts("Введіть ім’я файлу ");

gets(name);

}

void vz() // Вивести всі записи

{

system("cls");

if((f1 = fopen(name,"rb"))==NULL)

{

puts("create error");

exit(1);

}

kst=0; SSesiya std;

printf("\t\t\t<<<<<<<<< Усі записи у файлі >>>>>>>>>\n");

printf(" —————————————————————————————————————————————————————————————————————————————— ");

printf("| ПІБ | ПР1 | ПР2 | ПР3 | ПР4 | ПР5 | ПР6 | ПР7 | ПР8 | ПР9 |");

printf("|——————————————————————————————————————————————————————————————————————————————|");

while(true)

{

int nwrt = fread( &std, sizeof(SSesiya), 1, f1 );

if(nwrt!=1) break;

sesiya[kst]=std;

printf("|%-24s|%5d|%5d|%5d|",sesiya[kst].pib,sesiya[kst].ekz_pr1,sesiya[kst].ekz_pr2,sesiya[kst].ekz_pr3);

printf("%5d|%5d|%5d|",sesiya[kst].ekz_pr4,sesiya[kst].ekz_pr5,sesiya[kst].z_pr6);

printf("%5d|%5d|%5d|",sesiya[kst].z_pr7,sesiya[kst].z_pr8,sesiya[kst].z_pr9);

kst++;

}

printf(" —————————————————————————————————————————————————————————————————————————————— ");

fclose(f1);

}

void dov1() // Вивести студентів, які склали іспити на “відмінно” і “добре”

{

system("cls");

printf(" <<<<<<<<< Студенти, які склали іспити на “відмінно” і “добре” >>>>>>>>>\n");

printf(" —————————————————————————————————————————————————————————————————————————————— ");

printf("| ПІБ | ПР1 | ПР2 | ПР3 | ПР4 | ПР5 | ПР6 | ПР7 | ПР8 | ПР9 |");

printf("|——————————————————————————————————————————————————————————————————————————————|");

int i;

for(i=0; i<kst; i++)

if(sesiya[i].ekz_pr1>3&&sesiya[i].ekz_pr2>3&&sesiya[i].ekz_pr3>3&&sesiya[i].ekz_pr4>3&&sesiya[i].ekz_pr5>3)

{

printf("|%-24s|%5d|%5d|%5d|",sesiya[i].pib,sesiya[i].ekz_pr1,sesiya[i].ekz_pr2,sesiya[i].ekz_pr3);

printf("%5d|%5d|%5d|",sesiya[i].ekz_pr4,sesiya[i].ekz_pr5,sesiya[i].z_pr6);

printf("%5d|%5d|%5d|",sesiya[i].z_pr7,sesiya[i].z_pr8,sesiya[i].z_pr9);

}

printf(" —————————————————————————————————————————————————————————————————————————————— ");

}

void dov2() // Вивести студентів, що мають академзаборгованість

{

system("cls");

printf(" <<<<<<<<< Студенти, що мають академзаборгованість >>>>>>>>>\n");

printf(" —————————————————————————————————————————————————————————————————————————————— ");

printf("| ПІБ | ПР1 | ПР2 | ПР3 | ПР4 | ПР5 | ПР6 | ПР7 | ПР8 | ПР9 printf("|——————————————————————————————————————————————————————————————————————————————|");

int i;

for(i=0; i<kst; i++)

if(sesiya[i].ekz_pr1<3||sesiya[i].ekz_pr2<3||sesiya[i].ekz_pr3<3||sesiya[i].ekz_pr4<3||sesiya[i].ekz_pr5<3||sesiya[i].z_pr6<3||sesiya[i].z_pr7<3||sesiya[i].z_pr8<3||sesiya[i].z_pr9<3)

{

printf("|%-24s|%5d|%5d|%5d|",sesiya[i].pib,sesiya[i].ekz_pr1,sesiya[i].ekz_pr2,sesiya[i].ekz_pr3);

printf("%5d|%5d|%5d|",sesiya[i].ekz_pr4,sesiya[i].ekz_pr5,sesiya[i].z_pr6);

printf("%5d|%5d|%5d|",sesiya[i].z_pr7,sesiya[i].z_pr8,sesiya[i].z_pr9);

}

printf(" —————————————————————————————————————————————————————————————————————————————— ");

}

void dov3() // Вивести назву дисципліни, яку здали найкраще

{

system("cls");

printf(" <<<<<<<<< Назва дисципліни, яку здали найкраще >>>>>>>>>\n");

printf(" —————————————————————————————————————————————————————————————————————————————— ");

int sum[9];

int max;

char best[10];

int i;

int k;

sum[0]=sesiya[i].ekz_pr1;

sum[1]=sesiya[i].ekz_pr2;

sum[2]=sesiya[i].ekz_pr3;

sum[3]=sesiya[i].ekz_pr4;

sum[4]=sesiya[i].ekz_pr5;

sum[5]=sesiya[i].z_pr6;

sum[6]=sesiya[i].z_pr7;

sum[7]=sesiya[i].z_pr8;

sum[8]=sesiya[i].z_pr9;

for(i=1; i<kst; i++)

{

sum[0]+=sesiya[i].ekz_pr1;

sum[1]+=sesiya[i].ekz_pr2;

sum[2]+=sesiya[i].ekz_pr3;

sum[3]+=sesiya[i].ekz_pr4;

sum[4]+=sesiya[i].ekz_pr5;

sum[5]+=sesiya[i].z_pr6;

sum[6]+=sesiya[i].z_pr7;

sum[7]+=sesiya[i].z_pr8;

sum[8]+=sesiya[i].z_pr9;

}

max=sum[0];

k=0;

for(i=0; i<9; i++)

if(sum[i]>max)

{

max=sum[i];

k=i;

}

switch (k)

{

case 0: strcpy(best,pr1); break;

case 1: strcpy(best,pr2); break;

case 2: strcpy(best,pr3); break;

case 3: strcpy(best,pr4); break;

case 4: strcpy(best,pr5); break;

case 5: strcpy(best,pr6); break;

case 6: strcpy(best,pr7); break;

case 7: strcpy(best,pr8); break;

case 8: strcpy(best,pr9); break;

default: "error!";

}

printf("| %10s |",best);

printf(" —————————————————————————————————————————————————————————————————————————————— ");

}