p align="left">5.Технологія програмування, виконання та відлагодження програми 5.1 Технологія програмування програми Використання моделі у розробці та вирішенні складних задач є одним з найважливіших методів. Модель - це заміщувач об'єкту дослідження, що знаходиться з ним у такій відповідності, яка дозволяє отримати нове значення про об'єкт. Оскільки модель ґрунтується на аналогії, то вона губить сенс засобу пізнання як у випадку тотожності моделі та об'єкту дослідження, так і у випадку дуже великих відмінностей між ними. Таким чином моделювання пов'язане зі спрощенням, абстрагуванням прототипу від ряду його властивостей, ознак, сторін. Проте надмірно спрощена модель може призвести до невідповідності з досліджуваним об'єктом, що унеможливить дослідження його з допомогою такої моделі. З іншого боку, врахування в моделі якомога більшої кількості властивостей досліджуваного об'єкту призводить до ускладнення процесу дослідження. 5.2 Технологія виконання програми Виконання програми виконується частинами. Спочатку створюються підпрограми, які полегшують програмування необхідної задачі, і які будуть використовуватися в тексті основної програми. В нашому випадку такими підпрограмами є звичайні графічні функції: Опис всіх графічних примітивів; Створення зображення головного меню. Створення зображення курсора Визначення місця розташування об'єкта; Створення файлу Забезпечення руху курсора Забезпечення виконання базами даних формування, читання, редагування, сортування та пошук інформації за заданим ключем Створення програмного меню; Забезпечення керування програмою за допомогою клавіатури. 5.3 Технологія відлагодження програми Для того, щоб відлагодити програму, потрібно використати покрокове підключення підпрограм (так ми швидше зрозуміємо у якій частині програми є помилки і послідовно виправимо ці помилки). Тобто спочатку ми записуємо підпрограми в основний текст програми, потім, при наявності помилок, ми змінюємо підпрогами до такого виду, якого вимагає цей текст і синтаксис мови Сі. Потім підлаштовуємо їх під текст програми і перевіряємо їх робочу ефективність. Намагаються зробити найкращу ефективність шляхом зміни тексту підпрограм. Після успішного під`єднання головних підпрограм під`єднуються інші підпрограми(таким чином, як і основні підпрограми). Намагаються створити найкращу взаємодію шляхом перестановки або зміни тексту підпрограм. 6. Інструкція користувачеві Інтерфейс програми реалізований у графічному режимі з використанням функцій заголовочного файлу include<string.h>. Інтерфейс є зручним у користуванні і не потребує значних ресурсів комп'ютера для роботи у ньому. Керування програмою здійснюється повністю за допомогою клавіатури. Є два способи по запуску програми на виконання: 1) Запуск через середовище програмування Цей спосіб зручний тим, що при наявності бажань користувача щось змінити у програмі можна одразу ж вийти з програми у середовище програмування і змінити певний код, при цьому відразу ж відкомпілювати новостворений код. Певною незручністю є те, що не всі можуть мати саме середовище програмування чи компілятор. Для запуску програми потрібно мати щонайменше середовище Borland C++ 3.1. На попередніх версіях програма не тестувалася. Щоб запустити програму на виконання із середовища програмування потрібно натиснути клавіші <Ctrl>+F9. Або здійснити таку послідовність дій у меню самого середовища: Menu (F10) -> Run (<Ctrl>+F9). 2) Запуск програми через операційну систему На мій погляд, цей спосіб є набагато зручнішим від попереднього. Щоб запустити програму через операційну систему потрібно знайти файл KYRSOVA.EXE і клікнути по ньому мишкою. В результаті програма буде запущена у вікні MSDOS під керуванням операційної системи. Недоліком цього способу є те, що зміни у програмний код програми вносити не можна. Так чи інакше, після запуску програми на виконання на голубому фоні екрану з'являється меню. По замовчуванню, встановленим у програмному коді програми, завжди з'являється меню. Щоб внести будь-які зміни користувачу потрібно скористатися меню програми. Про доступні зміни буде розказано нижче. По середині буде показано меню з трьох пунктів new list, open list exit, за допомогою яких можна у будь-який момент змінити настройки у програмі чи вийти з програми. Форма основного меню показана нижче (див. Мал. 1). (Мал. 1) Відкриваеться головне меню де появляються 6 пунктів які сохраняють видаляють сортують і закривають (мал. 2) Тепер детальніше поговоримо про можливості налаштувань програми. Щоб зайти в настройки програми потрібно з клавіатури натиснути `1'. Користувач при цьому побачить таку екранну форму меню (див. Мал. 2). (Мал. 3) При натисненні 1 сохраняє, При натисненні 2 вставляє, 3 видаляє, 4 сортує по назві закладу, 5 сортує по адресу вищого навчального закладу, 6 сортування за телефоном навчального закладу. 7 сортування за 8 сортування двосторонній. 9 знайти за критеріями і файла. Щоб успішно вийти з програми потрібно в основному меню натиснути `3'. Після цього користувач вийде або в програмне середовище (якщо програма запускалася через саме середовище), або в операційну систему (якщо програма запускалася в операційній системі) 7. Контрольний приклад та аналіз результатів комп'ютерної реалізації програми Отже, мені у курсовій роботі потрібно було реалізувати довідкову систему про вищі навчальні заклади м Львова. Ця програма виконує зчитування та встановлювання інформації. Зображення ходу повинно бути виконано. Мовою написання даного проекту могла бути С або С++. Під час реалізації та виконання даної програми вхідними даними для неї були поточні методичні вказівці. В якості контрольного прикладу нижче наведено знімок екрану у момент зображення меню (див. Мал. 4 . (Мал. 4) При зміні вхідних даних результат є правильним. Зміна розміру задається так, як вказав користувач. При виконанні даної програми не потрібно мати великий об'єм оперативної пам'яті, що є дуже великим плюсом. Зависань, відхилень чи глюків програми не було помічено. Додаток 1. Текст програми на мові Сі #include<conio.h> #include<stdio.h> #include<stdio.h> #include<string.h> #include<stdlib.h> /*-------------------cursor--------------------*/ void cursor(int state){ if (state==0) asm{ mov ah,1 mov ch,0x20 int 0x10 } else asm { mov ah,1 mov ch,5 mov cl,7 int 0x10 } } /*-------------------cursor--------------------*/ /*--------------------Ramka-----------------------------------*/ void ramka(int kyt_vl_x,int kyt_vl_y,int dov_x,int dov_y) { int i1; for(i1=kyt_vl_x;i1<dov_x;i1++){ gotoxy(i1,kyt_vl_y-1); putchar(205); } for(i1=kyt_vl_y;i1<dov_y;i1++){ gotoxy(dov_x,i1); putchar(186); } for(i1=dov_x-1;i1>kyt_vl_x-1;i1--){ gotoxy(i1,dov_y); putchar(205); } for(i1=dov_y-1;i1>kyt_vl_y-1;i1--){ gotoxy(kyt_vl_x-1,i1); putchar(186); } gotoxy(kyt_vl_x-1,kyt_vl_y-1); putchar(201); gotoxy(dov_x,kyt_vl_y-1); putchar(187); gotoxy(dov_x,dov_y); putchar(188); gotoxy(kyt_vl_x-1,dov_y); putchar(200); } /*--------------------Ramka-----------------------------------*/ int page=0; int page_count=0; int pos=0; struct value { char name[30]; char adress[30]; char phone[15]; char countf[5]; char duplom[30]; }; struct mai { int count; value m[100]; }; mai list; void refresh_list() { int li=6; int dest; page_count = 0; int tmpl=list.count; while (tmpl-15>0) { tmpl=tmpl-15; page_count++; } if (page*15+15>list.count) { dest=list.count; } else { dest=page*15+14; } for (int i=0;i<15;i++) { gotoxy(9,i+6); printf(" "); } for (i=page*15;i<=dest;i++) { gotoxy(12,li); printf(list.m[i].name); gotoxy(24,li); printf(list.m[i].adress); gotoxy(38,li); printf(list.m[i].phone); gotoxy(51,li); printf(list.m[i].countf); gotoxy(65,li); printf(list.m[i].duplom); li++; } } void insert_list() { char s[100]; list.count++; gotoxy(1,1); printf("%d",list.count); gotoxy(3,23); printf("Enter Name "); scanf("%s",&s); strcat(list.m[list.count].name,s); gotoxy(3,23); printf(" "); gotoxy(3,23); printf("Enter Adress "); scanf("%s",&s); strcat(list.m[list.count].adress,s); gotoxy(3,23); printf(" "); gotoxy(3,23); printf("Enter Phone "); scanf("%s",&s); strcat(list.m[list.count].phone,s); gotoxy(3,23); printf(" "); gotoxy(3,23); printf("Enter Count Fakultet "); scanf("%s",&s); strcat(list.m[list.count].countf,s); gotoxy(3,23); printf(" "); gotoxy(3,23); printf("Enter Duplom "); scanf("%s",&s); strcat(list.m[list.count].duplom,s); gotoxy(3,23); printf(" "); refresh_list(); } void save_list() { FILE *f; f=fopen("с:\\vuz.my","w+"); for (int i=0;i<=list.count;i++) { char tmp[150]; strcpy(tmp,list.m[i].name); strcat(tmp,","); strcat(tmp,list.m[i].adress); strcat(tmp,","); strcat(tmp,list.m[i].phone); strcat(tmp,","); strcat(tmp,list.m[i].countf); strcat(tmp,","); strcat(tmp,list.m[i].duplom); fprintf(f,"%s\n",tmp); } fclose(f); } void delete_list() { if (page*15+pos<=list.count) { for (int i=page*15+pos;i<list.count;i++) { list.m[i]=list.m[i+1]; } list.count--; refresh_list(); } } void sort_list(int vub) { value tmpv; if (vub==0) { for (int i=0;i<=list.count;i++) { for (int j=0;j<=list.count;j++) { if (strcmp(list.m[i].name,list.m[j].name)<0) { tmpv=list.m[i];
Страницы: 1, 2, 3
|