- •Дисципліна “Алгоритмізація та програмування ”
- •Курс _______________ Група __________________ Семестр ______________ завдання на курсову роботу студента
- •1 Постановка задачі
- •2 Алгоритм розробки програми
- •3 Практична реалізація
- •3.1 Опис структури даних та вимоги до них
- •3.1.1 Глобальні змінні
- •3.4 Опис стандартних функцій та процедур, що використовуються в програмі
- •4 Інструкція для роботи з програмою
- •5 Приклад тестування та результату роботи програми
- •Висновок
- •Література
- •Додаток а (Обов’язковий) Лістинг основної програми
3 Практична реалізація
3.1 Опис структури даних та вимоги до них
3.1.1 Глобальні змінні
Для роботи програми з записами бази даних в оперативній пам’яті створена структура Zapis, яка складається з чотирьох полів:
struct Zapis
{
char Rabotodatel[28];
char Professiya[28];
int KolRabMest;
float Zarplata;
};
Rabotodatel – поле для вводу роботодавця, тип – масив 28 текстових символів.
Professiya – прізвище, ім’я та по батькові роботодавця. Тип – масив 28 текстових символів.
KolRabMest – кількість робочих місць. Тип – ціле.
Zarplata – середня заробітна плата. Тип – дійсне число одинарної точності.
Для роботи з однім рядком бази даних використовується змінна Strochka.
Для роботи з усією базою даних використовується масив Baza, розрахований на 100 елементів.
Зауваження: в масиві Baza елементи нумеруються з нульового по дев’яносто девятий (правила мови Сі), а в програмі база заповнюється не з нульового елемента, а з першого. Це зроблено для синхронізації трьох нумерацій: номер пропозиції в масиві, на екрані (для користувача) та в текстовому файлі бази.
Для роботи з базою та рядком використовується тип даних – запис.
3.1.2 Зберігання змінних у файлі
База даних зберігається в файлі baza.dat. В нього записується структури, які мають тип Zapis (змінна Strochka і елемент масиву Baza). Кожне поле структури Zapis (Rabotodatel, Professiya, KolRabMest, Zarplata) розташовується у фалі на окремому рядочку.
3.1.3 Локальні змінні
Оскільки імена в різних підпрограмах повторюються, але не завжди означають одну й ту ж величину по змісту, записуємо локальні змінні по підпрограмам.
3.1.3.1 Основна програма
char NomerMenu[2]; – оголошення змінної для номера обраного пункту меню.
3.1.3.2 Підпрограма-процедура Menu1
int i; – нумерація введення.
int konec; – код натиснутої клавіші (щоб закінчити після натискання ESC).
3.1.3.3 Підпрограма-процедура Menu2
int NovNomer; – номер введеного запису, враховуючи з початку додавання.
int StarNomer; – номер введеного запису по суцільній нумерації (рахуючи з початку файлу бази даних).
int konec; – код натиснутої клавіші (щоб закінчити по натисканню клавіші ESC).
3.1.3.4 Підпрограма-процедура Menu3
int Nomer; – номер оброблюваної структури.
int Kolichestvo; – кількість структур в базі даних.
char bufer[4]; – тимчасова змінна для введення даних у текстовому форматі.
char otvet; – відповідь на питання, чи потрібно показувати таблицю, щоб подивитися, яку запис міняти.
char konec; – ознака кінця зміни записів в базі.
3.1.3.5 Підпрограма-процедура Menu4
int Nomer; – номер оброблюваної структури.
int Kolichestvo; – кількість структур в базі даних.
char bufer[4]; – тимчасова змінна для введення даних у текстовому форматі.
char otvet; – відповідь на питання, чи потрібно показувати таблицю, щоб подивитися, який запис міняти.
char konec; – ознака кінця зміни записів в базі.
int i; – лічильник циклу, номер розглядаємого запису.
3.1.3.6 Підпрограма-процедура Menu5
int K; – кількість структур в базі даних.
int i; – порядковий номер структури, яка виводиться.
3.1.3.7 Підпрограма-процедура Menu6
int Kolichestvo; – кількість структур в базі даних.
int i,j; – лічильники циклу.
int NomProf; – номер професії (для виведення на екран).
int konec; – ознака кінця роботи підпрограми.
char bufer[4]; – тимчасова структура для перекладання при сортуванні.
char Professiya[28]; – вказана користувачем професія.
Zapis Spisok[100]; – допоміжний масив, що містить записи тільки з вказаною користувачем професією.
3.1.3.8 Підпрограма-процедура Menu7
int Kolichestvo; – кількість структур в основній базі Baza.
int i,j; – лічильники циклу.
int K; – кількість структур в допоміжній базі Spisok.
Zapis Spisok[100]; – допоміжна база, в якій рядки з однаковими професіями об'єднані, а кількість робочих місць підсумована.
Zapis bufer; – тимчасова структура для перекладання при сортуванні.
3.1.3.9 Підпрограма-процедура Menu8
int Kolichestvo; – кількість структур в базі даних.
int i,j; – лічильники циклу.
int NomProf; – номер професії для виводу на екран.
3.1.3.10 Підпрограма-процедура Menu9
int Kolichestvo; – кількість структур в базі даних.
int i; – порядковий номер структури, котра виводиться.
3.1.3.11 Підпрограма-процедура Nachalo
Змінні не використовуються. Процедури одразу отримують числа та текст.
3.1.3.12 Підпрограма-процедура Konec
Змінні не використовуються. Процедури одразу отримують числа та текст.
3.1.3.13 Підпрограма-процедура VvodStrockiSEkrana()
char bufer[29]; – змінна для початкового введення всіх значень (до перевірки їх коректності).
char dengi[6]; – зарплата в текстовому форматі без крапки.
int kolichestvo; – кількість символів, пройшли перевірку (використовується під час перевірки чисел).
int i; – лічильники циклу.
3.1.3.14 Підпрограма-функція ChtenieMassivaIzFayla()
int i; – номер запису.
Функція не отримує ніяких даних, а вертає назад величину (i-1), яка показує кількість зчитаних з файлу структур. Зауваження: основне призначення підпрограми, як у процедури – завантажити з файлу в глобальний масив базу даних. Підпрограма оформлена функцією, оскільки одразу підраховує і повертає кількість записів в базі.
3.1.3.14 Подпрограмма-процедура ZapisMassivaVFayl (int N)
int N; – кількість записів в масиві (передається цій процедурі при її виклику).
int i; – лічильники циклу.
3.1.3.14 Подпрограмма-процедура Sortirovka(int Nomer, int Kolich)
int Nomer; – номер поля, по якому потрібно сортувати (передається цій процедурі під час її виклику).
int Kolich; – кількість структур в базі (передається цій процедурі під час її виклику).
3.2 Опис файлів та їх призначення
Центр зайнятості 0018 (К.П.) Матвієнко.cpp – файл з основною програмою.
Центр зайнятості 0018 (К.П.) Матвієнко.exe – відкомпільований файл з програмою.
baza.dat – файл бази даних (якщо база даних не створена, то файл відсутній).
3.3 Опис процедур
Nachalo(); – процедура заставка на початку виконання програми.
Menu1(); – процедура меню 1: Створення та заповнення нової бази даних.
Menu2(); – процедура меню 2: Додавання запису в існуючу базу даних.
Menu3(); – процедура меню 3: Зміна запису в базі даних.
Menu4(); – процедура меню 4: Видалення запису з бази даних.
Menu5(); – процедура меню 5: Виведення бази даних на екран.
Menu6(); – процедура меню 6: Виведення списку роботодавців та середньої зарплати за професією.
Menu7(); – процедура меню 7: Виведення списку професій в порядку зростання робочих місць.
Menu8(); – процедура меню 8: Виведення списку роботодавців та кількості робочих місць за спеціальностями.
Menu9(); – процедура меню 9: Висновок пропозицій про працевлаштування по заробітній платі.
Vihod(); – процедура заставка при закінченні роботи програми.
VvodStrockiSEkrana(); – процедура Заповнення з екрану глобальної змінної Strochka.
ChtenieMassivaIzFayla(); – функція копіювання даних з файлу у глобальний масив і визначення кількості структур.
ZapisMassivaVFayl(int Kolichestvo); – процедура запису масиву в файл, передається кількість структур в масиві.
Sortirovka(int Pole, int Kolichestvo); – процедура сортування масиву по заданому полю.