Вибори глави Ашинський району

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

скачати

Міністерство освіти Російської Федерації
Південно-Уральський державний університет
Філія ЮУрГУ в м. Аша
Пояснювальна записка
до курсової роботи з інформатики
на тему: «Вибори глави Ашинський району».
Виконав: студент гр. ПС-180 Стяжкин С.А.
Консультант: доцент Рафіков К.М.
Аша-2005

ЗАВДАННЯ
на курсову роботу по Інформатиці
Студенту гр. ПС-180 Стяжкіну Семену Анатолійовичу
Розробити і створити базу даних і систему управління базою даних для автоматизації робочого місця спеціаліста відповідно до зазначеної темою.
Тема: Вибори глави Ашинський району _________
Дата подання роботи на захист - 15 травня 2005р.
Матеріали, що подаються до захисту:
· Пояснювальна записка,
· Діючий програмний продукт на дискеті,
· Файл пояснювальної записки.
Вимоги до бази даних і СУБД:
1. Можливість створення, доповнення, перегляду, редагування, видалення і сортування записів в базі даних. Можливість пошуку і розрахунків (наприклад, середнього значення) заданої інформації.
2. Наявність у базі даних інформації не менш ніж про 15 об'єктах.
3. Зручний і красивий інтерфейс, що дозволяє безпомилково виконувати необхідну роботу з базою даних.
4. Текст пояснювальної записки підготувати з використанням текстового процесора MS Word. Вимоги до оформлення такі ж, як у попередній роботі.
5. Використовувати мову програмування С / С + +.

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

Консультант К. М. Рафіков


Зміст
1. Завдання
2. Зміст
3. Введення
4. Обгрунтування необхідності виконання даної роботи
5. Дані, які зберігаються в базі даних. Обгрунтування їх достатності
6. Операції з обробки даних. Обгрунтування їх достатності
7. Опис інтерфейсу користувача з ілюстраціями діалогових вікон
8. Структура програми (блок - схема) і її опис
9. Тестові приклади
10. Інструкція для користувача
11. Розроблена програма з коментарями
12. Використана література

Введення
Створений програмний продукт є системою управління базою даних кандидатів на пост глави Ашинський району. Система управління базою даних і база даних виконана з використанням програмного продукту Turbo C + +.
Для кожного кандидата записується прізвище, адресу, дату народження, номер паспорта і кількість голосів. Далі є можливість перегляду файлу, його доповнення, зміни, видалення непотрібних записів. Сортування і пошук потрібних записів здійснюється по всіх параметрах. Всі перераховані вище види робіт виконуються за допомогою команд, список яких виводиться на екран після запуску програми.
Пояснювальна записка виконана з використанням програмних продуктів Microsoft Word.

Обгрунтування необхідності виконання даної роботи
Дана програма може допомогти і полегшити роботу комісії проводить вибори на посаду глави Ашинський району.
Даний програмний продукт є системою управління базою даних кандидатів на пост глави Ашинський району. За допомогою неї легко можна зберігати дані про кандидатів, доповнювати базу даних, видаляти непотрібні записи, переглядати записи, що зберігаються в базі даних, змінювати дані про кандидатів, сортувати записи на прізвище, адресу, дату народження, а також шукати цікаву для вас запис.
Програма дуже проста у використанні і не вимагає великих знань. Також для роботи програми потрібно комп'ютер з малою кількістю ресурсів.

Дані, які зберігаються в базі даних. Обгрунтування їх достатності.
У представленій програмі можна зберігати велику кількість записів про кандидатів на пост глави Ашинський району. Кожен запис містить у собі інформацію про прізвище, адресу, дату народження, номер паспорта та кількості голосів, які пов'язані між собою.
І для того щоб знайти потрібного кандидата працівникові комісії потрібно прізвище кандидата або його адресу. Так само можна дізнатися хто з кандидатів старше, а хто молодший. Аналогічно можна дізнатися у кого більше голосів, а в кого менше, також номери їх паспортів та адреси проживання.

Операції з обробки даних. Обгрунтування їх достатності.
У системі управління базою даних існують наступні операції з обробки даних: створення файлу бази даних з занесення в нього даних про кандидатів, доповнення, видалення, перегляд, зміна, сортування і пошук.
Для того щоб створити базу даних необхідно скористатися операцією створення файлу бази даних із занесенням в нього даних про кандидата. Якщо необхідно переглянути всі записи в базі даних, то необхідно скористатися операцією перегляду. Якщо необхідно ввести додаткові записи в існуючу базу даних, то в програмі існує спеціальна для цього операція доповнення. Якщо необхідно видалити непотрібні записи, то потрібно скористатися операцією видалення. У разі якщо у кандидата змінилася прізвище або адресу або номер паспорта або він набрав ще голоси і необхідно ввести зміни до бази даних, то необхідно скористатися операцією зміни. Для зручного перегляду записів бази даних можна скористатися сортуванням. Якщо необхідно швидко знайти потрібного кандидата, то можна скористатися операцією пошуку. Так само можна скористатися пунктом допомогу, який коротко характеризує програму.

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

Потім з'являється головне меню команд, яке виглядає так:

Меню створення бази даних зроблено простим і зрозумілим для кожного.

Вікно введення записів виглядає дуже просто. На екран виводиться лише найнеобхідніше, для того, щоб користувач знав що саме вводити.

Після створення файлу бази даних з'являється повідомлення по середині екрана.

Перегляд бази даних дуже зручний, тому що виконаний у вигляді таблиці.


Структура програми (блок - схема) і її опис.
SHAPE \ * MERGEFORMAT
Початок
Sortirovka
S
S
I = 0; i <n; i + +
Gr [i] = pust
Inf.open (name, ios:: binary)
Inf.fail ()
nzap = 0
ch = inf.peek ()
ch! = EOF
Inf.read ((char *) & gr [nzap], sizeof (gr [nzap]))
+ + Nzap
ch = inf.peek ()
inf.close ()
2
1
3
Сортування за прізвищем
Сортування за адресою
Сортування за датою народження
кінець

SHAPE \ * MERGEFORMAT
2
j = 0; j <nzap; j + +
i = 0; i <nzap-1; i + +
comp> 0
buf [1] = gr [i]
gr [i] = gr [i +1]
gr [i +1] = buf [1]
Outf.fail ()
I = 0, i <nzap, i + +
Outf.close ()
outf.write ((char *) & gr [i], sizeof (gr [i]))
comp = strcmp (gr [i]. fam, gr [i +1]. fam)
I = 0; i <n; i + +
Gr [i] = pust
Inf.open (name, ios:: binary)
5
4
1
3
6

SHAPE \ * MERGEFORMAT
5
Inf.fail ()
nzap = 0
ch = inf.peek ()
ch! = EOF
Inf.read ((char *) & gr [nzap], sizeof (gr [nzap]))
+ + Nzap
ch = inf.peek ()
inf.close ()
I = 0; i <nzap; i + +
gr [i]. fam
gr [i]. special
gr [i]. zach
gr [i]. fiz
gr [i]. mat
4
6
кінець



Тестові приклади.
Після запуску програми з'являється заставка. Натискаємо будь-яку клавішу і програма переходить в головне меню.
Натискаємо на 1 в головному меню. Програма переходить в меню створення. У меню створення натискаємо 1. Програма запитує про те, скільки записів ввести, потім запитує дані про читачів стільки разів, скільки ви ввели записів і зберігає їх у файлі з адресою за замовчуванням. Після чого з'являється повідомлення про те, що файл збережено. Для перевірки натискаємо 4 у головному меню. На екрані з'являються збережені дані.
У меню створення натискаємо 2. Програма просить ввести адресу нового файлу. Створюється новий файл бази даних.
У меню створення натискаємо 3. Автоматично створюється файл. Потім з'являється повідомлення про те, що файл збережено. Для перевірки натискаємо 4 у головному меню. На екрані з'являються збережені дані.
У меню створення натискаємо на 4. Програма переходить в головне меню.
У меню створення натискаємо на будь-який інший символ. З'являється повідомлення про те, що введена невірна команда. Потім програма переходить в меню створення.
Натискаємо на 2 в головному меню. Програма запитує про те, скільки записів ви хочете ввести додатково. Вводимо число більше максимально допустимого. Програма повторно запитує число додаткових даних. Вводимо правильне значення, і програма запитує дані про кандидатів стільки разів, скільки записів ви ввели. Після цього з'являється повідомлення про те, що файл доповнений. Для перевірки натискаємо 4 у головному меню. На екрані з'являються з'явилися записи, якими доповнили файл.
У головному меню натискаємо на 3. Виводиться список записів і повідомлення про те, яку запис потрібно видалити. Вводимо номер запису, яка не існує. Програма повторно запитує про те, яку запис потрібно видалити. Вводимо правильне значення і запис відразу видаляється зі списку, а кожен нижчий запис переміщається на рядок вище. Для перевірки натискаємо 4 у головному меню. На екрані з'являються записи, крім тієї, що була вилучена.
У головному меню натискаємо 4. На екран виводяться всі наявні у файлі запису.
У головному меню натискаємо 5. З'являються всі записи, наявні у файлі і, повідомлення про те, яку запис ви хочете змінити. Вводимо номер не існуючої запису. Програма повторно запитує про те, яку запис ви хочете змінити. Вводимо правильне значення, з'являється меню зміни. У меню зміни натискаємо 1. Програма запрошує новий номер кандидата. Вводимо новий номер кандидата. Для перевірки натискаємо 4 у головному меню. Номер кандидата потрібного запису змінився.
У меню зміни натискаємо 2. Програма запрошує нове прізвище. Вводимо нове прізвище. Для перевірки натискаємо 4 у головному меню. Прізвище потрібного запису змінилася.
У меню зміни натискаємо 3. Програма запрошує нову адресу. Вводимо нову адресу. Для перевірки натискаємо 4 у головному меню. Адреса потрібного запису змінилася.
У меню зміни натискаємо 4. Програма запитує нову дату народження. Вводимо дату. Для перевірки натискаємо 4 у головному меню. Дата потрібного запису змінився.
У меню зміни натискаємо 5. Програма запрошує новий номер паспорта. Вводимо новий номер паспорта. Для перевірки натискаємо 4 у головному меню. Номер паспорта потрібного запису змінився.
Для скасування зміни натискаємо 6, і програма переходить в головне меню.
Вводимо будь-який інший символ в меню зміни. Програма повідомляє про невірне введення.
У головному меню натискаємо 6. З'являється меню сортування. Натискаємо 1 в меню сортування. Програма виводить запису, відсортовані за прізвищем і, повідомлення про те, що сортування у файлі на прізвище зроблена. Для перевірки натискаємо 4 у головному меню.
Натискаємо 2 в меню сортування. Програма виводить запису, відсортовані за адресою і, повідомлення про те, що сортування у файлі за адресою зроблена. Для перевірки натискаємо 4 у головному меню.
Натискаємо 3 в меню сортування. Програма виводить запису, відсортовані за датою народження і, повідомлення про те, що сортування у файлі за датою народження зроблена. Для перевірки натискаємо 4 у головному меню.
Для скасування сортування натискаємо 4. Програма повертається в головне меню.
Вводимо будь-який інший символ в меню сортування. Програма повідомляє про невірне введення.
У головному меню натискаємо 7. З'являється меню пошуку. Натискаємо 1 в меню пошуку. Програма просить ввести прізвище кандидата для пошуку. Вводимо прізвище. Якщо дане прізвище кандидата є в базі даних, то виводиться запис з цим номером кандидата.
Натискаємо 2 в меню пошуку. Програма просить ввести адресу для пошуку. Вводимо адресу. Якщо дана адреса є в базі даних, то виводиться запис з цією адресою.
Натискаємо 3 в меню пошуку. Програма просить ввести дату народження для пошуку. Вводимо дату. Якщо дана дата є в базі даних, то виводиться запис з цією датою народження.
Натискаємо 4 в меню пошуку. Програма просить ввести номер паспорта для пошуку. Вводимо номер. Якщо цей номер є у базі даних, то виводиться запис з цим номером паспорта.
Натискаємо 5 в меню пошуку. Програма просить ввести кількість голосів для пошуку. Вводимо кількість. Якщо дана кількість голосів є в базі даних, то виводиться запис з цією кількістю голосів.
Вводимо будь-який інший символ в меню сортування. Програма повідомляє про невірне введення.
Для скасування пошуку натискаємо 6. Програма повертається в головне меню.
У головному меню натискаємо 8. З'являється меню допомоги.
Натискаємо будь-який інший символ в головному меню. З'являється повідомлення про невірний введенні.
Для виходу з програми натискаємо 0. Програма завершує роботу.

Інструкція для користувача.
Програма дуже проста і не вимагає великих знань від користувача.
Після запуску програми з'являється заставка. Щоб потрапити в головне меню потрібно натиснути будь-яку клавішу. У головному меню виведений список операцій. Щоб зробити яку-небудь операцію потрібно набрати на клавіатурі її номер.
При першому запуску програми слід насамперед створити файл бази даних.
При натисканні на 1 в головному меню ви потрапляєте в меню створення бази даних. У меню створення виводиться список можливих способів створення бази даних. При натисканні на 1 ви можете створити базу даних з адресою за замовчуванням, при натисканні на 2 ви можете створити файл бази даних з будь-яким обраним вами адресою, а при натисканні на 3 файл бази даних створюється автоматично. Якщо вам не потрібно створювати файл бази даних, то потрібно натиснути на 4 для виходу в головне меню.
У головному меню при натисненні на 2 ви можете доповнити базу даних. Для цього потрібно ввести кількість додаткових записів і потім дані про читачів.
При натисканні на 3 в головному меню ви можете видалити непотрібну запис. Для цього потрібно вказати номер запису.
При натисканні на 4 у головному меню ви можете переглянути базу даних. Щоб повернутися в головне меню натисніть будь-яку клавішу.
При натисканні на 5 в головному меню ви можете змінювати існуючі записи. Для цього потрібно ввести номер запису, а потім вибрати зі списку те, що ви хочете змінити.
При натисканні на 6 ви потрапляєте в меню сортування. Якщо ви натиснете 1, то буде здійснена сортування за прізвищем, якщо на 2, то сортування за адресою, а якщо ви натиснете на 3, то за датою народження. Для того щоб повернутися в головне меню потрібно натиснути 4.
При натисканні в головному меню на 7 ви потрапляєте в меню пошуку. У ньому зазначено список параметрів, за якими програма може здійснюватися пошук. Потрібно вибрати необхідний параметр.
При натисканні на 8 в головному меню ви потрапляєте в меню допомоги. Для виходу із програми натисніть 0 в головному меню.

Розроблена програма з коментарями.
# Include <iostream.h> / / Потік введення виведення
# Include <math.h> / / Математичний файл
# Include <conio.h> / / Команди управління виводу на екран
# Include <stdlib.h> / / Стандартна бібліотека функції
# Include <iomanip.h> / / Маніпулятори введення виведення
# Include <fstream.h> / / Файловий вхідний потік
# Include <string.h> / / Файл рядки
struct colizb {char fam [20]; char adres [20]; char datro [10]; char pasport [15];
char kolgol [15];}; / / Структура
const n = 20; / / Максимальна кількість записів
colizb gr [n]; / / Масив для зберігання записів
colizb buf [n]; / / Буфер для зберігання масиву gr
colizb pust;
char name [] = "D: / TC / USER / kandid.bin"; / / Ім'я створюваного файлу
int nzap; / / Номер запису
int ost; / / Кількість решти записів
int nzapdop; / / Номер додаткового запису
////////////////////////////////////////////////// /////////
void titlist () / / Функція титульний лист
{
textbackground (1); / / Колір фону
textcolor (14); / / Колір шрифту
clrscr (); / / Очищення екрану
gotoxy (17,2); / / Установка курсору на задану позицію
cout <<"Міністерство освіти Російської Федерації";
gotoxy (18,3);
cout <<"Південно-Уральський Державний Університет";
gotoxy (30,4);
cout <<"Філія ЮУрГУ в м. Аше";
gotoxy (32,8);
cout <<"Курсова робота";
gotoxy (29,9);
cout <<"з інформатики на тему:";
gotoxy (26,10);
cout <<"Вибори глави Ашинський району";
gotoxy (41,14);
cout <<"Виконав: студент гр.ПС180 Стяжкин С.О.";
gotoxy (41,15);
cout <<"Консультант: доцент Рафіков К.М.";
gotoxy (35,19);
cout <<"Аша-2006р";
gotoxy (2,21);
cout <<"Натисніть будь-яку клавішу";
getch ();
} / / Кінець функції
////////////////////////////////////////////////// ///////////////////////
void menu () / / Функція меню
{
clrscr (); / / Очищення екрану
gotoxy (32,2); / / Установка курсору на задану позицію
cout <<"Головне меню";
gotoxy (32,5);
cout <<"1-Створення";
gotoxy (32,6);
cout <<"2-Доповнення";
gotoxy (32,7);
cout <<"3-Видалення";
gotoxy (32,8);
cout <<"4-Перегляд";
gotoxy (32,9);
cout <<"5-Зміна";
gotoxy (32,10);
cout <<"6-Сортування";
gotoxy (32,11);
cout <<"7-Пошук";
gotoxy (32,12);
cout <<"8-Допомога";
gotoxy (32,13);
cout <<"0-Вихід";
gotoxy (2,24);
cout <<"Введіть номер команди-";
} / / Кінець функції
///////////////////////////////////////////////
void sclavi () / / Функція введення з клавіатури
{
for (int j = 0; j <nzap; j + +) / / Цикл for (лічильник)
{
gotoxy (2,4);
cout <<"Введіть прізвище виборця:" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [j]. fam, sizeof (gr [j]. fam));
/ / Введення прізвища кандидата
gotoxy (2,6);
cout <<"Введіть адресу:" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [j]. adres, sizeof (gr [j]. adres));
/ / Введення адреси виборця
gotoxy (2,8);
cout <<"Введіть дату народження:" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [j]. datro, sizeof (gr [j]. datro));
/ / Введення дати народження
gotoxy (2,10);
cout <<"Введіть номер паспорта:" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [j]. pasport, sizeof (gr [j]. pasport));
/ / Введення номера паспорта
gotoxy (2,12);
cout <<"Введіть кількість голосів:" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [j]. kolgol, sizeof (gr [j]. kolgol));
/ / Введення кількості голосів
}
}
////////////////////////////////////////////////// /////////////
int tofile () / / Функція запису в файл
{
ofstream outf; / / Вихідний потік
outf.open (name, ios:: binary);
if (outf.fail ()) / / Галуження (якщо потік не справний)
{
clrscr (); / / Очищення екрану
gotoxy (28,14); / / Установка курсору на задану позицію
cout <<"Файл не відкрився";
getch ();
return 1; / / Вихід
} / / Кінець розгалуження
for (int i = 0; i <nzap; i + +) / / Цикл for
outf.write ((char *) & gr [i], sizeof (gr [i]));
outf.close ();
clrscr (); / / Очищення екрану
gotoxy (28,14); / / Установка курсору на задану позицію
cout <<"Файл було створено";
gotoxy (1,24);
cout <<"Натисніть будь-яку клавішу";
return 0; / / Вихід
} / / Кінець функції
////////////////////////////////////////////////// ////////////////////
void toscreen () / / Функція виводу на екран
{
clrscr (); / / Очищення екрану
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +) / / Цикл for
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15)
<<Gr [i]. Datro <<"|"<< setw (15) <<gr [i]. Pasport <<"|"<< setw (6)
<<Gr [i]. Kolgol <<"|"<< endl;
} / / Кінець циклу for
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
} / / Кінець функції
////////////////////////////////////////////////// ///////////////////
int izfile () / / Функція читання з файлу
{
for (int i = 0; i <n; i + +) / / Лічильник
gr [i] = pust; / / Розруха масиву
ifstream inf;
inf.open (name, ios:: binary);
if (inf.fail ()) / / Галуження
{
clrscr (); / / Очищення екрану
gotoxy (28,14); / / Установка курсору на задану позицію
cout <<"Файл не відкрився";
getch ();
return 1; / / Вихід
} / / Кінець розгалуження
nzap = 0; / / Привласнення номера запису до нуля
char ch = inf.peek (); / / Дивиться перший символ файлу в потоці
while (ch! = EOF) / / Цикл з передумовою
{
inf.read ((char *) & gr [nzap], sizeof (gr [nzap]));
+ + Nzap; / / Збільшення на один крок
ch = inf.peek ();
} / / Кінець циклу з передумовою
inf.close ();
return 0; / / Вихід
} / / Кінець функції
////////////////////////////////////////////////// //////////////////////
void sozdanie () / / Функція створення
{
char r; / / Номер команди
clrscr (); / / Очищення екрану
gotoxy (28,2); / / Установка курсору на задану позицію
cout <<"Створення";
gotoxy (25,5);
cout <<"1-Створення нового файлу:" <<name;;
gotoxy (25,6);
cout <<"2-Змінити адресу файлу";
gotoxy (25,7);
cout <<"3-Автоматичне створення файлу";
gotoxy (25,8);
cout <<"4-Скасування";
gotoxy (2,24);
cout <<"Введіть номер команди:";
cin>> r; / / Введення номера команди
switch (r) / / перемикач для r
{
case '1 ':
{
clrscr (); / / Очищення екрану
gotoxy (2,2);
cout <<"Введіть кількість записів (від 1 до" <<n <<")" <<endl;
cin>> nzap; / / Введення кількості записів
sclavi (); / / Функція введення з клавіатури
tofile (); / / Запис файлу
getch ();
break; / / Дострокове завершення switch (r)
}
case '2 ':
{
clrscr (); / / Очищення екрану
cout <<"Введіть нову адресу:" <<endl;
cin>> name; / / Введення нової адреси
cout <<"Створіть цей файл" <<endl;
gotoxy (2,24);
cout <<"Натисніть будь-яку клавішу";
getch ();
break; / / Дострокове завершення switch (r)
}
case '3 ':
{
clrscr (); / / Очищення екрану
nzap = 9; / / Кількість запису
strcpy (gr [0]. fam, "Улов М.І ");// Копіювання запису
strcpy (gr [0]. adres, "Леніна 7 / 23");
strcpy (gr [0]. datro, "26.07.68");
strcpy (gr [0]. pasport, "75 лютого 319 419");
strcpy (gr [0]. kolgol, "2,5%");
strcpy (gr [1]. fam, "Царіхін П.Г");
strcpy (gr [1]. adres, "Озимина 34/12");
strcpy (gr [1]. datro, "11.12.65");
strcpy (gr [1]. pasport, "75 00 345 872");
strcpy (gr [1]. kolgol, "20%");
strcpy (gr [2]. fam, "Гартунк В.Т");
strcpy (gr [2]. adres, "Міра 9");
strcpy (gr [2]. datro, "25.08.63");
strcpy (gr [2]. pasport, "75 01 322 278");
strcpy (gr [2]. kolgol, "16%");
strcpy (gr [3]. fam, "Решетніков А.Т");
strcpy (gr [3]. adres, "Озимина 34/26");
strcpy (gr [3]. datro, "12.04.65");
strcpy (gr [3]. pasport, "75 00 651651");
strcpy (gr [3]. kolgol, "30%");
strcpy (gr [4]. fam, "Батталья З.К");
strcpy (gr [4]. adres, "Пермська 6");
strcpy (gr [4]. datro, "15.10.66");
strcpy (gr [4]. pasport, "75 лютого 567 987");
strcpy (gr [4]. kolgol, "35%");
strcpy (gr [5]. fam, "Чернов К.В");
strcpy (gr [5]. adres, "Пушкіна23 / 2");
strcpy (gr [5]. datro, "30.08.64");
strcpy (gr [5]. pasport, "75 01 626 265");
strcpy (gr [5]. kolgol, "47%");
strcpy (gr [6]. fam, "Фоміної А.А");
strcpy (gr [6]. adres, "Берегова 1 / 6");
strcpy (gr [6]. datro, "23.06.60");
strcpy (gr [6]. pasport, "75 00 321 936");
strcpy (gr [6]. kolgol, "15%");
strcpy (gr [7]. fam, "Садиков В.Г");
strcpy (gr [7]. adres, "Леніна 56/90");
strcpy (gr [7]. datro, "14.03.54");
strcpy (gr [7]. pasport, "75 01 657 453");
strcpy (gr [7]. kolgol, "21%");
strcpy (gr [8]. fam, "Сафін Н.П");
strcpy (gr [8]. adres, "Леніна 34/89");
strcpy (gr [8]. datro, "23.05.51");
strcpy (gr [8]. pasport, "75 00 128 887");
strcpy (gr [8]. kolgol, "33%");
tofile (); / / Запис в файл
gotoxy (1,24);
cout <<"Натисніть будь-яку клавішу";
getch ();
break; / / Дострокове завершення switch (r)
}
case '4 ':
break; / / Дострокове завершення switch (r)
default: / / За замовчуванням
{
clrscr (); / / Очищення екрану
gotoxy (28,14);
cout <<"Неправильна команда"; gotoxy (1,24);
cout <<"Натисніть будь-яку клавішу"; getch ();
} / / Кінець default
} / / Кінець switch (r)
} / / Кінець функції
////////////////////////////////////////////////// /////////////////////
int tofiledop () / / Функція запису в файл
{
ofstream outf; / / Вихідний потік
outf.open (name, ios:: binary);
if (outf.fail ()) / / Галуження (якщо потік не справний)
{
clrscr (); / / Очищення екрану
gotoxy (28,14); / / Установка курсору на задану позицію
cout <<"Файл не відкрився!";
getch ();
return 1; / / Вихід
} / / Кінець розгалуження
for (int i = 0; i <nzapdop; i + +) / / Цикл for
outf.write ((char *) & gr [i], sizeof (gr [i]));
outf.close ();
return 0; / / Вихід
} / / Кінець функції
////////////////////////////////////////////////// ///////////////////////////////////
void dopolnenie () / / Функція доповнення
{
int dop;
clrscr (); / / Очищення екрану
izfile (); / / Читання з файлу
int ost = n-nzap; / / Кількість решти записів
cout <<"Введіть кількість записів, які хочете додати в список (від 1 до"
<<Ost <<"): ";
cin>> dop; / / Введення додаткових записів
nzapdop = dop + nzap; / / Привласнення існуючих і додаткових записів
for (int i = nzap; i <nzapdop; i + +) / / Цикл for (лічильник)
{
cout <<"Введіть прізвище виборця:" <<endl;
cin>> gr [i]. fam; / / Введення прізвища
cout <<"Введіть адресу:" <<endl;
cin>> gr [i]. adres; / / Введення фдреса
cout <<"Введіть дату народження:" <<endl;
cin>> gr [i]. datro; / / Введення дати народження
cout <<"Введіть № паспорта:" <<endl;
cin>> gr [i]. pasport; / / Введення номера паспорта
cout <<"Введіть кількість голосів:" <<endl;
cin>> gr [i]. kolgol; / / Введення кількості голосів
} / / Кінець циклу for
tofiledop (); / / Запис у файл додаткових записів
clrscr ();
gotoxy (35,14); / / Установка курсору на задану позицію
cout <<"Файл доповнено";
gotoxy (20,15);
cout <<"Натисніть будь-яку клавішу для виходу в головне меню";
getch ();
} / / Кінець функції
////////////////////////////////////////////////// //////////////////////
void udalenie () / / Функція видалення
{
clrscr (); / / Очищення екрану
izfile (); / / Читання з файлу
toscreen (); / / Функція виведення на екран
int ud; / / Номер запису для видалення
cout <<"Введіть номер запису, яку ви хочете видалити (від 0 до" <<nzap-1 <<")";
cin>> ud; / / Введення номера запису для видалення
int udd = ud +1; / / Збільшення на 1
for (udd; udd <= nzap; udd + +) / / Цикл for
{
gr [ud] = gr [udd]; / / Привласнення запису
ud + +; / / Збільшення на один крок
} / / Кінець циклу for
nzap = nzap-1; / / Зменшення номери записів
tofile (); / / Запис в файл
izfile (); / / Читання з файлу
toscreen (); / / Функція виведення на екран
getch ();
} / / Кінець функції
////////////////////////////////////////////////// ////////////////
void prosmotr () / / Перегляд
{
clrscr (); / / Очищення екрану
izfile (); / / Читання з файлу
toscreen (); / / Функція виводу на екран
gotoxy (1,24); / / Установка курсору на задану позицію
cout <<"Натисніть будь-яку клавішу";
getch ();
} / / Кінець функції
////////////////////////////////////////////////// ////////
void izmenenie () / / Зміна
{
int izm; / / Номер змінною запису
char b; / / Номер команди
clrscr (); / / Очищення екрану
izfile (); / / Читання з файлу
toscreen (); / / Функція виводу на екран
cout <<"Введіть номер запису, яку ви хочете змінити (від 0 до"
<<Nzap-1 <<")-";
cin>> izm; / / Введення номера запису для видалення
clrscr (); / / Очищення екрану
gotoxy (32,1); / / Установка курсору на задану позицію
cout <<"Зміна";
gotoxy (28,3);
cout <<"1-П.І.Б";
gotoxy (28,4);
cout <<"2-Адреса";
gotoxy (28,5);
cout <<"3-Дата народження";
gotoxy (28,6);
cout <<"4 - № паспорта";
gotoxy (28,7);
cout <<"5-Кількість голосів";
gotoxy (28,8);
cout <<"6-Скасування";
gotoxy (1,24);
cout <<"Введіть номер команди-";
cin>> b; / / Введення номера команди
switch (b) / / перемикач для b
{
case '1 ': clrscr (); / / Очищення екрану
cout <<"Введіть П.І.Б" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [izm]. fam, sizeof (gr [izm]. fam));
tofile (); / / Запис в файл
clrscr (); / / Очищення екрану
gotoxy (28,14); / / Установка курсору на задану позицію
cout <<"Прізвище змінена"; getch ();
break; / / Дострокове завершення switch (b)
case '2 ': clrscr (); / / Очищення екрану
cout <<"Введіть новий адресу" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [izm]. adres, sizeof (gr [izm]. adres));
tofile ();
clrscr ();
gotoxy (28,14);
cout <<"адреса змінено"; getch ();
break;
case '3 ': clrscr ();
cout <<"Введіть нову дату народження" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [izm]. datro, sizeof (gr [izm]. datro));
tofile ();
clrscr ();
gotoxy (28,14);
cout <<"Дата народження змінена"; getch ();
break;
case '4 ': clrscr ();
cout <<"Введіть новий № паспорта" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [izm]. pasport, sizeof (gr [izm]. pasport));
tofile ();
clrscr ();
gotoxy (28,14);
cout <<"№ паспорта змінений"; getch (); break;
case '5 ': clrscr ();
cout <<"Введіть нове кількість голосів" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (gr [izm]. kolgol, sizeof (gr [izm]. kolgol));
tofile ();
clrscr ();
gotoxy (28,14);
cout <<"Кількість змінено"; getch (); break;
case '6 ':
break;
default: / / За замовчуванням
{
clrscr ();
gotoxy (28,14);
cout <<"Неправильна команда"; getch ();
} / / Кінець default
} / / Кінець switch (b)
} / / Кінець функції
////////////////////////////////////////////////// ////////
void sortirovka () / / Сортування
{
char s;
int comp; / / Сортування записів
clrscr (); / / Очищення екрану
gotoxy (32,1); / / Установка курсору на задану позицію
cout <<"Сортування";
gotoxy (25,4);
cout <<"1-Сортування на прізвище";
gotoxy (25,5);
cout <<"2-Сортування за адресою";
gotoxy (25,6);
cout <<"3-Сортування за датою народження";
gotoxy (25,7);
cout <<"4-Скасування";
gotoxy (1,24);
cout <<"Введіть номер команди-";
cin>> s; / / Введення номера команди
switch (s) / / Преключатель для s
{
case '1 ':
{
clrscr ();
izfile (); / / Читання з файлу
for (int j = 0; j <nzap; j ++)// Цикл for
for (int i = 0; i <nzap-1; i ++)// Цикл for
{
comp = strcmp (gr [i]. fam, gr [i +1]. fam);
if (comp> 0) / / Галуження
{
buf [1] = gr [i];
gr [i] = gr [i +1];
gr [i +1] = buf [1];
} / / Кінець розгалуження
} / / Кінець циклу for
tofile (); / / Запис в файл
izfile (); / / Читання з файлу
toscreen (); / / Функція виведення на екран
gotoxy (1,24); / / Установка курсору на задану позицію
cout <<"Сортування за прізвищем у файлі" <<name
<<"Проведена";
getch ();
break; / / Дострокове завершення switch (s)
}
case '2 ':
{
clrscr (); / / Очищення екрану
izfile (); / / Читання з файлу
for (int j = 0; j <nzap; j ++)// Цикл for
for (int i = 0; i <nzap-1; i ++)// Цикл for
{
comp = strcmp (gr [i]. adres, gr [i +1]. adres);
if (comp> 0) / / Галуження
{
buf [1] = gr [i];
gr [i] = gr [i +1];
gr [i +1] = buf [1];
} / / Кінець розгалуження
}
tofile ();
izfile ();
toscreen ();
gotoxy (1,24);
cout <<"Сортування за адресою у файлі" <<name
<<"Проведена";
getch ();
break; / / Дострокове завершення switch (s)
}
case '3 ':
{
clrscr ();
izfile ();
for (int j = 0; j <nzap; j ++)// Цикл for
for (int i = 0; i <nzap-1; i ++)// Цикл for
{
comp = strcmp (gr [i]. datro, gr [i +1]. datro);
if (comp> 0)
{
buf [1] = gr [i];
gr [i] = gr [i +1];
gr [i +1] = buf [1];
} / / Кінець розгалуження
} / / Кінець циклу for
tofile ();
izfile ();
toscreen ();
gotoxy (1,24);
cout <<"Сортування за датою народження у файлі" <<name
<<"Проведена"; getch ();
break;
}
case '4 ':
break;
default:
{
clrscr ();
gotoxy (28,14);
cout <<"Неправильна команда"; getch ();
}
}
} / / Кінець функції
////////////////////////////////////////////////// ////////
void poisk () / / Пошук
{
izfile (); / / Читання з файлу
char poisk;
clrscr (); / / Очищення екрану
gotoxy (32,1); / / Установка курсору на задану позицію
cout <<"Пошук";
gotoxy (28,3);
cout <<"1-П.І.Б";
gotoxy (28,5);
cout <<"2-Адреса";
gotoxy (28,7);
cout <<"3-Дата народження";
gotoxy (28,9);
cout <<"4 - № паспорта";
gotoxy (28,11);
cout <<"5-к-ть голосів";
gotoxy (28,13);
cout <<"6-Скасування";
gotoxy (1,24);
cout <<"Введіть номер команди-";
cin>> poisk; / / Введення номера для пошуку
char sr [20];
int comp; / / Оголошення comp цілої змінної
switch (poisk) / / перемикач для poisk
{
case '1 ':
{
clrscr (); cout <<"Введіть прізвище" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (sr, sizeof sr);
clrscr (); / / Очистити екран
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +) / / Цикл for
{
comp = strcmp (gr [i]. fam, sr);
if (comp == 0) / / Галуження
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15) <<gr [i]. Datro
<<"|"<< Setw (15) <<gr [i]. Pasport <<"|"
<<Setw (6) <<gr [i]. Kolgol <<"|"<< endl;
} / / Кінець розгалуження
} / / Кінець циклу for
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
getch ();
break; / / Дострокове завершення switch (r)
}
case '2 ':
{
clrscr (); cout <<"Введіть адресу" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (sr, sizeof sr);
clrscr ();
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +)
{
comp = strcmp (gr [i]. adres, sr);
if (comp == 0)
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15) <<gr [i]. Datro
<<"|"<< Setw (15) <<gr [i]. Pasport <<"|"
<<Setw (6) <<gr [i]. Kolgol <<"|"<< endl;
}
}
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
getch ();
break;
}
case '3 ':
{
clrscr (); cout <<"Введіть дату народження" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (sr, sizeof (sr));
clrscr ();
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +)
{
comp = strcmp (gr [i]. datro, sr);
if (comp == 0)
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15) <<gr [i]. Datro
<<"|"<< Setw (15) <<gr [i]. Pasport <<"|"
<<Setw (6) <<gr [i]. Kolgol <<"|"<< endl;
}
}
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
getch ();
break;
}
case '4 ':
{
clrscr (); cout <<"Введіть № паспорта" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (sr, sizeof (sr));
clrscr ();
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +)
{
comp = strcmp (gr [i]. pasport, sr);
if (comp == 0)
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15) <<gr [i]. Datro
<<"|"<< Setw (15) <<gr [i]. Pasport <<"|"
<<Setw (6) <<gr [i]. Kolgol <<"|"<< endl;
}
}
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
getch ();
break;
}
case '5 ':
{
clrscr ();
cout <<"Введіть кількість голосів" <<endl;
if (cin.peek ()==' \ n ') cin.get ();
cin.getline (sr, sizeof (sr));
clrscr ();
cout <<"---- T --------------- T --------------- T --------- ------ T --------------- T ------ ¬ "<<endl;
cout <<"| № | П.І.Б | Адреса | дата народж | № паспорта | голосу |" <<endl;
cout <<"+---+---------------+---------------+--------- ------+---------------+------+"<< endl;
for (int i = 0; i <nzap; i + +)
{
comp = strcmp (gr [i]. kolgol, sr);
if (comp == 0)
{
cout <<"|" <<setw (2) <<setiosflags (ios:: left) <<i <<"|"<< setw (15)
<<Gr [i]. Fam <<"|"<< setw (15) <<gr [i]. Adres <<"|"<< setw (15) <<gr [i]. Datro
<<"|"<< Setw (15) <<gr [i]. Pasport <<"|"
<<Setw (6) <<gr [i]. Kolgol <<"|"<< endl;
}
}
cout <<"L --- +---------------+---------------+--------- ------+---------------+-------"<< endl;
getch ();
break;
}
case '6 ':
break;
default:
{
clrscr ();
gotoxy (28,14);
cout <<"Неправильна команда"; gotoxy (1,24);
cout <<"Натисніть будь-яку клавішу"; getch ();
}
} / / Кінець switch (poisk)
} / / Кінець функції
////////////////////////////////////////////////// ////////
void help () / / Допомога
{
clrscr (); / / Очищення екрану
gotoxy (30,1); / / Установка курсору на задану позицію
cout <<"Про програму \ n \ n";
gotoxy (5,3);
cout <<"Ця програма є системою управління базою даних на виборах \ n";
cout <<"глави Ашинський району. \ n";
cout <<"Для кожного кандидата вказується: прізвище, адресу, дату народження, № паспорта \ n";
cout <<"і кількість голосів, набраних на виборах. \ n";
gotoxy (5,7);
cout <<"Є можливість створення нового файла.Кроме створення нового файлу \ n";
cout <<"є й такі команди як: \ n";
cout <<"доповнення, видалення, перегляд, зміна, сортування, пошук файлів, допомога \ n";
cout <<"іспользователю, ну і вихід із системи. Сортування проводиться за прізвищем, \ n";
cout <<"адресою і датою народження. \ n";
gotoxy (5,12);
cout <<"Всі зазначені види робіт виконуються за допомогою команд, перелік \ n";
cout <<"яких виводиться на екран після запуску програми.";
gotoxy (1,25);
cout <<"Для виходу з програми введіть будь-який символ";
getch ();
} / / Кінець функції
////////////////////////////////////////////////// ////////
int main () / / Функція main
{
clrscr (); / / Очищення екрану
titlist (); / / Виклик функції
char com;
while (1)
{
menu ();
if (cin.peek ()==' \ n ') cin.get ();
cin>> com; / / Вибір дії
switch (com) / / перемикач для com
{
case '1 ': sozdanie (); break;
case '2 ': dopolnenie (); break;
case '3 ': udalenie (); break;
case '4 ': prosmotr (); break;
case '5 ': izmenenie (); break;
case '6 ': sortirovka (); break;
case '7 ': poisk (); break;
case '8 ': help (); break;
case "0":
{
return 0;
}
default: / / За замовчуванням
{
clrscr ();
gotoxy (28,14);
cout <<"Неправильна команда";
gotoxy (1,24);
cout <<"Натисніть будь-яку клавішу";
getch ();
}
}
} / / Кінець функції main
} / / Кінець програми

Використана література.
1 Подвельскій «Мова C + +»
2 Ресурси Internet.
Додати в блог або на сайт

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

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


Схожі роботи:
Аналіз використання фонду заробітної плати на ВАТ Ашинський металургійний завод
Аналіз використання фонду заробітної плати на ВАТ Ашинський металургійний завод 2
Поняття глави держави
Роль глави сім`ї
КОНСТИТУЦІЙНИЙ СТАТУС ГЛАВИ ДЕРЖАВИ
Глави держав зарубіжних країн
Інститут глави держави в Україні
Вибори в I Державну Думу
Парламентські вибори у Великобританії
© Усі права захищені
написати до нас