Введення. p>
Дана програма автоматизованого робочого місця розроблена дляпрацівників складських приміщень, природно якщо у них є комп'ютеркласом не нижче Pentium. Зараз на ринку програмного забезпеченняз'являються все більше і більше різних програм для роботи не тільки зскладом, але і різні інші програмні засоби автоматизованогоробочого місця, а вартість їх ліцензійних копій доходить часом додекількох десятків тисяч, а моя програма може бути звичайно маленько ще
«Сирувата», але в процесі роботи з нею її можна «довести її до розуму» і всеце лише за п'ятірку з програмування ціна не велика за твірпрограмного мистецтва. Які її плюси: ну це природно простота ізрозумілість (для російської людини) інтерфейсу програми, що не вимагаєдодаткового навчання або проходження спеціальних курсів, особливо дляжінок, які працюють на складах і не посвячених у ази комп'ютерів іпрограмного забезпечення, не вимогливість до системних ресурсів машини;легкість введення і відстеження; простота резервування бази даних (всього 1файл), що важливо для такої програми. При написанні та розробцікурсового проекту я навчився працювати з Borland Pascal, Microsoft Windows
95OSR2, Microsoft Word 97 SR-2 які використовувалися для роботи надкурсовим проектом, навчився використовувати довідку та інші функції Borland
Pascal при цьому навіть розібрався з англійською мовою і використаннямелектронних словників перекладачів таких як Promt, Stylus, Magic Gooddy 98.
Величезне спасибі Волкову О.І. - За відмінне викладання предметів, Billу
Gaits - за те що він вміє заробляти гроші власним розумом, Мерзлякова
Д.С. - За підтримку у важку хвилину, Баришева А.А. - За технічнупідтримку, Російських А.І. - За програмну підтримку, Казакову В.С. - Задозвіл працювати на комп'ютері, Sting, Queen, і іншим за хорошу музикупід час роботи над курсовим. p>
I. Завдання. P>
Скласти програму автоматичного робочого місця для роботи зскладом. p>
Програма повинна надавати користувачеві можливість:
1. Вводити новий товар, вказуючи наступні параметри p>
V Найменування; p>
V Кількість; p>
V Ціну; p>
V Дату надходження.
2. Здійснювати пошук товару за найменуванням і видавати його параметри.
3. Позначати вибулий товар, вказуючи дату видачі.
4. Виводити список наявного товару з можливістю сортування по будь-якому параметру.
5. Виводити список вибулого товару з можливістю сортування по будь-якому параметру.
6. Видавати загальну статистичну характеристику: p>
V Загальна вартість наявного товару; p>
V Кількість наявного товару; p>
V Кількість вибулого товару.
7. Зберігати і відновлювати всю інформацію АРМ з диска. P>
I. опис змінних і алгоритму роботи програми.
Опис змінних.
V basskl - основний запис з необхідними змінними це: p>
> naim - найменування товару; p>
> kol - кількість товару; p>
> price - ціна товару; p>
> kol_p - кількість прийшов товару; p>
> kol_r - кількість товару який пішов; p>
> date_p - дата приходу товару; p>
> date_r - дата витрати товару.
V f - file бази сладу;
V list - масив даних бази;
V schet - Cчетчики;
V curs - показник позиції; < br> V stran - лічильник позиції курсору;
V i - мінлива використання;
V mcurs - мінлива початковій позиції меню;
V k-мінлива визначення клавіші;
V res-мінлива вибору меню; < br> V da - мінлива використання;
V er - мінлива помилки перетворення;
V tx - мінлива тексту при пошуку;
V fil - змінна імені бази;
V key - прапорець;
V seter - мінлива використання. p>
Крім змінних в програмі використовуються процедури і функції описяких наведено нижче;
Функція probel;
Використовується для доповнення тексту необхідними кількостями пробілів.
Вхід: Текст, необхідна довжина.
Вихід: Текст необхідної довжини. P>
Функція Edtext;
Використовується для виведення на екран в потрібну позицію тексту і його подальшогоредагування
Функція працює таким чином:
Зациклюється до тих пір, поки не буде натиснення Enter або Esc. У цей часвиводить на екран текст в потрібну позицію, оновлюється, очікує натисканняклавіш або delete.
Вхід: Координати, текст, довжина тексту, прапорець.
Вихід: Виведення на екран тексту, відредагований текст. P>
Функція Cifri;
Подібна функції Edtext тільки введення тексту обмежений цифрами.
Працює також. P>
Процедура Prishlo;
Застосовується для виведення на екран меню "Прихід" та занесення даних в позиціюбази.
Опис роботи: Працює з рядком масиву бази. Виводить на екран меню
"Прихід", перетворює текстові змінні після введення в рядки меню. P>
Процедура Ushlo;
Аналогічна процедурі Prishlo. Замінено тільки формула обчисленнякількості. p>
Процедура Vvodnov;
Процедура забезпечує виведення на екран меню «Новий товар», введення новоїрядка в базу.
Працює: Обмежується рядком, для роботи із змінними запису, виводитьна екран меню, користувачем редагуються рядка меню, перетворюються,збільшується лічильник числа рядків бази на 1. p>
Процедура Edzapic;
Використовується для редагування запису в поточній позиції курсору лістингупереліку товарів.
Вхід: Позиція
Вихід: відредагований текст в даній позиції. P>
Процедура Ekran;
Відображає на екрані заголовок таблиці бази і заповнює таблицю,розраховує і відображає на екрані нижній рядок стану бази загальнусуму, загальний прихід, загальна витрата, загальна кількість товарів.
Опис: Формує вікно для роботи, відображає заголовок таблиці, цикл длявиводу перших двадцяти рядків бази у вікно, обнулення лічильників сум, цикл навсі позиції бази, розрахунок сум у цьому циклі виведення результату на екран у виглядірядка стану. p>
Функція Vivstr;
Формує рядок по позиції в базі.
Обнуляється. Працює з рядком в масиві бази. Виробляє перетворення встрінговие змінні числових значень бази (кількості ціни, прихід,витрати), сума формується шляхом обчислення. Додавання потрібними пробіламифункцією Probel. p>
Процедура Vivlist;
Забезпечує формування екрана за допомогою процедури Ekran, висновокщо пояснює рядка. Підфарбовування рядка в позиції курсору, опитування клавішкурсору і службових (для введення нової, коректування, видалення). Працюєнаступним чином: Виконує процедуру Ekran, промальовує рядокпояснення, цикл поки не натиснута клавіша «вліво», «праворуч», «Enter», «Esc» --опитує клавіатуру за допомогою функції «Readkey» якщо натиснута «Вниз» або
«Вгору» уменьшаетя або збільшується відповідно поточний лічильник позиційменю p>
Функція Vstroca;
Функція організовує головне меню у верхній частині екрана.
Встановлює параметри кольору, виводить на екран масив з перемінними менютобто назвами меню. Опитує клавіатуру на натискання клавіші «Ліворуч»,
«Вправо», «Enter» виконує відповідні цим клавішам команди. Потімякщо було натиснення «Esc» функція приймає значення менше 1, а потім вголовний програмі відбувається вихід. p>
Процедура Sortirovka;
Сортує дані по заданій колонці.
Організовується цикл на всі позиції масиву бази. База переносить дані всторонню базу. Вибирає стовпець сортування порівнює зі сторонньої базоюякщо більше то переносить в сторонню базу запам'ятовує позицію. Наприкінці циклупереставляє позиції основної бази.
Опис алгоритму роботи програми.
Очищається екран виводиться меню для зазначення місця розташування і назвифайла бази за умовчанням це «С: base.dat» потім перевіряється створений чи файлякщо ні то створюється. Організовується цикл до кінця файлу переписуютьсядані в масив бази. Обнуляються змінні. організується меню за данимифункції Vstroka потім происходи вибір за допомогою оператора Case за якимздійснюються переходи. У випадку «1» приходу функції Vstroka виводитьсялістинг даних бази і заголовків, організація руху курсору по рядкахбази за допомогою процедури Vivlist. В разі результату «2» формується вікноз тінню «Прийшов», заповнюється вікно за допомогою процедури Prishlo за поточноюпозиції курсору екрану і лістингу. «3» формується вікно «Витрати»,заповнюється за допомогою процедури Ushlo. «4» організується вікно «Знайтинайменування »вводиться текст за допомогою функції Edtext. порівнюється знайменуваннями бази в разі знаходження встановлює курсор на це місце. Якщо незнаходить підтвердить, що Ви і встановлює на кінцеву позицію. «5» Вікносортування. Виконується процедура Sortirovka. При інших значеннях функції
Vstroca відбувається запис файлу бази, закриття файлу. P>
II. Алгоритм програми. P>
IV. Текст програми.
Program kursovoi;uses crt;type basskl = record naim: string [40]; kol: integer; price: single; kol_p: integer; date_p: string [8]; kol_r: integer; date_r: string [8]; end; p>
var f: file of basskl; p>
List: array [0 .. 255] of basskl; p>
Schet: Integer; curs, stran, i, mcurs: integer; k: char ; p>
Res, da, er, seter: Integer; p>
Tx, files: String; key: boolean;const mnu: array [1 .. 6] of string [13 ]=( p>
'Enter', p>
'Прихід', p>
'Витрати', p>
'Знайти', p>
'Сортування', p>
'Вихід'); p>
function Probel (Text: String; Len: Integer): String; begin p>
While length (Text) '); writeln (' Дата приходу дд.мм.гг-> '); val (Cifri (25,2,'', 6, key ), kl, er); if NOT key then exit; kol_p: = kol_p + kl; kol: = kol + kl; p>
Date_p: = Cifri (25,3,'', 8, key) ; if NOT key then exit; end;end; p>
procedure Ushlo (posiz: integer);var er: integer; key: Boolean; kl: integer;begin clrscr; p>
With List [Posiz] do begin writeln ( 'Витрати'); writeln ( 'Кількість ->'); writeln (' Дата витрати дд.мм.гг-> '); val ( Cifri (25,2,'', 6, key), kl, er); if NOT key then exit; kol_r: = kol_r + kl; kol: = kol-kl; p>
Date_r: = Cifri (25,3,'', 8, key); if NOT key then exit; end;end; p>
procedure Vvodnov;var Tx: String; er: integer; key: Boolean;begin clrscr; p>
With List [Schet] do begin writeln ( 'Новий товар'); writeln ( 'Назва:'); writeln ( 'Кількість:'); writeln ( 'Ціна:'); writeln ( 'Дата приходу дд.мм.гг:'); (readln (date_p );} p>
Naim: = Edtext (25,2,'', 20, key); if NOT key then exit ; val (Cifri (25,3,'', 6, key), kol, er); if NOT key then exit; kol_p: = kol; val (Cifri (25,4,'', 10, key), price , er); if NOT key then exit; p>
Date_p: = Cifri (25,5,'', 8, key); if NOT key then exit; inc (Schet); end;end; p>
procedure Edzapic (posiz: integer);var Tx: String; er: integer; key: Boolean;begin clrscr; p>
With List [posiz] do begin writeln ( 'Редактор товару'); writeln ( 'Назва:'); writeln ( 'Ціна :'); p>
Tx : = Edtext (25,2, Naim, 20, key); if key then Naim: = tx; str (price: 0:2, tx); tx: = Cifri (25,3, tx, 10, key); if key then val (tx, price, er); end;end; p>
function vstroca (var curs: integer): integer; var i: integer; begin p>
Textbackground (15); p>
TextColor (0); gotoxy (1,1); write (Probel ('', 80)); for i: = 0 to 5 do begin gotoxy (i * 13 +1,1); write (mnu [i +1]); end; p>
Textbackground (0); p>
TextColor (14); gotoxy ((curs-1) * 13 +1,1); write (mnu [curs]); repeat k: = readkey; p>
Textbackground (15); p>
TextColor (0); gotoxy ((curs-1) * 13 +1,1); write (mnu [curs]); if k = # 0 then k: = readkey; case k of p>
# 75: if curs> 1 then dec (curs) else curs: = 6; p>
# 77: if cursList [j]. naim then begin Bas: = List [j]; k: = j end; p>
2: if Bas.kol> List [j]. kol then begin Bas: = List [j ]; k: = j end; p>
3: if Bas.price> List [j]. price then begin Bas: = List [j]; k: = j end; p>
5: if Bas.kol_p> List [j]. kol_p then begin Bas: = List [j]; k: = j end; p>
6: if Bas.date_p> List [j]. date_p then begin Bas: = List [j]; k: = j end; p>
7: if Bas.kol_r> List [j]. kol_r then begin Bas: = List [j]; k: = j end; p>
8: if Bas.date_r> List [j]. date_r then begin Bas: = List [j]; k: = j end; end; end; p>
List [k]: = List [i]; List [i]: = Bas; end;end; p>
procedure Vivlist (var seek, curs: integer); var c, k: char; i: integer; begin p>
Ekran; p>
Textbackground ( 3); gotoxy (1,24); write (Probel ( '- меню | Ins - Додати | Ctrl + F8 -
Видалити | Ctrl + Enter - змінити ', 79 )); p>
Textbackground (15); p>
TextColor (1); gotoxy (1,1 + curs); write (VIVSTR ( curs + stran-1)); repeat c: = readkey; p>
Textbackground (5); p>
TextColor (14); gotoxy (1,1 + curs); write (VIVSTR (curs + stran-1)); if c = # 0 then k: = readkey; case k of p>
# 72: begin (На початок курсор) if (curs = 1) and (stran> 0) then begin dec (stran); Ekran end; if (curs> 1) then dec (curs); end; p>
# 80: begin (Вниз курсор) if (curs = 20) and (stran 20 p>