- •Технічне завдання
- •1.1. Призначення програмного продукту
- •1.2. Функціональні вимоги
- •1.3. Структура бази даних
- •1.4. Кваліфікаційні вимоги
- •1.5. Вимоги до умов експлуатації
- •2. Керівництво програміста
- •2.1. Структура програмного продукту
- •2.2. Опис візуальних компонентів зв’язку з базою даних
- •2.3. Склад використаних стандартних компонентів
- •2.4. Тестування програмного засобу
- •3. Керівництво користувача
- •Висновки
- •Перелік використаних джерел та літератури
- •Програмний код
Перелік використаних джерел та літератури
-
Вендров А.М. Проектирование програмного обеспечения экономических информационных систем. – М., Финансы и статистика, 2000. – С.347.
-
Глинський Я.М., Анохін В.Є., Ряжська В.А. Паскаль. Turbo Pascal & Delphi/ Навчальний посібник. Львів – 2003. – С.141.
-
Митчелл К.Керман. Программирование и отладка в Delphi. Учебный курс. Москва – Санкт-Петербург – Киев - 2003. – С.669.
-
Міжнародний стандарт ISO/IEC 12207: 1995-08-01.
-
Орлов С.А.. Технологии разработки программного обеспечения. Учебник для ВУЗов. Москва-… 2002, - 463с.
-
Пономаренко В.С. Проектування інформаційних систем. – К., ВЦ «Академія», 2002. – С.498.
-
Пономаренко В.С. Інформаційні системи і технології в економіці. – К., ВЦ «Академія», 2002. – С.542.
ДОДАТОК
Програмний код
unit UnitMain;
{Головний модуль}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons, ExtCtrls, XPMan;
type
TFormMain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
XPManifest1: TXPManifest;
N7: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
end;
var FormMain: TFormMain;
root: string;
implementation
uses UnitVidd, UnitGryp, UnitSpec, UnitPilg, UnitStyd, UnitData;
{$R *.dfm}
{Визначення шляху до папки з проектом}
procedure TFormMain.FormCreate(Sender: TObject);
begin
root:=GetCurrentDir();
end;
{Відділення}
procedure TFormMain.N1Click(Sender: TObject);
begin
FormVidd.ShowModal;
end;
{Спеціальності}
procedure TFormMain.N2Click(Sender: TObject);
begin
FormSpec.ShowModal;
end;
{Групи}
procedure TFormMain.N3Click(Sender: TObject);
begin
FormGryp.ShowModal;
end;
{Пільги}
procedure TFormMain.N4Click(Sender: TObject);
begin
FormPilg.ShowModal;
end;
{Вихід}
procedure TFormMain.N6Click(Sender: TObject);
begin
close;
end;
end.
unit UnitVidd;
{Формування реєстру-довідника відділень}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls;
type
TFormVidd = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBGrid1: TDBGrid;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
end;
var FormVidd: TFormVidd;
implementation
uses UnitData, UnitViddDial;
{$R *.dfm}
{Встановлення початкових значень параметрів інтерфейсу}
procedure TFormVidd.FormActivate(Sender: TObject);
begin
DatMod.TabVidd_2.DisplayWidth:=50;
DatMod.TabSpecDSDesigner.Visible:=true;
end;
{Нове відділення}
procedure TFormVidd.BitBtn1Click(Sender: TObject);
begin
DatMod.TabVidd.Insert;
FormViddDial.ShowModal;
end;
{Редагувати назву відділення}
procedure TFormVidd.BitBtn3Click(Sender: TObject);
begin
if DatMod.TabVidd.RecordCount=0
then showmessage('Реєстр відділень порожній')
else FormViddDial.ShowModal;
end;
{Видалити відділення}
procedure TFormVidd.BitBtn2Click(Sender: TObject);
begin
if DatMod.TabVidd.RecordCount=0
then showmessage('Реєстр відділень порожній')
else
if DatMod.TabSpec.RecordCount=0 then DatMod.TabVidd.Delete
else showmessage('Видалення неможливе! Слід спочатку видалити всі закріплені за відділенням спеціальності');
end;
{Закриття вікна відділень}
procedure TFormVidd.BitBtn4Click(Sender: TObject);
begin
close;
end;
end.
unit UnitViddDial;
{Модуль редагування реєстру відділень}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Mask, DBCtrls;
type
TFormViddDial = class(TForm)
Label1: TLabel;
DBEdit1: TDBEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit1Change(Sender: TObject);
end;
var FormViddDial: TFormViddDial;
implementation
uses UnitData, UnitVidd;
{$R *.dfm}
{Підтвердження змін в реєстрі відділень}
procedure TFormViddDial.BitBtn1Click(Sender: TObject);
begin
DatMod.TabVidd.Post;
end;
{Скасування змін в реєстрі відділень при натисканні однойменної кнопки}
procedure TFormViddDial.BitBtn2Click(Sender: TObject);
begin
DatMod.TabVidd.Cancel;
end;
{Скасування змін в реєстрі відділень при закритті вікна}
procedure TFormViddDial.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DatMod.TabVidd.Cancel;
end;
{Керування доступом до кнопки "Зберегти"}
procedure TFormViddDial.DBEdit1Change(Sender: TObject);
begin
BitBtn1.Enabled:=DBEdit1.Text<>'';
end;
end.
unit UnitSpec;
{Формування реєстру-довідника спеціальностей}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls;
type
TFormSpec = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBGrid1: TDBGrid;
Panel2: TPanel;
DBGrid2: TDBGrid;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
end;
var FormSpec: TFormSpec;
implementation
uses UnitData, UnitSpecDial;
{$R *.dfm}
{Встановлення початкових значень параметрів інтерфейсу}
procedure TFormSpec.FormActivate(Sender: TObject);
begin
DatMod.TabVidd_2.DisplayWidth:=50;
DatMod.TabSpec_3.DisplayWidth:=50;
DatMod.TabSpecDSDesigner.Visible:=true;
DatMod.TabSpecDSDesigner2.Visible:=true;
end;
{Нова спеціальність}
procedure TFormSpec.BitBtn1Click(Sender: TObject);
begin
if DatMod.TabVidd.RecordCount=0
then showmessage('Реєстр відділень порожній')
else begin
DatMod.TabSpec.Insert;
FormSpecDial.ShowModal;
end;
end;
{Редагувати дані про спеціальність}
procedure TFormSpec.BitBtn3Click(Sender: TObject);
begin
if DatMod.TabSpec.RecordCount=0
then showmessage('Реєстр спеціальностей порожній')
else FormSpecDial.ShowModal;
end;
{Видалити спеціальність}
procedure TFormSpec.BitBtn2Click(Sender: TObject);
begin
if DatMod.TabSpec.RecordCount=0
then showmessage('Реєстр спеціальностей порожній')
else
if DatMod.TabGryp.RecordCount=0 then DatMod.TabSpec.Delete
else showmessage('Видалення неможливе! Слід спочатку видалити всі закріплені за спеціальністю групи');
end;
{Закриття вікна спеціальностей}
procedure TFormSpec.BitBtn4Click(Sender: TObject);
begin
close;
end;
end.
unit UnitSpecDial;
{Модуль редагування реєстру спеціальностей}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Mask, DBCtrls;
type
TFormSpecDial = class(TForm)
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit2Change(Sender: TObject);
end;
var FormSpecDial: TFormSpecDial;
implementation
uses UnitData, UnitSpec;
{$R *.dfm}
{Підтвердження змін в реєстрі спеціальностей}
procedure TFormSpecDial.BitBtn1Click(Sender: TObject);
begin
DatMod.TabSpec.Post;
end;
{Скасування змін в реєстрі спеціальностей при натисканні однойменної кнопки}
procedure TFormSpecDial.BitBtn2Click(Sender: TObject);
begin
DatMod.TabSpec.Cancel;
end;
{Скасування змін в реєстрі спеціальностей при закритті вікна}
procedure TFormSpecDial.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DatMod.TabSpec.Cancel;
end;
{Керування доступом до кнопки "Зберегти"}
procedure TFormSpecDial.DBEdit2Change(Sender: TObject);
begin
BitBtn1.Enabled:=(DBEdit2.Text<>'') and (DBEdit3.Text<>'') and (DBEdit4.Text<>'') ;
end;
end.
unit UnitGryp;
{Формування реєстру-довідника груп}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids;
type
TFormGryp = class(TForm)
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Panel2: TPanel;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBGrid3: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
end;
var FormGryp: TFormGryp;
implementation
uses UnitData, UnitGrypDial;
{$R *.dfm}
{Встановлення початкових значень параметрів інтерфейсу}
procedure TFormGryp.FormCreate(Sender: TObject);
begin
DatMod.TabVidd_2.DisplayWidth:=50;
DatMod.TabSpec_3.DisplayWidth:=40;
DatMod.TabSpecDSDesigner.Visible:=false;
DatMod.TabSpecDSDesigner2.Visible:=false;
end;
{Нова група}
procedure TFormGryp.BitBtn1Click(Sender: TObject);
begin
if DatMod.TabSpec.RecordCount=0
then showmessage('Реєстр спеціальностей порожній')
else begin
DatMod.TabGryp.Insert;
FormGrypDial.ShowModal;
end;
end;
{Редагувати дані про групу}
procedure TFormGryp.BitBtn3Click(Sender: TObject);
begin
if DatMod.TabGryp.RecordCount=0
then showmessage('Реєстр груп порожній')
else FormGrypDial.ShowModal;
end;
{Видалити групу}
procedure TFormGryp.BitBtn2Click(Sender: TObject);
begin
if DatMod.TabGryp.RecordCount=0
then showmessage('Реєстр груп порожній')
else
if DatMod.TabStyd.RecordCount=0 then DatMod.TabGryp.Delete
else showmessage('Видалення неможливе! Слід спочатку видалити всі дані про студентів групи');
end;
{Закриття вікна груп}
procedure TFormGryp.BitBtn4Click(Sender: TObject);
begin
close;
end;
end.
unit UnitGrypDial;
{Модуль редагування реєстру груп}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls, Buttons, Mask;
type
TFormGrypDial = class(TForm)
Label1: TLabel;
Label2: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label3: TLabel;
DBComboBox1: TDBComboBox;
Label4: TLabel;
DBEdit3: TDBEdit;
Label5: TLabel;
DBEdit4: TDBEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var FormGrypDial: TFormGrypDial;
implementation
uses UnitData, UnitGryp;
{$R *.dfm}
{Підтвердження змін в реєстрі спеціальностей}
procedure TFormGrypDial.BitBtn1Click(Sender: TObject);
begin
DatMod.TabGryp.Post;
end;
{Скасування змін в реєстрі спеціальностей при натисканні однойменної кнопки}
procedure TFormGrypDial.BitBtn2Click(Sender: TObject);
begin
DatMod.TabGryp.Cancel;
end;
{Скасування змін в реєстрі спеціальностей при закритті вікна}
procedure TFormGrypDial.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DatMod.TabGryp.Cancel;
end;
end.
unit UnitPilg;
{Формування реєстру-довідника пільг}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls;
type
TFormPilg = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
DBGrid1: TDBGrid;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
end;
var FormPilg: TFormPilg;
implementation
uses UnitData, UnitPilgDial;
{$R *.dfm}
{Нова пільга}
procedure TFormPilg.BitBtn1Click(Sender: TObject);
begin
DatMod.TabPilg.Insert;
FormPilgDial.ShowModal;
end;
{Редагувати назву пільги}
procedure TFormPilg.BitBtn3Click(Sender: TObject);
begin
if DatMod.TabPilg.RecordCount=0
then showmessage('Реєстр пільг порожній')
else FormPilgDial.ShowModal;
end;
{Видалити пільгу}
procedure TFormPilg.BitBtn2Click(Sender: TObject);
begin
if DatMod.TabPilg.RecordCount=0
then showmessage('Реєстр пільг порожній')
else
if DatMod.TabStyd.RecordCount=0 then DatMod.TabPilg.Delete
else showmessage('Видалення неможливе! Слід спочатку видалити всі записи про студентів, які мають цю пільгу');
end;
{Закриття вікна пільг}
procedure TFormPilg.BitBtn4Click(Sender: TObject);
begin
close;
end;
end.
unit UnitPilgDial;
{Модуль редагування реєстру пільг}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Mask, DBCtrls;
type
TFormPilgDial = class(TForm)
Label1: TLabel;
DBEdit1: TDBEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var FormPilgDial: TFormPilgDial;
implementation
uses UnitData, UnitPilg;
{$R *.dfm}
{Підтвердження змін в реєстрі пільг}
procedure TFormPilgDial.BitBtn1Click(Sender: TObject);
begin
DatMod.TabPilg.Post;
end;
{Скасування змін в реєстрі пільг при натисканні однойменної кнопки}
procedure TFormPilgDial.BitBtn2Click(Sender: TObject);
begin
DatMod.TabPilg.Cancel;
end;
{Скасування змін в реєстрі пільг при закритті вікна}
procedure TFormPilgDial.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DatMod.TabPilg.Cancel;
end;
end.
unit UnitData;
{Модуль зв"язку з БД}
interface
uses
SysUtils, Classes, DB, ADODB, Dialogs;
type
TDatMod = class(TDataModule)
Connect: TADOConnection;
TabVidd: TADOTable;
TabSpec: TADOTable;
TabPilg: TADOTable;
TabStyd: TADOTable;
DSVidd: TDataSource;
DSSpec: TDataSource;
DSPilg: TDataSource;
DSStyd: TDataSource;
TabVidd_: TAutoIncField;
TabVidd_2: TWideStringField;
TabSpec_: TAutoIncField;
TabSpec_2: TIntegerField;
TabSpec_3: TWideStringField;
TabSpecDSDesigner: TWideStringField;
TabPilg_: TAutoIncField;
TabPilg_2: TWideStringField;
TabStyd_: TAutoIncField;
TabStyd_2: TWideStringField;
TabStyd_3: TIntegerField;
TabStyd_4: TIntegerField;
TabStyd__: TWideStringField;
TabStyd_5: TWideStringField;
TabStyd__2: TWideStringField;
TabStyd_6: TWideStringField;
TabStyd_8: TIntegerField;
TabStydDSDesigner: TWideStringField;
TabStydDSDesigner2: TWideStringField;
TabStyd_9: TWideStringField;
TabStydDSDesigner3: TWideStringField;
TabStydField: TStringField;
TabStyd_11: TWideStringField;
TabSpecDSDesigner2: TWideStringField;
TabGryp: TADOTable;
DSGryp: TDataSource;
TabGryp_: TAutoIncField;
TabGryp_2: TIntegerField;
TabGrypDSDesigner: TWideStringField;
TabGrypDSDesigner2: TWideStringField;
TabStydDSDesigner6: TWideStringField;
TabStyd_10: TMemoField;
TabStydDSDesigner4: TMemoField;
TabStydDSDesigner5: TMemoField;
TabStydDSDesigner7: TWideStringField;
TabGryp_3: TStringField;
TabGrypAB: TStringField;
procedure DataModuleCreate(Sender: TObject);
procedure TabGrypCalcFields(DataSet: TDataSet);
end;
var DatMod: TDatMod;
implementation
uses UnitStyd, UnitMain;
{$R *.dfm}
{}
procedure TDatMod.DataModuleCreate(Sender: TObject);
begin
try
{$I-}
Connect.Connected:=false;
Connect.ConnectionString:=Root+'\BDRStud.mdb';
Connect.Connected:=true;
TabVidd.Active:=true;
TabVidd.TableName:='Відділення';
TabSpec.Active:=true;
TabSpec.TableName:='Спеціальності';
TabGryp.Active:=true;
TabGryp.TableName:='Групи';
TabPilg.Active:=true;
TabPilg.TableName:='Пільги';
TabStyd.Active:=true;
TabStyd.TableName:='Реєстр_студентів';
{$I+}
except
showmessage('Порушення зв"язку з БД');
end;
end;
{Утворення назви групи з полів БД}
procedure TDatMod.TabGrypCalcFields(DataSet: TDataSet);
begin
TabGryp_3.AsString:=TabGrypAB.AsString+TabGrypDSDesigner.AsString+TabGrypDSDesigner2.AsString;
end;
end.