Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Обеспечение информационной безопасности жизнедеятельности программного продукта
Для обеспечения информационной безопасности в данном проекте было применено несколько программных решений. Корректное введение информации обеспечивается стандартными средствами Delphi при помощи контроля соответствия типов полей и типа вводимых данных. При несоответствии введенного значения с допустимым значением на экран выводится текстовое сообщение, предупреждающее об ошибке ввода. От программного сбоя программа защищена при помощи стандартных средств Delphi. В папке с программой автоматически создаются резервные файлы редактора (файлы с расширением ~PA и ~DP), которые содержат информацию перед ее сохранением. Для обеспечения безопасности доступа к базам данных в утилите Database Desktop был задан пароль на вход (рис.3.41) Рис. 3.41 «Пароль на вход» Угрозы потери работоспособности не являются опасными для данного проекта, так как программа не имеет сложных настроек, а поэтому может быть легко заменена копией оригинального образца. Заключение
На начальном этапе проектирования была проанализирована деятельность муниципального образовательного учреждения Муниципального образовательного учреждения дополнительного образования детей. Результатом этого анализа стало выявление процесса распределения надтарифного фонда, нуждающегося в автоматизации, который непосредственно влияет на качество работы учреждения. Данное направление обладает спецификой, связанной с необходимостью оценки деятельности каждого работника учреждения. Рутинная работа распределения надтарифного фонда неэффективна не только в плане производительности труда, но и в отсутствии возможности наглядного анализа деятельности сотрудников в динамике. Дипломный проект был призван решить эту проблему. Таким образом, проектирование было направлено на решение сформулированных в ходе анализа предметной области задач: ведение учета сотрудников учреждения и показателей их деятельности согласно занимаемой должности, анализ эффективности работы сотрудников, расчет коэффициента трудового участия сотрудников, распределение премиального фонда учреждения по отделам, расчет премий сотрудникам, формирование отчетов о начислении премий сотрудникам учреждения. В ходе проектирования были сформулированы решения относительно экранных форм, отчетов и структуры БД. Также была описана входная и выходная информация будущего программного средства. Экспериментальная часть дипломного проектирования посвящена обеспечению информационной безопасности создаваемого программного средства и руководству пользователя. Проектное решение, представленное в выпускной квалификационной работе, позволяет автоматизировать комплекс задач начисления надтарифного фонда муниципального образовательного учреждения дополнительного образования детей. Возможным развитием комплекса задач является разработка сетевого варианта получения и передачи данных, а так же импорт и экспорт данных в другие программы. Список использованной литературы
1. Прикладная информатика в экономике: Учеб. Пособие / В.Н.Бугорский, А.А.Емельянов, Ю.М.Порховник и др.; Под ред. д-ра экон. наук, проф. А.И.Михайлушкина. — СПб.: СПбГИЭУ, 2005. — 412 с. 2. Методические указания по дипломному проектированию/ д-р техн. наук, проф. И.А. Брусакова, д-р экон. наук, проф. Р.В. Соколов, канд. экон. наук, проф. В.Н. Бугорский, канд. техн. наук, проф. В.И. Фомин, канд. экон. наук, проф. А.И. Дашевский, канд. экон. наук, доц. И.В. Егорова - СПб.: СПбГИЭУ, 2009. — 28 с. 3. ГОСТ Р ИСО 9127-94 - «Документация пользователя и информация на упаковке для потребительских программных пакетов» 4. ГОСТ 19.701-90 – «Схемы алгоритмов, программ, данных и систем» 5. ГОСТ 7.32-2003 – «Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления» 6. Публичный отчет директора МОУ ДОД «ЦИТ» г. Сертолово 7. Трудовое право часть 2: Электронное пособие / Вдовина Ю.Г.; Под ред. Дубок С.А. 8. Delphi 7. Наиболее полное руководство / А. Хомоненко, В. Гофман, Е. Мещеряков, В. Никифоров, 2008. — 1216 с. 9. Сайт МОУ ДОД «ЦИТ» г. Сертолово http: //cit-sertolovo.edu.ru
Приложение 1 (Экранные формы)
1. Распределение надтарифного фонда
2. Редактор
3. Анализ
Приложение 2 (Фрагмент программного кода)
Модуль «Отдел»
unit Otdel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, Buttons, StdCtrls, fcButton, fcImgBtn, fcShapeBtn, fcClearPanel, fcButtonGroup, RzPanel, fcpanel, DB, DBTables, dbcgrids, Mask, DbAGrids; type TForm2 = class(TForm) SpeedButton9: TSpeedButton; fcGroupBox2: TfcGroupBox; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; fcGroupBox1: TfcGroupBox; DBGrid2: TDBGrid; DBNavigator2: TDBNavigator; Pokaz1: TQuery; DataSource1Pokaz: TDataSource; DataSource2Doljn1: TDataSource; Doljn1: TQuery; Otdel1: TQuery; DataSource3Otd1: TDataSource; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label6: TLabel; Label7: TLabel; Label4: TLabel; Label5: TLabel; NTF: TQuery; DataSource1: TDataSource; fcGroupBox3: TfcGroupBox; DBNavigator4: TDBNavigator; DBEdit1: TDBEdit; fcGroupBox4: TfcGroupBox; DbAltGrid2: TDbAltGrid; DBNavigator3: TDBNavigator; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; procedure FormActivate(Sender: TObject); procedure SpeedButton9Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DataSource2Doljn1DataChange(Sender: TObject; Field: TField); procedure DataSource3Otd1DataChange(Sender: TObject; Field: TField); procedure Doljn1BeforePost(DataSet: TDataSet); procedure Pokaz1BeforePost(DataSet: TDataSet); procedure Doljn1BeforeDelete(DataSet: TDataSet); procedure Pokaz1BeforeDelete(DataSet: TDataSet); procedure Pokaz1AfterPost(DataSet: TDataSet); procedure Doljn1AfterPost(DataSet: TDataSet); procedure Doljn1BeforeEdit(DataSet: TDataSet); procedure Otdel1BeforeDelete(DataSet: TDataSet); procedure Pokaz1BeforeEdit(DataSet: TDataSet); private { Private declarations } public { Public declarations } end;
var Form2: TForm2; sd, sp: string; implementation
uses Main;
{$R *.dfm} procedure TForm2.FormActivate(Sender: TObject); begin Otdel1.Active: =false; Otdel1.SQL.Clear; Otdel1.SQL.Add('select * from db\otdel.dbf '); Otdel1.Active: =true;
Doljn1.Active: =false; Doljn1.SQL.Clear; Doljn1.SQL.Add('select * from db\doljn.dbf where otdel=: otdel '); Doljn1.Active: =true;
Pokaz1.Active: =false; Pokaz1.SQL.Clear; Pokaz1.SQL.Add('select * from db\pokaz.dbf where doljnosti=: doljnosti'); Pokaz1.Active: =true;
NTF.Active: =false; NTF.SQL.Clear; NTF.SQL.Add('select * from db\NTF.dbf'); NTF.Active: =true; end;
procedure TForm2.SpeedButton9Click(Sender: TObject); begin Close; end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); var n: integer; begin Otdel1.Active: =false; Doljn1.Active: =false; Pokaz1.Active: =false; NTF.Active: =false;
Form1.Otdel.Open; Form1.Doljnosti.Open; Form1.fam.Open; end;
procedure TForm2.DataSource2Doljn1DataChange(Sender: TObject; Field: TField); begin
Pokaz1.Active: =false; Pokaz1.SQL.Clear; Pokaz1.SQL.Add('select * from db\pokaz.dbf where (doljnosti=: doljnosti) and (otdel=: otdel)'); Pokaz1.Active: =true; end;
procedure TForm2.DataSource3Otd1DataChange(Sender: TObject; Field: TField); begin Doljn1.Active: =false; Doljn1.SQL.Clear; Doljn1.SQL.Add('select * from db\doljn.dbf where otdel=: otdel '); Doljn1.Active: =true; end;
procedure TForm2.Doljn1BeforePost(DataSet: TDataSet); begin
//При добавлении записи сохраняем имя отдела которому добавляем должность
Doljn1.Edit; Doljn1.FieldByName('otdel').asstring: =otdel1.FieldByName('otdel').asstring; end;
procedure TForm2.Pokaz1BeforePost(DataSet: TDataSet); begin
//При добавлении записи сохраняем имя отдела, и должности которому добавляем показатель
if Doljn1.RecordCount> 0 then begin Pokaz1.Edit; Pokaz1.FieldByName('otdel').asstring: =Doljn1.FieldByName('otdel').asstring; Pokaz1.FieldByName('doljnosti').asstring: =Doljn1.FieldByName('doljnosti').asstring; //Сохраняем содержимое memo поля в строковое поле pokaz_str Pokaz1.FieldByName('pokaz_str').asstring: =Pokaz1.FieldByName('namepokaz').asstring; Pokaz1.FieldByName('Max_ball').asstring: =Pokaz1.FieldByName('Max_Ball').asstring; end;
end;
procedure TForm2.Doljn1BeforeDelete(DataSet: TDataSet); var i: integer; R: Word; // переменная, в которой хранится результат Begin
//удаляем все записи всех таблиц содержащие удаляемую должность
R: =MessageDLG('Удалить записи из всех таблиц содержащие выбранную должность? ', mtConfirmation, [mbYes, mbNo], 0); if R=mrYes then begin // если нажата кнопка Yes
//удаляем записи в таблице fam Form1.fam.Active: =false; Form1.fam.SQL.Clear; Form1.fam.SQL.Add('select * from db\fam.dbf where (otdel=" '+doljn1.fieldByname('otdel').AsString+'" )'); Form1.fam.SQL.Add(' and (doljnosti=" '+doljn1.fieldByname('doljnosti').AsString+'" )'); Form1.fam.Active: =true; for i: =0 to Form1.fam.RecordCount-1 do begin Form1.fam.Delete; Form1.fam.Next; end;
//удаляем записи в таблице fam_pokaz
Form1.fam_pokaz.Active: =false; Form1.fam_pokaz.SQL.Clear; Form1.fam_pokaz.SQL.Add('select * from db\fam_pokaz.dbf where (otdel=" '+doljn1.fieldByname('otdel').AsString+'" )'); Form1.fam_pokaz.SQL.Add(' and (doljnosti=" '+doljn1.fieldByname('doljnosti').AsString+'" )'); Form1.fam_pokaz.Active: =true; for i: =0 to Form1.fam_pokaz.RecordCount-1 do begin Form1.fam_pokaz.Delete; Form1.fam_pokaz.Next; end;
//удаляем записи в таблице pokaz
pokaz1.Active: =false; pokaz1.SQL.Clear; pokaz1.SQL.Add('select * from db\pokaz.dbf where (otdel=" '+doljn1.fieldByname('otdel').AsString+'" )'); pokaz1.SQL.Add(' and (doljnosti=" '+doljn1.fieldByname('doljnosti').AsString+'" )'); pokaz1.Active: =true; for i: =0 to pokaz1.RecordCount-1 do begin pokaz1.Delete; pokaz1.Next; end; end; if R=mrNo then Abort; // если нажата кнопка No end;
procedure TForm2.Pokaz1BeforeDelete(DataSet: TDataSet); var i: integer; R: Word; // переменная, в которой хранится результат m: boolean; begin
//удаляем все записи всех таблиц содержащие удаляемую должность
R: =MessageDLG('Удалить записи из всех таблиц содержащие выбранную должность? ', mtConfirmation, [mbYes, mbNo], 0); if R=mrYes then begin // если нажата кнопка Yes
//удаляем записи в таблице fam_pokaz Form1.fam_pokaz.Active: =false; Form1.fam_pokaz.SQL.Clear; Form1.fam_pokaz.SQL.Add('select * from db\fam_pokaz.dbf where (otdel=" '+pokaz1.fieldByname('otdel').AsString+'" )'); Form1.fam_pokaz.SQL.Add(' and (doljnosti=" '+pokaz1.fieldByname('doljnosti').AsString+'" )'); Form1.fam_pokaz.SQL.Add(' and (pokaz_str=" '+pokaz1.fieldByname('pokaz_str').AsString+'" )'); Form1.fam_pokaz.Active: =true; for i: =0 to Form1.fam_pokaz.RecordCount-1 do begin Form1.fam_pokaz.Delete; Form1.fam_pokaz.Next; end; end;
if R=mrNo then Abort; // если нажата кнопка No end;
procedure TForm2.Pokaz1AfterPost(DataSet: TDataSet); var i: integer; begin
//После сохранения исправления записи с данной должностью, изменяем содержимое всех таблиц по полю namepokaz
Form1.Fam_pokaz.Close; Form1.fam_pokaz.SQL.Clear; Form1.fam_pokaz.SQL.Add('select * from db\fam_pokaz.dbf where (pokaz_str = " '+sp+'" )'); Form1.fam_pokaz.SQL.Add('and (otdel = " '+pokaz1.fieldByname('otdel').AsString+'" )'); Form1.fam_pokaz.SQL.Add('and (doljnosti = " '+pokaz1.fieldByname('doljnosti').AsString+'" )'); //Form1.fam_pokaz.SQL.Add('and (doljnosti = " '+pokaz1.fieldByname('Max_ball').AsString+'" )'); Form1.fam_pokaz.Active: =true;
for i: =0 to Form1.fam_pokaz.RecordCount-1 do begin Form1.fam_pokaz.Edit; Form1.fam_pokaz.FieldByName('namepokaz').asstring: =pokaz1.fieldByname('namepokaz').AsString; Form1.fam_pokaz.FieldByName('pokaz_str').asstring: =pokaz1.fieldByname('pokaz_str').AsString; Form1.fam_pokaz.Post; Form1.fam_pokaz.Next; end; Pokaz1.Refresh; end;
procedure TForm2.Doljn1AfterPost(DataSet: TDataSet); var i: integer; begin
//После сохранения исправления записи с данной должностью, изменяем содержимое всех таблиц по полю doljnosti
Form1.Fam_pokaz.Close; Form1.fam_pokaz.SQL.Clear; Form1.fam_pokaz.SQL.Add('select * from db\fam_pokaz.dbf where (doljnosti = " '+sd+'" )'); Form1.fam_pokaz.SQL.Add('and (otdel = " '+doljn1.fieldByname('otdel').AsString+'" )'); Form1.fam_pokaz.Active: =true;
for i: =0 to Form1.fam_pokaz.RecordCount-1 do begin Form1.fam_pokaz.Edit; Form1.fam_pokaz.FieldByName('doljnosti').asstring: =doljn1.fieldByname('doljnosti').AsString; Form1.fam_pokaz.Post; Form1.fam_pokaz.Next; end;
Form1.fam.Close; Form1.fam.SQL.Clear; // where namepokaz = " " Form1.fam.SQL.Add('select * from db\fam.dbf where doljnosti = " '+sd+'" '); Form1.fam.SQL.Add('and (otdel = " '+doljn1.fieldByname('otdel').AsString+'" )'); Form1.fam.Active: =true;
for i: =0 to Form1.fam.RecordCount-1 do begin Form1.fam.Edit; Form1.fam.FieldByName('doljnosti').asstring: =doljn1.fieldByname('doljnosti').AsString; Form1.fam.Post; Form1.fam.Next; end;
pokaz1.Close; pokaz1.SQL.Clear; // where namepokaz = " " pokaz1.SQL.Add('select * from db\pokaz.dbf where doljnosti = " '+sd+'" '); pokaz1.SQL.Add('and (otdel = " '+doljn1.fieldByname('otdel').AsString+'" )'); pokaz1.Active: =true;
for i: =0 to pokaz1.RecordCount-1 do begin pokaz1.Edit; pokaz1.FieldByName('doljnosti').asstring: =doljn1.fieldByname('doljnosti').AsString; pokaz1.Post; pokaz1.Next; end; end; procedure TForm2.Doljn1BeforeEdit(DataSet: TDataSet); begin
//Сохраняем в переменную sd должность до ее изменения
sd: =doljn1.FieldByname('doljnosti').asstring; end;
procedure TForm2.Otdel1BeforeDelete(DataSet: TDataSet); var i: integer; R: Word; // переменная, в которой хранится результат begin Doljn1.First; R: =MessageDLG('Удалить записи из всех таблиц содержащие выбранный отдел? ', mtConfirmation, [mbYes, mbNo], 0); if R=mrYes then begin // если нажата кнопка Yes
//удаляем записи в таблице otdel
for i: =0 to Doljn1.RecordCount-1 do begin Doljn1.Delete; Doljn1.Next; end;
//удаляем записи в таблице fam
Form1.fam.Active: =false; Form1.fam.SQL.Clear; Form1.fam.SQL.Add('select * from db\fam.dbf where otdel=" '+otdel1.fieldByname('otdel').AsString+'" '); Form1.fam.Active: =true; for i: =0 to Form1.fam.RecordCount-1 do begin Form1.fam.Delete; Form1.fam.Next; end;
//удаляем записи в таблице fam_pokaz
Form1.fam_pokaz.Active: =false; Form1.fam_pokaz.SQL.Clear; Form1.fam_pokaz.SQL.Add('select * from db\fam_pokaz.dbf where otdel=" '+otdel1.fieldByname('otdel').AsString+'" '); Form1.fam_pokaz.Active: =true; for i: =0 to Form1.fam_pokaz.RecordCount-1 do begin Form1.fam_pokaz.Delete; Form1.fam_pokaz.Next; end;
//удаляем записи в таблице pokaz
pokaz1.Active: =false; pokaz1.SQL.Clear; pokaz1.SQL.Add('select * from db\pokaz.dbf where otdel=" '+otdel1.fieldByname('otdel').AsString+'" '); pokaz1.Active: =true; for i: =0 to pokaz1.RecordCount-1 do begin pokaz1.Delete; pokaz1.Next; end;
end; if R=mrNo then // если нажата кнопка No Abort; end;
procedure TForm2.Pokaz1BeforeEdit(DataSet: TDataSet); begin
//Сохраняем в переменную sp должность до ее изменения
sp: =pokaz1.FieldByname('pokaz_str').asstring; end;
end. Приложение 3 (Баланс)
Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 602; Нарушение авторского права страницы