. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учеб.пособие. - М.: Нолидж, 2010. -612с.
. Фаронов В.В. Турбо Паскаль 7.0.Практика программирования: Учеб.пособие. - / М.: Нолидж, 2013. -429 с.
. Хэнкок Л.,/ Кригер М. Введение в программирование на языке Си.- / М.: Радио и связь, 2006.-220с.
. Шикова О.М. Основи програмування мовою С++ у
прикладах і завданнях: навч. посібник / Шикова О. М. - / К.: МАУП, 2004. - 112
с.
Додаток А
Код пронрами
// k5.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#ifdef WIN32
#include <windows.h>
#endif
//prototipyi functsiyZastBeg();ViewDB();CreateDB();AddToDB();SearchInDB();SortDB();Exit();ZastEnd();Get(int min, int max);record
{num;surn[20];name[300];ats;
};
//------------------------------------------MENU-------------------------------
#ifdef WIN32wherey (void)
{_SCREEN_BUFFER_INFO conScrBufInfo;(GetStdHandle(STD_OUTPUT_HANDLE), &conScrBufInfo);conScrBufInfo.dwCursorPosition.Y - conScrBufInfo.srWindow.Top;
}gotoxy(short x, short y) {hConsoleOutput;Cursor_Pos = {x, y};= GetStdHandle(STD_OUTPUT_HANDLE);(hConsoleOutput, Cursor_Pos);
}clrscr(void) {_SCREEN_BUFFER_INFO csbi;hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);coord = {0, 0};count;(hStdOut, &csbi);(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count);(hStdOut, coord);
}
#endifMenu()
{ setlocale (LC_ALL,"Russian");();("*Mеню*");("\n-> Перегляд довiдника");("\n Створення довiдника термiнiв");("\n Додати визначення в довiдник");("\n Пошук визначення по розділах");("\n Сортування даних у довіднику по роздiлах");("\n Вихiд iз програми");("\n\n\n Перемiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");p = 1;m = getch();(m == 13) ViewDB();{(m == 80) p++;(m == 72) p--;{(p<=0) p = p+6;
}while (p<=0);{(p>=7) p = p-6;
}while (p>=7);(p == 1){();("*Mеню*");("\n-> Перегляд довiдника");("\n Створення довiдника термiнiв");("\n Додати визначення в довiдник");("\n Пошук визначення по розділах");("\n Сортування даних у довіднику по роздiлах");("\n Вихiд iз програми");("\n\n\nПеремiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");= getch();
}(p == 3){();("*Меню*");("\n Перегляд довiдника");("\n Створення довiдника термiнiв");("\n-> Додати визначення в довiдник");("\n Пошук визначення по розділах");("\n Сортування даних у довіднику по роздiлах");("\n Вихiд iз програми");("\n\n\nПеремiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");= getch();
}(p == 4){();("*Меню*");("\n Перегляд довiдника");("\n Створення довiдника термiнiв");("\n Додати визначення в довiдник");("\n-> Пошук визначення по розділах");("\n Сортування даних у довіднику по роздiлах");("\n Вихiд iз програми");("\n\n\nПеремiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");= getch();
}(p == 5){();("*Меню*");("\n Перегляд довiдника");("\n Створення довiдника термiнiв");("\n Додати визначення в довiдник");("\n Пошук визначення по розділах");("\n-> Сортування даних у довіднику по роздiлах");("\n Вихiд iз програми");("\n\n\nПеремiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");= getch();
}(p == 6){();("*Меню*");("\n Перегляд довiдника");("\n Створення довiдника термiнiв");("\n Додати визначення в довiдник");("\n Пошук визначення по розділах");("\n Сортування даних у довіднику по роздiлах");("\n-> Вихiд iз програми");("\n\n\nПеремiщення - стрiлки вверх i вниз");("\n Вибiр пункту меню - <Enter>");= getch();
}
}while(m!=13);p;
}
//---------------------------------------ZAST_BEG------------------------------ZastBeg()
{("\n\n\n\n\n \t\t\t\t Курсова робота");("\n \t\t\t з дисциплiни 'Програмування'");("\n \t\t\t\t на тему:");("\n \t‘Створення електронного довідника дисципліни 'Програмування'’");("\n \t\t\t виконав студент групи ОКСМ-21");("\n \t\t\t\t Ковдра Василь");("\n\n\n\n \t <Esc> - вихiд, продовжити роботу - будь-яка iнша клавiша \n\n\n\n\n\n\n\n\n");c = getch();c;
}
//--------------------------------------ZAST_END-------------------------------ZastEnd()
{();("\n\n\n\n\n \t Електронний довiдник з дисциплiни ‘Програмування’");("\n \t успiшно закритий. Дякую за його використання!");("\n\n\n\n \t Для виходу з програми натиснiть будь-яку клавiшу.");();
}
//---------------------------------------EXIT----------------------------------Exit()
{();("\n\n \t\t Дiйсно вийти з програми?");("\n\n <Enter> - вийти в ОС, <Esc> - продовжити роботу з програмою.");c;
{= getch();
}while(c!= 13 && c != 27);c;
}
//---------------------------------------MAIN----------------------------------main()
{setlocale (LC_ALL,"Russian");(ZastBeg() != 27)
{z;
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}break;
}
}while(z == 1);
}ZastEnd();0;
}
//---------------------------------------VIEWDB--------------------------------ViewDB()
{setlocale (LC_ALL,"Russian");*f=fopen("db.txt", "r+t");*num=fopen("num.txt", "r+t");(f == NULL || num == NULL)
{();("\n \t Не вдається вiдкрити файл електронного довiдника!");("\n \t Натиснiть будь-яку клавiшу для виходу в меню.");();
}
{record recz[100];i, kol;
//poluchenie kol-va zapisej((int*)&kol, 1, sizeof(kol), num);
//zapolnenie massiva zapisjami iz faila(i=0;i<kol;i++)
{(f, sizeof(recz[i])*i, 0);((char*)&recz[i], 1, sizeof(recz[i]), f);
}
//prosmotr zapisej iz poluchennogo massivaa, k = 0;
{();("*Перегляд довiдника*");("\n\n Запис № %i", recz[k].num);("\n Визначення: %s - %s ", recz[k].surn, recz[k].name);("\n Номер роздiлу до якого належить визначення -> %i", recz[k].ats);(kol == 1) //v baze vsego 1 zapis'
{("\n\n Бiльше записiв не знайдено!");("\n Натиснiть будь-яку клавiшу для виходу в меню.");();= 101;
}
{(k == 0)
{("\n\n Стрiлка вниз - наступний запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 80 && a != 27);(a == 80) k++;k = 101;
}
{(k == kol - 1)
{("\n\n Стрiлка вверх - попереднiй запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 27);(a == 72) k--;k = 101;
}
{(k > 0 && k < kol)
{("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 80 && a != 27);(a == 80) k++;(a == 72) k--;(a == 27) k = 101;
}
}while(k != 101);
}(f);(num);
z;
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}break;
}
}while(z == 1);
();
}
//--------------------------------------CREATEDB-------------------------------CreateDB()
{setlocale (LC_ALL,"Russian");();("Ви дiйсно хочете створити новий електронний довiдник?");("\n <Enter> - так, <Esc> - нi");d;
}while(d != 13 && d != 27);(d == 13)
{*f=fopen("db.txt", "wb");*num=fopen("num.txt", "wb");record rec[100];i, j;(i = 0; i < 100; i++)
{();(LC_ALL,"Russian");("*Створення довiдника термiнiв*\n\n");[i].num = i+1;
//podtverzhdenniy vvod термыну("\nВведiть термiн -> ");(stdin, "%s", &rec[i].surn);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели термiн: '%s'. <Esc> - повторiть ввiд. ", rec[i].surn);("\n<Enter> - термiн введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\nВведiть заново ->");(stdin, "%s", &rec[i].surn);(stdin);
}
}while(j == 27);
//podtverzhdenniy vvod визначення("\n\n Введiть визначення -> ");(stdin, "%s", &rec[i].name);(1,wherey()+1);
{(1,wherey()-2);("Ви ввели визначення: '%s'. <Esc> - повторiть ввiд. ", rec[i].name);("\n <Enter> - визначення введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");(stdin, "%s", &rec[i].name);(stdin);
}
}while(j == 27);
//podtverzhdenniy kontrolliruemiy vvod nomera ats("\n\n Введiть номер роздiлу до якого належить дане визначення:(число вiд 1 до 9):");("\n \t 1. Основи мови С++; ");("\n \t 2. Лiнiйнi програми;");("\n \t 3. Розгалуження;");("\n \t 4. Цикли;");("\n \t 5. Масиви;");("\n \t 6. Функцiї;");("\n \t 7. Файли;");("\n \t 8. Рядки;");("\n \t 9. Структури, списки, стеки, черги, об’єднання, графiка.");("\n\n Введiть число вiд 1 до 9: ");[i].ats = Get(1, 9);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели № розділу: '%d'. <Esc> - повторний ввiд. ", rec[i].ats);("\n <Enter> - Номер роздiлу введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");[i].ats = Get(1, 999);
}
}while(j == 27);((char*)&rec[i], 1, sizeof(rec[i]), f);("\n\n <Enter> - продовження, <Esc> - вихiд в меню\n");
{= getch();
}while(j != 13 && j != 27);(j == 27)
{kol = i + 1;((int*)&kol, 1, sizeof(kol), num);;
}
}();(f);(num);
}z;
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}break;
}
}while(z == 1);();
}
//--------------------------------------ADDTODB--------------------------------AddToDB()
{setlocale (LC_ALL,"Russian");();("\n Ви дiйсно хочете добавити новий запис в електронний довiдник?");("\n <Enter> - так, <Esc> - нi");d, z;
{= getch();
}while(d != 13 && d != 27);(d == 13)
{*f=fopen("db.txt", "ab");*num=fopen("num.txt", "r+b");c;(num == NULL)
{(f); //();("\n Електронний довiдник не iснує!");("\n <Esc> - Створення довiдника термiнiв, <Enter> - вихiд в меню");
{= getch();
}while(c != 13 && c != 27);(c == 27) CreateDB();
}
//esli file s bazoj naiden
{kol;((int*)&kol, 1, sizeof(kol), num);(kol == 100)
{("Електронний довiдник заповнений. Додати визначення неможливо!");("Натиснiть будь-яку клавiшу для виходу в меню!");();
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}
}
}while(z == 1);();
}record newrec;j;();("*Додавання визначення в електронний довiдник*\n\n");.num = kol + 1;
//podtverzhdenniy vvod familii("\n Термiн -> ");(stdin, "%s", &newrec.surn);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели термiн: '%s'. <Esc> - повторний ввiд. ", newrec.surn);("\n <Enter> - термiн введений вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");(stdin, "%s", &newrec.surn);(stdin);
}
}while(j == 27);
//podtverzhdenniy vvod imeni
("\n\n Введiть визначення -> ");(stdin, "%s", &newrec.name);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели визначення: '%s'. <Esc> - повторний ввiд. ", newrec.name);("\n <Enter> - визначення введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");(stdin, "%s", &newrec.name);(stdin);
}
//podtverzhdenniy kontrolliruemiy vvod nomera ats("\n\n Введiть номер роздiлу до якого належить дане визначення:(число вiд 1 до 9):");("\n \t 1. Основи мови С++; ");("\n \t 2. Лiнiйнi програми;");("\n \t 3. Розгалуження;");("\n \t 4. Цикли;");("\n \t 5. Масиви;");("\n \t 6. Функцiї;");("\n \t 7. Файли;");("\n \t 8. Рядки;");("\n \t 9. Структури, списки, стеки, черги, об’єднання, графiка.");("\n\n Введiть число вiд 1 до 9: ");.ats = Get(1, 9);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели № роздiлу: '%d'. <Esc> - повторний ввiд. ", newrec.ats);("\n <Enter> - номер роздiлу введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");.ats = Get(1, 9);
}
}while(j == 27);((char*)&newrec, 1, sizeof(newrec), f);++;(num, 0, 0);((int*)&kol, 1, sizeof(kol), num);(f);(num);("\n\n Запис добавлений!");("\n Натиснiть будь-яку клавiшу для виходу в меню");();
}
}
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}break;
}
}while(z == 1);
();
}
//-----------------------------------SEARCHINDB--------------------------------SearchInDB()
{setlocale (LC_ALL,"Russian");*f=fopen("db.txt", "r+t");*num=fopen("num.txt", "r+t");j, o;(f == NULL || num == NULL)
{();("\n Не вдається вiдкрити файл електронного довiдника!");("\n Натиснiть будь-яку клавiшу для виходу в меню");();
}
{record recz[100];i, kol;((int*)&kol, 1, sizeof(kol), num);
//zapolnenie massiva zapisjami iz faila(i=0;i<kol;i++)
{(f, sizeof(recz[i])*i, 0);((char*)&recz[i], 1, sizeof(recz[i]), f);
}();("*Пошук записiв по номеру роздiлу*");sats; //kluch dlja poiska("\n\n Введiть № роздiлу для пошуку (число вiд 1 до 9)-> ");= Get(1, 9);(1,wherey()+1);
{(1,wherey()-2);("\n Ви ввели № роздiлу: '%i'. <Esc> - повторний ввiд. ", sats);("\n <Enter> - номер роздiлу введено вiрно. ");
{= getch();
}while(j != 13 && j != 27);(j != 13)
{("\n Введiть заново ->");= Get(1, 9);
}
}while(j == 27);record srec[100];z, s = 0;(z=0;z<kol;z++)
{(recz[z].ats == sats)
{[s] = recz[z];++;
}
}(s == 0) //esli ne naideno ni odnoj zapisi
{();("\n Записiв з таким номером роздiлу не знайдено!");("\n Натиснiть будь-яку клавiшу для виходу в меню");();
}
{a;= 0;
{();("\n *Пошук записiв з номером роздiлу = %i*", sats);("\n Запис №%i", srec[i].num);("\n Визначення: -> %s - %s ", srec[i].surn, srec[i].name);("\n № роздiлу -> %i", srec[i].ats);(s == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
{("\n\n Бiльше записiв не знайдено");("\n Натиснiть будь-яку клавiшу для виходу в меню");();= 101;
}(i == 0)
{("\n\n Стрiлка вниз - наступний запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 80 && a != 27);(a == 80) i++;i = 101;
}
{(i == s - 1)
{("\n\n Стрiлка вверх - попереднiй запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 27);(a == 72) i--;i = 101;
}
{(i > 0 && i < s)
{("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 80 && a != 27);(a == 80) i++;(a == 72) i--;(a == 27) i = 101;
}
}while(i != 101);(f);(num);
}
}
{= 0;o = Menu();(o)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}
}
}while(o == 1);();
}
//-------------------------------------SORTDB----------------------------------SortDB()
{setlocale (LC_ALL,"Russian");*f=fopen("db.txt", "r+t");*num=fopen("num.txt", "r+t");z;(f == NULL || num == NULL)
{();("\n Не вдається вiдкрити файл електронного довiдника");("\n Натиснiть будь-яку клавiшу для виходу в меню");();
}
{record recz[100];i, kol;((int*)&kol, 1, sizeof(kol), num);
{(f, sizeof(recz[i])*i, 0);((char*)&recz[i], 1, sizeof(recz[i]), f);
}nums[100], atss[100];(i=0;i<kol;i++) //sozdanie massiva s nomerami ats iz bazi dannih
{[i] = recz[i].ats;
}(i=0;i<kol;i++)
{[i] = recz[i].num;
}j, n, tmp, ch = 0;
//sortirovka massiva s nomerami ats i sootv. peremeschenie nomerov zapisej(i=0;i<kol;i++)
{= i;(j=i+1;j<kol;j++)
{(atss[j] < atss[n])
{= j; //n - nomer min elementa++; //ch - chislo naidennuih zapisej
}
}= atss[i];[i] = atss[n];[n] = tmp;= nums[i];[i] = nums[n];[n] = tmp;
}a, k = 0;
{= nums[k]-1;();("\n*Вiдсортований довiдник*");("\n\n Запис №%i", recz[n].num);("\n Визначення -> %s - %s ", recz[n].surn, recz[n].name);("\n № роздiлу -> %i", recz[n].ats);(ch == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
{("\n\n Бiльше записiв не знайдено!");("\n Натиснiть будь-яку клавiшу для виходу в меню");();= 101;
}
{(k == 0)
{ ("\n\n Стрiлка вниз - наступний запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 80 && a != 27);(a == 80) k++;k = 101;
}
{(k == kol - 1)
{ ("\n\n Стрiлка вверх - попереднiй запис");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 27);(a == 72) k--;k = 101;
}
{(k > 0 && k < kol)
{("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");("\n <Esc> - вихiд в меню");
{= getch();
}while(a != 72 && a != 80 && a != 27);(a == 80) k++;(a == 72) k--;(a == 27) k = 101;
}
}while(k != 101);
}(f);(num);
{= 0;p = Menu();(p)
{1: ViewDB(); break;2: CreateDB(); break;3: AddToDB(); break;4: SearchInDB(); break;5: SortDB(); break;6:(Exit() == 27)
{= 1;;
}
}
}while(z == 1);();
}
//-------------------------------------GET-------------------------------------Get(int min, int max)
{setlocale (LC_ALL,"Russian");i = 0;(stdin, "%d", &i); (stdin);((i==0)||(i>max)||(i<min))
{(1,wherey());("Невiрний ввiд, повторiть спробу (%d - %d): ", min,max);(stdin, "%d", &i);(stdin);
}i;
}