Електронний довідник у С++

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    96,13 Кб
  • Опубликовано:
    2015-07-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Електронний довідник у С++

Зміст

Вступ

. Основні теоретичні відомості

1.1 Призначення та область використання програми електонний довідник

2. Структура програмного забезпечення

2.1 Розробка алгоритму програми

2.2 Обгрунтування вибору мови і системи програмування

3. Опис програмного продукту

3.1 Опис програми

3.2 Тестування програмного продукту

Висновки

Список використаної літератури

Додаток

Вступ

програма електронний довідник алгоритм

Постійне збільшення обсягу інформації та обмеженість навчального часу обумовлюють необхідність інтенсифікації навчання, розробки та впровадження нетрадиційних технологій, що базуються на використанні обчислювальної техніки із застосуванням активних методів навчання у всьому їх різноманітті та комплексності. Реалізація активних методів навчання - одна з основних завдань дидактики, яка передбачає активізацію всього процесу, виявлення системи, способів, прийомів, що сприяють підвищенню активності учнів через формування позитивної мотиваційної структури навчально-пізнавальної діяльності.

Розвиток активного, діяльнісного начала в навчанні, розкриття та використання творчих здібностей кожного, хто навчається здійснюються через формування пізнавальних потреб шляхом організації пошуку знань у процесі вивчення навчального матеріалу і задоволення цих потреб, що може бути забезпечено створенням спеціальних електронних навчальних посібників. Що забезпечить структурування навчальної інформації на різних рівнях, систематизації процесу пред'явлення інформації, спеціальної організації інтерактивного спілкування.

Це актуалізує проблему організації професійної підготовки фахівця в процесі вивчення різних освітніх областей допомогою електронних довідкових посібників з різних дисциплін, що й обумовлює вибір теми проекту.

Електронний довідковий посібник - це віртуальна система, призначена для автоматизованого навчання, що охоплює повний або частковий обсяг навчальної дисципліни. Основні переваги електронних довідників над паперовими аналогами, полягають в економії біоресурсів, можливості користувачів самостійно створювати довідники із застосуванням спеціальних програм і використовувати їх. Тому розробка електронного довідника для ефективного вивчення дисципліни “Програмування” є актуальною.

Предмет досліження - розробка програмного продукту для швидкого пошуку потрібної користувачу інформації.

Мета роботи полягає в тому, щоб підвищити ефективність, якість і доступність освітніх ресурсів, електронних посібників, що забезпечують розвиток особистості учнів. Для досягнення зазначеної мети в курсовій роботі поставлені і вирішені такі завдання:

а)      вивчення літературних джерел і проведення теоретичного аналізу особливостей дисципліни “Програмування”;

б)      розгляд класифікації довідників;

в)      розробка алгоритму програми;

г)       обгрунтування вибору мови і системи програмування;

д)      розробка програмного забезпечення, яке реалізує алгоритм електронного довідника;

е)       проведення порівняльного аналізу результатів, формулювання висновків.

Отже, актуальність цієї теми полягає у тому що, електронний довідник - це спосіб як можна швидше знайти дані визначення які розглядаються в курсові роботі. Тому розробка програмного продукту для ефективного і швидкого пощуку певної інформації в даному випадку це визначення із дисципліни «Програмування»

1. Основні теоретичні відомості

1.1    Призначення та область використання програми електонний довідник

Переваги <#"792262.files/image001.gif">Початок алгоритму.

Вивід на екран або друк.

Блок вводу вхідних даних.

Блок обробки інформа-ції. В даному блоці записуться формули.

Блок умови. В цьому блоці записується умова, в залежності від якої вибираються напрямки дії алгоритму.

Заголовок циклу FOR.

Блок виведення резуль-тату.

Кінець алгоритму.

Отже, Алгоритмом називається метод розв’язку задачі записаний по визначених правилах, які забезпечують однозначність трактування алгоритму. Існують такі способи опису алгоритму:

а) словесно-формульний (за допомогою слів і формул);

б) графічний (блок-схема);

в) псевдокоди - це інтерпритація кроків алгоритму на звичайній мові, яка описує дії команд.

В залежності від побудови алгоритми поділяються на лінійні, розгалужені і циклічні. Види алгоритмів розрізняють зазвичай не за складністю виконуваних дій, не за їхньою кількістю, а за складністю організації алгоритмічного процесу.

Алгоритми найпростішого виду - лінійні - це такі алгоритми, в яких дії виконуються послідовно, одна за одною. Кожна дія лінійного алгоритму обов’язково виконується, і виконується тільки один раз.

2.2 Обгрунтування вибору мови і системи програмування

Мова програмування - це знакова система для опису алгоритмів програм, орієнтованих на конкретних виконавців.

Можна виділити п’ять основних поколінь мов програмування:

а)      1 покоління: початок 1950-х років - мови перших комп’ютерів. Перша мова асемблера, створена за принципом “одна інструкція - одна стрічка”;

б)      2 покоління: кінець 1950-х - початок 1960-х р. Розроблено символьний асемблер, в якому з’явилося поняття змінної. Це перша повноцінна мова програмування;

в)      3 покоління: 1960-ті р. - мови програмування високого рівня. Їх характеристики: відносна простота, незалежність від конкретного комп’ютера, можливість використання потужних синтаксичних конструкцій. Простота мов дає змогу писати невеликі програми і людям, які не є професійними програмістами;

г)       4 покоління: початок 1970-х р. Створюються мови, призначені для реалізації великих проектів. Проблемно-орієнтовані мови, що оперують конкретними поняттями вузької галузі. У такі мови вбудовують потужні оператори, що дозволяють одним рядком описувати функції, для опису яких мовами молодших поколінь потрібно було б сотні-тисячі рядків початкового коду;

д)      5 покоління: з середини 1990-х р. - до теперішнього часу. Це системи автоматизованого проектування програмного забезпечення (САПР ПЗ). Створення прикладних програм, редакторів, САПР <#"792262.files/image009.gif">

Рисунок 1.1 - Вікно головного меню програми

При натисненні клавіші <Esc> здійснюється вихід з програми, а при використанні будь-якої іншої клавіші - перехід до функції int Main(), яка забезпечує перехід до меню і вибору розділів, або ж редагування довідника із дисципліни «Програмування». Одне з таких визначень програми електронний довідник має такий вигляд (рис. 1.2):

Рисунок 1.2 - Меню програми

При переході до пункту перегляд довідника ми побачимо наступне вікно (рис. 1.3):

Рисунок 1.3 - Перегляд довідника

При переході пункту створення довідника термінів ми побачимо наступне вікно (рис. 1.4):

Рисунок 1.4 - Створення довідника термінів

При переході на пункт додати визначення в довідник ми побачимо(рис. 1.5):

Рисунок 1.5 - Додати визначення в довідник

Програмою передбачено вибір потрібного вам пункту. Якщо натиснути на пункт «Пошук визначення по розділах» то нам слід буде ввести номер розділу від 1 до 9, у цих розділах посортовані дані визначення із дисципліни «Програмування» Вікно демонстрації розділів із дисципліни «Програмування» має такий вигляд (рис. 1.6):

Рисунок 1.6 - Вигляд вводу розділів

При натисненні потрібної вам цифри з’явится вікно із визначеннями, де знаходитеметься дане визначення (рис. 1.7):


При виході в меню з’явиться меню, вибравши там пункт - «вихід із програми» в вас появиться наступне вікно (рис. 1.8):

Рисунок 1.8 - Вікно підтвердження завершення роботи

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

Висновки

Сучасний стан науки та техніки потребує інтенсивного поповнення кількості спеціалістів, зокрема в області програмування. З огляду на це постає проблема розробки ефективних засобів навчання, які не тільки гарантують якість знання, але й економію часу та докладених зусиль на засвоєння матеріалу.

З моменту появи комп’ютерів, вони не тільки самі стали об’єктами вивчення, але й представили можливості легкого отримання знань з різних галузей науки. Результатом цього стали спроби представити інформацію у зручному для користувача вигляді і розробки різних типів навчальних систем, починаючи з гіпертекстових документів і закінчуючи інтелектуальними навчальними системами.

Мова програмування “С++” - це універсальна мова програмування, для якої характерні сучасний потік управління і структури даних, великий набір операторів. Мова "С++" не зв’язана з конкретними апаратними засобами чи системами, тому дуже зручна і ефективна для написання програм широкого профілю. Хоча її називають мовою системного програмування, так як вона зручна для написання системних програм, вона з рівним успіхом використовується для написання великих обчислювальних програм, програм для обробки текстів і баз даних.

Основне завдання курсової роботи полягало у створенні електронного довідника дисципліни «Програмування».

Дану програму можна використовувати в навчальних закладах, яка є досить зручною у використанні.

Електрoнні енциклопедії та довідники як і їх паперові аналоги, містять систематизований матеріал, присвячений конкретній темі, групі тем чи певній предметній галузі, проте мають ряд переваг, що дозволяє їх ширше використовувати:

а) можливість представлення окрім текстового матеріалу та зображень значної кількості анімацій, відеоматеріалів, аудіо записів;

б) можливість швидкого доступу до потрібної інформації, наявність пошуку за ключовими словами;

в) наявність матеріалу, який значно розширює рамки навчальної програми;

г) зручність у використанні.

На даний час існує велика кількість програмних засобів даного типу, що відрізняються тематикою, інтерфейсом та можливостями, проте,більшість з них легкі у використанні, що дозволяє користуватися їх як викладачу під час пояснення, закріплення, узагальнення, систематизації чи повторенні навчального матеріалу, так і студенту під час самостійної підготовки до уроку.

Електронні словники призначені для швидкого пошуку слів з певними властивостями. Найпоширенішими є електронні тлумачні словники, словники фразеологізмів, синонімів, словники - перекладачі. Головною їх перевагою над паперовими аналогами є те, що для того, щоб отримати переклад чи тлумачення потрібного слова, користувачу не потрібно знати алфавіт, шукати його серед великої кількості слів, а досить лише ввести його в стрічку пошуку. Такий спосіб пошуку дозволяє як і учневі, так і вчителі економити навчальний час, не витрачаючи його на механічну роботу.

Типовим представником електронних словників, і досить поширеним вданий час, є сучасний англо-український та українсько-англійський словник видавничого дому Школа. Даний програмний продукт містить простий та зручний інтерфейс, дає можливість отримати миттєвий перегляд перекладу введеного користувачем слова, пошуку слів за алфавітом та містить коротку граматичну довідку.

До переваг даного програмного продукту можна також віднести незначні системні вимоги та просту інсталяцію. Звичайно, коли йдеться мова про використання під час навчального процесу електронних словників, довідників та енциклопедій слід зазначити, що даний процес ускладнюється за рахунок слабкого забезпечення закладів освіти комп’ютерною технікою, а також відсутність її в частини школярів. Також виникає проблема недостатньої кількості якісних програмних продуктів даного типу, які б повністю відповідали вимогам сучасної школи.

Список використаної літератури

1.      Бек Л.С. Введення в системне програмування. - / М. Світ, 2008. - 345с.

2.      Бочков С.О. Язык программирования Си для персонального

компьютера. - К.: Мир, 2006.- 231с.

.        Вальвачев А.Н. Программирование на языке ПАСКАЛЬ для персональних ЭВМ ЕС.- / Мн.: Выш. шк., 2007.- 223с.

4.      Гринчишин Я.Т. Алгоритми і програми на С++ Учеб. посібник. - / М.: Просвещение, 2001. - 160 с.

.        Грис Д. Наука программирования.- / М.: Мир, 2003.- 416с.

.        Дейтел Х.М., / Дейтел П.Дж. Как программировать на C++. - / М.: БИНОМ, 2004. -24с.

.        Зубенко В.В. Програмування : навчальний посібник (гриф МОН України) / В.В. Зубенко, Л.Л. Омельчук. / К. ВПЦ «Київський університет», 2011. - 623 c.

.        Кнут Д. Искусство программирования для ЭВМ: В 3-х т.- /М.: Мир, t.1, 2009.- 735с., т.2, 1977.- 724c.

.        Лавров С.С. Програмирование. Математические основи, средства, теория / С.С. Лавров. - СПб. : БХВ-Петербург,2001. - 251с.

.        Носов О.І. Радио и связь, 2001.-160с.

.        Непейвода Н.Н. Основания програмирования : учеб. Пособие Н.Н. Непейвода, И.Н. Скопин. - Ижевск, 2003.-213с.

.        Нікітченко М.С. Теоретичні основи програмування : навчальний посібник / М.С. Нікітченко - Ніжин : Видавництво НДУ імені Миколи Гоголя, 2010. - 121с.

.        Нога Л.В. Конспект лекцій з дисципліни “Основи програмування та алгоритмічні мови” Частина 1 і 2 / Нога Л.В. - Херсон: Веселка, 2006. - 134 с.

.        Перминов О.Н. Программирование на языке Паскаль.- / М.: Радио и связь, 2009. - 220с.

.        Проценко B.C. Техника программирования. - К.: Вища школа. 2006.- 183с.

.        Рафа Т. М. Методичні вказівки до лабораторних та практичних занять з програмування. Паскаль. Частина 1 / Т.М. Рафа, Л.Б. Чорна. - Тернопіль: ТДТУ ім. І. Пулюя, 2008. - 94 с.

.        Семотюк В. Програмування в середовищі Турбо Паскаль / Семотюк В. - Львів: БаК, 2008. - 248 с.

.        Страуструп Б. Язык программирования С++. - / М.: БИНОМ, 2001. - 990 с.

.        Уэйт М., /Мартин Д., Пратта С. Язык Си. Руководство для начинающих.- / М.: Мир, 2004.- 512с..

.        Фаронов В.В. TurboPascal 7.0. Начальный курс / Фаронов В.В. - М.: Колидж, 2008. - 238 с.

.        Фаронов В.В. Турбо Паскаль 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;

}

Похожие работы на - Електронний довідник у С++

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!