Міністерство освіти і науки України
Національний університет "Львівська політехніка"
Кафедра "Інформаційні системи та мережі "
КУРСОВ А РОБОТА
з дисципліни "Проблемно-орієнтовані мови програмування"
на тему:
Інформаційно довідкова система
“Лікувальні заклади м.Львова”
З А В Д А Н Н Я
на курсову роботу з дисципліни
"Проблемно-орієнтовані мови програмування"
студенту групи КН-17 Маршалека Ю.І
Тема: Навчальна програма «Вивчення основ програмування Turbo C»
Завдання:Інформаційно довідкова система “Лікувальні заклади м.Львова”
ЗМIСТ ЗАВДАННЯ ТА КАЛЕНДАРНИЙ ПЛАН ЙОГО ВИКОНАННЯ
1.
Провести аналiтичний огляд лiтератури по заданій темi.
2.
Розробити алгоритм та графiчну схему програми розв'язування задачi
3.
Написати програму на мовах C /C++.
Вимоги до програми:
2) програма повинна забезпечувати роботу з файлами структурованихданих (базами даних):формування,читання,редагування,сортування та пошук інформації за заданим ключем;
3)програма повинна працювати у вікні MSDOS під керуванням операчійної системи Windows
4) програма повинна мати інтерфейс у вигляді вікон та меню для вибору
режимів її роботи,а також систему допомоги;
5) передбачити введення/виведення даних з клавіатури та з файлів;
6) керування режимами роботи програми виконати за допомогою
клавіатури та миші.
4.
Пiдготувати вхiднi данi для контрольного прикладу.
5.
Реалiзувати та вiдлагодити програми на вказаних мовах програмування.
6.
Оформити записку до курсової роботи згiдно вимог Мiжнародних
стандартiв, дотримуючись такого змiсту:
28.05
-вступ;
-формулювання задачі;
-алгоритми розв'язування задачі;
-методи та засоби розв’язування задачі;
-опис програми на мові C/C++ ;
-технологія програмування, виконання та відлагодження програми;
-інструкція користувачу;
-контрольний приклад та аналіз результатів комп'ютерної реалізації
програми;
-висновки;
-література;
-додатки
ЗАВДАННЯ ПРИЙНЯТО ДО ВИКОНАННЯ: ____________
пiдпис студента
Керівник роботи: _______________ Кравець П.О
Зміст
Вступ
1.Формулювання задачі …………………………………………………. 5
2.Методи та засоби розв’язування задачі ………………………………. 6
3.Алгоритми розв’язування задачі ……………………………………… 8
4.Програма та її опис……………………………………………………...16
4.1.Назва програми ………… ……………………………………….. .16
4.2.Призначення програми ……………………………………………..16
4.3.Мови програмування, на яких написана програма ……………….16
4.4.Логічна структура програми ……………………………………….16
4.5.Вхідні та вихідні дані …………………………………………….. ..17
4.6.Програмні засоби.…………………………………………………... 17
4.7.Технічні засоби …………………………………………………….. 17
5.Технологія програмування, виконання та відлагодження програми 18
5.1.Технологія програмування програми ……………………………...18
5.2.Технологія відлагодження програми ……………………………. ..18
5.3.Технологія виконання програми …………………………………...18
6.Інструкція користувачеві …………………………………………….....19
7.Контрольний приклад та аналіз результатів комп’ютерної реалізації
програми …………………………………………………………………22
Висновки
Список літератури
Додаток 1. Текст програми на мові Сі
Додаток 2. Результати роботи програми
Вступ
Метою курсової роботи є закріплення теоретичних знань та практичних навичок програмування, набутих при вивченні дисциплін „Основи програмування” та „Проблемно орієнтовані мови програмування”.
В ході виконання курсової роботи студенти повинні навчитися самостійно працювати з літературою, розробляти алгоритми, здійснювати їх програмну реалізацію та від лагодження на сучасних комп‘ютерних системах.
За останні роки відбувся різкий стрибок у розвитку комп’ютерної техніки й програмного забезпечення із одночасним розширення сфер застосування персональних комп’ютерів.
Програмування являє собою комплекс по написанню системи програмних кодів, які здійснюватимуть керування тією чи іншою інформаційною системою, взаємодія з якою здійснюється через інформаційні технології.
Програмна реалізація поставленої задачі може використовуватися як приклад використання різноманітних графічних функцій. А також як приклад програмування роботи з часом.
Тема моєї курсової роботи є надзвичайно актуальною у наш час, оскільки довідкова система зараз є дуже виликим помічником для навчання і пошуку інформації у світі інформаційних технологій.
1.Формулювання задачі
У ході даної курсової роботи я повинен був зробити інтерфейс програми який би забезпечував діалог: ком’ютер-користувач для роботи з базою даних (в мому випадку база даних про довідкову систему лікувальних закладів м . Львова) . Даний інтерфейс мав складатися з такого меню: інформацію про лікувальні заклади; пошук: виводить дані про один лікувальний заклад ; а також вихід (exit).
Я зробив так щоб користувач сам вибирав ту кількість даних яких він хоче подати на вхід, а не ставив на кількість вхідних даних певні обмеження;
Метод читання даних виглядає в наступним чином:
Користувач вводить ключове слово( наприклад назву закладу) і йому комп'ютер показує всі дані про заданий заклад.
Дана програма може компілюватися у будь-якому середовищі С/С++, починаючи з Borland C++ 3.1, або Turbo C. Саму програму я реалізував на мові С.
Також її можна викликати у операційній системі Windows і вона буде працювати у вікні MSDOS.
2. Методи та засоби розв’язування задачі
Нижче будуть наведені теоретичні відомості, які допоможуть краще усвідомити специфіку реалізації задачі.
Символьна константа складається з одного символа ASCII між апострофами (''). Стринги є одним з найбільш корисних та важливих типів даних мови С. Символьний рядок (стринг) - це масив символів, замкнений у лапки ("). Він має тип char. Нульовий символ (\0) автоматично додається останнім байтом символьного рядка та виконує роль ознаки його кінця. Кількість елементів у масиві дорівнює кількості символів у стрингу плюс один, оскільки нульовий символ також є елементом масива. Кожна стрингова константа, навіть у випадку, коли вона ідентична іншій стринговій константі, зберігається у окремому місці пам'яті. Якщо необхідно ввести у рядок символ лапок ("), то перед ним треба поставити символ зворотного слешу (\). У стринг можуть бути введені будь-які спеціальні символьні константи, перед якими стоїть символ \.
Прототипи всіх функцій, що працюють з рядками символів, містяться у файлі string.h. Всі функції працюють з рядками, що закінчуються нульовим символом.
В програмуванні масив (англ. array) — одна з найпростіших структур даних, сукупність елементів переважно одного типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві.
Масив може бути одновимірним (вектором), та багатовимірним (наприклад, двовимірною таблицею), тобто таким, де індексом є не одне число, а кортеж (сукупність) з декількох чисел, кількість яких співпадає з розмірністю масива
В переважній більшості мов програмування масив є стандартною вбудованою структурою даних.
В програмуванні та комп'ютерних науках структури даних — це способи організації даних в комп'ютерах. Часто разом зі структурою даних пов'язується і специфічний перелік операцій, які можуть бути виконаними над даними, організованими в таку структуру.
Правильний підбір структур даних є надзвичайно важливим для ефективного функціонування відповідних алгоритмів їх обробки. Добре побудовані структури даних дозволяють оптимізувати використання машинного часу та пам'яті комп'ютера для виконання найбільш критичних операцій.
По ходу виконання даної курсової роботи найбільша потреба виникала у використанні стандартних графічних функцій, які входять у директиву <graphics.h>, а також у бібліотечних функціях консольного введення - виведення, які знаходяться у директиві <conio.h>.
Приклади функцій консольного введення – виведення, прототипи яких знаходяться у <conio.h> :
int getch(void); Зчитує 1 символ з клавiатури без вiдображення на0 екранi i без натискання клавiшi <Enter>.
int kbhit(void); Повертає ненульове значення, якщо у буферi клавiатури є незчитанi символи, iнакше повертає 0.
Деякі функції для роботи з екранними вікнами
void window(int x1, int y1, int x2, int y2); Створює вiкно з координатами вузлових точок (x1,y1)-(x2,y2).
void gotoxy(int x, int y);
Перемiщує курсор в позицiю з координатами x, y.
void textcolor(int c);
Встановлює колiр символiв.
void textbackground(int c);
Встановлює колір фону (допускаються кольори 0-7).
void clrscr(void);
Очищає екран або вікно.
};
Побудова меню програми та можливість вибору варіантів у ньому забезпечується за допомогою таких операторів мови Сі, як switch та case, а також оператору break, який забезпечує вихід з вищенаведених операторів.
3.Алгоритми розв’язування задачі
Блок – схеми
void ramka(int kyt_vl_x,int kyt_vl_y,int dov_x,int dov_y)
void refresh_list()
void save_list()
void delete_list()
void sort_list(int vub)
void find_list()
void new_window(int vub)
void open_list()
void main_menu()
4.Програма та її опис
4.1.Назва програми.
Інформаційно - довідкова система “Лікувальні заклади м. Львова”
4.2.Призначення програми.
Робота з файлами структурованих даних (або базами даних формування , читання ,редагування , сортування та пошук інформації за заданим ключем. Може бути використана для показу інформації пошукової системи про лікувальні заклади. Сфера застосування та використання є необмеженою. Може бути придатною для будь-яких організацій, підприємств, навчальних закладів.
4.3.Мови програмування, на яких написана програма.
Програма написана на мові Сі.
Мова Сі є мовою середнього рівня. Мова Сі має засоби системного програмування, включає у себе усі конструкції сучасних алгоритмічних мов, найкраще враховує можливості сучасних комп’ютерних систем, а також є мобільною мовою.
4.4.Логічна структура програми.
Дана програма складається з двох файлів: основного файлу kyrsova.cpp та файлу kurs.h.
Дана програма має наступну структуру (під структурою розуміються функції складових частин програми):
Функції файлу kurs.h
Void ramka (int kyt _vl_y, int dov_x, int dov_y) - функція для встановлення рамки .
void cursor (int state ) курсор програми .
void ramka(int kyt_vl_x,int kyt_vl_y,int dov_x,int dov_y) - функція для встановлення рамки курсор в рамці
Параметри int kyt_vl_x,int kyt_vl_y,int dov_x,int dov_y відповідають за координати рамки.
void refresh_list()- функція для виводу створеного файлу .
void insert_list() - функція для створеного файлу і запис на нього інформації
void MyDrawText(int x,int y,char *Text) - функція для виводу текстової інформації на екран.
void save_list()- функція для сохряняння файлу
void delete_list() - функція для видалення листа запису який буде знаходитись у меню
void sort_list(int vub)- функція для сортування листів записів яка буде записана у меню
Функції файлу kursova.cpp
void new_window(int vub) - функція, яка створює потрібний файл
void open_list() - функція для відкриття файлу
void main_menu() - функція для побудови меню .
void main( ) - основна функція, через яку взаємодіють усі інші функції.
Усі функції у даній програмі є взаємопов’язані. Обмін інформацією між ними відбувається як через локальні, так і через глобальні змінні, а також через список фактичних-формальних параметрів.
4.5.Вхідні та вихідні дані.
Вхідними даними у даній програмі є меню і сортування.
Вихідними даними в даній програмі є інформаційна система, яка показує інформацію про лікувальні заклади.
4.6.Програмні засоби.
Бажано мати середовище Borland C++ 3.1 або Turbo C. А також встановлену операційну систему Windows. На іших ОС дана програма не тестувалася.
Програма повинна працювати у вікні MS-DOS під керуванням Windows.
Або запускатися з самого середовища.
Для роботи програми необхідна ОС: DOS, Windows 1,2,3; Windows 95/98/ME; Windows 2000; Windows XP;
Для компілювання проекту необхідний компілятор Borland С (C++), бібліотечні функції : stdio.h, conio.h, math.h.,, stdlib.h.
4.7.Технічні засоби.
Програма не потребує потужного комп’ютера, тому з легкістю піде практично на всіх конфігураціях.
5.Технологія програмування, виконання та відлагодження програми
5.1.Технологія програмування програми.
Використання моделі у розробці та вирішенні складних задач є одним з найважливіших методів. Модель – це заміщувач об’єкту дослідження, що знаходиться з ним у такій відповідності, яка дозволяє отримати нове значення про об’єкт.
Оскільки модель ґрунтується на аналогії, то вона губить сенс засобу пізнання як у випадку тотожності моделі та об’єкту дослідження, так і у випадку дуже великих відмінностей між ними. Таким чином моделювання пов’язане зі спрощенням, абстрагуванням прототипу від ряду його властивостей, ознак, сторін. Проте надмірно спрощена модель може призвести до невідповідності з досліджуваним об’єктом, що унеможливить дослідження його з допомогою такої моделі. З іншого боку, врахування в моделі якомога більшої кількості властивостей досліджуваного об’єкту призводить до ускладнення процесу дослідження.
5.2.Технологія виконання програми.
Виконання програми виконується частинами. Спочатку створюються підпрограми, які полегшують програмування необхідної задачі, і які будуть використовуватися в тексті основної програми. В нашому випадку такими підпрограмами є звичайні графічні функції:
Опис всіх графічних примітивів;
Створення зображення головного меню .
Створення зображення курсора
Визначення місця розташування об'єкта;
Створення файлу
Забезпечення руху курсора
Забезпечення виконання базами даних формування , читання, редагування, сортування та пошук інформації за заданим ключем
Створення програмного меню;
Забезпечення керування програмою за допомогою клавіатури.
5.3.Технологія відлагодження програми.
Для того, щоб відлагодити програму, потрібно використати покрокове підключення підпрограм (так ми швидше зрозуміємо у якій частині програми є помилки і послідовно виправимо ці помилки). Тобто спочатку ми записуємо підпрограми в основний текст програми, потім, при наявності помилок, ми змінюємо підпрогами до такого виду, якого вимагає цей текст і синтаксис мови Сі. Потім підлаштовуємо їх під текст програми і перевіряємо їх робочу ефективність. Намагаються зробити найкращу ефективність шляхом зміни тексту підпрограм.
Після успішного під‘єднання головних підпрограм під‘єднуються інші підпрограми(таким чином, як і основні підпрограми). Намагаються створити найкращу взаємодію шляхом перестановки або зміни тексту підпрограм.
6.Інструкція користувачеві
Інтерфейс програми реалізований у текстовому режимі з використанням функцій заголовочного файлу include<string.h>. Інтерфейс є зручним у користуванні і не потребує значних ресурсів комп’ютера для роботи у ньому.
Керування програмою здійснюється повністю за допомогою клавіатури.
Є два способи по запуску програми на виконання:
1) Запуск через середовище програмування
Цей спосіб зручний тим, що при наявності бажань користувача щось змінити у програмі можна одразу ж вийти з програми у середовище програмування і змінити певний код, при цьому відразу ж відкомпілювати новостворений код.
Певною незручністю є те, що не всі можуть мати саме середовище програмування чи компілятор. Для запуску програми потрібно мати щонайменше середовище Borland C++ 3.1. На попередніх версіях програма не тестувалася.
Щоб запустити програму на виконання із середовища програмування потрібно натиснути клавіші <Ctrl>+F9. Або здійснити таку послідовність дій у меню самого середовища: Menu (F10) -> Run (<Ctrl>+F9).
2) Запуск програми через операційну систему
На мій погляд, цей спосіб є набагато зручнішим від попереднього. Щоб запустити програму через операційну систему потрібно знайти файл KURSOVA.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];
};
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);
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(" ");
refresh_list();
}
void save_list()
{
FILE *f;
f=fopen("c:\\likuv_z.dat","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);
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];
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;
}
}
}
}
refresh_list();
}
void find_list()
{
int vub;
mit_1:
gotoxy(3,23);
printf(" ");
gotoxy(3,23);
printf("FIND: | Name-1 | Adress-2 | Phone-3 | ");
cursor(1);
scanf("%d",&vub);
if((vub<1)||(vub>5)){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;
}
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=getch();
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");
if (vub==1)
{
refresh_list();
}
pos=0;
mi2:
gotoxy(3,23);
int c=getch();
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("c:\\likuv_z.dat","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;
}
l++;
p = strtok(NULL,",");
}
}
fclose(f);
}
void main_menu()
{
mit_3:
clrscr();
ramka(2,2,80,24);
ramka(20,8,60,16);
gotoxy(32,10);
printf("New database - 1");
gotoxy