157146 (Інформаційно-довідкова система), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Інформаційно-довідкова система", который расположен в категории "". Всё это находится в предмете "информатика" из 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.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее