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

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

скачати

Автоматичне робоче місце для роботи зі складом
ВВедение.
Дана програма автоматизованого робочого місця розроблена для працівників складських приміщень, природно якщо у них є комп'ютер класом не нижче Pentium. Зараз на ринку програмного забезпечення з'являються все більше і більше різних програм для роботи не тільки зі складом, але і різні інші програмні засоби автоматизованого робочого місця, але вартість їх ліцензійних копій доходить часом до кількох десятків тисяч, а моя програма може бути звичайно маленько ще " сирувата ", але в процесі роботи з нею її можна" довести її до розуму "і все це лише за п'ятірку з програмування ціна не велика за твір програмного мистецтва. Які її плюси: ну це природно простота і зрозумілість (для російської людини) інтерфейсу програми, що не вимагає додаткового навчання або проходження спеціальних курсів, особливо для жінок, що працюють на складах і не втаємничених у ази комп'ютерів і програмного забезпечення; не вимогливість до системних ресурсів машини; легкість введення і відстеження; простота резервування бази даних (всього 1 файл), що не маловажно для такої програми.
При написанні та розробці курсового проекту я навчився працювати з Borland Pascal, Microsoft Windows 95 OSR2, Microsoft Word 97 SR-2 які використовувалися для роботи над курсовим проектом, навчився використовувати довідку та інші функції Borland Pascal при цьому навіть розібрався з англійською мовою і використанням електронних словників перекладачів таких як Promt, Stylus, Magic Gooddy 98. Величезне спасибі Волкову А.І. - За відмінне викладання предметів, Billу Gaits - за те що він вміє заробляти гроші власним розумом, Мерзлякова Д.С. - За підтримку у важку хвилину, Баришева А.А. - За технічну підтримку, Російських А.І. - За програмну підтримку, Казакову В.С. - За дозвіл працювати на комп'ютері, Sting, Queen, й іншим за хорошу музику під час роботи над курсовим.
Завдання.
Скласти програму автоматичного робочого місця для роботи зі складом.
Програма повинна надавати користувачеві можливість:
ü Вводити новий товар, вказуючи наступні параметри
ü Найменування;
ü Кількість;
ü Ціну;
ü Дату надходження.
ü Здійснювати пошук товару за найменуванням і видавати його параметри.
ü Позначати вибулий товар, вказуючи дату видачі.
ü Виводити список наявного товару з можливістю сортування по будь-якому параметру.
ü Виводити список вибулого товару з можливістю сортування по будь-якому параметру.
ü Видавати загальну статистичну характеристику:
ü Загальна вартість наявного товару;
ü Кількість наявного товару;
ü Кількість вибулого товару.
ü Зберігати й відновлювати всю інформацію АРМ з диска.
Опис змінних.
ü basskl - основна запис з необхідними змінними це:
ü naim - найменування товару;
ü kol - кількість товару;
ü price - ціна товару;
ü kol_ p - кількість прийшов товару;
ü kol_ r - кількість товару який пішов;
ü date_ p - дата приходу товару;
ü date_ r - дата витрати товару.
ü f - file бази зладиться;
ü list - масив даних бази;
ü schet - лічильник;
ü curs - показник позиції;
ü stran - лічильник позиції курсору;
ü i - мінлива використання;
ü 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 відбувається запис файлу бази, закриття файлу.
Алгоритм програми.

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) <Len do Text: = 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 c 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 c 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 <6 then inc (curs) else curs: = 1;
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 <Schet) and (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 <Schet) then
begin inc (stran); Ekran end;
if ((curs <20) and (Schet> = 20))
or ((Schet <20) and (curs <Schet)) then inc (curs);
end;
# 101: begin {Видалити} {Ctrl + F8}
if Schet> 0 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 IOResult <> 0 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 seter <> 1 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 <1) or (res = 6);
Rewrite (f);
Sortirovka (1);
for i: = 0 to Schet-1 do Write (f, List [i]);
close (f);
end.
Додати в блог або на сайт

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

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


Схожі роботи:
Автоматизоване робоче місце
Автоматизоване робоче місце бухгалтера
Робоче місце оператора ЕОМ
Робоче місце інженера-програміста
Автоматизоване робоче місце менеджера
Робоче місце експериментатора і його організація
Автоматизоване робоче місце менеджера з реклами
Інтелектуальна техніка і робоче місце менеджера
Трудовий пост робоче місце і професія
© Усі права захищені
написати до нас