Разработка пользовательского интерфейса АИС "Будущий абитуриент"

Основание для разработки автоматизированной информационной системы "Будущий абитуриент". Технические требования к программному изделию. Порядок контроля и приемки продукта. Рассмотрение исходной базы данных. Описание интерфейса программного обеспечения.

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

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

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

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

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

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

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

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

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

Приложение 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.

Приложение 2

Руководство пользователя

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

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

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

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

· Не менее 1Gb RAM

· ПО - Microsoft Office 2003 и выше.

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

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

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

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

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

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

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

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

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

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


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

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