Курсова робота Створення інформаційно-пошукової системи за допомогою мови програмування С - Завдання №15
Код роботи: 4890
Вид роботи: Курсова робота
Предмет: Програмування (мова програмування С)
Тема: Створення інформаційно-пошукової системи за допомогою мови програмування С - Завдання №15
Кількість сторінок: 29
Дата виконання: 2018
Мова написання: українська
Ціна: безкоштовно
ВСТУП
1. Опис завдання
2. Постановка задачі
3. Код програми на мові С
4. Результати дослідження у вигляді копій відповідних екранних вікон програмного середовища
5. Оцінка результатів виконання програми
ВИСНОВОК
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
Курсова робота – це самостійне навчально-наукове дослідження студента, яке виконується з певного курсу або з окремих його розділів.
Виконання курсових робіт направлене на досягнення наступних цілей:
- ґрунтовне засвоєння згідно з завданням керівника необхідного теоретичного матеріалу та закріплення навичок формалізації, розробки математичної моделі та алгоритму рішення задачі, створення розрахункової програми в програмуючому середовищі, тестування та аналізу результатів виконання програми;
- уміння використовувати одержані знання в конкретній ситуації;
- уміння теоретично обґрунтувати одержані результати;
- здатність чітко формулювати одержані результати та робити з них висновки: грамотно, без помилок, написати текст роботи відповідно до правил оформлення наукової документації;
- уміння логічно побудувати доповідь, захистити сформульовані положення та висновки;
- проявити здібності до самостійного пошуку розв'язання задачі.
Курсова робота оформляється згідно з ГОСТом 7.32-81 «Отчет о научно-исследовательской работе, общие требования и правила оформления»; ГОСТ 2.105-68 «Общие требования к текстовым документам» і ГОСТ 2.106-68 «ЕСКД текстовые документи».
Метою написання курсової роботи є набуття практики роботи над задачами на порядок більш складними, ніж стандартні. Передбачається обов'язкова робота з літературою, вивчення необхідних розділів самостійно, адаптація відомих засобів програмування для розв'язування конкретних задач з особливостями, комбінування різних методів та інструментальних засобів, застосування у комплексних задачах знань з різних розділів курсу тощо.
Розв'язання задачі за допомогою алгоритмічної мови передбачає наступні дії:
- визначення постановки задачі;
- створення програми на мові програмування;
- наладка та виконання програми за допомогою середовища розробки;
- тестування та аналіз результатів виконання програми.
Набув практики роботи над задачами на порядок більш складними, ніж стандартні. Вивчив необхідні розділи самостійно, адаптувала відомі засоби програмування для розв'язування конкретних задач з особливостями, комбінував різні методи та інструментальні засоби, застосував у комплексних задачах знань з різних розділів курсу тощо.
1. Беспалов В. М., Вакула А. Ю., Гострик А. М. та ін.: Інформатика для економістів: Навчальний посібник. - К.: ЦУЛ, 2003. – 788 с.
2. Березин Б. И., Березин С. Б.: Начальный курс С и С++. – М.: Диалог-МИФИ, 2004. – 288 с.
3. Дональд Э. Кнут. Искусство программирования, том 1. Основные алгоритмы, 3-е из.: Пер. с англ. - М.: Издательский дом «Вильямс», 2007. – 720 с.
4. Глинський Я. М.: Практикум з інформатики. Навч. посібн. 7-е вид. - Львів: Деол, СПД Глинський, 2004. – 224 с.
5. Глинський Я. М., Анохін В. Є., Ряжська В. А.: С++ і C++Builder. Навч.посібн. 2-е вид. - Львів:Деол, СПД Глинський, 2004. – 192 с.
6. Культин Н. Б. С/С++ в задачах и примерах. СПб.: БХВ-Петербург, 2004. – 288 с.
7. Павловская Т. А., Щупак Ю. А. С/С++. Структурное программирование: Практикум. СПб.: Питер, 2005. – 239 с.
8. Подбельский В. В., Фомин С. С. Программирование на языке Си: Учеб. пособие. -2-е доп. изд. – М.: Финансы и статистика, 2000. – 600 с.
9. Постіл С. Д. Основи програмування та алгоритмичні мови: Опорний конспект лекцій. НУДПСУ. Ірпінь, 49 с.
10. Постіл С. Д. Алгоритми. Структура та наладка лінійної програми. Створення лінійної програми, вхідні дані для якої задаються самостійно із клавіатури: Методична розробка до виконання лабораторних, практичних, індивідуальних та курсової робіт. 2007 р. НУДПСУ.
11. Симонович С. В. Информатика. Базовый курс. - СПб: Питер, 2000. – 640 с.
12. Страуструп Б. Язык программирования С++. Специальное издание. Пер. с англ. – М.: ООО «Бином-Прес», 2005. – 1104 с.
КАЛЕНДАРНИЙ ПЛАН
№ п/п |
Назва етапів магістерської роботи |
Строк виконання етапів роботи |
Примітка |
1. |
Вибір теми, вивчення літературних джерел та складання плану роботи |
3-й місяць (1-й семестр) |
|
2. |
Підготовка 35% курсової роботи та подання її керівнику (формалізація та постановка задачі) |
4-й місяць (1-й семестр) |
|
3. |
Підготовка 70% курсової роботи та подання керівнику (алгоритм та текст програми) |
2-й місяць (2-й семестр) |
|
4. |
Підготовка 100% курсової роботи та подання керівнику (алгоритм тестування, тестові завдання, виконання програми) |
3-й місяць (2-й семестр) |
|
5. |
Доопрацювання роботи з урахуванням зауважень керівника |
4-й місяць (2-й семестр) |
|
6. |
Захист курсової роботи |
Останній місяць (2 семестр) |
|
1. Опис завдання
Завдання №15
Створити типований файл записів, який містить дані про підсумки зимової сесії Вашої групи. Поля запису – прізвище, 5 екзаменаційних оцінок, 4 заліки.
Довідки для пошуку:
- студентів, які склали іспити на “відмінно” і “добре”;
- студентів, що мають академзаборгованості;
- назви дисципліни, яку здали найкраще.
2. Постановка задачі
У завданні потрібно створити інформаційно-пошукову систему за допомогою мови програмування С з виконанням усіх поставлених вимог, щодо системи. Для досягнення результатів у цього завданні необхідно використати такі інструменти програмування мовою С, як:
- умови;
- масиви;
- рядки;
- функції;
- структури і т. д.
Результатом виконання поставленого завдання мають бути таблиці з верхівками в яких передбачено ПІБ студента, та оцінки за 5 екзаменів та 4 заліки.
Також необхідно створити файл з внесеною в нього необхідною інформацією.
3. Код програми на мові С
#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(" —————————— ");
}
4. Результати дослідження у вигляді копій відповідних екранних вікон програмного середовища
4.1. Екранні вікна середовища розробки Dev-C++ 4.9.9.2 з налагодженою програмою
Рис. 1 - Код програми у середовища розробки Dev-C++ 4.9.9.2(початок)
Рис. 2 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 3 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 4 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 5 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 6 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 7 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 8 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (продовження)
Рис. 9 - Код програми у середовища розробки Dev-C++ 4.9.9.2 (кінець)
4.2. Екранні вікна середовища розробки Dev-C++ 4.9.9.2 з результатами виконання програми
Рис. 10 - Головне меню
Рис. 11 - Таблиця усіх записів у файлі
Рис. 12 - Виконання першої поставленої довідки у таблиці
Рис. 13 - Виконання другої поставленої довідки у таблиці
Рис. 14 - Результат виконання пункту «Виведення назви дисципліни, яку здали найкраще»
5. Оцінка результатів виконання програми
Дана інформаційно-пошукова система цілком виконую поставлені завдання(довідки) з урахуванням усіх умов. Також результати виконання пунктів представлено в таблицях, що є результатом повного виконання поставленого завдання.