ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.01.2025

Просмотров: 2605

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Содержание

Введение

1.4. Технические требования к программе или программному изделию

3. Выбор языка и среды разработки.

3.1. Выбор компонентной базы для доступа к субд FireBird 2.1

4. Структура базы данных

4.1. Таблица персональных данных пользователя

4.2. Таблица параметров авторизации пользователя на почтовом сервере

5. Архитектура программного обеспечения

6. Структура программного обеспечения

6.1. Подсистема администрирования

6.2. Подсистема просмотра данных

6.3. Подсистема редактирования данных

6.4. Подсистема работы с сообщениями

7. Описание интерфейса программного обеспечения

7.1. Интерфейс – «Галочки»

8. Результаты тестирования

9. Контрольный пример работы программного обеспечения

10. Безопасность и экологичность проектных решений

10.1. Цель и решаемые задачи

10.2. Опасные и вредные факторы при работе с пэвм

10.3. Характеристика объекта исследования

10.4. Мероприятия по безопасности труда и сохранению работоспособности

10.4.3 Создание рационального освещения

10.4.4 Защита от шума

10.4.5 Обеспечение режимов труда и отдыха

10.4.6 Обеспечение электробезопасности

10.4.7 Защита от статического электричества

10.4.8 Обеспечение допустимых уровней электромагнитных полей

10.4.9 Обеспечение пожарной безопасности

10.4.10. Мероприятия и средства по защите окружающей среды

10.5. Расчеты.

11. Организационно-экономическая часть

11.1 Технико-экономическое обоснование объекта проектирования.

Результаты

11.1.2 Состав конструкторской группы и их должностные оклады.

11.1.3 Экономическая часть.

Затраты на страховые взносы.

11.1.3. Вывод.

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

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

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

Приложение 2. Руководство пользователя.

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.


Приложение 2. Руководство пользователя.

Назначение программы

Программа предназначена для автоматизации работы с будущими абитуриентами, которые посещают мероприятия по ознакомлению с Московским государственным открытым университетом и процессом обучения в нем. В систему автоматизации входит регистрация будущего абитуриента в системе, формирование «Карточки абитуриента», создание и отправка сообщений зарегистрированным по электронной почте.

Условия выполнения программы

Установка приложения на пользовательский компьютер. Состав аппаратных средств и их основные характеристики:

  • Не менее 1Gb RAM

  • ПО – Microsoft Office 2003 и выше.

Выполнение программы

Для начала работы с приложением необходимо запустить программу. Система предложит авторизоваться посредством формы авторизации. После авторизации открывается панель навигации. Панель навигации служит для удобного перехода между модулями программы. После успешной авторизации открывается с полным набором вкладок: Файл -> Авторизация -> Выход; Абитуриент -> Регистрация -> Просмотр; Почта -> Отправить сообщение -> Просмотреть сообщения; Классификаторы ->Источник.

Если пройти по вкладке Регистрация, то открывается форма регистрации, в которую вписываются персональные данные и интересы абитуриента. После регистрации в панели управления данной формы необходимо нажать на кнопку Печать IDи выдать на руки будущему абитуриенту «Карточку абитуриента».

Если пройти по вкладке Просмотр, то откроется форма просмотра зарегистрированных абитуриентов. Здесь функционируют кнопки группировки данных и кнопки управления такие как: Редактирование, Создать сообщение, Печать. Выбрав из списка абитуриента и нажав на кнопку Редактирование или дважды щелкнув кнопкой мыши по выбранному абитуриенту, откроется форма редактирования данных. Если нажать на кнопку Создать сообщение, то откроется форма создания сообщения с установленной галочкой напротив выбранного абитуриента. По нажатию на кнопку Печать открывается окно предварительного просмотра отчетов.

Для создания сообщения стоит указать его тему, написать текстовую наполняющую, добавить вложения, если необходимо, выбрать адресатов. По вкладке Просмотреть сообщения открывается форма просмотра сообщений, которая содержит две сводных таблицы и текстовых поля, хранящие информацию по выбранному из первой таблицы сообщению. Форма дает возможность только просматривать сообщения.


Сообщения оператору

При запуске программы происходит соединение с выбранной базой данных, если база данных выбрана неправильно, то выводится сообщение: 'Выберите другую БД (*.mdb). или Путь к базе данных ( указанный путь к базе данных ) недоступен. После этого сообщения открывается панель навигации с вкладкой Файл. Необходимо пройти по этой вкладке и указать другой путь к базе данных.

При формировании отчета может выпасть такое сообщение: 'Не удалось загрузить файл отчета! Необходимо проверить наличие файлов отчета в папке с исполняемым файлом программы.

При отправке сообщения может быть следующая ошибка: 'Не удалось соединиться с почтовым сервером. Если такое произошло, проверяйте наличие соединения с интернетом или правильность параметров авторизации на почтовом сервере в таблице БД. Другое сообщение: Ошибка при отправке сообщения. Может быть пропало соединение с интернетом либо электронный адрес, на которое отправляется сообщение недействителен.