- •Національний університет державної податкової служби україни
- •Календарний план
- •Опис завдання
- •Постановка задачі
- •Код програми на мові с
- •Результати дослідження у вигляді копій відповідних екранних вікон програмного середовища
- •Оцінка результатів виконання програми
- •Висновок
- •Список використаної ЛітературИ
Опис завдання
Завдання № 15
Створити типований файл записів, який містить дані про підсумки зимової сесії Вашої групи. Поля запису – прізвище, 5 екзаменаційних оцінок, 4 заліки.
Довідки для пошуку:
студентів, які склали іспити на “відмінно” і “добре”;
студентів, що мають академзаборгованості;
назви дисципліни, яку здали найкраще.
Постановка задачі
У завданні потрібно створити інформаційно-пошукову систему за допомогою мови програмування С з виконанням усіх поставлених вимог, щодо системи. Для досягнення результатів у цього завданні необхідно використати такі інструменти програмування мовою С, як:
умови;
масиви;
рядки;
функції;
структури і т. д.
Результатом виконання поставленого завдання мають бути таблиці з верхівками в яких передбачено ПІБ студента, та оцінки за 5 екзаменів та 4 заліки.
Також необхідно створити файл з внесеною в нього необхідною інформацією.
Код програми на мові с
#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(" —————————————————————————————————————————————————————————————————————————————— ");
}
