Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Алгоритм задачи и его описание





Для ручного ввода данных в таблицы rabochie.dbf,narjad1.dbf и narjad2.dbf используем программы:

1 vvod_rabochih.prg

2 narjad_1_storona.prg

3 narjad_2_storona.prg

После выполнения вышеперечисленных программ мы имеем 2 таблицы на основании которых можем рассчитать сдельную заработную плату. Для этого нужно найти: повременную зарплату и коэффициент распределения. Для нахождения первого выполняем программу rashot_povr_zp.prg и заносим получившийся результат в таблицу povr_zp.dbf. Чтобы найти коэффициент распределения выполним программу raschot_zp.prg, эта программа заполняет таблицу koef_raspr.prg. После выполнения этих 2х программ можно приступить к расчёту сдельной заработной платы. Для этого выполним программу sdek_zp.prg и иммено эта прграмма до конца заполнит таблицу povr_zp.dbf которая будет содержать результат, т.е. сдельную заработную плату. Затем выполняем программу печати ведомости и печатаем таблицу povr_zp.dbf в текстовый файл.

Программы и их описание:

Программы ввода:

1 vvod_rabochih.prg

2 narjad_1_storona.prg

3 narjad_2_storona.prg

Эти 3 программы имеют одинаковую структуру по этому я опишу 1 из них.

Vvod_rabochih

Текст:

CLOSE DATABASES

SET BELL OFF

SET TALK OFF

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'(выбор таблицы куда будут вноситься данные)

DIMENSION st(6) (определение массива)

STORE SPACE(20) to st(1)

STORE ' ' to st(2)

STORE SPACE(15) TO st(3) (определение переменных)

STORE ' ' TO st(5)

STORE ' ' TO st(4),st(6)

STORE ' ' TO z

DO WHILE z<>'*' (цикл с предусловием в этом цикле организовывается вво и контроль вводимых переменных)

@ 3,3 say ' фио ' get st(1)

READ

@ 4,3 say 'табельный номер ' get st(2)

READ

IF st(2)<'00' OR st(2)>'16'

DISPLAY 'Введен не правельный табельный номер'

DISPLAY 'введите номер от 1го до 15ти'

@4,3 say 'табельный номер' get st(2)

endif

read

@ 5,3 say 'должность ' get st(3)

READ

@ 6,3 say 'Разряд ' get st(4) function 'm 1,2,3,4,5'(эта функция позволяет выбрать нажатием клавишей пробел нужное значение из списка предложенных)

@ 7,3 say 'часовая тарифная ставка' get st(5)

READ

@ 8,3 say 'номер бригады' get st(6) function 'M 1,2,3'

READ (считывание введенной информации)

APPEND BLANK (добавление пустой строки в конец таблицы)

GATHER FROM st

STORE SPACE(20) to st(1)

STORE ' ' to st(2)

STORE SPACE(15) TO st(3)

STORE ' ' TO st(4)

STORE ' ' TO st(4),st(6)

@ 13,3 say 'Конец_ввода? * ' get z (контроль на конец ввода)

READ

IF z='*'

EXIT

ENDIF

ENDDO

BROWSE

PACK (удаление помеченных записей)

CLEAR

CLOSE DATABASES

Программы расчёта:

Программа расчёта повременной з/п raschot_povr_zp.prg:

CLOSE all

clear

SET BELL off

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad2.idx'

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.idx'(удаление индексных файлов)

 

 

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad2.dbf'

INDEX on tab_nomer TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad2.idx'

 

SELECT b

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'

INDEX on tab_nomer TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.idx' (индексирование таблицы)

SET RELATION TO tab_nomer INTO a (создание связи по табельному номеру между двумя таблицами)

SET SKIP TO a (разрешение перехода на новую строчку когда это необходимо в рабочей области а)

 

SELECT c

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.dbf'(определение рабочих областей)

SELECT c

zap

SELECT a

DO while.not.eof() (цикл заполнения таблицы)

SELECT c

APPEND BLANK

replace c.tab_nomer WITH a.tab_nomer, c.nomer_nar WITH a.nomer_nar, c.nomer_brig WITH b.nomer_brig, c.chasov_otr WITH a.chasov_otr, c.chas_zarp WITH b.chas_zarp, c.povr_zp WITH b.chas_zarp*a.chasov_otr (команда replace переносит данные из одного поля в другое (из правого в левое по отношению к слову with) также позволяет выполнять операции над значениями полей)

SELECT b

SKIP

ENDDO

 

Программа расчёта коэффициента распределения Raschot_zp.prg:

CLOSE all

CLEAR

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.idx'(удаление индексных файлов)

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.idx'

STORE 1 TO I

STORE 0 TO zp (определение переменных)

STORE SPACE(8) TO j

 

SELECT b (определение рабочих областей)

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad1.dbf'

INDEX on nomer_nar TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad1.idx' (индексирование файла)

 

SELECT c

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\koef_raspr.dbf'

SET RELATION TO nomer_nar INTO b (установка связи между таблицами)

SET SKIP TO b (разрешение перехода на новую строчку в области b)

 

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.dbf'

INDEX on nomer_nar TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.idx'

 

SELECT c

zap

 

 

SELECT a

DO while.not.eof() (цикл обработки таблицы)

SELECT a

IF i=VAL(a.nomer_nar) (контроль на смену номера наряда)

zp=zp+a.povr_zp (сумматор зароботной платы)

SELECT a

 

ELSE

SELECT a

STORE VAL(a.nomer_nar) TO i (смена номера наряда(для суммирования зп по др наряду))

SKIP -1 (переход на предыдущую строку таблицы для того чтобы скопировать данные в другую таблицу)

SELECT c

APPEND BLANK (создание пустой строки)

 

replace c.nomer_nar WITH a.nomer_nar, c.povr_cymma WITH zp (заполнение пустой строки)

STORE 0 TO zp (обнуление сумматора)

ENDIF

SELECT a

SKIP

IF EOF() (Контроль на конец файла)

SELECT a

SKIP -1

SELECT c

APPEND BLANK

replace c.nomer_nar WITH a.nomer_nar, c.povr_cymma WITH zp (заполнение последней строки таблицы области с)

exit

endif

ENDDO

SELECT c

GO top

SELECT c

DO WHILE.not.eof() (цикл расчота коэффициента распределения)

replace c.cymma WITH b.cymma, c.koef_raspr WITH c.cymma/c.povr_cymma

SKIP

ENDDO

clear

 

 

Программа расчёта сдельной заработной платы sdel_zp.prg:

CLOSE ALL

CLOSE all

CLEAR

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.idx'

 

 

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.dbf'

INDEX on nomer_nar TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.idx'

 

SELECT c

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\koef_raspr.dbf'

INDEX on nomer_nar TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\koef_raspr.idx'

SET RELATION TO nomer_nar INTO a

SET SKIP TO a

 

SELECT a

GO top

DO while.not.eof() (цикл в котором 2 поля 2х разных таблиц перемножаетются и результат записывается в одну из них)

SELECT a

replace a.sdel_zp with a.povr_zp*c.koef_raspr

SKIP

ENDDO

SELECT a

BROWSE

pack

 

 

Программа расчёта сдельной з/п и формирования ведомости podchoty.prg:

CLOSE ALL

CLEAR

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\paschot_povrem_zp.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\raschot_zp.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\sdel_zp.prg' (эти 3 функции выполняют все программы которые были описаны выше)

 

 

SET ALTERNATE TO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\vedom.txt'

SET ALTERNATE on (печать в текстовый файл)

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\povr_zp.dbf' (выбор таблицы)

?'------------------------Ведомость по зарплате--------------------------',

?'|tab N |N nar |Nom brg |Chas otr |Chas zp| Povr zp | Sdel zp |'

?'-----------------------------------------------------------------------' (шапка таблицы)

DO while.NOT.eof() (цыкл заполнения таблицы)

?'|',tab_nomer,'|',nomer_nar,' ','|',nomer_brig,' ','|',chasov_otr,' ','|',chas_zarp,' ','|',Povr_zp,' ','|',Sdel_zp,'|'

?'-----------------------------------------------------------------------'

SKIP

ENDDO

?'Всего',RECCOUNT() (вывод количества записей)

CLOSE DATABASES

SET ALTERNATE off (закрытие альтернативного файла)

CLOSE ALL

TYPE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\vedom.txt'

CLOSE ALL

 

Программа меню menu.prg:

CLEAR ALL

SET BELL off

SET TALK OFF

SET SYSMENU to

SET SYSMENU automatic (определение меню)

DEFINE PAD s OF _msysmenu PROMPT "Ввод" COLOR SCHEME 3

DEFINE PAD d OF _msysmenu PROMPT "Просмотр" COLOR SCHEME 3

DEFINE PAD p OF _msysmenu PROMPT "Отчетность" COLOR SCHEME 3

DEFINE PAD h OF _msysmenu PROMPT "Сервис" COLOR SCHEME 3

DEFINE PAD j OF _msysmenu PROMPT "Справка" COLOR SCHEME 3

DEFINE PAD e OF _msysmenu PROMPT "Выход" COLOR SCHEME 3

 

on PAD s OF _msysmenu activate POPUP ввод

on PAD d OF _msysmenu activate popup Просмотр

on PAD p OF _msysmenu activate popup Отчетность

on PAD h OF _msysmenu activate popup Сервис

on PAD j OF _msysmenu activate popup Справка

oN PAD e OF _msysmenu ACTIVATE POPUP Выход

 

DEFINE POPUP ввод MARGIN RELATIVE shadow COLOR SCHEME 3(создание подменю)

DEFINE BAR 1 OF ввод PROMPT "ввод в таблицу рабочие"

DEFINE BAR 2 OF ввод PROMPT "ввод в таблицу наряд лицевая сторона"

DEFINE BAR 3 OF ввод PROMPT "ввод в таблицу наряд оборотная сторона"

 

ON SELECTION BAR 1 OF ввод do 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\vvod_rabochih.prg' (функции выполняемые при нажатии кнопок подменю)

ON SELECTION BAR 2 Of ввод do 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad_1_storona.prg'

ON SELECTION BAR 3 Of ввод do 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad_2_storona.prg'

 

DEFINE POPUP Просмотр MARGIN RELATIVE shadow COLOR SCHEME 3

DEFINE BAR 1 OF Просмотр PROMPT "Данные о рабочих"

DEFINE BAR 2 OF Просмотр PROMPT "Наряд лицевая сторона"

DEFINE BAR 3 OF Просмотр PROMPT "Наряд оборотная сторона"

 

ON SELECTION BAR 1 Of Просмотр do proc1

ON SELECTION BAR 2 Of Просмотр do proc2

ON SELECTION BAR 3 Of Просмотр do proc3

 

DEFINE POPUP отчетность MARGIN RELATIVE shadow COLOR SCHEME 3

DEFINE BAR 1 OF отчетность PROMPT "Ведомость по зарплате"

DEFINE BAR 2 OF отчетность PROMPT "Формирование ведеомости"

 

ON SELECTION BAR 1 Of отчетность modify file 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\vedom.txt' noedit

ON SELECTION BAR 2 Of отчетность do 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\podchoty.prg'

 

DEFINE POPUP сервис MARGIN RELATIVE shadow COLOR SCHEME 3

DEFINE BAR 1 OF сервис PROMPT "Резервное копирование"

DEFINE BAR 2 OF сервис PROMPT "Востановление данных"

DEFINE BAR 3 OF сервис PROMPT "Очистка таблиц"

 

ON SELECTION BAR 1 Of сервис do proc4

ON SELECTION BAR 2 Of сервис do proc6

ON SELECTION BAR 3 OF сервис do proc7

 

DEFINE POPUP справка MARGIN RELATIVE shadow COLOR SCHEME 3

DEFINE BAR 1 OF справка PROMPT "Вызов справки"

 

ON SELECTION BAR 1 Of справка modify file 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\spravka.txt' noedit (открытие файла справки)

 

DEFINE POPUP выход MARGIN RELATIVE shadow COLOR SCHEME 3

DEFINE BAR 1 OF выход PROMPT "выход в vfp9"

DEFINE BAR 2 OF выход PROMPT "выход в Windows"

ON SELECTION BAR 1 OF выход do proc5

ON SELECTION BAR 2 OF выход quit

 

PROCEDURE proc1 (процедура просмотра таблицы без редактирования)

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'

BROWSE noedit

CLOSE DATABASES

RETURN

 

PROCEDURE proc2

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad1.dbf'

BROWSE noedit

CLOSE DATABASES

RETURN

 

PROCEDURE proc3

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad2.dbf'

BROWSE noedit

CLOSE DATABASES

RETURN

 

PROCEDURE proc4 (резервное копирование программы будут описаны ниже)

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_copy1.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_copy2.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_copy3.prg'

CLOSE DATABASES

return

 

PROCEDURE proc5 (выход в фокспро)

DEACTIVATE MENU (деактивация меню)

DEACTIVATE POPUP

SET SYSMENU TO default (установка стандартного меню)

RETURN

 

PROCEDURE proc6 (резервное восстановление)

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_vost1.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_vost2.prg'

DO 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\reserv_vost3.prg'

CLOSE DATABASES

RETURN

 

PROCEDURE proc7 (очистка таблиц с исходными данными)

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'

ZAP

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad1.dbf'

ZAP

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\narjad2.dbf'

ZAP

CLOSE DATABASES

RETURN

 

Программы резервного восстановления:

Reserve_vost1.prg, Reserve_vost2.prg, Reserve_vost2.prg однообразны по этому я опишу 1 из них:

CLOSE ALL

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\reserv\rabochie.idx'(удаление индексного файла)

 

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\reserv\rabochie.dbf'

INDEX on tab_nomer TO 'Z:\programm\Microsoft_Visual_FoxPro 9\reserv\rabochie.idx'(определение рабой области и индексирование таблицы)

 

SELECT b

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'

 

SELECT b (очистка таблицы которую восстанавливаем)

ZAP

 

SELECT a

 

DO WHILE.not.eof()

SELECT b

APPEND BLANK (создаем пустую строчку в восстанавливаемой таблице)

replace b.fio WITH a.fio, b.tab_nomer WITH a.tab_nomer, b.dolznost WITH a.dolznost, b.razr WITH a.razr, b.chas_zarp WITH a.chas_zarp, b.nomer_brig WITH a.nomer_brig (заполнение таблицы)

SELECT a

SKIP

ENDDO

SELECT b

browse

 

 

Программы резервного копирования:

Reserve_copy1.prg, Reserve_copy2.prg, Reserve_copy3.prg также как и программы восстановления однотипны по это опишу 1 из них:

CLOSE all

DELETE FILE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.idx'(удаление индексного файла)

SELECT a

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\bd_prakt\rabochie.dbf'

INDEX on tab_nomer TO rabochie.idx (определение рабочей области и индексирование таблицы)

SELECT a

COPY STRUCTURE TO 'Z:\programm\Microsoft_Visual_FoxPro 9\reserv\rabochie.dbf'(копирование структуры таблицы в рабочей области а по указанному пути)

SELECT b

USE 'Z:\programm\Microsoft_Visual_FoxPro 9\reserv\rabochie.dbf'(определение 2й рабочей области)

SELECT b

zap

 

SELECT a

GO top

DO while.not.eof() (цикл копирования данных из области а в область b)

SELECT b

APPEND BLANK

replace b.fio WITH a.fio, b.tab_nomer WITH a.tab_nomer, b.razr WITH a.razr, b.chas_zarp WITH a.chas_zarp, b.nomer_brig WITH a.nomer_brig

 

SELECT a

skip

 

ENDDO

SELECT b

BROWSE noedit

 

Результатом работы программ является ведомость:

 

 

Выводы

Date: 2015-07-27; view: 320; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию