Електронний довідник у С++
Розробка ефективних засобів навчання. Виявлення системи, способів, що сприяють підвищенню активності учнів. Призначення та область використання програми електронний довідник. Розробка алгоритму програми. Обґрунтування вибору мови і системи програмування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 02.06.2014 |
Размер файла | 161,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
getch();
}
//---------------------------------------EXIT----------------------------------
int Exit()
{
clrscr();
printf("\n\n \t\t Дiйсно вийти з програми?");
printf("\n\n <Enter> - вийти в ОС, <Esc> - продовжити роботу з програмою.");
int c;
do
{
c = getch();
}while(c!= 13 && c != 27);
return c;
}
//---------------------------------------MAIN----------------------------------
int main()
{setlocale (LC_ALL,"Russian");
if(ZastBeg() != 27)
{
int z;
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
else break;
}
}while(z == 1);
}
else ZastEnd();
return 0;
}
//---------------------------------------VIEWDB--------------------------------
void ViewDB()
{setlocale (LC_ALL,"Russian");
FILE *f=fopen("db.txt", "r+t");
FILE *num=fopen("num.txt", "r+t");
if(f == NULL || num == NULL)
{
clrscr();
printf("\n \t Не вдається вiдкрити файл електронного довiдника!");
printf("\n \t Натиснiть будь-яку клавiшу для виходу в меню.");
getch();
}
else
{
struct record recz[100];
int i, kol;
//poluchenie kol-va zapisej
fread((int*)&kol, 1, sizeof(kol), num);
//zapolnenie massiva zapisjami iz faila
for(i=0;i<kol;i++)
{
fseek(f, sizeof(recz[i])*i, 0);
fread((char*)&recz[i], 1, sizeof(recz[i]), f);
}
//prosmotr zapisej iz poluchennogo massiva
int a, k = 0;
do
{
clrscr();
printf("*Перегляд довiдника*");
printf("\n\n Запис № %i", recz[k].num);
printf("\n Визначення: %s - %s ", recz[k].surn, recz[k].name);
printf("\n Номер роздiлу до якого належить визначення -> %i", recz[k].ats);
if(kol == 1) //v baze vsego 1 zapis'
{
printf("\n\n Бiльше записiв не знайдено!");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню.");
getch();
k = 101;
}
else
{
if(k == 0)
{
printf("\n\n Стрiлка вниз - наступний запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 80 && a != 27);
if(a == 80) k++;
else k = 101;
}
else
{
if(k == kol - 1)
{
printf("\n\n Стрiлка вверх - попереднiй запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 27);
if(a == 72) k--;
else k = 101;
}
else
{
if(k > 0 && k < kol)
{
printf("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 80 && a != 27);
if(a == 80) k++;
if(a == 72) k--;
if(a == 27) k = 101;
}
}while(k != 101);
}
fclose(f);
fclose(num);
int z;
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
else break;
}
}while(z == 1);
ZastEnd();
}
//--------------------------------------CREATEDB-------------------------------
void CreateDB()
{setlocale (LC_ALL,"Russian");
clrscr();
printf("Ви дiйсно хочете створити новий електронний довiдник?");
printf("\n <Enter> - так, <Esc> - нi");
int d;
do
{
d = getch();
}while(d != 13 && d != 27);
if(d == 13)
{
FILE *f=fopen("db.txt", "wb");
FILE *num=fopen("num.txt", "wb");
struct record rec[100];
int i, j;
for(i = 0; i < 100; i++)
{
clrscr();
setlocale (LC_ALL,"Russian");
printf("*Створення довiдника термiнiв*\n\n");
rec[i].num = i+1;
//podtverzhdenniy vvod термыну
printf("\nВведiть термiн -> ");
fscanf(stdin, "%s", &rec[i].surn);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели термiн: '%s'. <Esc> - повторiть ввiд. ", rec[i].surn);
printf("\n<Enter> - термiн введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\nВведiть заново ->");
fscanf(stdin, "%s", &rec[i].surn);
fflush(stdin);
}
}while(j == 27);
//podtverzhdenniy vvod визначення
printf("\n\n Введiть визначення -> ");
fscanf(stdin, "%s", &rec[i].name);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("Ви ввели визначення: '%s'. <Esc> - повторiть ввiд. ", rec[i].name);
printf("\n <Enter> - визначення введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
fscanf(stdin, "%s", &rec[i].name);
fflush(stdin);
}
}while(j == 27);
//podtverzhdenniy kontrolliruemiy vvod nomera ats
printf("\n\n Введiть номер роздiлу до якого належить дане визначення:(число вiд 1 до 9):");
printf("\n \t 1. Основи мови С++; ");
printf("\n \t 2. Лiнiйнi програми;");
printf("\n \t 3. Розгалуження;");
printf("\n \t 4. Цикли;");
printf("\n \t 5. Масиви;");
printf("\n \t 6. Функцiї;");
printf("\n \t 7. Файли;");
printf("\n \t 8. Рядки;");
printf("\n \t 9. Структури, списки, стеки, черги, об'єднання, графiка.");
printf("\n\n Введiть число вiд 1 до 9: ");
rec[i].ats = Get(1, 9);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели № розділу: '%d'. <Esc> - повторний ввiд. ", rec[i].ats);
printf("\n <Enter> - Номер роздiлу введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
rec[i].ats = Get(1, 999);
}
}while(j == 27);
fwrite((char*)&rec[i], 1, sizeof(rec[i]), f);
printf("\n\n <Enter> - продовження, <Esc> - вихiд в меню\n");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j == 27)
{
int kol = i + 1;
fwrite((int*)&kol, 1, sizeof(kol), num);
break;
}
}
clrscr();
fclose(f);
fclose(num);
}
int z;
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
else break;
}
}while(z == 1);
ZastEnd();
}
//--------------------------------------ADDTODB--------------------------------
void AddToDB()
{setlocale (LC_ALL,"Russian");
clrscr();
printf("\n Ви дiйсно хочете добавити новий запис в електронний довiдник?");
printf("\n <Enter> - так, <Esc> - нi");
int d, z;
do
{
d = getch();
}while(d != 13 && d != 27);
if(d == 13)
{
FILE *f=fopen("db.txt", "ab");
FILE *num=fopen("num.txt", "r+b");
int c;
if(num == NULL)
{
fclose(f); //
clrscr();
printf("\n Електронний довiдник не iснує!");
printf("\n <Esc> - Створення довiдника термiнiв, <Enter> - вихiд в меню");
do
{
c = getch();
}while(c != 13 && c != 27);
if(c == 27) CreateDB();
}
//esli file s bazoj naiden
else
{
int kol;
fread((int*)&kol, 1, sizeof(kol), num);
if(kol == 100)
{
printf("Електронний довiдник заповнений. Додати визначення неможливо!");
printf("Натиснiть будь-яку клавiшу для виходу в меню!");
getch();
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
}
}while(z == 1);
ZastEnd();
}
struct record newrec;
int j;
clrscr();
printf("*Додавання визначення в електронний довiдник*\n\n");
newrec.num = kol + 1;
//podtverzhdenniy vvod familii
printf("\n Термiн -> ");
fscanf(stdin, "%s", &newrec.surn);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели термiн: '%s'. <Esc> - повторний ввiд. ", newrec.surn);
printf("\n <Enter> - термiн введений вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
fscanf(stdin, "%s", &newrec.surn);
fflush(stdin);
}
}while(j == 27);
//podtverzhdenniy vvod imeni
printf("\n\n Введiть визначення -> ");
fscanf(stdin, "%s", &newrec.name);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели визначення: '%s'. <Esc> - повторний ввiд. ", newrec.name);
printf("\n <Enter> - визначення введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
fscanf(stdin, "%s", &newrec.name);
fflush(stdin);
}
}while(j == 27);
//podtverzhdenniy kontrolliruemiy vvod nomera ats
printf("\n\n Введiть номер роздiлу до якого належить дане визначення:(число вiд 1 до 9):");
printf("\n \t 1. Основи мови С++; ");
printf("\n \t 2. Лiнiйнi програми;");
printf("\n \t 3. Розгалуження;");
printf("\n \t 4. Цикли;");
printf("\n \t 5. Масиви;");
printf("\n \t 6. Функцiї;");
printf("\n \t 7. Файли;");
printf("\n \t 8. Рядки;");
printf("\n \t 9. Структури, списки, стеки, черги, об'єднання, графiка.");
printf("\n\n Введiть число вiд 1 до 9: ");
newrec.ats = Get(1, 9);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели № роздiлу: '%d'. <Esc> - повторний ввiд. ", newrec.ats);
printf("\n <Enter> - номер роздiлу введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
newrec.ats = Get(1, 9);
}
}while(j == 27);
fwrite((char*)&newrec, 1, sizeof(newrec), f);
kol++;
fseek(num, 0, 0);
fwrite((int*)&kol, 1, sizeof(kol), num);
fclose(f);
fclose(num);
printf("\n\n Запис добавлений!");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
}
}
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
else break;
}
}while(z == 1);
ZastEnd();
}
//-----------------------------------SEARCHINDB--------------------------------
void SearchInDB()
{setlocale (LC_ALL,"Russian");
FILE *f=fopen("db.txt", "r+t");
FILE *num=fopen("num.txt", "r+t");
int j, o;
if(f == NULL || num == NULL)
{
clrscr();
printf("\n Не вдається вiдкрити файл електронного довiдника!");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
}
else
{
struct record recz[100];
int i, kol;
fread((int*)&kol, 1, sizeof(kol), num);
//zapolnenie massiva zapisjami iz faila
for(i=0;i<kol;i++)
{
fseek(f, sizeof(recz[i])*i, 0);
fread((char*)&recz[i], 1, sizeof(recz[i]), f);
}
clrscr();
printf("*Пошук записiв по номеру роздiлу*");
int sats; //kluch dlja poiska
printf("\n\n Введiть № роздiлу для пошуку (число вiд 1 до 9)-> ");
sats = Get(1, 9);
gotoxy(1,wherey()+1);
do
{
gotoxy(1,wherey()-2);
printf("\n Ви ввели № роздiлу: '%i'. <Esc> - повторний ввiд. ", sats);
printf("\n <Enter> - номер роздiлу введено вiрно. ");
do
{
j = getch();
}while(j != 13 && j != 27);
if(j != 13)
{
printf("\n Введiть заново ->");
sats = Get(1, 9);
}
}while(j == 27);
struct record srec[100];
int z, s = 0;
for(z=0;z<kol;z++)
{
if(recz[z].ats == sats)
{
srec[s] = recz[z];
s++;
}
}
if(s == 0) //esli ne naideno ni odnoj zapisi
{
clrscr();
printf("\n Записiв з таким номером роздiлу не знайдено!");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
}
else
{
int a;
i = 0;
do
{
clrscr();
printf("\n *Пошук записiв з номером роздiлу = %i*", sats);
printf("\n Запис №%i", srec[i].num);
printf("\n Визначення: -> %s - %s ", srec[i].surn, srec[i].name);
printf("\n № роздiлу -> %i", srec[i].ats);
if(s == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
{
printf("\n\n Бiльше записiв не знайдено");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
i = 101;
}
if(i == 0)
{
printf("\n\n Стрiлка вниз - наступний запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 80 && a != 27);
if(a == 80) i++;
else i = 101;
}
else
{
if(i == s - 1)
{
printf("\n\n Стрiлка вверх - попереднiй запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 27);
if(a == 72) i--;
else i = 101;
}
else
{
if(i > 0 && i < s)
{
printf("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 80 && a != 27);
if(a == 80) i++;
if(a == 72) i--;
if(a == 27) i = 101;
}
}while(i != 101);
fclose(f);
fclose(num);
}
}
do
{
o = 0;
int o = Menu();
switch(o)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
o = 1;
break;
}
}
}while(o == 1);
ZastEnd();
}
//-------------------------------------SORTDB----------------------------------
void SortDB()
{setlocale (LC_ALL,"Russian");
FILE *f=fopen("db.txt", "r+t");
FILE *num=fopen("num.txt", "r+t");
int z;
if(f == NULL || num == NULL)
{
clrscr();
printf("\n Не вдається вiдкрити файл електронного довiдника");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
}
else
{
struct record recz[100];
int i, kol;
fread((int*)&kol, 1, sizeof(kol), num);
//zapolnenie massiva zapisjami iz faila
for(i=0;i<kol;i++)
{
fseek(f, sizeof(recz[i])*i, 0);
fread((char*)&recz[i], 1, sizeof(recz[i]), f);
}
int nums[100], atss[100];
for(i=0;i<kol;i++) //sozdanie massiva s nomerami ats iz bazi dannih
{
atss[i] = recz[i].ats;
}
for(i=0;i<kol;i++)
{
nums[i] = recz[i].num;
}
int j, n, tmp, ch = 0;
//sortirovka massiva s nomerami ats i sootv. peremeschenie nomerov zapisej
for(i=0;i<kol;i++)
{
n = i;
for(j=i+1;j<kol;j++)
{
if(atss[j] < atss[n])
{
n = j; //n - nomer min elementa
ch++; //ch - chislo naidennuih zapisej
}
}
tmp = atss[i];
atss[i] = atss[n];
atss[n] = tmp;
tmp = nums[i];
nums[i] = nums[n];
nums[n] = tmp;
}
int a, k = 0;
do
{
n = nums[k]-1;
clrscr();
printf("\n*Вiдсортований довiдник*");
printf("\n\n Запис №%i", recz[n].num);
printf("\n Визначення -> %s - %s ", recz[n].surn, recz[n].name);
printf("\n № роздiлу -> %i", recz[n].ats);
if(ch == 1) //esli vsego odna zapis' sootvetstvuet usloviju poiska
{
printf("\n\n Бiльше записiв не знайдено!");
printf("\n Натиснiть будь-яку клавiшу для виходу в меню");
getch();
k = 101;
}
else
{
if(k == 0)
{
printf("\n\n Стрiлка вниз - наступний запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 80 && a != 27);
if(a == 80) k++;
else k = 101;
}
else
{
if(k == kol - 1)
{
printf("\n\n Стрiлка вверх - попереднiй запис");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 27);
if(a == 72) k--;
else k = 101;
}
else
{
if(k > 0 && k < kol)
{
printf("\n\n Стрiлки вверх/вниз - перегляд записiв: попереднiй/наступний");
printf("\n <Esc> - вихiд в меню");
do
{
a = getch();
}while(a != 72 && a != 80 && a != 27);
if(a == 80) k++;
if(a == 72) k--;
if(a == 27) k = 101;
}
}while(k != 101);
}
fclose(f);
fclose(num);
do
{
z = 0;
int p = Menu();
switch(p)
{
case 1: ViewDB(); break;
case 2: CreateDB(); break;
case 3: AddToDB(); break;
case 4: SearchInDB(); break;
case 5: SortDB(); break;
case 6:
if(Exit() == 27)
{
z = 1;
break;
}
}
}while(z == 1);
ZastEnd();
}
//-------------------------------------GET-------------------------------------
int Get(int min, int max)
{setlocale (LC_ALL,"Russian");
int i = 0;
fscanf(stdin, "%d", &i);
fflush(stdin);
while ((i==0)||(i>max)||(i<min))
{
gotoxy(1,wherey());
cprintf("Невiрний ввiд, повторiть спробу (%d - %d): ", min,max);
fscanf(stdin, "%d", &i);
fflush(stdin);
}
return i;
}
Размещено на Allbest.ru
Подобные документы
Постановка та описання алгоритму розв’язання задачі про оптимальне призначення, формулювання вимог. Обґрунтування вибору засобів програмування. Розробка структури програми та системи її візуалізації, тестування та верифікація, оцінка ефективності.
курсовая работа [1,1 M], добавлен 12.05.2013Вибір засобів створення електронної системи. Загальні відомості про електронний підручник. Технології розробки та структурна організація проекту. Метод підготовки тестування при розробці курсу дистанційного навчання. Етапи написання тестової програми.
курсовая работа [51,9 K], добавлен 20.02.2012Дослідження середовища візуального програмування Delphi. Вивчення процесу створення навчальної програми "Електронний словник". Опис графічного інтерфейсу. Характеристика структури та основних процедур даної програми. Аналіз роботи з програмним кодом.
курсовая работа [831,2 K], добавлен 01.03.2014Розробка веб-сайту "Електронний довідник запчастин автомобілів". Структура веб-сайту, бази даних. Модулі для читання інформації та коректного її відображення на сторінках порталу. Клієнтська частина сайту, реєстрація користувачів, система адміністрування.
дипломная работа [2,3 M], добавлен 19.08.2012Вибір середовища програмування Borland Delphi 7.0 для створення електронно-медичного довідника. Формування бази даних для перегляду та пошуку медичних препаратів для лікування. Особливості програмування інтерфейсу програми, інструкція користувача.
курсовая работа [2,2 M], добавлен 19.09.2012Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.
курсовая работа [3,4 M], добавлен 17.11.2014Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013Дослідження можливостей розробки електронних навчальних матеріалів за допомогою різних програмних засобів залежно від їх дидактичного призначення та особливостей функціонування. Розгляд програми для контролю навчальних досягнень учнів з англійської мови.
статья [117,2 K], добавлен 24.04.2018Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.
курсовая работа [1,3 M], добавлен 23.06.2010Теоретичні відомості про язик С++. Розробка програми, що виконує основні арифметичні дії над простими та складними числами на язику С++. Опис алгоритму програми та її код. Інструкція по користуванню. Обгрунтовування вибору та складу технічних засобів.
курсовая работа [852,8 K], добавлен 30.11.2011