Програма обліку комунальних платежів на мові Pascal
Постановка задачі та визначення її функціоналу: записи в файл бази, їх перегляд та редагування, видалення та використання. Формування коду програми з основного коду і процедур, що ведуть облік у базі даних абонентів та оплат за комунальні послуги.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 12.01.2012 |
Размер файла | 237,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Зміст
Вступ
Постановка задачі
Алгоритм роботи програми
Тестування та від лагодження програмного коду
Висновок
Список використаної літератури
Програмний код
Додатки
Вступ
Ми живемо в епоху бурхливого розвитку комп'ютерних технологій. Комп'ютери займають чільне місце у всіх обчислювальних процесах, що проводить людина, оскільки дозволяють значно зменшити витрати часу на складні обчислення.
Програми пишуться на мовах програмування, які є зрозумілими як для людини, так і для машин. Серед таких мов виділяється Pascal - мова програмування , яка створена на початку 70-х років професором Н.Віртом в Швейцарії. Затверджена вона в якості стандартної в 1979 році являється найбільш вдосконаленою в порівнянні з такими універсальними мовами програмування як, АЛГОЛ, ФОРТ - РАН, БЕЙСІК, ПЛ/М та інші. Завдяки своїй ефективності, простоті і логічності вона скоро отримала розповсюдження по всьому світі. В даний час майже всі ЕОМ і особливо мікро-ЕОМ можуть працювати на цій мові. Тексти програми легко провіряється на правильність, так як їх зміст простий і очевидний. І накінець, мова Pascal підходить для начання програмістів - початківців хорошому стилю програмування.
Мова Pascal позволяє на рівні з невеликими складностями програми створювати структурні програми складноб'ємних і складних обчислень, щоб користувач при створені програми не допускав помилок або легко міг віднайти і виправити їх.
Отже, мова програмування Pascal, що була створена для навчання програмування швидко переросла своє призначення, ставши засобом розробки серйозного програмного забезпечення, що й продемонстровано у даній роботі.
1. Постановка задачі
1.1 Технічне завдання
Технічне завдання даної роботи полягає у написанні програми для обліку і підрахунку коштів, які необхідно сплатити за спожиті комунальні послуги.
1.2 Вимоги до виконання
Користувач програми повинен мати можливість:
- створювати записи в файл бази;
- переглядати вміст файла бази даних;
- редагувати дані в файлі бази даних;
- видаляти записи з бази даних.
1.3 Основні функції програми
Програма дозволяє виконувати наступні операції:
Записати даних у файл.
Виести дані, які знаходяться у файлі.
Знайти дані у файлі.
Редагувати даних в файлі.
Стерти файл бази даних.
Зробити відмітку про оплату в базі даних.
1.4 Інструкція для роботи з програмою
Запустити програму.
Вибрати в меню потрібну дію.
Заповнити базу даних.
Продивитись інформацію про абонентів.
При потребі редагувати записи.
Для виходу і з програми слід натиснути 0.
2. Алгоритм роботи програми
Програмна система зроблена з основнго коду і процедур .
В програмі містяться наступні процедури:
- MainMenu;
- ShowAll;
- Show;
- EditAbon;
- Delete;
- Add;
- RewriteDB;
- Pay;
- EditCount;
А також функції:
Open
Oplata.
Функція Open типу Boolean відкриває файл бази даних і повертає значення true, якщо вдалось його відкрити, і false, якщо не вдалося. Критерієм успіху цієї операції є значення IORezult при відкритті файлу. Якщо його значення рівне 0, то дана функція приймає значення true. Функція використавуєть як параментр існинності подальших інструкцій у всіх подальших процедурах, які працюють файлом бази даних:
Function Open:Boolean;
begin
clrscr;
{$I-}
Reset(f);
{$I+}
if IOResult<>0 then
begin
clrscr;
Open:=false;
writeln('Невдається відкрити файл бази даних!');
writeln;
writeln;
writeln;
writeln('Для повернення в Головне меню натисніть будь-яку кнопку...');
readkey;
clrscr;
end
else Open:=true;
end;
Функція Oplata повертає значення типу string і має параметром змінну булевого типу. Залежно від параметра і, вона приймає значення `оплачено' або `не оплачено'.
Function oplata(i:boolean):string;
begin
if i=true then oplata:='оплачено'
else oplata:='не оплачено';
end;
Процедура ShowAll виводить список всіх абонентів, що є у БД. Після перевірки успішності відкриття бази даних вона просто зчитує дані з файлу і деякі з них, а саме: прізвище, ім'я та адресу абонента, виводить у вікно програми:
Procedure ShowAll;
begin
if Open=true then
begin
with abon do
while not EOF(f) do
begin
Read(f,abon);
write(fam, ' ', name,' ',fath);
writeln(' Адреса: ',misto,' ',vul,' ',bud,' кв.',kvar);
end;
writeln;
writeln;
writeln('Кінець бази даних');
writeln;
writeln;
writeln('Натисніть будь-яку клавішу');
readkey;
close(f);
clrscr
end
end;
Процедура Show використовується для виведення повної інформації про абонента, його рахунок та борги, а також завдяки виклику процедури Pay дозволяє внести запис про оплату послуг.
Насамперед у даній процедурі перевіряється чи успішно відкрито файл бази даних за допомогою функції Open. Якщо успішно, то пропонується з клавіатури ввести прізвище а потім ім'я абонента, дані якого необхідно продивитись. Після введення даних процедура за допомогою циклу while, умовою завершення якого є кінець файлу f, один за одним зчитує записи у базі даних і шукає збіг. У разі, якщо збігів не знайдено, на екран виводиться `Абонент не знайдений!!!'. Якщо знайдено збіг, то процедура виводить на екран всі дані, що є у запису, тарифи, і обраховує плату за послуги, показує, чи оплачено їх. Також виводиться загальна сума, яку необхідно сплатити.
Опісля користувачу пропонується вибрати, що потрібно оплатити, або натиснути 0, якщо даний крок треба пропустити. Далі викликається процедура Pay, детальний опис якої буде нижче. Далі закривається файл f.
Див. додаток 2.
Процедура EditAbon використовується для редагування даних про абонента, а саме прізвища, імені, по батькові, адреси та телефону. При цьому використовується файл тимчасового зберігання даних.
Див. додаток 3
Процедура EditCount дозволяє змінити покази лічильників абонента як кожен окремо, так і всі підряд. Вона також використовує файл тимчасового зберігання даних для зміни інформації в у файлі бази даних.
При введенні нових показів, попереднім присвоюється значення поточних.
Див додаток 4
Процедура Add дозволяє додати запис про абонента до бази даних. Вона переписує усі дані в файл тимчасового зберігання, дописує записи, а потім перезаписує дані з тимчасового файлу у файл бази даних.
Procedure Add;
begin
clrscr;
Rewrite(tf);
if Open=true then
begin
with abon do
begin
while not EOF(f) do
begin
Read(f, abon);
write(tf, abon)
end;
a:=1;
while a <> 0 do
begin
write('Прізвище: ');
readln(fam);
write('Ім''я: ');
readln(name);
write('По батькові: ');
readln(fath);
write('Місто: ');
readln(misto);
write('Вулиця: ');
readln(vul);
write('Будинок: ');
readln(bud);
write('Квартира: ');
readln(kvar);
write('Телефон: ');
readln(tel);
write('Відсоток сплати(якщо немає пільг, то 100): ');
readln(percent);
writeln('Покази лічильників(попередні та теперішні,вводити через пробіл):');
write('Вода: ');
readln(vod_p,vod_t);
write('Газ: ');
readln(gas_p,gas_t);
write('Електроенергія: ');
readln(elect_p,elect_t);
write('Переговори: ');
read(tel_p);
write(tf, abon);
opl:=false;
writeln;
write('Додати ще один запис? 1 - так / 0 - ні ');
readln(a);
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon)
end
end;
close(f);
close(tf);
writeln('Збережено!');
writeln;
writeln('Натисніть будь-яку клавішу..');
readkey;
clrscr
end
end;
Процедура Delete слугує для видалення запису про абонента з бази даних. Спочатку вводиться прізвище та ім'я, потім всі записи, у яких не виявлено збігів, записуються у файл тимчасового зберігання даних. Якщо виявлено збіг і прізвища, і імені, то такий запис пропускається. Після цього вміст файлу тимчасового зберігання переписується у файл бази даних.
Procedure Delete;
begin
clrscr;
Rewrite(tf);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище абонента: ');
readln(str);
write('Введіть ім''я абонента: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon)
end
end;
close(f);
close(tf);
writeln('Видалено!');
writeln;
writeln('Натисніть будь-яку клавішу..');
readkey;
clrscr
end
end;
Процедура Pay дозволяє внести до запису позначку про оплату. Взагалі, у записі існує масив значень типу Boolean, кожен елемент якого означає наявність або відсутність оплати за послугу(воду, газ, електроенергію, телефон). Дана процедура змінює значення елементів цього масиву, що дозволяє при використанні процедури Show та функції Oplata виводити напис `оплачено' або `не оплачено'.
Процедура має три параметри fa, n типу string, та s типу integer. Перші два набувають значень прізвища та імені поточного у процедурі Show запису і слугують для знаходження збігів у записах. Останній вказує процедурі, в якому елементі масиву виконувати зміни. Оператор case слугує для вибору дій зміни елементів масиву opl. При змінній s, що має значення 5, усі елементи масиву набувають значення false.
Змінені записи записуються у файл тимчасового зберігання даних, а потім його вміст записується у файл бази даних. Після виконання всіх дій файл бази даних відкривається для читання процедурою Reset для коректної роботи і процедурі Show, у якій дана і викостовується.
Procedure Pay(fa:string; n:string; s:integer);
begin
if Open=true then
rewrite(tf);
begin
while not EOF(f) do
with abon do
begin
Read(f, abon);
if (fa<>str) or (n<>str2) then
write(tf, abon)
else
begin
if (s<>5) and (s<>0) then
opl[s]:=true
else
if s=5 then
for s:=1 to 4 do
opl[s]:=true;
if s<>0 then
writeln('Борг оплачено');
end;
write(tf, abon);
end;
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
reset(f);
writeln('Натисніть будь-яку клавішу для продовження...');
readln;
end;
Процедура RewriteDB знищує всі дані у базі даних. За допомогою процедури Rewrite стираються усі дані у файлі бази даних.
Procedure RewriteDB;
begin
writeln('Увага! Зараз Базу Даних буде знищено!!!');
writeln;
writeln('Ви впевнені? 1.- ТАК \ 0.- НІ');
readln(a);
if a=1 then
begin
clrscr;
Rewrite(f);
writeln('Базу даних знищено!!! Натисніть будь-яку клавішу..');
close(f);
readln;
clrscr;
end
end;
Процедура MainMenu виводить на екран варіанти дій користувача.
Procedure MainMenu;
begin
clrscr;
writeln('1.- Показати список всіх абонентів');
writeln('2.- Додати абонента');
writeln('3.- Пошук абонента');
writeln('4.- Змінити покази лічильників');
writeln('5.- Редагувати дані про абонента');
writeln('6.- Видалити абонента зі списку');
writeln('7.- Стерти базу даних');
writeln;
writeln('0.- Вихід')
end;
Основний програмний код
У основному програмному коді спочатку користувачеві представляється титульна сторінка програми з інформацією про автора мету курсової роботи і тому подiбне:
begin
writeln(' Міністерство освіти і науки України');
writeln(' Тернопільський національний технічний університет ім. І. Пулюя');
writeln;
writeln;
writeln;
writeln;
writeln(' КУРСОВА РОБОТА');
writeln(' на тему:');
writeln(' ОПЛАТА КОМУНАЛЬНИХ ПОСЛУГ');
writeln;
writeln;
writeln;
writeln(' Група СІ-12');
writeln(' Сівіцький Олександр');
writeln;
writeln;
writeln;
writeln(' Тернопіль');
writeln(' 2010 рік');
readkey;
clrscr;
Далі виконуються асоціації імен файлів:
Assign(f, 'data.dat');
Assign(tf, 'data_temp.dat');
Потім у циклі виконуються процедури, вибрані користувачем, при виборі 0, відбувається вихід із програми.
int:=1;
while int <> 0 do
begin
MainMenu;
readln(int);
case int of
1:ShowAll;
2:Add;
3:Show;
4:EditCount;
5:EditAbon;
6:Delete;
7:RewriteDB;
end;
end;
clrscr;
write('Тепер можна закрити вікно програми');
end.
3. Тестування та від лагодження програмного коду
Всього програмна система виконує 10 вище описаних функцій.
При запуску програми на екран виведеться:
комунальний програма функціонал абонент
Головне меню програми:
Додавання нового запису про абонента:
Вивід всієї списку абонентів:
Вікно програми при виведенні повної інформації:
Вікно програми при редагування даних про абонента
Вікно програми при редагування показів лічильника:
Висновок
Програмування дозволяє значно простіше обходитися із записами, але найголовніше - дуже легко знайти необхідний запис у базі даних за будь-яким із запропонованих параметрів.
Завдяки мові програмування Pascal дуже легко зрозуміти суть і сутність програмування і роботи з файлами. Комп'ютер допомагають нам у всьому Комп'ютери навіть встановлюють в автомобілі, сучасні мобільні телефони теж по суті є комп'ютерами як і багато інших сучасних приладів. Але до кожного комп'ютера потрібне своє програмне забезпечення, яке створюється в середовищі різних мов програмування і тому зараз найбільша увага приділяється максимальному наближенню мови програмування або мови комп'ютера до людської. Це в свою чергу веде до створення не просто досконалої мови програмування, а до самої людської мови, яку б розумів комп'ютер, що гарно продемонстровано на прикладі Pascal і створеної мної програми.
Список використаної літератури
Ставровський А.Б., Коваль Ю.В. Вступний курс програмування.- К., 1998
Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. М.: "ДМК", 2000. - 416 с.
Семотюк В. Програмування в середовищі Турбо Паскаль. - Львів: СП “БаК”, 2000. - 123 с.
Турбо Паскаль 7.0. - Киев: Издательская группа BHV, 1999. - 257 с.
Додаток 1.
Program komun_posl;
uses wincrt;
type
Abonent=record
fam:string;
name:string;
fath:string;
misto:string;
vul:string;
bud:integer;
kvar:integer;
tel:longint;
percent:byte;
vod_p:integer;
vod_t:integer;
gas_p:integer;
gas_t:integer;
elect_p:integer;
elect_t:integer;
tel_p:real;
opl:array[1..4] of boolean;
end;
DB=file of Abonent;
const
vod_tar=0.65;
gas_tar=0.87;
tel_a=18.5;
elect_tar=0.225;
var f:DB;
tf:DB;
abon:Abonent;
a:integer;
i:integer;
str:string;
str2:string;
int:integer;
sum:real;
borg:real;
Function oplata(i:boolean):string;
begin
if i=true then oplata:='оплачено'
else oplata:='не оплачено';
end;
Function Open:Boolean;
begin
clrscr;
{$I-}
Reset(f);
{$I+}
if IOResult<>0 then
begin
clrscr;
Open:=false;
writeln('Невдається відкрити файл бази даних!');
writeln;
writeln;
writeln;
writeln('Для повернення в Головне меню натисніть будь-яку кнопку...');
readkey;
clrscr;
end
else Open:=true;
end;
Procedure ShowAll;
begin
if Open=true then
begin
with abon do
while not EOF(f) do
begin
Read(f,abon);
write(fam, ' ', name,' ',fath);
writeln(' Адреса: ',misto,' ',vul,' ',bud,' кв.',kvar);
end;
writeln;
writeln;
writeln('Кінець бази даних');
writeln;
writeln;
writeln('Натисніть будь-яку клавішу');
readkey;
close(f);
clrscr
end
end;
Procedure Pay(fa:string; n:string; s:integer);
begin
if Open=true then
rewrite(tf);
begin
while not EOF(f) do
with abon do
begin
Read(f, abon);
if (fa<>str) or (n<>str2) then
write(tf, abon)
else
begin
if (s<>5) and (s<>0) then
opl[s]:=true
else
if s=5 then
for s:=1 to 4 do
opl[s]:=true;
if s<>0 then
writeln('Борг оплачено');
end;
write(tf, abon);
end;
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
reset(f);
writeln('Натисніть будь-яку клавішу для продовження...');
readln;
end;
Procedure Show;
begin
if Open=true then
begin
write('Введіть прізвище абонента: ');
readln(str);
write('Введіть ім''я абонента: ');
readln(str2);
i:=0;
with abon do
while not EOF(f) do
begin
Read(f, abon);
if (fam=str) and (name=str2) then
begin
writeln(fam,' ', name, ' ',fath);
writeln('Адреса: ',misto,' ',vul,' ', bud,' ',kvar,' тел.',tel);
writeln;
write(' Попереднi',' Теперішні');
writeln(' Спожито ',' Тариф ',' До оплати');
write('Вода: ',vod_p,' ',vod_t,' ',vod_t-vod_p,' ');
sum:=(vod_t-vod_p)*vod_tar*percent/100;
borg:=0;
writeln(vod_tar:5:2,' ',sum:5:2,' ',oplata(opl[1]));
if opl[1]=false then
borg:=borg+sum;
write('Газ: ',gas_p,' ',gas_t,' ',gas_t-gas_p,' ');
sum:=(gas_t-gas_p)*gas_tar*percent/100;
writeln(gas_tar:5:2,' ',sum:5:2,' ',oplata(opl[2]));
if opl[2]=false then
borg:=borg+sum;
write('Ел-енергія:',elect_p,' ',elect_t,' ',elect_t-elect_p,' ');
sum:=(elect_t-elect_p)*elect_tar*percent/100;
writeln(elect_tar:5:2,' ',sum:5:2,' ',oplata(opl[3]));
if opl[3]=false then
borg:=borg+sum;
writeln('Телефон:');
writeln(' Абонплата: ',tel_a:5:2,' Переговори: ',tel_p:5:2,' ',oplata(opl[4]));
writeln;
writeln('Загальна сума до оплати: ',borg:5:2,' грн.');
writeln;
writeln('Виберіть борг для погашення:');
writeln('1.- Вода');
writeln('2.- Газ');
writeln('3.- Електроенергія');
writeln('4.- Телефон');
writeln('5.- Увесь борг');
writeln;
writeln('0.- Пропустити');
readln(a);
Pay(fam,name,a);
break;
i:=-1;
end;
end;
close(f);
clrscr;
end
end;
Procedure Add;
begin
clrscr;
Rewrite(tf);
if Open=true then
begin
with abon do
begin
while not EOF(f) do
begin
Read(f, abon);
write(tf, abon)
end;
a:=1;
while a <> 0 do
begin
write('Прізвище: ');
readln(fam);
write('Ім''я: ');
readln(name);
write('По батькові: ');
readln(fath);
write('Місто: ');
readln(misto);
write('Вулиця: ');
readln(vul);
write('Будинок: ');
readln(bud);
write('Квартира: ');
readln(kvar);
write('Телефон: ');
readln(tel);
write('Відсоток сплати(якщо немає пільг, то 100): ');
readln(percent);
writeln('Покази лічильників:');
writeln('Вода: ');
write('Попередні: ');
readln(vod_p);
write('Теперішні: ');
readln(vod_t);
writeln('Газ: ');
write('Попередні: ');
readln(gas_p);
write('Теперішні: ');
readln(gas_t);
writeln('Електроенергія: ');
write('Попередні: ');
readln(elect_p);
write('Теперішні: ');
readln(elect_t);
write('За телефонні переговори: ');
read(tel_p);
for i:=1 to 4 do
opl[i]:=false;
write(tf, abon);
writeln;
write('Додати ще один запис? 1 - так / 0 - ні ');
readln(a);
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon)
end
end;
close(f);
close(tf);
writeln('Збережено!');
writeln;
writeln('Натисніть будь-яку клавішу..');
readkey;
clrscr
end
end;
Procedure EditCount;
begin
clrscr;
Rewrite(tf);
reset(f);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище: ');
readln(str);
write('Введіть ім''я: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
else
begin
writeln('Ввиберіть лічильник:');
writeln('1.- Вода');
writeln('2.- Газ');
writeln('3.- Електроенергія');
writeln('4.- Телефон');
writeln('5.- Всі покази');
writeln;
writeln('0.- Пропустити');
readln(a);
case a of
1:begin
vod_p:=vod_t;
write('Нові покази лічильника: ');
readln(vod_t);
opl[1]:=false;
end;
2:begin
gas_p:=gas_t;
write('Нові покази лічильника: ');
readln(gas_t);
opl[2]:=false;
end;
3:begin
elect_p:=elect_t;
write('Нові покази лічильника: ');
readln(elect_t);
opl[3]:=false;
end;
4:begin
write('Рахунок за переговори: ');
readln(tel_p);
opl[4]:=false;
end;
5:begin
vod_p:=vod_t;
writeln('Введіть нові покази лічильників: ');
vod_p:=vod_t;
write('Вода: ');
readln(vod_t);
gas_p:=gas_t;
write('Газ: ');
readln(gas_t);
elect_p:=elect_t;
write('Електроенргія: ');
readln(elect_t);
write('Рахунок за телефонні переговори: ');
readln(tel_p);
for i:=1 to 4 do
opl[i]:=false;
end;
end;
write(tf, abon);
end;
end
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
end;
writeln('Зміни збережено!');
writeln('Натисніть будь-яку клавішу для продовження...');
readkey;
end;
Procedure EditAbon;
begin
clrscr;
Rewrite(tf);
reset(f);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище: ');
readln(str);
write('Введіть ім''я: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
else
begin
writeln('Ввиберіть поле редагування:');
writeln('1.- Прізвище, ім''я та по-батькові');
writeln('2.- Адресу і телефон');
writeln;
writeln('0.- Пропустити');
readln(a);
case a of
1:begin
clrscr;
writeln('Нові дані: ');
write('Прізвище: ');
readln(fam);
write('Ім''я: ');
readln(name);
write('По батькові: ');
readln(fath);
end;
2:begin
clrscr;
writeln('Нові дані: ');
write('Місто: ');
readln(misto);
write('Вулиця: ');
readln(vul);
write('Будинок: ');
readln(bud);
write('Квартира: ');
readln(kvar);
write('Телефон: ');
readln(tel);
end;
end;
write(tf, abon);
end;
end
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
end;
writeln('Зміни збережено!');
writeln('Натисніть будь-яку клавішу для продовження...');
readkey;
end;
Procedure Delete;
begin
clrscr;
Rewrite(tf);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище абонента: ');
readln(str);
write('Введіть ім''я абонента: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon)
end
end;
close(f);
close(tf);
writeln('Видалено!');
writeln;
writeln('Натисніть будь-яку клавішу..');
readkey;
clrscr
end
end
Procedure RewriteDB;
begin
writeln('Увага! Зараз Базу Даних буде знищено!!!');
writeln;
writeln('Ви впевнені? 1.- ТАК \ 0.- НІ');
readln(a);
if a=1 then
begin
clrscr;
Rewrite(f);
writeln('Базу даних знищено!!! Натисніть будь-яку клавішу..');
close(f);
readln;
clrscr;
end
end;
Procedure MainMenu;
begin
clrscr;
writeln('1.- Показати список всіх абонентів');
writeln('2.- Додати абонента');
writeln('3.- Пошук абонента');
writeln('4.- Змінити покази лічильників');
writeln('5.- Редагувати дані про абонента');
writeln('6.- Видалити абонента зі списку');
writeln('7.- Стерти базу даних');
writeln;
writeln('0.- Вихід')
end;
begin
writeln(' Міністерство освіти та науки України');
writeln(' Тернопільський національний технічний університет ім. І. Пулюя');
writeln;
writeln;
writeln;
writeln(' КУРСОВА РОБОТА');
writeln(' на тему:');
writeln(' ОПЛАТА КОМУНАЛЬНИХ ПОСЛУГ');
writeln;
writeln;
writeln;
writeln(' Група СІ-12');
writeln(' Сівіцький Олександр');
writeln;
writeln;
writeln;
writeln(' Тернопіль');
writeln(' 2010 рік');
readkey;
clrscr;
Assign(f, 'data.dat');
Assign(tf, 'data_temp.dat');
int:=1;
while int <> 0 do
begin
MainMenu;
readln(int);
case int of
1:ShowAll;
2:Add;
3:Show;
4:EditCount;
5:EditAbon;
6:Delete;
7:RewriteDB;
end;
end;
clrscr;
write('Тепер можна закрити вікно програми');
end.
Додаток 2
Procedure Show;
begin
if Open=true then
begin
write('Введіть прізвище абонента: ');
readln(str);
write('Введіть ім''я абонента: ');
readln(str2);
i:=0;
with abon do
while not EOF(f) do
begin
Read(f, abon);
if (fam=str) and (name=str2) then
begin
writeln(fam,' ', name, ' ',fath);
writeln('Адреса: ',misto,' ',vul,' ', bud,' ',kvar,' тел.',tel);
writeln;
write(' Попереднi',' Теперішні');
writeln(' Спожито ',' Тариф ',' До оплати');
write('Вода: ',vod_p,' ',vod_t,' ',vod_t-vod_p,' ');
sum:=(vod_t-vod_p)*vod_tar*percent/100;
borg:=0;
writeln(vod_tar:5:2,' ',sum:5:2,' ',oplata(opl[1]));
if opl[1]=false then
borg:=borg+sum;
write('Газ: ',gas_p,' ',gas_t,' ',gas_t-gas_p,' ');
sum:=(gas_t-gas_p)*gas_tar*percent/100;
writeln(gas_tar:5:2,' ',sum:5:2,' ',oplata(opl[2]));
if opl[2]=false then
borg:=borg+sum;
write('Ел-енергія:',elect_p,' ',elect_t,' ',elect_t-elect_p,' ');
sum:=(elect_t-elect_p)*elect_tar*percent/100;
writeln(elect_tar:5:2,' ',sum:5:2,' ',oplata(opl[3]));
if opl[3]=false then
borg:=borg+sum;
writeln('Телефон:');
writeln(' Абонплата: ',tel_a:5:2,' Переговори: ',tel_p:5:2,' ',oplata(opl[4]));
writeln;
writeln('Загальна сума до оплати: ',borg:5:2,' грн.');
writeln;
writeln('Виберіть борг для погашення:');
writeln('1.- Вода');
writeln('2.- Газ');
writeln('3.- Електроенергія');
writeln('4.- Телефон');
writeln('5.- Увесь борг');
writeln;
writeln('0.- Пропустити');
readln(a);
Pay(fam,name,a);
break;
i:=-1;
end;
if i<>-1 then writeln('Абонента не знайдено!!!');
writeln;
readln;
end;
close(f);
clrscr;
end
end;
Додаток 3
Procedure EditAbon;
begin
clrscr;
Rewrite(tf);
reset(f);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище: ');
readln(str);
write('Введіть ім''я: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
else
begin
writeln('Ввиберіть поле редагування:');
writeln('1.- Прізвище, ім''я та по-батькові');
writeln('2.- Адресу і телефон');
writeln;
writeln('0.- Пропустити');
readln(a);
case a of
1:begin
clrscr;
writeln('Нові дані: ');
write('Прізвище: ');
readln(fam);
write('Ім''я: ');
readln(name);
write('По батькові: ');
readln(fath);
end;
2:begin
clrscr;
writeln('Нові дані: ');
write('Місто: ');
readln(misto);
write('Вулиця: ');
readln(vul);
write('Будинок: ');
readln(bud);
write('Квартира: ');
readln(kvar);
write('Телефон: ');
readln(tel);
end;
end;
write(tf, abon);
end;
end
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
end;
writeln('Зміни збережено!');
writeln('Натисніть будь-яку клавішу для продовження...');
readkey;
end;
Додаток 4
Procedure EditCount;
begin
clrscr;
Rewrite(tf);
reset(f);
if Open=true then
begin
with abon do
begin
write('Введіть прізвище: ');
readln(str);
write('Введіть ім''я: ');
readln(str2);
while not EOF(f) do
begin
Read(f, abon);
if (fam<>str) or (name<>str2) then
write(tf, abon)
else
begin
writeln('Ввиберіть лічильник:');
writeln('1.- Вода');
writeln('2.- Газ');
writeln('3.- Електроенргія');
writeln('4.- Телефон');
writeln('5.- Всі покази');
writeln;
writeln('0.- Пропустити');
readln(a);
case a of
1:begin
vod_p:=vod_t;
write('Нові покази лічильника: ');
readln(vod_t);
opl[1]:=false;
end;
2:begin
gas_p:=gas_t;
write(' Нові покази лічильника: ');
readln(gas_t);
opl[2]:=false;
end;
3:begin
elect_p:=elect_t;
write(' Нові покази лічильника: ');
readln(elect_t);
opl[3]:=false;
end;
4:begin
write('Рахунок за переговори: ');
readln(tel_p);
opl[1]:=false;
end;
5:begin
vod_p:=vod_t;
writeln('Введіть нові покази лічильників: ');
vod_p:=vod_t;
write('Вода: ');
readln(vod_t);
gas_p:=gas_t;
write('Газ: ');
readln(gas_t);
elect_p:=elect_t;
write('Електроенргія: ');
readln(elect_t);
write('Рахунок за телефонні переговори: ');
readln(tel_p);
for i:=1 to 4 do
opl[i]:=false;
end;
end;
write(tf, abon);
end;
end
end;
close(f);
close(tf);
Rewrite(f);
Reset(tf);
while not EOF(tf) do
begin
Read(tf, abon);
write(f, abon);
end;
close(f);
close(tf);
end;
writeln('Зміни збережено!');
writeln('Натисніть будь-яку клавішу для продовження...');
readkey;
end;
Размещено на Allbest.ru
Подобные документы
Методика та головні етапи розробки бази даних, що включає в себе інформацію про клієнтів, про товари, послуги, про обліку замовлень та облік витрат. Формування та лістинг програми, що обслуговує дану базу даних. Прайс-лист на послуги, що надаються.
курсовая работа [3,7 M], добавлен 02.01.2014Розробка програми реєстрації і автоматизованого створення звіту на рік по викраденим машинам. Математична модель задачі, структура зберігаючих даних. Створення алгоритмів основної програми на мові Turbo Pascal і процедур Vvod і Red. Вихідний код програми.
курсовая работа [25,4 K], добавлен 07.10.2010Побудова інформаційно-математичної моделі та алгоритм задачі. Визначення структури даних. Розробка інтерфейсу програми з користувачем. Складання коду програми. Реалізація проекту у візуальному середовищі. Тестування та інструкція з експлуатації програми.
курсовая работа [1,3 M], добавлен 14.04.2009Розробка бази даних для обліку використання сільськогосподарської техніки на підприємстві. Аналіз предметної області. Складення DFD-діаграми з виділенням основних функцій даної задачі, ER-діаграми. Створення програми для виконання обліку на підприємстві.
курсовая работа [1,0 M], добавлен 24.12.2021MS-DOS - перша операційна система. Створення в операційній системі MS-DOS резидентної програми захисту файлів від видалення, її використання в випадках захисту файлів від випадкового видалення. Структура вхідних та вихідних даних, алгоритм рішення задачі.
курсовая работа [35,5 K], добавлен 16.11.2012Побудова інформаційно-математичної моделі задачі. Визначення структури даних, розробка інтерфейсу. Складання коду програми за допомогою мови програмування Delphi 7.0. Реалізація проекту у візуальному середовищі. Інструкція з експлуатації програми.
курсовая работа [601,3 K], добавлен 03.09.2009Записи: ієрархічні, з варіантними полями, множини. Складання програм, які забезпечують дії з таблицями, відомостями, списками, каталогами, де містяться дані різних типів. Особливості використання процедур і функцій мови Turbo Pascal при розробці програм.
реферат [39,8 K], добавлен 13.11.2010Порядок та характеристика етапів розробки та апробації програми "водій" для збереження повноти інформування правоохоронних органів, та швидкості її надання. Структура зберігаючих даних. Формування вихідного коду даної програми. Створення головного поля.
контрольная работа [14,3 K], добавлен 07.10.2010Розробка програми мовою Turbo Pascal для автоматизації процесу перевірки оцінок та аналізу успішності групи, для збереження і перегляду всієї інформації стосовно навчання. Формальна постановка задачі, створення алгоритму та вихідного коду програми.
курсовая работа [36,0 K], добавлен 13.10.2010Розробка програми "товарна база", призначеної для збереження та перегляду, а також автоматизованої обробки інформації, що надає користувач. Формальна та неформальна постановка задачі. Структура зберігаючих даних. Вихідний код програми, її апробація.
контрольная работа [13,3 K], добавлен 07.10.2010