Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Автоматическое робоче місце для працівника склада

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Встановлює параметри кольору, виводить на екран масив зі змінними меню тобто. назвами меню. Запитує клавіатуру на натискання клавіші «Вліво», «Вправо», «Enter» виконує відповідні цим клавішах команди. Потім якщо було натиснуто «Esc» функція приймає значення менше 1 і у головний програмі відбувається вихід. Організується цикл попри всі позиції масиву бази. База переносить дані в сторонню базу… Читати ще >

Автоматическое робоче місце для працівника склада (реферат, курсова, диплом, контрольна)

Ця програма автоматизованого робочого місця розроблена до працівників складських приміщень, природно якщо в неї лише комп’ютер класом не нижче Pentium. Зараз ринку програмного забезпечення з’являються дедалі більше різних програм до роботи як зі складом, а й інші програмні кошти автоматизованого робочого місця, але вартість їхнього перебування ліцензійних копій доходить часом за кілька десятків тисяч, а моя програма то, можливо звісно трішечки ще «вогкувата», але у процесі роботи з ним їх можна «довести до розуму» і всі лише над п’ятірку з програмування ціна невелика за твір програмного мистецтва. Які її плюси: ну це природно простота і зрозумілість (російського людини) інтерфейсу програми, що ні має потребу навчання чи проходження спеціальних курсів, особливо жінок, працівників складах і втаємничених у ази комп’ютерів, і програмного забезпечення; не вимогливість до системним ресурсів машини; легкість введення і відстежування; простота резервування бази даних (всього 1 файл), що важливо на таку програми. Під час написання та розробки курсового проекту я навчився працювати з Borland Pascal, Microsoft Windows 95OSR2, Microsoft Word 97 SR-2 що були до роботи над курсовим проектом, навчився використовувати довідку та інші функції Borland Pascal у своїй навіть розібрався з англійською мовою та використанням електронних словників перекладачів як-от Promt, Stylus, Magic Gooddy 98. Величезна подяка Волкову А.І. — за чудове викладання предметів, Billу Gaits — через те що він уміє заробляти гроші власним розумом, Мерзлякову Д. С. — на підтримку у скрутну хвилину, Барышеву А. А. — за технічну підтримку, Російських А.І. — за програмну підтримку, Казакову В. С. — за дозвіл працювати за комп’ютером, Sting, Queen, та інших за хорошу музику під час роботи над курсовым.

I.

ЗАДАНИЕ.

Скласти програму автоматичного робочого місця до роботи зі складом.

Програма повинна надавати користувачеві можливість:

1. Вводити новий товар, вказуючи такі параметри.

* Наименование;

* Количество;

* Цену;

* Дату поступления.

2. Здійснювати пошук товару по найменуванням і видавати її параметры.

3. Помічати вибувши товар, вказуючи дату выдачи.

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

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

6. Видавати загальну статистичну характеристику:

* Загальна вартість наявного товара;

* Кількість наявного товара;

* Кількість вибулого товара.

7. Зберігати і відновлювати усю інформацію АРМ з диска.

8.

II.

ОПИС ЗМІННИХ І АЛГОРИТМУ РОБОТИ ПРОГРАММЫ.

Опис переменных.

* basskl — основна запис з необхідними перемінними это:

> naim — найменування товара;

> kol — кількість товара;

> price — ціна товара;

> kol_p — кількість який прийшов товара;

> kol_r — кількість товару який ушел;

> date_p — дата приходу товара;

> date_r — дата витрати товара.

* f — file бази слада;

* list — масив даних базы;

* schet — cчетчик;

* curs — показник позиции;

* stran — лічильник позиції курсора;

* і - змінна использования;

* mcurs — змінна початковій позиції меню;

* k -змінна визначення клавиши;

* res -змінна вибору меню;

* da — змінна использования;

* er — змінна помилки преобразования;

* tx — змінна тексту при поиске;

* fil — змінна імені базы;

* key — флажок;

* seter — змінна использования.

Крім змінних у програмі використовуються процедури і функції опис яких наведено ниже;

Функція probel;

Використовується для доповнення тексту необхідними кількостями пробелов.

Вхід: Текст, необхідна длина.

Вихід: Текст необхідної длины.

Функція Edtext;

Використовується висновку на екран у потрібний позицію тексту та її наступного редактирования.

Функція працює наступним образом:

Зациклюється до того часу поки що не натискання Enter чи Esc. Саме тоді виводить на екран текст у потрібний позицію, оновлюється, очікує натискання клавіш чи delete.

Вхід: Координати, текст, довжина тексту, флажок.

Вихід: Висновок на екран тексту, виправлений текст.

Функція Cifri;

Подібна функції Edtext лише введення тексту обмежений цифрами.

Працює также.

Процедура Prishlo;

Застосовується висновку на екран меню «Прихід» і занесення даних в позицію базы.

Опис роботи: Працює зі рядком масиву бази. Виводить на екран меню «Прихід», перетворює текстові перемінні після входження у рядки меню.

Процедура Ushlo;

Аналогічна процедурі Prishlo. Заменена лише формула обчислення количества.

Процедура Vvodnov;

Процедура забезпечує висновок на екран меню «Новий товар», введення нової рядки у базу.

Працює: Обмежується рядком, до роботи зі змінними записи, виводить на екран меню, користувачем редагуються рядки меню, перетворюються, збільшується лічильник числа рядків бази на 1.

Процедура Edzapic;

Використовується для редагування запис у поточної позиції курсору лістингу переліку товаров.

Вхід: Позиція.

Вихід: виправлений текст у цій позиции.

Процедура Ekran;

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

Опис: Формує вікно до роботи, відображає заголовок таблиці, цикл висновку перших двадцяти рядків бази на вікно, обнуління лічильників сум, цикл попри всі позиції бази, розрахунок сум у тому циклі висновок результату на екран як рядки состояния.

Функція Vivstr;

Формує рядок за позицією в базе.

Обнуляется. Працює зі рядком в масиві бази. Виробляє перетворення на стринговые перемінні числових значень бази (кількості ціни, прихід, витрата), сума формується шляхом обчислення. Додавання потрібними прогалинами функцією Probel.

Процедура Vivlist;

Забезпечує формування екрана з допомогою процедури Ekran, висновок яка б пояснила рядки. Подкрашивание рядки у позиції курсору, опитування клавіш курсору і службових (для введення нової, коригування, видалення). Працює так: Виконує процедуру Ekran, прорисовывает рядок пояснення, цикл доки натиснута клавіша «вліво», «вправо», «Enter», «Esc» — запитує клавіатуру з допомогою функції «Readkey» якщо натиснута «Вниз» чи «Угору» уменьшаетя чи збільшується відповідно поточний лічильник позицій меню.

Функція Vstroca;

Функція організує головне меню у верхній рядку екрана.

Встановлює параметри кольору, виводить на екран масив зі змінними меню тобто. назвами меню. Запитує клавіатуру на натискання клавіші «Вліво», «Вправо», «Enter» виконує відповідні цим клавішах команди. Потім якщо було натиснуто «Esc» функція приймає значення менше 1 і у головний програмі відбувається вихід.

Процедура Sortirovka;

Сортує дані про заданої колонке.

Організується цикл попри всі позиції масиву бази. База переносить дані в сторонню базу. Обирає стовпець сортування порівнює зі сторонньої базою якщо більше то переносить в сторонню базу запам’ятовує позицію. Наприкінці циклу переставляє позиції основний базы.

Опис алгоритму роботи программы.

Очищається екран виводиться меню для вказівки розташування назви файла бази вмовчанням це «С:base.dat» потім перевіряється створено чи файл якщо ні створюється. Організується цикл остаточно файла переписуються дані в масив бази. Обнуляются перемінні. організується меню за даними функції Vstroka потім станься вибір з допомогою оператора Case яким здійснюються переходи. Що стосується «1» приходу функції Vstroka виводиться лістинг даних бази й заголовків, організація руху курсору по рядкам бази з допомогою процедури Vivlist. Що стосується результату «2» формується вікно із кепкуючою тінню «Настав», заповнюється вікно з допомогою процедури Prishlo за поточною позиції курсору екрану і лістингу. «3» формується вікно «Витрата», заповнюється з допомогою процедури Ushlo. «4» організується вікно «Знайти найменування» вводиться текст з допомогою функції Edtext. порівнюється зі найменуваннями бази якщо знаходить встановлює курсор цього місце. Не знаходить виводить повідомлення встановлює на кінцеву позицію. «5» Вікно сортування. Виконується процедура Sortirovka. За інших значеннях функції Vstroca відбувається запис файла бази, закриття файла.

III.

АЛГОРИТМ ПРОГРАММЫ.

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;

var f: file of basskl;

List:array[0.255] of basskl;

Schet:Integer;

curs, stran, i, mcurs:integer;

k:char;

Res, da, er, seter: Integer;

Tx, files: String;

key:boolean;

const.

mnu:array[1.6] of string[13]=(.

" Введення " ,.

" Прихід " ,.

" Витрата " ,.

" Знайти " ,.

" Сортування " ,.

" Вихід ");

function Probel (Text:String;Len:Integer):String;

begin.

While length (Text).

Probel:=copy (Text, 1, len).

end;

function Edtext (x, y: Integer; Text: String;Len:Integer;var key: boolean):String;

var c: char;

begin.

key:=true;

Edtext:= «» ;

repeat.

gotoxy (x, y);

write (Text);

write (Probel («», len));

gotoxy (x, y);

write (Text);

c:=Readkey;

if c=#8 then delete (Text, length (Text), 1);

if з in [ «A ». «z », «», «. », «0 ». «9 », «А ». «я », «- «] then Text:=Text+c;

Text:=copy (Text, 1, len);

until (c=#27) or (c=#13);

if c=#13 then Edtext:=Text else key:=false;

end;

function Cifri (x, y: Integer; Text: String;Len:Integer;var key: boolean):String;

var c: char;

begin.

key:=true;

Cifri:= «» ;

repeat.

gotoxy (x, y);

write (Text);

write (Probel («», len));

gotoxy (x, y);

write (Text);

c:=Readkey;

if c=#8 then delete (Text, length (Text), 1);

if з in [ «. », «0 ». «9 », «- «] then Text:=Text+c;

Text:=copy (Text, 1, len);

until (c=#27) or (c=#13);

if c=#13 then Cifri:=Text else key:=false;

end;

procedure Prishlo (posiz:integer);

var Tx: String;

er:integer;

key:Boolean;

kl:integer;

begin.

clrscr;

With List[Posiz] do begin.

writeln («Прихід »);

writeln («Кількість -> «);

writeln («Дата приходу ДД.ММ.ГГ-> «);

val (Cifri (25,2, «», 6, key), kl, er); if NOT key then exit;

kol_p:=kol_p+kl; kol:=kol+kl;

Date_p:=Cifri (25,3, «», 8, key); if NOT key then exit;

end;

end;

procedure Ushlo (posiz:integer);

var er: integer;

key:Boolean;

kl:integer;

begin.

clrscr;

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;

Date_r:=Cifri (25,3, «», 8, key); if NOT key then exit;

end;

end;

procedure Vvodnov;

var Tx: String;

er:integer;

key:Boolean;

begin.

clrscr;

With List[Schet] do begin.

writeln («Новий товар »);

writeln («Найменування товару: »);

writeln («Кількість: »);

writeln («Ціна: »);

writeln («Дата приходу ДД.ММ.ГГ: »); {readln (date_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;

Date_p:=Cifri (25,5, «», 8, key); if NOT key then exit;

inc (Schet);

end;

end;

procedure Edzapic (posiz:integer);

var Tx: String;

er:integer;

key:Boolean;

begin.

clrscr;

With List[posiz] do begin.

writeln («Редагування товару »);

writeln («Найменування товару: »);

writeln («Ціна: »);

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;

function vstroca (var curs: integer):integer;

var i: integer;

begin.

Textbackground (15);

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;

Textbackground (0);

TextColor (14);

gotoxy ((curs-1)*13+1,1); write (mnu[curs]);

repeat.

k:=readkey;

Textbackground (15);

TextColor (0);

gotoxy ((curs-1)*13+1,1); write (mnu[curs]);

if k=#0 then k:=readkey;

case k of.

#75: if curs>1 then dec (curs) else curs:=6;

#77: if curs.

end;

Textbackground (0);

TextColor (14);

gotoxy ((curs-1)*13+1,1); write (mnu[curs]);

if k=#13 then vstroca:=curs;

until (k=#27) or (k=#13);

if k=#27 then vstroca:=-1;

end;

function VIVSTR (nstr:integer):String;

var Skol, sprice, summ,.

Pkol, Rkol: String[10];

begin.

VIVSTR:= «» ;

if (nstr=0) then.

With List[nstr] do.

begin.

str (kol, skol);

str (price:9:2,sprice);

str (price*kol:9:2,summ);

str (kol_p, pkol);

str (kol_r, rkol);

VIVSTR:=Probel (naim, 20)+Probel (skol, 6)+Probel (sprice, 11)+Probel (summ, 11)+.

Probel (Pkol, 6)+Probel (Date_p, 10)+Probel (Rkol, 6)+Probel (Date_r, 9);

end;

end;

procedure Ekran;

var i: integer;

Summ_, Sum_p, Sum_r:Double;

begin.

Window (1,2,80,25);

Textbackground (5);

TextColor (10);

Clrscr;

gotoxy (1,1);

Textbackground (3);

write (Probel («Найменування », 20)+Probel («У », 9)+Probel («Ціна », 10)+.

Probel («Сума », 7)+Probel («Прихід », 7)+Probel («Дата посаду », 10)+Probel («Витрата », 6).

+Probel («Дата выд », 9));

Textbackground (5);

TextColor (14);

for i:=0 to 20 do.

begin.

gotoxy (1,2+i); Write (Vivstr (i+stran));

end;

Textbackground (15);

TextColor (0);

gotoxy (1,1+curs); write (VIVSTR (curs+stran-1));

Summ_:=0; Sum_p:=0; Sum_r:=0;

for i:=0 to Schet-1 do.

begin.

Summ_:=Summ_+(List[i]. price*List[i].kol);

Sum_p:=Sum_p+(List[i]. price*List[i].kol_p);

Sum_r:=Sum_r+(List[i]. price*List[i].kol_r);

end;

Textbackground (4);

TextColor (15);

gotoxy (1,23); write (Probel («», 80));

gotoxy (1,23); write («Разом: » ,.

Summ_:12:2, «крб. Прихід: », Sum_p:0:2, «крб. Витрата: », Sum_r:0:2, «крб. »);

gotoxy (15,24); write («Загальна кількість найменувань товару: », schet, «прим »);

end;

procedure Sortirovka (num:Integer);

var i, j, k:Integer;

Bas:Basskl;

begin.

for i:=0 to Schet-1 do.

begin.

Bas:=List[i];

for j:=i+1 to Schet-1 do.

begin.

case Num of.

1: if Bas. Naim>List[j]. naim then begin Bas:=List[j]; k:=j end;

2: if Bas. kol>List[j]. kol then begin Bas:=List[j]; k:=j end;

3: if Bas. price>List[j]. price then begin Bas:=List[j]; k:=j end;

5: if Bas. kol_p>List[j]. kol_p then begin Bas:=List[j]; k:=j end;

6: if Bas. date_p>List[j]. date_p then begin Bas:=List[j]; k:=j end;

7: if Bas. kol_r>List[j]. kol_r then begin Bas:=List[j]; k:=j end;

8: if Bas. date_r>List[j]. date_r then begin Bas:=List[j]; k:=j end;

end;

end;

List[k]: =List[i]; List[i]: =Bas;

end;

end;

procedure Vivlist (var seek, curs: integer);

var c, k: char;

i:integer;

begin.

Ekran;

Textbackground (3);

gotoxy (1,24); write (Probel («- меню | Ins — Додати | Ctrl+F8 — Видалити | Ctrl+Enter — Змінити », 79));

Textbackground (15);

TextColor (1);

gotoxy (1,1+curs); write (VIVSTR (curs+stran-1));

repeat.

c:=readkey;

Textbackground (5);

TextColor (14);

gotoxy (1,1+curs); write (VIVSTR (curs+stran-1));

if c=#0 then k:=readkey;

case k of.

#72: begin {Угору курсор}.

if (curs=1) and (stran>0) then begin dec (stran); Ekran end;

if (curs>1) then dec (curs);

end;

#80: begin {Вниз курсор}.

if (curs=20) and (stran+20.

begin inc (stran); Ekran end;

if ((curs=20)).

or ((Schet0 then.

for i:=curs+stran-1 to Schet-1 do.

begin.

List[i]: =List[i+1];

end;

dec (Schet);

dec (curs);

Ekran;

end;

#82: begin {Ins — нова запись}.

Window (12,12,72,17);

Textbackground (0);

clrscr;

Window (10,11,70,16);

Textbackground (7);

clrscr;

{новоя запись}.

Vvodnov;

Sortirovka (1);

Window (1,1,80,25);

Ekran;

end;

end;

if c=#10 then {Ctrl+Enter}.

begin.

Window (12,12,72,17);

Textbackground (0);

clrscr;

Window (10,11,70,16);

Textbackground (7);

clrscr;

{новоя запись}.

Edzapic (Curs+stran-1);

Sortirovka (1);

Window (1,1,80,25);

Ekran;

end;

Textbackground (15);

TextColor (1);

gotoxy (1,1+curs); write (VIVSTR (curs+stran-1));

until (k=#27) or (k=#13) or (k=#75)or (k=#77);

Window (1,1,80,25);

end;

begin.

clrscr;

Window (16,12,66,15);

Textbackground (9);

textcolor (3);

clrscr;

write («Запровадьте назва і під повний шлях бази »);

gotoxy (3,3);

readln (files);

if files= «» then files:= «c:base.dat » ;

assign (f, files);

{$I-}.

reset (f);

{$I+}.

if IOResult0 then rewrite (f);

Schet:=0;

While not eof (f) do.

begin.

inc (Schet);

read (f, List[Schet-1]);

end;

Textbackground (0);

clrscr;

curs:=1; stran:=0; mcurs:=1; seter:=15;

repeat.

Ekran;

Window (1,1,80,25);

res:=vstroca (mcurs);

case res of.

1:begin.

Vivlist (stran, curs);

Window (1,1,80,25);

end;

2:begin.

Window (16,12,66,15);

Textbackground (0);

clrscr;

Window (14,11,64,14);

Textbackground (7);

clrscr;

{Запуск нової записи}.

Prishlo (Curs+stran-1);

Window (1,1,80,25);

end;

3:begin.

Window (16,12,66,15);

Textbackground (0);

clrscr;

Window (14,11,64,14);

Textbackground (7);

clrscr;

{Запуск нової записи}.

Ushlo (Curs+stran-1);

Window (1,1,80,25);

end;

4:begin {Поиск}.

Window (16,12,66,14);

Textbackground (7);

clrscr;

Window (14,11,64,13);

Textbackground (8);

clrscr;

Gotoxy (2,2); Write («Знайти найменування: »);

Tx:=Edtext (25,2, «», 20, key);

for i:=0 to Schet-1 do.

if List[i]. naim=tx then begin seter:=1; break; end;

if i>20 then begin curs:=1; stran:=i end.

else begin curs:=i+1; stran:=0; end;

if seter1 then.

begin.

Window (16,12,66,14);

Textbackground (7);

clrscr;

Window (14,11,64,13);

Textbackground (8);

clrscr;

Gotoxy (2,2); Write («Найменування ненайдено »); readln; stran:=1; curs:=1;

end;

Vivlist (stran, curs);

Window (1,1,80,25);

end;

5:begin {Сортировка}.

Window (16,12,66,14);

Textbackground (0);

clrscr;

Window (14,11,64,13);

Textbackground (7);

clrscr;

Gotoxy (2,2); Write («Запровадьте полі для сортування (1.8): »);

val (Cifri (38,2, «», 1, key), da, er);

if da in [1.8] then Sortirovka (da);

Window (1,1,80,25);

end;

end;

until (res.

Rewrite (f);

Sortirovka (1);

for i:=0 to Schet-1 do Write (f, List[i]);

close (f);

end.

Показати весь текст
Заповнити форму поточною роботою