157146 (Інформаційно-довідкова система), страница 2
Описание файла
Документ из архива "Інформаційно-довідкова система", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "157146"
Текст 2 страницы из документа "157146"
5.2 Технологія виконання програми
Виконання програми виконується частинами. Спочатку створюються підпрограми, які полегшують програмування необхідної задачі, і які будуть використовуватися в тексті основної програми. В нашому випадку такими підпрограмами є звичайні графічні функції:
-
Опис всіх графічних примітивів;
-
Створення зображення головного меню.
-
Створення зображення курсора
-
Визначення місця розташування об'єкта;
-
Створення файлу
-
Забезпечення руху курсора
-
Забезпечення виконання базами даних формування, читання, редагування, сортування та пошук інформації за заданим ключем
-
Створення програмного меню;
-
Забезпечення керування програмою за допомогою клавіатури.
5.3 Технологія відлагодження програми
Для того, щоб відлагодити програму, потрібно використати покрокове підключення підпрограм (так ми швидше зрозуміємо у якій частині програми є помилки і послідовно виправимо ці помилки). Тобто спочатку ми записуємо підпрограми в основний текст програми, потім, при наявності помилок, ми змінюємо підпрогами до такого виду, якого вимагає цей текст і синтаксис мови Сі. Потім підлаштовуємо їх під текст програми і перевіряємо їх робочу ефективність. Намагаються зробити найкращу ефективність шляхом зміни тексту підпрограм.
Після успішного під‘єднання головних підпрограм під‘єднуються інші підпрограми(таким чином, як і основні підпрограми). Намагаються створити найкращу взаємодію шляхом перестановки або зміни тексту підпрограм.
6. Інструкція користувачеві
Інтерфейс програми реалізований у графічному режимі з використанням функцій заголовочного файлу include. Інтерфейс є зручним у користуванні і не потребує значних ресурсів комп’ютера для роботи у ньому.
Керування програмою здійснюється повністю за допомогою клавіатури.
Є два способи по запуску програми на виконання:
1) Запуск через середовище програмування
Цей спосіб зручний тим, що при наявності бажань користувача щось змінити у програмі можна одразу ж вийти з програми у середовище програмування і змінити певний код, при цьому відразу ж відкомпілювати новостворений код.
Певною незручністю є те, що не всі можуть мати саме середовище програмування чи компілятор. Для запуску програми потрібно мати щонайменше середовище Borland C++ 3.1. На попередніх версіях програма не тестувалася.
Щоб запустити програму на виконання із середовища програмування потрібно натиснути клавіші +F9. Або здійснити таку послідовність дій у меню самого середовища: Menu (F10) -> Run (+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
#include
#include
#include
#include
/*-------------------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 gotoxy(i1,kyt_vl_y-1); putchar(205); } for(i1=kyt_vl_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.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]; list.m[i]=list.m[j]; list.m[j]=tmpv; } } } } if (vub==1) { for (int i=0;i<=list.count;i++) { for (int j=0;j<=list.count;j++) { if (strcmp(list.m[i].adress,list.m[j].adress)<0) { tmpv=list.m[i]; list.m[i]=list.m[j]; list.m[j]=tmpv; } } } } if (vub==2) { for (int i=0;i<=list.count;i++) { for (int j=0;j<=list.count;j++) { if (strcmp(list.m[i].phone,list.m[j].phone)<0) { tmpv=list.m[i]; list.m[i]=list.m[j]; list.m[j]=tmpv; } } } } if (vub==3) { for (int i=0;i<=list.count;i++) { for (int j=0;j<=list.count;j++) { if (strcmp(list.m[i].countf,list.m[j].countf)<0) { tmpv=list.m[i]; list.m[i]=list.m[j]; list.m[j]=tmpv; } } } } if (vub==4) { for (int i=0;i<=list.count;i++) { for (int j=0;j<=list.count;j++) { if (strcmp(list.m[i].duplom,list.m[j].duplom)<0) { tmpv=list.m[i]; list.m[i]=list.m[j]; list.m[j]=tmpv; } } } } refresh_list(); } void find_list() { int vub; mit_1: gotoxy(3,23); printf(" "); gotoxy(3,23); printf("FIND: | Name-1 | Adress-2 | Phone-3 | CountF-4 | Duplom-5 | "); cursor(1); scanf("%d",&vub); if((vub5)){goto mit_1;} gotoxy(3,23); printf(" "); gotoxy(3,23); printf("Find Text: "); char s[50]; scanf("%s",&s); for (int i=0;i<=list.count;i++) { char s1[50]; switch(vub) { case 1: strcpy(s1,list.m[i].name);break; case 2: strcpy(s1,list.m[i].adress);break; case 3: strcpy(s1,list.m[i].phone);break; case 4: strcpy(s1,list.m[i].countf);break; case 5: strcpy(s1,list.m[i].duplom);break; } if (strcmp(s1,s)==0) { gotoxy(3,pos+6); printf(" "); int j=i; int l=0; while (j-15>=0) { j=j-15; l++; } page=l; pos=j; refresh_list(); gotoxy(3,pos+6); printf(">"); gotoxy(3,23); printf("Press ENTER "); mit_2: int c=getche(); if (c!=13){goto mit_2;} } } cursor(0); gotoxy(3,23); printf(" "); } void new_window(int vub) { clrscr(); cursor(0); ramka(2,2,80,3); ramka(2,5,80,21); ramka(2,23,80,24); gotoxy(2,2); printf("| Save-1 | Insert-2 | Delete-3 | Sort-4,5,6,7,8 | Find-9 | Close-ESC |"); gotoxy(12,5); printf("NAME ADRESS PHONE COUNTF DUPLOM"); if (vub==1) { refresh_list(); } pos=0; mi2: gotoxy(3,23); int c=getche(); switch (c) { case 49:save_list(); break; case 50:insert_list(); break; case 51:delete_list(); break; case 52:sort_list(0); break; case 53:sort_list(1); break; case 54:sort_list(2); break; case 55:sort_list(3); break; case 56:sort_list(4); break; case 57:find_list(); break; case 72: if (pos!=0) { gotoxy(3,pos+6); printf(" "); pos--; gotoxy(3,pos+6); printf(">"); } else { if (page!=0) { page--; gotoxy(3,pos+6); printf(" "); pos=14; refresh_list(); } } break; case 80: if (pos!=14) { gotoxy(3,pos+6); printf(" "); pos++; gotoxy(3,pos+6); printf(">"); } else { if (page_count>page) { gotoxy(3,pos+6); printf(" "); page++; pos=0; refresh_list(); } } break; case 27:goto mi1;break; } goto mi2; mi1: } void open_list() { clrscr(); FILE *f; f=fopen("с:\\vuz.my","r"); char *s; list.count=-1; while(! feof(f)) { list.count++; fscanf(f,"%s\n",s); // printf("%s\n",s); char *p; p = strtok(s,","); int l=0; while (p) { switch(l) { case 0:strcpy(list.m[list.count].name,p);break; case 1:strcpy(list.m[list.count].adress,p);break; case 2:strcpy(list.m[list.count].phone,p);break; case 3:strcpy(list.m[list.count].countf,p);break; case 4:strcpy(list.m[list.count].duplom,p);break; } l++; p = strtok(NULL,","); } } fclose(f); } void main_menu() { mit_3: clrscr(); ramka(2,2,80,24); ramka(20,8,60,16); gotoxy(35,10); printf("New list - 1"); gotoxy(35,12); printf("Open list - 2"); gotoxy(35,14); printf("Exit - 3 "); cursor(0); mit_1: gotoxy(45,14); char c=getche(); if ((c!='1')&&(c!='2')&&(c!='3')) { goto mit_1; } switch (c) { case '1':page_count=0;page=0;list.count=-1; new_window(0);goto mit_3; break; case '2':open_list();new_window(1);goto mit_3; break; case '3':goto mit2; break; } goto mit_1; mit2: } void main() { list.count=-1; main_menu(); // // open_list(); // new_window(); char s[10]; // scanf("%s",&s); } Додаток 2. Результати роботи програми Початок програми Створив файл Висновки Після виконання курсової роботи я отримав необхідні знання та практичні навички роботи з із роботою з файлами, навчився програмувати розгалужені та циклічні процеси, зрозумів як працювати з часом та будувати меню програм. Отримана програма є якісною, швидкою при виконанні і не потребує значних ресурсів комп’ютера для її запуску. Якихось недоліків я не помітив. Дана програма може згодитися для дуже багатьох користувачів, підприємств, навчальних установ. Вона є універсальною, оскільки годинник є невід’ємним атрибутом будь-якої комп’ютерної системи. Тому актуальність даної програми є надзвичайно великою. На цій курсовій роботі я освоїв методи програмування на мові сі і виконав завдання про: Інформаційно- довідкова система “Вищі навчальні заклади м. Львова” Література 1) Кравець П. О. Методичні вказівки до виконання лабораторних робіт з дисципліни “Проблемно-орієнтовані мови програмування”, 2005. 2) Кравець П. О. Методичні вказівки до виконання курсової роботи з дисципліни “Проблемно-орієнтовані мови програмування”, 2005 3) Культин Н. С, С++ в задачах и примерах, Санкт-Петербург 2005. 4) Ричард Хезфилд, Лоуренс Кирби Исскуство программирования на С, Москва, Санкт-Петербург 2001 5) Павловская Т. А., Щупак Ю. А. С,С++ - программирование на языке високого уровня (Структурное программирование), Санкт-Петербург 2003 6) Романов Е. Л. Практикум по программированию на С++, Санкт-Петербург 2004 Дияк І.І. Пропедевтика прикладного програмування – Київ, ІСДО, 1994 – 176 с. Фролов Г.Д., Кузнецов Э.И. Элементы информатики. – М.: Высш. шк., 1989. - 304 с. Кушниренко А.Г., Лебедев Т.В. Программирование для математиков. – М.: Наука, 1988 – 384 с. С.А.Абрамов, Е.В.Зима. Начала информатики. – М.: Наука, 1989. - 256 с. В.И.Пильщиков. Сборник упражнений по языку Паскаль. – М.: Наука, 1989. – 160 с. С.А.Абрамов, Т.Т.Гнездилова, Е.Н.Капустина. Задачи по программированию. – М.: Наука, 1988. – 224 с. В.М.Брябрин. Программное обеспечение персональных ЭВМ. – М.: Наука, 1989. – 272 с. В. Э.Фигурнов. IBM PC для пользователя. Изд. шестое. – М.: “Инфа М”, 1995. – 432 с. В.П.Грибанов, С.В.Дробин, В.Д.Медведев. Операционные системы. М.: “Финансы и статистика”. 1990. – 230 с. В.И.Касьянов, В.К.Сабельфельд. Сборник заданий по практикуму на ЭВМ. – М.: “Наука”, 1986. – 272 с. Н.П.Трифонов, Е.И.Пасхин. Практикум на ЭВМ. – М.: Наука, 1982. – 288 с. М.Дансмур, Е.Дейвис. Операционная система UNIX и программирование на языке СИ. – М.: “Радио и связь”, 1989. – 192 с. В.В.Фаронов. Турбо Паскаль. – МВТУ, М., 1992. – 304 с. Е.А.Зуев. Язык программирования TURBO PASCAL 6.0. – М. “Унитех”, 1992. – 298 с. А.Епанешников, Е.Епанешников. Програмирование в среде Turbo Pascal 7.0. -3-е изд., - М.: "ДИАЛОГ-МИФИ", 1997. - 288 с. Delphi 2. Энциклопедия пользователя: Пер. с англ./Чарльз Калверт. - К.: НИПФ "ДиаСофт Лтд.", 1996. - 736 с. Использование Delphi 3. Специальное издание.: Пер. с англ. - К.: Диалектика, 1997. - 768 с. Delphi 4. Библия разработчика: Пер. с англ. - К.; СПб.: Диалектика, 1998. - 672.