Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Образец диплома.doc
Скачиваний:
40
Добавлен:
19.03.2015
Размер:
4.18 Mб
Скачать

11.1.3. Вывод.

По результат расчетов, для создания данного программного продукта потребуется 525348,8 рублей. Оценить эту сумму сложно, т.к. схожие программные продукты, присутствующие на рынке, не подходят для решения поставленной задачи. Тот факт, что разработанная программа будет использоваться только внутри университета и не будет представлена на рынке, позволяет нам отказаться от расчетов отпускной цены для данного продукта.

Для снижения сметы расходов можно предпринять ряд мер. Более половины суммы расходов, представляют собой затраты на оплату труда программиста. Добиться снижения этих затрат можно путем улучшения эффективности труда.

12. Заключение

В результате дипломного проектирования было разработано программное обеспечение АИС «Будущий абитуриент». Программное обеспечение отвечает требованиям, предъявленным в техническом задании. На данный момент программное обеспечение интегрировано в программный комплекс Информатизация МГОУ и используется в работе ЦПК.

Использование разработанного программного обеспечения позволяет оперативно получать статистическую и персональную информацию пользователем по каналам внутренней локальной сети из базы данных после предварительной установки специального клиентского ПО на рабочем месте. Программное обеспечение расширяет возможности для актуализации информации в базе данных по поступившим возможным абитуриентам.

13. Список литературы

Книги

Однотомные издания

Путилин А.Б., Юрагов Е.А. Компонентное моделирование и программирование на языке UML. Практическое руководство по проектированию информационных систем. - М. НТ Пресс 2005 г.

Путилин А.Б., Юрагов Е.А. Дипломное проектирование. Методическое пособие по подготовке выпускной квалификационной работы по направлению 654600 «Информатика и вычислительная техника», специальность 230105 «Программное обеспечение вычислительной техники и автоматизированных систем». - М. изд. МГОУ 2010 г.

Хелен Борри, InterBaseиFirebird. Практическое руководство для умных пользователей и начинающих разработчиков. –BHV, 2007 г.

Хелен Борри, FireBird: руководство разработчика баз данных. –BHV, 2007 г.

Эрик Хармон. Руководство разработчика баз данных в Delphi/Kylix. – Вильямс, 2002 г.

Интернет ресурсы

1. http://www.firebirdsql.org/manual/ru/qsg15-databases-ru.html. Работа с базами данных.

2. http://www.ibprovider.com/rus/documentation/firebird_interbase_delphi.html. Работа с Firebird и Interbase в Delphi. Часть 1.

Приложение 1. Листинг

{Модуль регистрации}

unit Vabit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms, Dialogs, SDIEvent, cxGraphics, cxLookAndFeels,

cxLookAndFeelPainters, Menus, StdCtrls, cxButtons, cxControls,

cxContainer, cxEdit, dxCntner, dxExEdtr, dxEdLib, dxDBELib,

cxGroupBox, cxPC, cxStyles, cxCustomData, cxFilter, cxData,

cxDataStorage, DB, cxDBData, cxGridLevel, cxClasses,

cxGridCustomView, cxGridCustomTableView, cxGridTableView,

cxGridDBTableView, cxGrid, cxRadioGroup, cxDBEdit, cxTextEdit,

cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,

cxDBLookupComboBox, cxCalendar, FIBDataSet, pFIBDataSet, DMmain,

cxCheckBox, cxImageComboBox, Grids, DBGrids, frxClass, frxDBSet,

frxFIBComponents;

type

TFvabit = class(TForm)

cxB_Print_ID: TcxButton;

cxGroupBox1: TcxGroupBox;

cxB_Registr: TcxButton;

cxB_Ok_Commit: TcxButton;

cxB_Cancel: TcxButton;

cxGroupBox2: TcxGroupBox;

Label2: TLabel;

cxPC_Vbr: TcxPageControl;

cxTabSheet1: TcxTabSheet;

cxTabSheet2: TcxTabSheet;

cxGrid1DBTableView1: TcxGridDBTableView;

cxGrid1Level1: TcxGridLevel;

cxGrid1: TcxGrid;

Label1: TLabel;

cxGrid2DBTableView1: TcxGridDBTableView;

cxGrid2Level1: TcxGridLevel;

cxGrid2: TcxGrid;

cxGroupBox3: TcxGroupBox;

cxGroupBox4: TcxGroupBox;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

cxDBME_HP: TcxDBMaskEdit;

cxDBME_MP: TcxDBMaskEdit;

cxDBME_Mail: TcxDBMaskEdit;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

cxDBLCB_NameEduc: TcxDBLookupComboBox;

cxDBLookupComboBox3: TcxDBLookupComboBox;

cxGroupBox5: TcxGroupBox;

cxGroupBox6: TcxGroupBox;

cxDBDE_BD: TcxDBDateEdit;

cxDBRG_Sex: TcxDBRadioGroup;

cxGroupBox7: TcxGroupBox;

cxDBLCB_From: TcxDBLookupComboBox;

cxDBRG_Hostel: TcxDBRadioGroup;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

cxME_ID_Abit: TcxMaskEdit;

pFIBDS_All: TpFIBDataSet;

DS_All: TDataSource;

cxDBTextEdit1: TcxDBTextEdit;

cxDBTextEdit2: TcxDBTextEdit;

cxDBTextEdit3: TcxDBTextEdit;

pFIBDS_From: TpFIBDataSet;

DS_From: TDataSource;

cxDBImageCB_EducID: TcxDBImageComboBox;

pFIBDS_NameEduc: TpFIBDataSet;

DS_NameEduc: TDataSource;

pFIBDS_LivingEduc: TpFIBDataSet;

DS_LivingEduc: TDataSource;

pFIBDS_PayForm: TpFIBDataSet;

DS_PayForm: TDataSource;

cxDBLCB_Pay: TcxDBLookupComboBox;

cxDBRadioGroup1: TcxDBRadioGroup;

pFIBDS_Fakul: TpFIBDataSet;

pFIBDS_Spec: TpFIBDataSet;

DS_Fakul: TDataSource;

cxGrid1DBTableView1NAME: TcxGridDBColumn;

DS_Spec: TDataSource;

cxGrid2DBTableView1NAME: TcxGridDBColumn;

cxGrid1DBTableView1Column1: TcxGridDBColumn;

cxGrid2DBTableView1Column1: TcxGridDBColumn;

frxReport_Pirnt: TfrxReport;

frxDBDataset1: TfrxDBDataset;

frxFIBComponents1: TfrxFIBComponents;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormDestroy(Sender: TObject);

procedure cxB_RegistrClick(Sender: TObject);

procedure cxB_Ok_CommitClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure cxB_CancelClick(Sender: TObject);

procedure cxME_ID_AbitKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure cxB_Print_IDClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Fvabit: TFvabit;

implementation

{$R *.dfm}

{Обрабатываем закрытие формы}

procedure TFvabit.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action := caFree;

end;

{Освобождаем память}

procedure TFvabit.FormDestroy(Sender: TObject);

begin

Fvabit := nil;

end;

{Обрабатываем нажатие кнопки Регистрация}

procedure TFvabit.cxB_RegistrClick(Sender: TObject);

begin

if pFIBDS_All.Modified then

if pFIBDS_All.Fieldbyname('ID').AsVariant <> null then

pFIBDS_All.Post

else

begin

//кто зарегистрировал

pFIBDS_All.FieldByName('USER_ADD').AsInteger :=

DM_Main.NickID;

//на каком мероприятии

pFIBDS_All.FieldByName('Source_ID').AsInteger :=

DM_Main.vSource;

pFIBDS_All.Post;

//Показываем список факультетов и специальностей

pFIBDS_Fakul.FullRefresh;

pFIBDS_Spec.FullRefresh;

//в поле ID записываем сгенерированный ID воз. абитуриента

cxME_ID_Abit.Text := pFIBDS_All.Fieldbyname('ID').AsString;

end;

if pFIBDS_Fakul.Modified then

pFIBDS_Fakul.Post;

if pFIBDS_Spec.Modified then

pFIBDS_Spec.Post;

DM_Main.pFIBTWrite.CommitRetaining;

end;

{Обрабатываем нажатие кнопки Сохранить}

procedure TFvabit.cxB_Ok_CommitClick(Sender: TObject);

begin

if pFIBDS_All.Modified then

pFIBDS_All.Post;

if pFIBDS_Fakul.Modified then

pFIBDS_Fakul.Post;

if pFIBDS_Spec.Modified then

pFIBDS_Spec.Post;

DM_Main.pFIBTWrite.CommitRetaining;

close;

ModalResult := mrOk;

end;

{Обрабатываем создание формы регистрации}

procedure TFvabit.FormCreate(Sender: TObject);

begin

pFIBDS_All.Active := true;

pFIBDS_From.Active := true;

pFIBDS_NameEduc.Active := true;

pFIBDS_LivingEduc.Active := true;

pFIBDS_PayForm.Active := true;

pFIBDS_Fakul.Active := true;

pFIBDS_Spec.Active := true;

end;

{Обрабатываем нажатие кнопки Отмена}

procedure TFvabit.cxB_CancelClick(Sender: TObject);

begin

DM_Main.pFIBTWrite.Rollback;

ModalResult := mrCancel;

close;

end;

{Обрабатываем введение в поле ‘ID’ идентификационный номер возможного абитуриента во время повторного посещения МГОУ}

procedure TFvabit.cxME_ID_AbitKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = 13 then

begin

cxB_Registr.Visible := false;

pFIBDS_All.Active := false;

pFIBDS_All.ParamByName('ID').AsString := cxME_ID_Abit.Text;

pFIBDS_All.Active := true;

pFIBDS_All.Edit;

pFIBDS_All.FieldByName('REPEAT').AsInteger := 1;

end;

end;

{Обрабатываем нажатие кнопки Печать ID}

procedure TFvabit.cxB_Print_IDClick(Sender: TObject);

begin

//открываем окно предварительного просмотра карточки воз.абитуриента

frxReport_Pirnt.ShowReport(true);

end;

end.

{Модуль работы с сообщением}

unit UPost;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms, Dialogs, SDIEvent, cxGraphics, cxControls, cxLookAndFeels,

cxLookAndFeelPainters, cxContainer, cxEdit, cxSplitter, cxGroupBox,

Menus, dxCntner, dxEditor, dxExEdtr, dxEdLib, dxDBELib, StdCtrls,

cxButtons, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit,

cxDBLookupEdit, cxDBLookupComboBox, cxStyles, cxCustomData,

cxFilter, cxData, cxDataStorage, DB, cxDBData, FIBDataSet,

pFIBDataSet, cxGridLevel, cxClasses, cxGridCustomView,

cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,

cxProgressBar, DMMain, cxCheckBox, cxMemo, cxDBEdit, Grids, DBGrids,

IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,

IdMessageClient, IdSMTP, IdMessage;

type

TFPost = class(TForm)

SDIEvents: TSDIEvents;

cxGroupBox5: TcxGroupBox;

cxSplitter1: TcxSplitter;

cxGroupBox1: TcxGroupBox;

cxGroupBox2: TcxGroupBox;

cxDBLCB_Tema: TcxDBLookupComboBox;

cxGroupBox3: TcxGroupBox;

cxGroupBox4: TcxGroupBox;

Label2: TLabel;

Label4: TLabel;

Label3: TLabel;

cxGroupBox6: TcxGroupBox;

cxB_Save: TcxButton;

cxB_Send: TcxButton;

cxProgressBar: TcxProgressBar;

Label1: TLabel;

cxGrid1DBTableView1: TcxGridDBTableView;

cxGrid1Level1: TcxGridLevel;

cxGrid1: TcxGrid;

pFIBDS_Post: TpFIBDataSet;

DataSource1: TDataSource;

cxGrid1DBTableView1SURNAME: TcxGridDBColumn;

cxGrid1DBTableView1NAME: TcxGridDBColumn;

cxGrid1DBTableView1EDUCATION_ID: TcxGridDBColumn;

cxGrid1DBTableView1PAY_FORM_ID: TcxGridDBColumn;

cxGrid1DBTableView1EMAIL: TcxGridDBColumn;

cxGrid1DBTableView1Column1: TcxGridDBColumn;

cxGrid1DBTableView1Column2: TcxGridDBColumn;

cxGrid1DBTableView1Column3: TcxGridDBColumn;

cxDBMemo1: TcxDBMemo;

DS_Mes: TDataSource;

pFIBDS_Mes: TpFIBDataSet;

DS_Theme: TDataSource;

pFIBDS_Theme: TpFIBDataSet;

cxGroupBox7: TcxGroupBox;

cxBnot: TcxButton;

cxBAll: TcxButton;

IdSMTP: TIdSMTP;

pFIBDS_Send: TpFIBDataSet;

OpenDialog: TOpenDialog;

dxBE_ADD: TdxButtonEdit;

dxBE_ADD1: TdxButtonEdit;

dxBE_ADD2: TdxButtonEdit;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormDestroy(Sender: TObject);

procedure SDIEventsSDIActivate(Sender: TObject);

procedure cxB_SaveClick(Sender: TObject);

procedure cxB_SendClick(Sender: TObject);

procedure cxBAllClick(Sender: TObject);

procedure dxBE_ADDButtonClick(Sender: TObject; AbsoluteIndex:

Integer);

procedure dxBE_ADD1ButtonClick(Sender: TObject;

AbsoluteIndex: Integer);

procedure dxBE_ADD2ButtonClick(Sender: TObject;

AbsoluteIndex: Integer);

procedure cxBnotClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

FPERSID: integer;

procedure SetPERSID(const Value: integer);

{ Private declarations }

public

property PERSID :integer read FPERSID write SetPERSID;

{ Public declarations }

end;

var

FPost: TFPost;

implementation

{$R *.dfm}

{Обрабатываем закрытие формы}

procedure TFPost.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action := caFree;

end;

{Освобождаем память}

procedure TFPost.FormDestroy(Sender: TObject);

begin

FPost := nil;

end;

{Обрабатываем нажатие кнопки Сохранить}

procedure TFPost.cxB_SaveClick(Sender: TObject);

begin

pFIBDS_Mes.Edit;

//сохраняем прикрепленные файлы

pFIBDS_Mes.FieldByName('ENCLOSURE').AsString := dxBE_ADD.Text + ','

+ dxBE_ADD1.Text + ',' + dxBE_ADD2.Text;

if pFIBDS_Post.Modified then

pFIBDS_Post.Post;

if pFIBDS_Mes.Modified then

pFIBDS_Mes.Post;

DM_Main.pFIBTWrite.Commit;

close;

end;

{Обрабатываем нажатие кнопки Отправить}

procedure TFPost.cxB_SendClick(Sender: TObject);

var

M: TIdMessage;

ATT: Tidattachment;

i, MessageID: integer;

begin

cxB_Save.Click;

//начало отправки сообщений

Screen.Cursor := crHourGlass;

//проверяем тип авторизации пользователя на почтовом сервере

if pFIBDS_Send.FieldByName('AUTHENTICATIONTYPE').AsInteger = 0 then

begin

IdSMTP.AuthenticationType := atNone;

ShowMessage('- AUTHENTICATION: OFF');

end

else

// хост

IdSMTP.Host := pFIBDS_Send.FieldByName('Host').AsString;

// учетная запись

IdSMTP.Username := pFIBDS_Send.FieldByName('Username').AsString;

// порт

IdSMTP.Port := pFIBDS_Send.FieldByName('Port').AsInteger;

// пароль

IdSMTP.Password := pFIBDS_Send.FieldByName('Pass').AsString;

// создаем сообщение

M := TIdMessage.Create(self);

// формируем параметры сообщения

M.From.Text := '"' + pFIBDS_Send.FieldByName('MAILLOGIN').AsString

+ '"<' + pFIBDS_Send.FieldByName('USERNAME').AsString + '>';

m.Body.Add(cxDBMemo1.Text); //текст письма

M.Recipients.Add;

m.Subject := cxDBLCB_Tema.Text; //тема письма

M.IsEncoded := true;

try

try

Application.ProcessMessages;

idSMTP.Connect();

except

MessageBox(0, 'Не удалось соединиться с почтовым сервером.' +

#13 + #10 + 'Сообщения не будут отправлены.' + #13 + #10 +

'Проверьте наличие соединения с интернетом.', 'Соединение с

почтовым ящиком', MB_ICONSTOP or MB_OK or MB_TASKMODAL);

exit;

end;

// добавление файлов к сообщению

if dxBE_ADD.Text <> '' then

ATT := TIdAttachment.Create(m.MessageParts, dxBE_ADD.Text);

if dxBE_ADD1.Text <> '' then

ATT := TIdAttachment.Create(m.MessageParts, dxBE_ADD1.Text);

if dxBE_ADD2.Text <> '' then

ATT := TIdAttachment.Create(m.MessageParts, dxBE_ADD2.Text);

i := 1;

cxProgressBar.Properties.Max :=

cxGrid1DBTableView1.DataController.RowCount + 1;

{Добавление email выделенных возможных абитуриентов}

for i := 1 to cxGrid1DBTableView1.DataController.RowCount do

try

cxGrid1DBTableView1.DataController.RecNo := i;

Application.ProcessMessages;

cxProgressBar.Position := i + 1;

if pFIBDS_Post.FieldByName('CB').AsInteger = 0 then Continue;

M.Recipients.EMailAddresses :=

pFIBDS_Post.FieldByName('email').AsString;

idSMTP.Send(m);

except

MessageBox(0, 'Ошибка при отправке сообщения.' + #13 + #10 +

'Возможно соединение с интернетом было утерено.', 'Отправка

сообщения', MB_ICONERROR or MB_OK or MB_TASKMODAL);

break;

end;

finally

IdSMTP.Disconnect;

att.free;

m.Free;

screen.Cursor := crdefault;

if DM_Main.pFIBTWrite.Active then

DM_Main.pFIBTWrite.Commit;

end;

end;

{Обрабатываем нажатие кнопки Выделить все}

procedure TFPost.cxBAllClick(Sender: TObject);

var i:integer;

begin

pFIBDS_Post.DisableControls;

pFIBDS_Post.First;

for i := 0 to cxGrid1DBTableView1.DataController.RecordCount + 1 do

begin

pFIBDS_Post.Edit;

pFIBDS_Post.FieldByName('CB').AsInteger := 1;

pFIBDS_Post.Post;

cxGrid1DBTableView1.DataController.RecNo := i;

end;

pFIBDS_Post.EnableControls;

end;

{Прикрепление первого файла к сообщению}

procedure TFPost.dxBE_ADDButtonClick(Sender: TObject;

AbsoluteIndex: Integer);

begin

if OpenDialog.Execute then

dxBE_ADD.Text := OpenDialog.FileName;

end;

{Прикрепление второго файла к сообщению}

procedure TFPost.dxBE_ADD1ButtonClick(Sender: TObject;

AbsoluteIndex: Integer);

begin

if OpenDialog.Execute then

dxBE_ADD1.Text := OpenDialog.FileName;

end;

{Прикрепление третьего файла к сообщению}

procedure TFPost.dxBE_ADD2ButtonClick(Sender: TObject;

AbsoluteIndex: Integer);

begin

if OpenDialog.Execute then

dxBE_ADD2.Text := OpenDialog.FileName;

end;

{Обрабатываем нажатие кнопки Снять выделение}

procedure TFPost.cxBnotClick(Sender: TObject);

var i:integer;

begin

pFIBDS_Post.DisableControls;

pFIBDS_Post.First;

for i := 0 to cxGrid1DBTableView1.DataController.RecordCount + 1 do

begin

pFIBDS_Post.Edit;

pFIBDS_Post.FieldByName('CB').AsInteger := 0;

pFIBDS_Post.Post;

cxGrid1DBTableView1.DataController.RecNo := i;

end;

pFIBDS_Post.EnableControls

end;

{Создание формы}

procedure TFPost.FormCreate(Sender: TObject);

var i:integer;

begin

pFIBDS_Mes.Active := true;

pFIBDS_Mes.Insert;

// получение ID нового сообщения

i := pFIBDS_Mes.fieldByName('ID').AsInteger;

// получение ID пользователя, который создает сообщение

pFIBDS_Mes.FieldByName('USER_ID').AsInteger := DM_Main.NickID;

pFIBDS_Mes.Post;

DM_Main.pFIBTWrite.CommitRetaining;

pFIBDS_Mes.Active := false;

pFIBDS_Mes.ParamByName('ID').AsInteger := i;

pFIBDS_Mes.Active := true;

pFIBDS_Send.Active := true;

end;

{Установить персональный ID. Выбор адресата по переданному ID}

procedure TFPost.SetPERSID(const Value: integer);

begin

FPERSID := Value;

if pFIBDS_Post.Locate('pr_id', persid, [loCaseInsensitive]) then

begin

pFIBDS_Post.Edit;

pFIBDS_Post.FieldByName('CB').AsInteger := 1;

pFIBDS_Post.Post;

end;

end;

end.