АРМ бухгалтера учебного заведения по начислению зарплаты

Описание программного обеспечения и языка программирования Delphi. Разработка логической структуры реляционной базы данных. Функциональные возможности приложения. Обоснование экономической эффективности автоматизированного рабочего места бухгалтера.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 25.05.2015
Размер файла 395,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Разработка АРМ бухгалтера строилась на основе использования таких средств как SQL-сервер InterBase для создания базы данных и объектно-ориентированная среда программирования Borland Delphi для создания приложения.

Список использованной литературы

1) Аладьев В.З., Хунт Ю.Я., Шишаков М.Л.. Основы информатики. Учебное пособие. - М.: Информационно-издательский дом «Филинъ», 1999

2) Галисеев Г.В., Компоненты в Delphi 7. Профессиональная работа.Ж - М.: Издательский дом «Вильямс», 2004

3) Культин Н.Б., Основы программирования в Delphi 2006 для Microsoft .NET Framework. - СПб.: БХВ-Петебург, 2006

4) Козырев А.А. Информационные технологии в экономике и управлении: Учебник. - СПб.: Изд-во Михайлова В.А., 2000

5) Фаронов В.В., Программирование баз данных в Delphi 7. Учебный курс. - СПб.: Питер, 2005

6) Фаронов В.В. Delphi 4. Учебный курс. - М.: «Нолидж», 1999. - 464

7) Фаронов В.В., Turbo Pascal 7.0. Начальный курс: учебное пособие. - М.: КНОРУС, 2005

8) Фаронов В.В., Delphi 2005. Язык, среда, разработка приложений. - СПБ.: Питер, 2005

Приложение 1

Разработка информационной базы данных

1) создаём базу данных в SQL-сервере InterBase. Сначала создаём три таблицы, преподаватели, месяцы, и дочерняя таблица месяцы/преподаватели:

CREATE TABLE "PREPODY"

("NOM_PREP"INTEGER NOT NULL,

"FIO"VARCHAR(50) CHARACTER SET WIN1251,

"STAJ"NUMERIC(9, 0),

"KATEGORIYA"CHAR(3) CHARACTER SET WIN1251,

"EKOL"DOUBLE PRECISION,

PRIMARY KEY ("NOM_PREP"));

CREATE TABLE "MESYACI"

("NOM_MES"INTEGER NOT NULL,

"NAZ"VARCHAR(10) CHARACTER SET WIN1251,

"KOL_RAB_DN"INTEGER,

PRIMARY KEY ("NOM_MES"));

CREATE TABLE "MES_PREP"

("NOM"INTEGER NOT NULL,

"NOM_PREP"INTEGER NOT NULL,

"NOM_MES"INTEGER NOT NULL,

"KOL_CH_M"INTEGER,

"STAVKA_CH"NUMERIC(9, 0),

"PODOH"DOUBLE PRECISION,

PRIMARY KEY ("NOM"));

ALTER TABLE "MES_PREP" ADD FOREIGN KEY ("NOM_MES") REFERENCES MESYACI ("NOM_MES");

ALTER TABLE "MES_PREP" ADD FOREIGN KEY ("NOM_PREP") REFERENCES PREPODY ("NOM_PREP");

2) создаём триггеры на обновление, удаление и добавление. На дочернею таблицу делаем только один триггер на добавление:

CREATE TRIGGER "DOBA" FOR "PREPODY"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.nom_prep=gen_id(dob, 1);

end

CREATE TRIGGER "OBN" FOR "PREPODY"

ACTIVE BEFORE UPDATE POSITION 0

AS

BEGIN

IF (OLD.nom_prep <> NEW.nom_prep)

THEN UPDATE mes_prep

SET nom_prep = NEW.nom_prep

WHERE nom_prep=OLD.nom_prep;

END

CREATE TRIGGER "UD" FOR "PREPODY"

ACTIVE AFTER DELETE POSITION 0

AS

BEGIN

DELETE FROM mes_prep

WHERE mes_prep.nom_prep = prepody.nom_prep;

END

CREATE TRIGGER "DOBAVLEN" FOR "MESYACI"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.nom_mes=gen_id(dobi, 1);

end

CREATE TRIGGER "OBNOV" FOR "MESYACI"

ACTIVE BEFORE UPDATE POSITION 0

AS

BEGIN

IF (OLD.nom_mes <> NEW.nom_mes)

THEN UPDATE mes_prep

SET nom_mes = NEW.nom_mes

WHERE nom_mes=OLD.nom_mes;

END

CREATE TRIGGER "UDAL" FOR "MESYACI"

ACTIVE AFTER DELETE POSITION 0

AS

BEGIN

DELETE FROM mes_prep

WHERE mes_prep.nom_mes = mesyaci.nom_mes;

END

CREATE TRIGGER "DOBAVLENI" FOR "MES_PREP"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.nom=gen_id(dobb, 1);

end

3 Делаем на все таблицы генераторы:

CREATE GENERATOR "DOB"

SET GENERATOR DOB to 1

CREATE GENERATOR "DOBB";

SET GENERATOR DOBB to 1

CREATE GENERATOR "DOBI";

SET GENERATOR DOBI to 1

Приложение 2

Разработка приложения

a) Процедуры, в результате действия которых, заполняется форма необходимыми компонентами:

procedure Tvvod.RadioGroup1Click(Sender: TObject);

begin

case radiogroup1.ItemIndex of

0:begin

ComboBox1.Visible:=False;

BitBtn2.Visible:=False;

Label2.Visible:=False;

Label3.Visible:=false;

DBNavigator1.Visible:=false;

DBGrid1.Visible:=false;

Image1.Visible:=false;

StringGrid1.Visible:=true;

Label1.Visible:=true;

BitBtn3.Visible:=true;

end;

1:begin

Label3.Visible:=false;

StringGrid1.Visible:=False;

Label1.Visible:=false;

BitBtn3.Visible:=false;

DBNavigator1.Visible:=false;

DBGrid1.Visible:=false;

Image1.Visible:=false;

ComboBox1.Visible:=true;

BitBtn2.Visible:=true;

Label2.Visible:=true;

end;

2:begin

ComboBox1.Visible:=False;

BitBtn2.Visible:=False;

Label2.Visible:=False;

Label1.Visible:=false;

Image1.Visible:=false;

DBGrid1.Visible:=true;

DBNavigator1.Visible:=true;

StringGrid1.Visible:=false;

Label3.Visible:=true;

BitBtn3.Visible:=false;

end;

end;

end;

procedure Tvvod.FormActivate(Sender: TObject);

var

i,j:integer;

begin

ComboBox1.Visible:=False;

BitBtn2.Visible:=False;

Label2.Visible:=False;

Label3.Visible:=false;

DBNavigator1.Visible:=false;

DBGrid1.Visible:=false;

StringGrid1.Visible:=False;

Label1.Visible:=False;

BitBtn3.Visible:=False;

Image1.Visible:=true;

stringgrid1.Cells[1,0]:='Ф.И.О. преподавателя';

stringgrid1.Cells[2,0]:='Стаж';

stringgrid1.Cells[3,0]:='Категория';

stringgrid1.Cells[4,0]:='Экология';

for i:=1 to 10 do

stringgrid1.Cells[0,i]:=inttostr(i);

combobox1.Items.Clear;

dm.Prepody.First;

while not dm.Prepody.Eof do

begin

combobox1.Items.Add(dm.PrepodyFIO.Value);

dm.Prepody.Next;

end;

end;

b) Процедура сохранения новых данных о преподавателе:

procedure Tvvod.BitBtn3Click(Sender: TObject);

var

i,j:integer;

begin

i:=1;

while StringGrid1.Cells[1,i]<>'' do

begin

dm.Prepody.Append;

dm.PrepodyNOM_PREP.Value:=0;

dm.PrepodyFIO.Value:=StringGrid1.Cells[1,i];

dm.PrepodySTAJ.Value:=strtoint(StringGrid1.Cells[2,i]);

dm.PrepodyKATEGORIYA.Value:=StringGrid1.Cells[3,i];

dm.PrepodyEKOL.Value:=strtoint(StringGrid1.Cells[4,i]);

dm.Prepody.Post;

dm.Prepody.Refresh;

dm.Prepody.Last;

for i:=1 to 10 do

begin

dm.mes_prep.Append;

dm.Mes_prepNOM.Value:=0;

dm.Mes_prepNOM_MES.Value:=i;

dm.Mes_prepNOM_PREP.Value:=dm.PrepodyNOM_PREP.Value;

dm.Mes_prep.Post;

dm.Mes_prep.Refresh;

end;

i:=i+1;

end;

for i:=1 to 4 do

for j:=1 to 10 do

stringgrid1.Cells[i,j]:='';

combobox1.Items.Clear;

dm.Prepody.First;

while not dm.Prepody.Eof do

begin

combobox1.Items.Add(dm.PrepodyFIO.Value);

dm.Prepody.Next;

end;

end;

c) Процедура добавления записи в ComboBox:

procedure Tvvod.ComboBox1Change(Sender: TObject);

begin

dm.Prepody.First;

while ComboBox1.Text<>dm.PrepodyFIO.Value do

dm.Prepody.Next;

end;

d) Процедура удаления записи (преподавателя) из базы данных:

procedure Tvvod.BitBtn2Click(Sender: TObject);

begin

dm.Prepody.Delete;

combobox1.Items.Clear;

dm.Prepody.First;

while not dm.Prepody.Eof do

begin

combobox1.Items.Add(dm.PrepodyFIO.Value);

dm.Prepody.Next;

end;

ComboBox1.Text:='';

end;

e) Процедура ввода количества отработанных часов, предварительно заполнив компонент ComboBox, для выбора преподавателя:

procedure TOtrab_ch.ComboBox1Change(Sender: TObject);

begin

dm.Prepody.First;

while ComboBox1.Text<>dm.PrepodyFIO.Value do

dm.Prepody.Next;

end;

procedure TOtrab_ch.FormActivate(Sender: TObject);

begin

combobox1.Items.Clear;

dm.Prepody.First;

while not dm.Prepody.Eof do

begin

combobox1.Items.Add(dm.PrepodyFIO.Value);

dm.Prepody.Next;

end;

end;

end.

f) Процедуры создания вычисляемых полей:

procedure TDM.Mes_prepCalcFields(DataSet: TDataSet);

begin

dm.Mes_prepnach_otrab.Value:=dm.Mes_prepSTAVKA_CH.Value*dm.Mes_prepKOL_CH_M.Value;

dm.Mes_prepitogo_n.Value:=dm.Mes_prepnach_otrab.Value+dm.PrepodyEKOL.Value;

dm.Mes_preppension.Value:=dm.Mes_prepitogo_n.Value*10/100;

dm.Mes_prepitogo_v.Value:=dm.Mes_prepPODOH.Value+dm.Mes_preppension.Value;

dm.Mes_prepna_ruki.Value:=dm.Mes_prepitogo_n.Value-dm.Mes_prepitogo_v.Value;

end;

procedure TDM.mes_prCalcFields(DataSet: TDataSet);

begin dm.mes_prnach_otrab.Value:=dm.Mes_prSTAVKA_CH.Value*dm.Mes_prKOL_CH_M.Value; dm.Mes_pritogo_n.Value:= dm.Mes_prnach_otrab.Value+dm.PrepodyEKOL.Value;

dm.Mes_prpension.Value:=dm.Mes_pritogo_n.Value*10/100; dm.Mes_pritogo_v.Value:=dm.Mes_prPODOH.Value+dm.Mes_prpension.Value;

dm.Mes_prna_ruki.Value:=dm.Mes_pritogo_n.Value-dm.mes_pritogo_v.Value;

end;

g) Процедура расчёта подоходного налога и расчёта ставки за час:

procedure Tnachis.FormActivate(Sender: TObject);

begin

dm.Mes_pr.First;

while not dm.Mes_pr.Eof do

begin

dm.Mes_pr.Edit;

if dm.mes_pritogo_n.Value<=12000

then dm.Mes_prPODOH.Value:=dm.mes_pritogo_n.Value*7/100

else

if (dm.mes_pritogo_n.Value>12000) and (dm.mes_pritogo_n.Value<=20000) then

dm.Mes_prPODOH.Value:=dm.mes_pritogo_n.Value*9/100

else

if (dm.mes_pritogo_n.Value>20000) and (dm.mes_pritogo_n.Value<=30000) then

dm.Mes_prPODOH.Value:=dm.mes_pritogo_n.Value*11/100

else dm.Mes_prPODOH.Value:=dm.mes_pritogo_n.Value*13/100;

if (dm.PrepodySTAJ.Value<=5) and (dm.PrepodyKATEGORIYA.Value='II')

then dm.mes_prSTAVKA_CH.Value:=150

else

if (dm.PrepodySTAJ.Value>5) and (dm.PrepodySTAJ.Value<=10) and (dm.PrepodyKATEGORIYA.Value='II')

then dm.mes_prSTAVKA_CH.Value:=160

else

if (dm.PrepodySTAJ.Value>10) and (dm.PrepodyKATEGORIYA.Value='II')

then dm.mes_prSTAVKA_CH.Value:=170

else

if (dm.PrepodySTAJ.Value<=5) and (dm.PrepodyKATEGORIYA.Value='I')

then dm.mes_prSTAVKA_CH.Value:=170 else

if (dm.PrepodySTAJ.Value>5) and (dm.PrepodySTAJ.Value<=10) and (dm.PrepodyKATEGORIYA.Value='I')

then dm.mes_prSTAVKA_CH.Value:=180 else

if (dm.PrepodySTAJ.Value>10) and (dm.PrepodyKATEGORIYA.Value='I')

then dm.mes_prSTAVKA_CH.Value:=200 else

if (dm.PrepodySTAJ.Value<=5) and (dm.PrepodyKATEGORIYA.Value='в')

then dm.mes_prSTAVKA_CH.Value:=200

else

if (dm.PrepodySTAJ.Value>5) and (dm.PrepodySTAJ.Value<=10) and (dm.PrepodyKATEGORIYA.Value='в')

then dm.mes_prSTAVKA_CH.Value:=220

else

if (dm.PrepodySTAJ.Value>10) and (dm.PrepodyKATEGORIYA.Value='в')

then dm.mes_prSTAVKA_CH.Value:=250;

dm.Mes_pr.Post;

dm.Mes_pr.Refresh;

dm.Mes_pr.Next;

end;

dm.Mes_pr.Close;

dm.Mes_pr.Open;

end;

end.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.