Написання програми для видалення елементів і очищення зовнішніх таблиць

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

РЕФЕРАТ
Пояснювальна записка: 43c, 6 мал, 28 табл, 3 джерела, 4 додатки.
Метою створення курсової роботи є розробка програми, яка виконує видалення елементів зовнішніх таблиць, а також очищення файлів, висновок таблиць на екран.
Вхідними даними є: таблиця різної структури і розміру у файлі. Вихідними даними є файл з даними, або повністю очищений файл. Так само виводиться текстовий файл з інформацією про зовнішніх таблицях.

ЗМІСТ
Введення
1 Постановка завдання
1.1 Мета розробки
1.2 Функціональні вимоги
2. Методи і алгоритми
3 Вибір мови програмування
4 Опис програмного продукту
4.1 Вхідні дані
4.2 Вихідні дані
4.3 Схема інформаційних потоків
4.4 Метод рішення
4.5 Функціонально - логічна схема
5 Комплект поставки і інсталяція
5.1 Комплект поставки
5.2 Порядок інсталяції
5.3 Запуск програми
6 Тестування програмного продукту
Висновки
Перелік використаних джерел
Додаток А Технічне завдання
Додаток Б Керівництво користувача
Додаток В Екранні форми
Додаток Г Лістинг програми

ВСТУП
Зовнішні таблиці - таблиці, що зберігаються у файлах. Як правило, такі файли великі, і для операцій над ними, зокрема видалення або додавання елементів, потрібен великий обсяг оперативної пам'яті, тому для економії пам'яті використовуються додаткові або тимчасові файли, які після твори операцій над ними перейменовуються або видаляються.
Зовнішні таблиці - це таблиці будь-якої структури. Для роботи з ними необхідно визначити кількість і тип полів (символьний або рядковий). Прикладом зовнішніх таблиць можуть бути різні прайс-листи, інформація про абонентів кабельного телебачення, телефонний довідник і т.д. Зовнішні таблиці активно використовуються в різних базах даних.

1 ПОСТАНОВКА ЗАВДАННЯ

1.1 Мета розробки
Мета курсового проекту - написання програми, яка завантажувала б з файлів таблиці різної структури та обсягу, мала зрозумілий графічний інтерфейс, визначала тип полів (строковий або символьний), а також виводила цю таблицю на екран. Якщо файл великий, повинен бути передбачений вертикальний скролінг із зсувом по одному елементу. Програмний продукт передбачає виконання операцій видалення і очищення зовнішніх таблиць. Також повинна бути розроблена система допомоги користувачеві (інформація про зовнішні таблицях, про використання програми, а також короткі відомості про автора).
1.2 Функціональні вимоги
Вихідні дані зберігаються у файлах. Це дуже зручно. Таким способом можна завантажувати потрібну інформацію частково, що і потрібно здійснити в програмі. Дуже зручно змінювати інформацію, що зберігається у файлах.

2 МЕТОДИ ТА АЛГОРИТМИ
Зовнішні таблиці можуть бути дуже великі, тому для роботи з ними принципово неправильно використовувати тільки оперативну пам'ять, необхідні різні додаткові (допоміжні) структури, такі як файли. Наведемо приклад видалення елемента зовнішніх таблиць за порядковим номером і інтервалу. Необхідно видалити з п'ятого по дванадцятий елемент. Спочатку зчитуємо заголовок таблиці і без змін заносимо в додатковий файл.
Вихідна таблиця
N
п / п

(Hz)
E1
(B)
E2
(B)
L1
(MG)
1
100
30j
40
100
2
50
50j
36j
200
3
150
80
47j
50
4
100
40j
20j
220
5
50
60
30j
550
6
50
100j
24
150
7
100
50j
50
150
8
75
60
30j
270
9
100
30
80j
200
10
50
90j
60
400
11
100
100
75j
150
12
75
60j
40
120
13
100
90
75j
300
14
50
50
40j
120
15
50
70j
45
150
Спочатку зчитуємо заголовок таблиці і без змін заносимо в додатковий файл.

Вихідна таблиця Додаткова таблиця
N
п / п

(Hz)
E1
(B)
E2
(B)
L1
(MG)
N
п / п

(Hz)
E1
(B)
E2
(B)
L1
(MG)

Потім починаємо зчитувати по одному елементу з вихідної таблиці, і якщо умова виконується (зчитується з першого по п'ятий і з тринадцятого за останній елементи), заносимо в додаткову таблицю.
1
100
30j
40
100
1
100
30j
40
100
2
50
50j
36j
200
2
50
50j
36j
200

3
150
80
47j
50
3
150
80
47j
50
4
100
40j
20j
220
4
100
40j
20j
220

Пропускаємо елементи до тринадцятого, потім аналогічно зчитуємо по одному, і заносимо в додатковий файл
13
100
90
75j
300
5
100
90
75j
300
14
50
50
40j
120
6
50
50
40j
120

15
50
70j
45
150
7
50
70j
45
150
Додаткова таблиця в додатковому файлі
N
п / п

(Hz)
E1
(B)
E2
(B)
L1
(MG)
1
100
30j
40
100
2
50
50j
36j
200
3
150
80
47j
50
4
100
40j
20j
220
5
100
90
75j
300
6
50
50
40j
120
7
50
70j
45
150
Тепер видаляємо вихідний файл, запам'ятавши при цьому його назву, і перейменовуємо додатковий.
Складніше йде справа з видаленням елементів по заданому значенню ключа. Необхідно визначити тип полів таблиці і самого ключа, потім порівнювати поелементно числа або рядки (в залежності від ключа) в записах зовнішніх таблиць, і таким же чином, як було розглянуто вище, заносити в тимчасовий файл і провести переіменовку додаткового файлу.
Вихідна таблиця
Вид таблиці
Щільність заповнення



упорядкований
100%
80
1
12
невпорядкований
100%
40
1
15
Хеш-таблиця
50%
400
1.2
20
Введемо ключ " 1 "
Вихідна таблиця Додаткова таблиця
Вид
Щільність зап.



Вид
Щільність зап



Прочитуємо 1-й елемент
1
1
1
1


упорядкований
100%
80
1
12
Елемент не заноситься в додаткову таблицю

Прочитуємо 2-й елемент
1
1
1
1


невпорядкований
100%
40
1
15
Елемент не заноситься в додаткову таблицю
Прочитуємо третій елемент
1
1
1
1
1
1
1


Хеш-таблиця
50%
400
1.2
20
Елемент заноситься в додаткову таблицю
Додаткова таблиця
Вид таблиці
Щільність заповнення



Хеш-таблиця
50%
400
1.2
20
Тепер видаляємо вихідний файл, запам'ятавши при цьому його назву, і перейменовуємо додатковий.

3 ВИБІР МОВИ ПРОГРАМУВАННЯ

Процес роботи комп'ютера полягає у виконанні програми, набору цілком визначених команд в цілком певному порядку. Машинний код команди, що складається з нулів і одиниць, вказує, яка саме дія має виконати процесор. Тобто щоб створити програму для комп'ютера, необхідно записати послідовність нулів і одиниць. Однак програмування в машинних кодах - заняття виснажливе і малопродуктивна. Для спрощення процесу програмування були створені спеціальні засоби - мови програмування. Вони стали з'являтися з 50-х років і не перестають з'являтися і сьогодні. Величезна кількість мов говорить про ще більшій кількості завдань, які доводиться вирішувати за допомогою комп'ютера.
Взагалі, одну і ту ж задачу зазвичай можна вирішити з використанням різних мов. Але застосування невідповідного мови програмування може помітно ускладнити процес програмування або погіршити результат роботи.
Для реалізації даного програмного продукту була обрана мова C і компілятор Borland C + + 3.1.
Це рішення було прийнято з таких причин:
- Програмний продукт надто великий для того, щоб бути написаним на мові низького рівня, такому як асемблер;
- Система вимагає високої швидкодії і доступу до низкорівневому обладнання;
- Мова програмування повинна містити бібліотеку для роботи в графічному режимі;
- Мова повинна мати засоби роботи з рядками;
- Мова повинна містити засоби роботи з файлами;
- Необхідні засоби динамічного розподілу пам'яті;
- Бажано наявність отладчика, що дозволяє виконувати програму у покроковому режимі, переглядати значення змінних і регістрів процесора в процесі виконання програми.
Мова C відповідає всім цим вимогам. Хоч він і не є мовою низького рівня, швидкість програм написаних на C досить висока в порівнянні з іншими високорівневих мовами. Тим не менш, він володіє всіма рисами мов високого рівня: володіє потужними керівними структурами, є типізовані мовою, дозволяє структурувати програму. Бібліотеки мови C надають засоби роботи в графічному режимі, безліч функцій роботи з рядками і файлами. У C реалізована система динамічного розподілу пам'яті. Він дозволяє звертатися до будь-яких адресами оперативної пам'яті, до портів введення виведення, перериваннях операційної системи. Є можливість робити асемблерні вставки. Так що найбільш критичні ділянки програми можуть бути написані на мові асемблера. Нарешті, до складу системи Borland C + + 3.1 входить потужний відладчик, що дозволяє розставляти в тексті програми контрольні точки, виконувати програму у покроковому режимі, переглядати значення змінних, регістрів і областей оперативної пам'яті по ходу виконання програми.
Крім того, програми, написані на C, відрізняються компактністю як вихідного, так і машинного коду. Вони легко переносяться на інші операційні системи.
Мова C володіє також і деякими недоліками: некоректне використання покажчиків може призвести до серйозних помилок у програмі; компактність мови в поєднанні з великою кількістю операторів дає можливість створювати код, розуміння якого надзвичайно важко. Ці недоліки пов'язані з тим, що C орієнтований на досвідчених програмістів, які добре знають, що вони роблять.
Таким чином, найбільш зручним для реалізації даного програмного продукту є мова програмування C.

4 ОПИС ФУНКЦІОНУВАННЯ ПРОГРАМНОГО ПРОДУКТУ
4.1 Вхідні дані
Вхідними даними є будь-який файл, що містить таблицю будь-якої структури (тип полів - символьний або рядковий).
4.2 Вихідні дані
Вихідними даними є той же файл, але зі змінами, що залежать від дій користувача, структура таблиці при цьому не порушується.
4.3 Схема інформаційних потоків
Існує головна програма. У неї надходять Вхідні дані, що вводяться користувачем з клавіатури (ім'я файлу даних, ключ), а також із зовнішніх текстових файлів (теорія по ВТ, вихідні дані). У відповідь на дані, що вводяться головна програма виводить на екран монітора Вихідні дані - теоретичний матеріал, довідку, таблиці з даними. Схематично робота програми зображена на малюнку 1.6.

Клавіатура
Назва файлу
Ключ
ГОЛОВНА ПРОГРАМА
Дисплей
монітора
Таблиці даних



Довідка
Зовнішні файли
Файли з даними і
теорією




Малюнок 4.3 Схема інформаційних потоків.
4.4 Метод рішення
Після запуску програми відбувається промальовування екрану потім і самого головного меню. З меню викликаються функції: файл, висновок віконця-запиту про завантаження, або очищення файлу, або запиті про вихід з програми; таблиця, висновок віконця-запиту про видалення елементів зовнішніх таблиць; Довідка - в цьому пункті меню користувач дізнається, як правильно працювати з програмою, як коректно вийти; вихід.
Видалення елементів відбувається за такою схемою: зчитуємо в циклі по одному елементи з заданого файлу, перевіряємо, чи входить цей елемент в заданий діапазон: якщо немає, то записуємо в циклі по одному елементи в тимчасовий файл, якщо так, то пропускаємо. Потім видаляємо початковий файл і перейменовуємо тимчасовий.

4.5 Функціонально - логічна схема




Початок
Вибір пункту меню
Файл
Видалення
Допомога
Вихід
очищення
завантаження
За номером
Перегляд довідкової
інформації
За ключу
За інтервалу
Зовнішня пам'ять


Малюнок 4.5 - функціонально - логічна схема
Робота програми починається із завантаження головного меню програми. Він складається з рядка меню і двох вікон виводу. Рядок "Файл" складається з трьох пунктів. Користувач вибирає потрібний йому пункт. Призначення пунктів рядка наступне:
1) новий - створення нового файлу з таблицею;
2) завантаження - завантаження з зовнішньої пам'яті вже існуючого файлу;
3) видалення - видалення існуючого файлу з пам'яті ЕОМ;
Меню «Видалення» складається з трьох пунктів:
1) за номером - видалення з завантаженої таблиці запису під відповідним номером (значення задає користувач).
Перегляд меню «Довідка» призведе до висновку довідкової інформації з експлуатації програми на екран.
Меню «Вихід» виконує звільнення використовуваної пам'яті, закриття використовуваних файлів і завершення роботи алгоритму.
Схематично робота програми представлена ​​на малюнку 4.5.

5 КОМПЛЕКТ ПОСТАВКИ І ІНСТАЛЯЦІЇ

5.1 Комплект поставки
У комплект постачання програмного продукту входять наступні файли:
kursovoi.exe - файл запускає програму;
start.bat - файл запускає русифікатор, а потім програму;
1.in, 2.in, 3.in - файли-приклади, що містять деякі таблиці;
help.dat - файл містить текст довідки;
keyrus.com - русифікатор;
egavga.bgi - файл містить драйвер відеоадаптера;
5.2 Порядок інсталяції
Процедура інсталяції дуже проста:
1) на жорсткому диску необхідно створити нову папку;
2) у цю папку скопіювати файли, що входять у комплект постачання.
5.3 Запуск програми
Завантажується файл start.bat. Програма запущена. У разі відсутності будь-яких файлів не гарантується правильність роботи програми.

6 ТЕСТУВАННЯ ПРОГРАМНОГО ПРОДУКТУ
Тестування програмного продукту можна зробити, завантажуючи різні файли, виробляючи над ними операції видалення елементів або очищення таблиць, перегляд довідкового матеріалу, а також видаляючи з папки різні файли, необхідні для коректної роботи програми, і спостерігаючи за реакцією програми.
На тестовому прикладі покажемо дія програми.
Завантажуємо файл:
Після вибору пункту меню "Видалення" → "За інтервалу" і ввівши від 4-х до 13-ти, отримаємо:
Після завантаження того ж файлу і вибравши: "Видалення" → "За ключу", ввівши ключ " 250 " , Отримаємо:
n
Індекс
Продукт
Вартість
1
30/121
Печиво
210
2
15/124
Цукерки
150
3
12/212
Зефір
140
6
10/376
Картопля
480
7
35/564
Кавуни
700
10
20/341
Морква
800
11
10/343
Цибуля
750
12
15/123
Горіхи
210
13
30/121
Айва
450
14
15/124
Капуста
150
Тестуючи даний програмний продукт можна визначити його плюси і мінуси. До позитивних якостей можна віднести простий і зрозумілий інтерфейс, внизу екрану на нижній кнопці знаходиться підказка до використання, все, що потрібно довідатися з експлуатації програми знаходиться в пункті меню "Допомога". У "логічного" частини програми головними плюсами є можливість редагування файлів з таблицями без застосування самої програми, також створення нових файлів з різними структурами і конструкціями. Типи полів завантажується таблиці можуть бути або символьними, або числовими, незалежно від їх порядку або конфігурації (тобто розглянуті різні варіанти представлення структури таблиці). Розглянуто також видалення елементів за заданим значенням ключа, по інтервалу. Але в програмі є й свої недоліки: видалення елементів за складним значенням ключа (через можливі складних конструкцій), додавання елементів у файл (з тієї ж причини), 16-ти-кольоровий інтерфейс, також відсутність гарячих клавіш.

ВИСНОВКИ
Метою даного програмного продукту є розробка програми, яка виконувала б видалення елементів і очищення зовнішніх таблиць. Програма має свої переваги і недоліки, а також перспективи удосконалення. До позитивних якостей можна віднести те, що програма займає небагато місця на жорсткому диску, дуже швидко завантажується, не вимоглива до операційних систем, виконує перегляд і редагування файлів різних конструкцій.
До недоліків можна віднести відсутність можливості управляти мишею, відсутність гарячих клавіш.
До перспективам удосконалення можна віднести підключення маніпулятора "миша", створення більш яскравого інтерфейсу, можливості виконання ще деяких операцій із зовнішніми таблицями (додавання елементів і т. д.).

ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. В. В. Подбельський, С. С. Фомін "Програмування на мові Сі" ,2-е видання - Москва: "Фінанси і статистика", 2002р. - 600С.
2. Герберт "Шілдт Повний довідник по С", 4-е видання - К.: Вільямс, 2002 - 700С.
3. Джефф Елджер "C + +" - Санкт-Петербург: "Бібліотека програміста", 2000р. - 320с.

Додаток А
ТЕХНІЧНЕ ЗАВДАННЯ
А.1 Загальні відомості
Повне найменування проектованої системи: "Видалення елементів і очищення зовнішніх таблиць". Систему проектує студент 2-го курсу Донецького державного інституту штучного інтелекту (ДонДІШІ), факультету сучасних комп'ютерних інформаційних технологій Клімов В. А.
А.2 Підстави для розробки
Підставою для розробки є завдання до курсового проектування з курсу "Структури і організація даних в ЕОМ", видане кафедри програмного забезпечення інтелектуальних систем, факультету СКІТ.
А.3 Мета розробки
Мета розробки - створення програмного продукту, призначеного для видалення елементів зовнішніх таблиць за заданим значенням ключа, висновок таблиць на екран, можливість збереження результатів у файл.
А.4 Вимоги до ПП
А.4.1 Вимоги до ПП в цілому
К ПП пред'являються наступні вимоги:
- Наявність зручного інтерфейсу у вигляді меню з системою підказок, які дозволяють користувачеві керувати програмою;
- Наявність контролю даних, що вводяться (перевірка на наявність файлу);
- Висновок на екран результату виконання операцій над файлом.
А.4.2 Вимоги до завдань і функцій, виконуваних ПП
Програмний продукт повинен реалізовувати такі функції:
- Зчитування інформації з файлу;
- Видалення елементів зовнішніх таблиць;
- Очищення файлів;
- Збереження результатів у файл;
- Висновок текстової інформації про зовнішні таблицях.
А.4.3 Вимоги до технічного забезпечення
Програмний продукт повинен нормально функціонувати на ПК з наступними характеристиками:
- Процесор з частотою не нижче 66 MHz;
- 4MB пам'яті;
- VGA-монітор з підтримкою розширення 640x480.
А.4.4 Організаційні вимоги
Програмний продукт повинен:
- Бути розроблений на мові С;
- Функціонувати під ОС MS-DOS 5.0 і вище;
- Бути забезпеченим пояснювальною запискою обсягом не менше 30 сторінок і керівництвом користувача.
Етапи розробки та планові терміни виконання вказані в таблиці А.1
Таблиця A.1 - Графік виконання курсового проекту

Етапи роботи
Термін виконання (тижня)
1
Постановка завдання: формулювання, вихідні дані, результати, визначення вимог до програмного продукту.
1
1.
Складання технічного завдання
1-2
2.
Технічне проектування. Вивчення методу розв'язання задачі.
2-3
3.
Робоче проектування.
Визначення структур вхідних і вихідних даних. Оцінки структур даних і алгоритмів.
4
4.
Написання алгоритмів видалення елементів за різних значеннях ключа.
5
5.
Написання алгоритмів очищення зовнішніх таблиць
6-8
6.
Створення файлів допомоги за алгоритмом та за програмою
9
7.
Налагодження і тестування.
10
8.
Написання пояснювальної записки
10-14
9.
Захист курсового проекту.
28.12.2003

Додаток Б

КЕРІВНИЦТВО КОРИСТУВАЧА
Б.1 Меню
Пересування по меню здійснюється за допомогою клавіш "↑" і "↓". Для вибору пункту меню потрібно натиснути Enter. Для виходу з меню потрібно натиснути ESC. Пересування по пунктах підменю здійснюється за допомогою клавіш "↑" і "↓". Для вибору пункту підменю потрібно натиснути клавішу Enter. Для виходу з підменю потрібно натиснути клавішу ESC. З основного меню шляхом натискання клавіші Esc здійснюється виклик пункту меню "Вихід".
Б.1.1 Пункт "Файл"
На екран виводиться вертикальне меню, що складається з трьох підпунктів: "Завантаження", "Очищення", "Вихід". Ходіння по меню здійснюється за допомогою натиснення клавіш <↑> та <↓>. Для вибору одного з пунктів необхідно натиснути клавішу Enter.
Б.1.1.1 Підпункт «Завантаження»
На екран виводиться віконце з запитом про вводиться файлі, після чого потрібно ввести ім'я файлу, натиснути клавішу Enter. Далі відбудеться завантаження і висновок вмісту файлу на екран, або віконце з інформацією про те, що завантаження не вдалася з якої-небудь причини. Для екстреної зупинки виконання якої-небудь команди, використовуйте клавішу Esc.
Б.1.1.2 Підпункт «Очищення»
На екран виводиться віконце з запитом про вводиться файлі, після чого потрібно ввести ім'я файлу, натиснути клавішу Enter. Далі відбудеться очищення вмісту файлу та виведення вікна про успішне виконання очищення, або віконце з інформацією про те, що завантаження не вдалася з якої-небудь причини. Для екстреної зупинки виконання якої-небудь команди, використовуйте клавішу Esc.
Б.1.1.3 Підпункт «Вихід»
Дивись пункт "Вихід".
Б.1.2 Пункт «Видалення»
На екран виводиться вертикальне меню, що складається з трьох підпунктів: "За номером", "За інтервалу", "За ключу". Ходіння по меню здійснюється за допомогою натиснення клавіш <↑> та <↓>. Для вибору одного з пунктів необхідно натиснути клавішу Enter.
Б.1.2.1 Підпункт «За номером»
На екран виводиться віконце з запитом про вводиться удаляемом порядковому номері елемента, після чого потрібно ввести число, натиснути клавішу Enter. Далі відбудеться видалення елемента таблиці під заданим номером і висновок вмісту файлу на екран. Для екстреної зупинки виконання якої-небудь команди, використовуйте клавішу Esc.
Б.1.2.2 Підпункт «За інтервалу»
На екран виводиться віконце з запитом про вводиться інтервалі видаляються елементів, після чого потрібно ввести 2 числа (початкового і кінцевого видаляється елемента), натиснути клавішу Enter. Далі відбудеться видалення елементів таблиці під заданим номером і висновок вмісту файлу на екран. Для екстреної зупинки виконання якої-небудь команди, використовуйте клавішу Esc.

Б.1.2.3 Підпункт «За ключу»
На екран виводиться віконце з запитом про вводиться удаляемом значенні ключа, після чого потрібно ввести значення ключа, натиснути клавішу Enter. Далі відбудеться видалення елемента або елементів таблиці під заданим значенням ключа і висновок вмісту файлу на екран. Для екстреної зупинки виконання якої-небудь команди, використовуйте клавішу Esc.
Б.1.3 Пункт «Допомога»
На екран виводиться довідка про експлуатацію програми.
Б.1.4 Пункт «Вихід»
При виборі цього пункту програма завершить свою роботу.

Додаток В
ЕКРАННІ ФОРМИ

Рисунок В.1 - Початковий вигляд екрана

Рисунок В.2 - Вид екрану після вибору пункту меню "Файл" - "Завантаження"

Малюнок В.3 - Реакція програми на відсутність завантаження

Рисунок В.4 - Вид екрану після вибору пункту меню "Видалення" - "За номером"

Рисунок В.5 - Завантаження файлу довідки

Малюнок В.6 - Запит про вихід з програми

Додаток Г
Лістинг програм
# Include <stdio.h>
# Include <conio.h>
# Include <graphics.h>
# Include <alloc.h>
# Include <dos.h>
# Include <string.h>
# Include <stdlib.h>
int a, b, d = 1, d2 = 1, i, j, m, l = 0, x = 0, z = 0, n, p = 0, r = 0, k = 0, nomer = 0, nom ;
int mode = VGAHI;
int driver = VGA;
char kluch [10];
int nach, con;
FILE * in;
char ch, * v, h [10], cd [50], * str, c [5], s [50], cf [50], cb;
void * buf, * buf1, * buf2, * buf3;
struct type
{
char nazv [10];
char kol [10];
char sum [10];
char kl [10];
} Tablica [15], * ukz;
void imya ();
void del ()
{FILE * in;
char fname [11];
setfillstyle (SOLID_FILL, 0);
bar (200,100,500,300);
setcolor (4);
outtextxy (300,152, ", ўҐ ¤ Е⥠Š¬ п д ©« !!!(*. in) ");
outtextxy (315,162, "max 2 бе ¬ ў ®« :_");
rectangle (301,174,463,185);
imya ();
in = fopen (s, "w");
fclose (in);
outtextxy (300,152, "" © «® зЕйҐ !!!");
}
void record (void)
{Char ch, name [11];
FILE * out;
int j = 0;
clrscr ();
printf ("• ® вЕвҐ б ® еа ЕВМ Од ® а ¬ ЖЕО ў д ©« (y - ¤, Е зҐ Ґв ):");
ch = getch ();
if (ch == 'y')
{
do
{
clrscr ();
printf (", ўҐ ¤ Е⥠Š¬ п д ©« (*. out ):");
scanf ("% s", name);
out = fopen (name, "w");
} While (out == NULL);
for (j = 0; j <= n; j + +)
{
fprintf (out, "% s \ n", tablica [j]. nazv);
fprintf (out, "% s \ n", tablica [j]. kol);
fprintf (out, "% s \ n", tablica [j]. sum);
fprintf (out, "% s \ n", tablica [j]. kl);}
clrscr ();
gotoxy (32,13);
printf ("‡ ЇЕбм Їа ® Е § ўҐ ¤ Г гбЇҐі ®!");
getch ();
fclose (out);
}
}
void interval ()
{
setfillstyle (SOLID_FILL, 0);
setcolor (4);
outtextxy (300,202, ", ўҐ ¤ Е⥠Š| оо Ја Ежг !!!(*. in)");
outtextxy (315,212, "max 2 бе ¬ ў ®« :_");
rectangle (301,224,463,235);
p = 0;
do {
a = getch ();
if ((a! = 13) & & (a! = 8) & & (a! = 27))
{S [p] = a; p + +; s [p] = '\ x0';}
bar (302,225,302 + textwidth (s), 226 + textheight (s));
if (a == 8) if (p> 0) s [- p] = '\ x0';
outtextxy (302,225, s);
if (strlen (s)> 15)
{
outtextxy (250,220, "Ѓ ®« 쳥 бе ¬ ў ® «® ў ўўҐбвЕ Г« м § п !!!!");
outtextxy (250,230, "" «п Їа ®¤®«| ҐЕп | ¬ Е⥠Enter");
do
{
a = getch ();
} While (a! = 13);
}
} While (a! = 13);
setfillstyle (SOLID_FILL, 0);
bar (300,202,600,235);
nach = atoi (s);
setfillstyle (SOLID_FILL, 0);
setcolor (4);
outtextxy (300,202, ", ўҐ ¤ Е⥠ўҐаеоо Ја Ежг !!!(*. in)");
outtextxy (315,212, "max 2 бе ¬ ў ®« :_");
rectangle (301,224,463,235);
p = 0;
do {
a = getch ();
if ((a! = 13) & & (a! = 8) & & (a! = 27))
{S [p] = a; p + +; s [p] = '\ x0';}
bar (302,225,302 + textwidth (s), 226 + textheight (s));
if (a == 8) if (p> 0) s [- p] = '\ x0';
outtextxy (302,225, s);
if (strlen (s)> 15)
{
outtextxy (250,220, "Ѓ ®« 쳥 бе ¬ ў ® «® ў ўўҐбвЕ Г« м § п !!!!");
outtextxy (250,230, "" «п Їа ®¤®«| ҐЕп | ¬ Е⥠Enter");
do
{
a = getch ();
} While (a! = 13);
}
} While (a! = 13);
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
con = atoi (s);
i = 0; j = 0; x = 0; k = 0;
outtextxy (175,30, "Ќ ® ¬ € ¤ ҐЄб Ќ § ў ЕҐ 'м ¬ ¬ Љ« оз ");
do
{
i + +; x + = 10; j + +;
if (i == nach)
{
do
{
i + +;
}
while (i> = con);
}
itoa (j, c, 10);
outtextxy (180,50 + x, c);
outtextxy (220,50 + x, ukz [i]. nazv);
outtextxy (290,50 + x, ukz [i]. kol);
outtextxy (390,50 + x, ukz [i]. sum);
outtextxy (460,50 + x, ukz [i]. kl);
} While (i! = n);
getch ();
}
void load (void)
{
FILE * in;
char fname [11];
int i = 1;
setfillstyle (SOLID_FILL, 0);
setcolor (4);
outtextxy (300,152, ", ўҐ ¤ Е⥠Š¬ п д ©« !!!(*. in) ");
outtextxy (315,162, "max 20 бе ¬ ў ®« ® ў :_");
rectangle (301,174,463,185);
imya ();
in = fopen (s, "r");
do
{Fgets (ukz-> nazv, 10, in);
fgets (ukz-> kol, 10, in);
fgets (ukz-> sum, 10, in);
fgets (ukz-> kl, 10, in);
i + +;
k + +;
} While (! Feof (in));
rewind (in);
i = 1;
outtextxy (175,30, "Ќ ® ¬ € ¤ ҐЄб Ќ § ў ЕҐ 'м ¬ ¬ Љ« оз ");
ukz = (struct type *) malloc (sizeof (struct type) * k);
do
{I + +;
itoa (i-1, c, 10);
x + = 10;
outtextxy (180,50 + x, c);
fscanf (in, "% s", ukz [i-1]. nazv);
outtextxy (220,50 + x, ukz [i-1]. nazv);
fscanf (in, "% s", ukz [i-1]. kol);
outtextxy (290,50 + x, ukz [i-1]. kol);
fscanf (in, "% s", ukz [i-1]. sum);
outtextxy (390,50 + x, ukz [i-1]. sum);
fscanf (in, "% s", ukz [i-1]. kl);
outtextxy (460,50 + x, ukz [i-1]. kl);
n = i;
} While (! Feof (in));
fclose (in);
}
openf (char s [20])
{
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
z = 0;
k = 0;
in = fopen (s, "r");
setviewport (164,24,606,446,0);
rewind (in);
while (fgets (cd, 53, in)! = NULL)
{
a = strlen (cd);
if (cd [a-1] == '\ n')
cd [a-1] = '';
setcolor (7);
outtextxy (10,10 + x, cd);
x + = 10;
k + +;
}
a = getch ();
while (a! = 27)
{
a = getch ();
}
k = 0;
x = 0;
clearviewport ();
setviewport (0,0,639,479,0);
fclose (in);
return (0);
}
void imya ()
{
p = 0;
do {
a = getch ();
if ((a! = 13) & & (a! = 8) & & (a! = 27))
{S [p] = a; p + +; s [p] = '\ x0';}
bar (302,175,302 + textwidth (s), 176 + textheight (s));
if (a == 8) if (p> 0) s [- p] = '\ x0';
outtextxy (302,175, s);
if (strlen (s)> 19)
{
outtextxy (250,200, "Ѓ ®« 쳥 бе ¬ ў ® «® ў ўўҐбвЕ Г« м § п !!!!");
outtextxy (250,210, "" «п Їа ®¤®«| ҐЕп | ¬ Е⥠Enter");
do
{
a = getch ();
} While (a! = 13);
}
} While (a! = 13);
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
}
liniya (int k, int m, int n)
{Setcolor (n);
line (130,20 + k * 60,130,50 + k * 60);
line (20,50 + k * 60,130,50 + k * 60);
setcolor (m);
line (20,20 + k * 60,20,50 + k * 60);
line (20,20 + k * 60,130,20 + k * 60);
return 0;
}
liniya2 (int i, int m, int n)
{
setcolor (m);
line (20,300 + i * 60,20,330 + i * 60);
line (20,300 + i * 60,130,300 + i * 60);
setcolor (n);
line (130,300 + i * 60,130,330 + i * 60);
line (20,330 + i * 60,130,330 + i * 60);
return 0;
}
void nomer1 ()
{
setfillstyle (SOLID_FILL, 0);
setcolor (4);
outtextxy (300,202, ", ўҐ ¤ Е⥠® ¬ Ґа § ЇЕбЕ !!!(*. in)");
outtextxy (315,212, "max 2 бе ¬ ў ®« :_");
rectangle (301,224,463,235);
p = 0;
do {
a = getch ();
if ((a! = 13) & & (a! = 8) & & (a! = 27))
{S [p] = a; p + +; s [p] = '\ x0';}
bar (302,225,302 + textwidth (s), 226 + textheight (s));
if (a == 8) if (p> 0) s [- p] = '\ x0';
outtextxy (302,225, s);
if (strlen (s)> 15)
{
outtextxy (250,220, "Ѓ ®« 쳥 бе ¬ ў ® «® ў ўўҐбвЕ Г« м § п !!!!");
outtextxy (250,230, "" «п Їа ®¤®«| ҐЕп | ¬ Е⥠Enter");
do
{
a = getch ();
} While (a! = 13);
}
} While (a! = 13);
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
nom = atoi (s);
i = 0; j = 0; x = 0;
outtextxy (175,30, "Ќ ® ¬ € ¤ ҐЄб Ќ § ў ЕҐ 'м ¬ ¬ Љ« оз ");
m = n;
do
{X + = 10;
i + +; j + +;
if ((i == nom) & & (i == n)) break;
if (i == nom) {i + +; m-= 1;}
itoa (j, c, 10);
outtextxy (180,50 + x, c);
outtextxy (220,50 + x, ukz [i]. nazv);
outtextxy (290,50 + x, ukz [i]. kol);
outtextxy (390,50 + x, ukz [i]. sum);
outtextxy (460,50 + x, ukz [i]. kl);
} While (i! = m);
getch ();
}
void kluchik ()
{
setfillstyle (SOLID_FILL, 0);
setcolor (4);
outtextxy (300,202, ", ўҐ ¤ Е⥠Є« оз (*. in) ");
outtextxy (315,212, "max 2 бе ¬ ў ®« :_");
rectangle (301,224,463,235);
p = 0;
do {
a = getch ();
if ((a! = 13) & & (a! = 8) & & (a! = 27))
{S [p] = a; p + +; s [p] = '\ x0';}
bar (302,225,302 + textwidth (s), 226 + textheight (s));
if (a == 8) if (p> 0) s [- p] = '\ x0';
outtextxy (302,225, s);
if (strlen (s)> 15)
{
outtextxy (250,220, "Ѓ ®« 쳥 бе ¬ ў ® «® ў ўўҐбвЕ Г« м § п !!!!");
outtextxy (250,230, "" «п Їа ®¤®«| ҐЕп | ¬ Е⥠Enter");
do
{
a = getch ();
} While (a! = 13);
}
} While (a! = 13);
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
strcpy (kluch, s);
v = s;
i = 0; j = 0; x = 0;
outtextxy (175,30, "Ќ ® ¬ € ¤ ҐЄб Ќ § ў ЕҐ 'м ¬ ¬ Љ« оз ");
do
{X + = 10;
i + +; j + +;
if (ukz [i-2]. kl == v) i + +;
itoa (j, c, 10);
outtextxy (180,50 + x, c);
outtextxy (220,50 + x, ukz [i-1]. nazv);
outtextxy (290,50 + x, ukz [i-1]. kol);
outtextxy (390,50 + x, ukz [i-1]. sum);
outtextxy (460,50 + x, ukz [i-1]. kl);
} While (i! = n);
getch ();
}
file (char str1 [5], char str2 [5], char str3 [5])
{
d2 = 1;
setfillstyle (SOLID_FILL, 1);
for (i = 0; i <3; i + +)
{
bar (20,300 + i * 60,130,330 + i * 60);
liniya2 (i, 9,0);
}
while (a! = 27)
{
setcolor (6);
outtextxy (27,310, str1);
outtextxy (27,370, str2);
outtextxy (27,430, str3);
if ((a == 80) | | (a == 72))
{
if (a == 80) d2 + +;
if (a == 72) d2 -;
if (d2> 3) d2 = 1;
if (d2 <1) d2 = 3;
}
if ((d2 == 1) & & (nomer == 1))
{
setcolor (4);
outtextxy (27,310, str1);
liniya2 (0,0,9);
a = getch ();
liniya2 (0,9,0);
if (a == 13)
{
del ();
} Else continue;
}
if ((d2 == 1) & & (nomer == 2))
{
setcolor (4);
outtextxy (27,310, str1);
liniya2 (0,0,9);
a = getch ();
if (a == 13)
{
nomer1 ();
}
liniya2 (0,9,0);
}
if ((d2 == 2) & & (nomer == 1))
{
setcolor (4);
outtextxy (27,370, str2);
liniya2 (1,0,9);
a = getch ();
if (a == 13)
{
load ();
}
liniya2 (1,9,0);
}
if ((d2 == 2) & & (nomer == 2))
{
setcolor (4);
outtextxy (27,370, str2);
liniya2 (1,0,9);
a = getch ();
if (a == 13)
{
kluchik ();
}
liniya2 (1,9,0);
}
if ((d2 == 3) & & (nomer == 2))
{
setcolor (4);
outtextxy (27,430, str3);
liniya2 (2,0,9);
a = getch ();
liniya2 (2,9,0);
if (a == 13)
{
interval ();
}
else continue;
liniya2 (2,9,0);
}
}
setfillstyle (SOLID_FILL, 8);
bar (20,300,130,460);
return 0;
}
void interfice ()
{
setfillstyle (SOLID_FILL, 8);
bar (0,0,640,480);
setfillstyle (SOLID_FILL, 0);
bar (164,24,606,446);
setfillstyle (SOLID_FILL, 1);
for (i = 0; i <4; i + +)
{
bar (20,20 + i * 60,130,50 + i * 60);
liniya (i, 9,0);
}
setfillstyle (SOLID_FILL, 1);
bar (160,20,163,450);
bar (20,265,163,268);
bar (160,20,610,23);
bar (607,20,610,450);
bar (160,447,610,450);
d = 1;
while (ch! = 27)
{
setcolor (6);
outtextxy (60,30, "" Ђ ‰ <");
outtextxy (45,90, "" "Ђ <... Ќ € ...");
outtextxy (45,150, "'ЏђЂ, ЉЂ");
outtextxy (55,210, ",> • Ћ" ");
if ((a == 80) | | (a == 72))
{
if (a == 80) d + +;
if (a == 72) d -;
if (d> 4) d = 1;
if (d <1) d = 4;
}
if (d == 1)
{
nomer = 1;
setcolor (4);
outtextxy (60,30, "" Ђ ‰ <");
liniya (0,0,9);
a = getch ();
liniya (0,9,0);
if (a == 13)
{
file ("Ћ-€''ЉЂ", "‡ Ђѓђ" ‡ ЉЂ ","");
} Else continue;
}
if (d == 2)
{
setcolor (4);
nomer = 2;
outtextxy (45,90, "" "Ђ <... Ќ € ...");
liniya (1,0,9);
a = getch ();
liniya (1,9,0);
if (a == 13)
{
file ("ЏЋ ЌЋЊ ... ђ" "," ЏЋ Љ <ћ-"", "ЏЋ € Ќ '... ђ, Ђ <"");
} Else continue;
}
if ((d == 3))
{
setcolor (4);
outtextxy (45,150, "'ЏђЂ, ЉЂ");
liniya (2,0,9);
a = getch ();
liniya (2,9,0);
if (a == 13)
{
openf ("e: \ \ bc31 \ \ bin \ \ help.dat");
}
else continue;
}
if (d == 4)
{
setcolor (4);
outtextxy (55,210, ",> • Ћ" ");
liniya (3,0,9);
a = getch ();
liniya (3,9,0);
if (a == 13)
{
break;
}
else continue;
}
}
}
void main (void)
{
initgraph (& driver, & mode, "e: \ \ bc31 \ \ bin");
interfice ();
closegraph ();
}
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
172.8кб. | скачати


Схожі роботи:
Розробка програми для зрушення елементів матриці по верствам
Написання програми телеграф на Turbo Pascal
Альтернативні програми редагування електронних таблиць
Алгоритм написання та налагодження програми Текстовий редактор
Техніка для видалення пилу з поверхонь
Покази та протипокази для видалення зубів
Сучасне обладнання для видалення нафти і нафтопродуктів
Розрахунки дегазатор для видалення вуглекислоти з підземної води
Аналіз відпроцювання елементів дресирування для для захисно-караульної служби ЗКС
© Усі права захищені
написати до нас