ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.01.2025
Просмотров: 2605
Скачиваний: 3
СОДЕРЖАНИЕ
1.4. Технические требования к программе или программному изделию
3. Выбор языка и среды разработки.
3.1. Выбор компонентной базы для доступа к субд FireBird 2.1
4.1. Таблица персональных данных пользователя
4.2. Таблица параметров авторизации пользователя на почтовом сервере
5. Архитектура программного обеспечения
6. Структура программного обеспечения
6.1. Подсистема администрирования
6.2. Подсистема просмотра данных
6.3. Подсистема редактирования данных
6.4. Подсистема работы с сообщениями
7. Описание интерфейса программного обеспечения
9. Контрольный пример работы программного обеспечения
10. Безопасность и экологичность проектных решений
10.2. Опасные и вредные факторы при работе с пэвм
10.3. Характеристика объекта исследования
10.4. Мероприятия по безопасности труда и сохранению работоспособности
10.4.3 Создание рационального освещения
10.4.5 Обеспечение режимов труда и отдыха
10.4.6 Обеспечение электробезопасности
10.4.7 Защита от статического электричества
10.4.8 Обеспечение допустимых уровней электромагнитных полей
10.4.9 Обеспечение пожарной безопасности
10.4.10. Мероприятия и средства по защите окружающей среды
11. Организационно-экономическая часть
11.1 Технико-экономическое обоснование объекта проектирования.
11.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). или Путь к базе данных ( указанный путь к базе данных ) недоступен. После этого сообщения открывается панель навигации с вкладкой Файл. Необходимо пройти по этой вкладке и указать другой путь к базе данных.
При формировании отчета может выпасть такое сообщение: 'Не удалось загрузить файл отчета! Необходимо проверить наличие файлов отчета в папке с исполняемым файлом программы.
При отправке сообщения может быть следующая ошибка: 'Не удалось соединиться с почтовым сервером. Если такое произошло, проверяйте наличие соединения с интернетом или правильность параметров авторизации на почтовом сервере в таблице БД. Другое сообщение: Ошибка при отправке сообщения. Может быть пропало соединение с интернетом либо электронный адрес, на которое отправляется сообщение недействителен.