close

Вход

Забыли?

вход по аккаунту

?

poyasnitelnaya zapiska(125)

код для вставкиСкачать
Зміст
Вступ3
1 Постановка завдання 4
2 Проектування5
2.1 Проектування даних5
2.2 Проектування функцій5
3 Програмна реалізація10
4 Тестування29
5 Супровід 32
5.1 Посібник користувача 32
5.2 Посібник розробника33
Заключення34
Список літератури35
Додатки 36
Вступ
Дана курсова робота була розроблена в середовищі Delphi 7 з базовою мовою програмування Delphi. Delphi - це нащадок середовища програмування Turbo Pascal. Назва середовища відбулася від назви міста в Прадавній Греції, де перебував знаменитий Дельфійський оракул (храм Аполона в місті Дельфи, жреці якого займалися пророкуваннями). Delphi - система, що швидко розвивається. Перша версія Delphi була випущена в лютому 1995 року, в 1996 році вийшла друга версія, 1997 - третя, 1998 - четверта, 1999 - п'ята, 2001 - шоста. Усі версії, починаючи з Delphi 2.0, розраховані на розробку 32-розрядних додатків, тобто додатків для операційних систем Windows 95/98, NT і т.д. В 2002 році вийшла сьома версія, основним нововведенням у якій були Інтернет-Технології. Інтегроване середоще Delphi складається з чотирьох основних елементів: головне вікно, вікно інспектора об'єктів, вікно форми та вікно модуля (вікно коду). MySQL - вільна система керування реляційними базами даних. MySQL характеризується великою швидкістю, стабільністю та легкістю у використанні. MySQL був розроблений компанією ТсХ для внутрішніх потреб, що полягали у швидкій обробці дуже великих баз даних. MySQL є ідеальним рішенням для малих та середніх програм. Вихідний код MySQL компілюється на безлічі платформ. Найбільш повно можливості сервера проявляються на Unix-Серверах, де є підтримка багатопотічності, що дає значний приріст продуктивності. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого качану була дуже схожою на MySQL, проте з годиною вона всі розширювалася і зараз MySQL - одна з найпоширеніших систем керування базами даних. Вона використовується, у першу чергу, для створення динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.
Мета курсової роботи - закріплення й демонстрація знань, отриманих при вивченні курсу.
1 Постановка завдання
Створити інформаційну систему згідно свого варіанту. Програма повинна бути реалізована по технології клієнт-сервер із використанням СУБД MySQL.
Кожна таблиця повинна мати певний набір полів: головна таблиця не менше 3, підлегла - не менше 5 (в тому числі одне графічне поле).
При запуску програми виконується реєстрація користувача і збереження введених даних в INI файлі.
Всі функції системи доступні через меню користувача або панель інструментів, які знаходяться на головній формі.
Перегляд основних даних виконується за допомогою сіток, а введення та редагування - за допомогою окремих сторінкових форм.
Форми повинні мати єдиний зовнішній стиль оформлення, засоби захисту програми від помилок користувача (шаблони введення, списки з набором значень, обмеження вводу певного набору символів).
Система надає користувачу можливість виконання стандартного набору дій, властивих інформаційним системам: перегляд та редагування даних, сортування, пошук, фільтрація, формування звітів.
По даним із БД потрібно виводи різні розрахункові показники на потребу користувача.
Система має систему допомоги та інсталятор для встановлення на комп'ютер.
2 Проектування
2.1 Проектування даних
База даних "director" має дві таблиці: одна таблиця головна і має назву "glav", друга таблиця підлегла - "podchin".
Ці дві таблиці мають зв'язок між собою. Вони зв'язані за допомогою поля "shifr" в головній та поля "kod" у підлеглій.
Структура баз даних:
Таблиця 1 - Структура таблиці glav
Назва поляТип поляОпис поляShifrInteger[унікальне] Номер класуklassVarChar(20)Назва класуKl_rukVarChar(50)Класний керівник Таблиця 2 - Структура таблиці podchin
Назва поляТип поляОпис поляKodInteger[унікальне] Код учняShifrIntegerШифр учняFamiliaVarChar(20)Фамілія учняImyaVarChar(20)Ім'я учняOtchVarChar(20)По батькові учняharacteristicaTextХарактеристика учняFOTOLongBlobФото учняSrbalintegerСередній бал учня 2.2 Проектування функцій
При запуску програми відкривається форма "Регистрация", яка призначена для реєстрації користувача й збереження введених даних в ІNІ файлі. Якщо користувач вірно заповнить потрібні поля, то він відкриє головну форму програми, навпаки - не зможе запустити її.
Форма має вигляд:
Рисунок 1 - Форма реєстрації
Після введення всіх необхідних параметрів, відкриється форма "Директор школи", яка призначена для перегляду, редагування, зберігання, додавання, видалення, сортування даних.
Форма має вигляд:
Рисунок 2 - Головна форма
Для редагування даних потрібно два рази клацнути по запису, відкриється вікно, в якому можна буде редагувати.
Для підлеглої таблиці вікно має такий вигляд:
Рисунок 3 - Форма для редагування підлеглої таблиці
Для головної таблиці вікно має такий вигляд:
Рисунок 4 - Форма для редагування головної таблиці
Щоб додати дані до бази даних ми повинні натиснути на кнопку "Добавить". З'явиться форма, у яку треба ввести відповідні дані. Після вибору даних, треба натиснути "Сохранить". Форма має вигляд:
Рисунок 5 - Форма для додавання записів до головної таблиці
Форма для додавання даних до підлеглої таблиці має вигляд:
Рисунок 6 - Форма для додавання записів до підлеглої таблиці
Щоб видалити дані з бази даних, потрібно спочатку виділити необхідний запис і натиснути на кнопку "Удалить". Для того щоб здійснити пошук даних в базі даних, потрібно на цій формі натиснути кнопку "Развернуть", розвернуться поля для пошуку. Далі потрібно ввести необхідні критерії для пошуку і натиснути кнопку "Отобрать", якщо ви помилилися при введенні, то можна натиснути кнопку "Очистить" і вона зробить всі поля порожніми. Після роботи з пошуком можна звернути цю частину форми, натиснув кнопку "Свернуть". Щоб сформувати звіти в Microsoft Word або Microsoft Excel по всій базі даних або по знайденим записам, треба натиснути кнопку "Список". З'явиться список, з якого ми повинні вибрати потрібний пункт.
Частина форми має вигляд:
Рисунок 7 - Частина форми для пошуку записів в базі даних
Також на головній формі міститься файл допомоги. При натисненні на кнопку "Справка" з'являється довідник, в якому можна прочитати як користуватися програмою. Цей файл також можна викликати на будь-якій формі за допомогою клавіші F1.
Файл допомоги має такий вид:
Рисунок 8 - Файл допомоги
3 Програмна реалізація
Код форми реєстрації:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, inifiles, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Label3: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
//опис, використаних змінних
user,password,server:string;
connect:boolean;
ini:tinifile;
//код для 2ї кнопки(відмінити)
procedure TForm2.Button2Click(Sender: TObject);
begin
exitprocess(0);
end;
//код для першої кнопки(підключити)
procedure TForm2.Button1Click(Sender: TObject);
begin
user:=edit1.Text;
password:=edit2.Text;
server:=edit3.Text;
form1:=tform1.create(nil);
if connect=true then begin
ini:=tinifile.create(extractfilepath(application.exename)+'\settings.ini');
ini.writestring('Components','user',edit1.text);
ini.writestring('Components','server',edit3.Text);
ini.free; form1.Show;
form1.Repaint;
release; end else
edit1.SetFocus;
end;
//збереження серверу, пользователю та паролю в ini файл
procedure TForm2.FormCreate(Sender: TObject);
var f:file;
begin
if fileexists(extractfilepath(application.Exename)+'\settings.ini')=false then
begin
assignfile(f,extractfilepath(application.Exename)+'\settings.ini');
rewrite(f);
closefile(f);
end;
ini:=tinifile.create(extractfilepath(application.exename)+'\settings.ini');
edit1.text:=ini.readstring('Components','user','root');
edit3.text:=ini.readstring('Components','server','localhost');
end;
end.
Код головної форми:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ZConnection, DB, Grids, DBGrids, ZAbstractRODataset,
ZAbstractDataset, ZAbstractTable, ZDataset, StdCtrls, DBCtrls, ExtDlgs, comobj,
Menus, stohtmlhelp;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
DBImage1: TDBImage;
ZConnection1: TZConnection;
ZTable1: TZTable;
ZTable2: TZTable;
ZTable1shifr: TIntegerField;
ZTable1klass: TStringField;
ZTable1kl_ruk: TStringField;
OpenPictureDialog1: TOpenPictureDialog;
GroupBox1: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
Label5: TLabel;
Button6: TButton;
Edit1: TEdit;
Label6: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Button7: TButton;
Button8: TButton;
ZTable2shifr: TIntegerField;
ZTable2familia: TStringField;
ZTable2imya: TStringField;
ZTable2harakteristica: TMemoField;
ZTable2foto: TBlobField;
ZTable2otch: TStringField;
ZTable2srbal: TIntegerField;
ZQuery1: TZQuery;
ZQuery2: TZQuery;
DataSource3: TDataSource;
Button5: TButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
Button9: TButton;
Excel1: TMenuItem;
Excel2: TMenuItem;
Button10: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ZTable1AfterPost(DataSet: TDataSet);
procedure Button5Click(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBImage1DblClick(Sender: TObject);
procedure schet;
procedure FormShow(Sender: TObject);
procedure ZQuery1AfterPost(DataSet: TDataSet);
procedure ZQuery1BeforeDelete(DataSet: TDataSet);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure ZTable1AfterScroll(DataSet: TDataSet);
procedure N1Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure spisok (n:integer);
procedure N2Click(Sender: TObject);
procedure Excel1Click(Sender: TObject);
procedure Excel2Click(Sender: TObject);
procedure spisok1;
procedure Button10Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
//опис використанних змінних
Form1: TForm1;
var s:string;
w:variant;
e:variant;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
//код для списку по всім учням у Excel
procedure Tform1.Spisok1;
var i,n:integer;
begin
try
e:=getactiveoleobject('excel.application');
except
e:=createoleobject('excel.application');
end;
e.workbooks.add(extractfilepath(application.Exename)+'shablon\vse ucheniki.xlt');
zquery2.First;
i:=3;
n:=0;
e.activeworkbook.sheets.item[1].range['a3:g3'].select;
e.activeworkbook.sheets.item[1].range['a3:g3'].copy;
while not zquery2.Eof do
begin
i:=i+1;
n:=n+1;
e.activeworkbook.sheets.item[1].range['a'+inttostr(i)].select;
e.activeworkbook.sheets.item[1].paste;
e.activeworkbook.sheets.item[1].cells[i,1].value:=n;
//e.activeworkbook.sheets.item[1].cells[i,1].value:=zquery2.Fieldbyname('shifr').asstring;
e.activeworkbook.sheets.item[1].cells[i,2].value:=zquery2.Fieldbyname('familia').asstring;
e.activeworkbook.sheets.item[1].cells[i,3].value:=zquery2.Fieldbyname('imya').asstring;
e.activeworkbook.sheets.item[1].cells[i,4].value:=zquery2.Fieldbyname('otch').asstring;
e.activeworkbook.sheets.item[1].cells[i,5].value:=zquery2.Fieldbyname('srbal').asstring;
e.activeworkbook.sheets.item[1].cells[i,6].value:=zquery2.Fieldbyname('harakteristica').asstring;
zquery2.Next;
end;
i:=i+1;
e.activeworkbook.sheets.item[1].range['a'+inttostr(i)].select;
e.activeworkbook.sheets.item[1].paste;
e.activeworkbook.sheets.item[1].range['a'+inttostr(i)+':e'+inttostr(i)].clearcontents;
e.activeworkbook.sheets.item[1].cells[i,6].value:='Количество';
e.activeworkbook.sheets.item[1].cells[i,7].formula:='=counta(r4c1:r'+inttostr(i-1)+'c1)';
e.activeworkbook.sheets.item[1].range['a'+inttostr(i)+':g'+inttostr(i)].interior.colorindex:=16;
e.visible:=true;
end;
//код для списку по всім учням у Word
procedure tform1.spisok;
var r,c,p:integer;
begin
try
w:=getactiveoleobject('word.application');
except
w:=createoleobject('word.application');
end;
w.documents.add(extractfilepath(application.Exename)+'shablon\vse ucheniki.dot');
zquery2.first;
r:=0;
p:=0;
while not zquery2.Eof do
begin
w.activedocument.tables.item(1).rows.add;
r:=r+1;
w.activedocument.tables.item(1).cell(r+1,1).range.text:=inttostr(r);
w.activedocument.tables.item(1).cell(r+1,2).range.text:=zquery2.Fieldbyname('familia').asstring;
w.activedocument.tables.item(1).cell(r+1,3).range.text:=zquery2.Fieldbyname('imya').asstring;
w.activedocument.tables.item(1).cell(r+1,4).range.text:=zquery2.Fieldbyname('otch').asstring;
w.activedocument.tables.item(1).cell(r+1,5).range.text:=zquery2.Fieldbyname('srbal').asstring; w.activedocument.tables.item(1).cell(r+1,6).range.text:=zquery2.Fieldbyname('harakteristica').asstring;
if zquery2.Fieldbyname('foto').Asstring <>'' then
begin
p:=p+1;
tblobfield(zquery2.Fieldbyname('foto')).savetofile(extractfilepath(application.Exename)+'pict'+inttostr(p)); w.activedocument.tables.item(1).cell(r+1,7).range.inlineshapes.Addpicture(Filename:=extractfilepath(application.exename)+'pict'+inttostr(p), Linktofile:=False,Savewithdocument:=True);
w.activedocument.Inlineshapes.item(p).width:=50;
w.activedocument.Inlineshapes.item(p).height:=60;
deletefile(extractfilepath(application.exename)+'pict'+inttostr(p));
end;
zquery2.Next;
end;
zquery2.Active:=false;
zquery2.SQL.clear;
if n=1 then
zquery2.sql.add('select count(shifr) as kolvo from podchin')
else
zquery2.sql.add('select count(shifr) as kolvo from podchin where '+s);
zquery2.Active:=true;
w.activedocument.tables.item(1).rows.add;
r:=w.activedocument.tables.item(1).rows.count;
c:=w.activedocument.tables.item(1).columns.count;
w.activedocument.tables.item(1).cell(r,c-1).range.text:='Всего учеников:';
w.activedocument.tables.item(1).cell(r,c).range.text:=zquery2.Fieldbyname('kolvo').asstring;
w.activedocument.tables.item(1).rows.item(r).shading.backgroundpatterncolorindex:=16;
w.activedocument.saveas(extractfilepath(application.Exename)+'output\vse ucheniki.doc');
w.visible:=true;
end;
//код процедури для підрахунку загальних данних(інформаційна панель)
procedure tform1.schet;
begin
zquery1.Active:=false;;
zquery1.sql.clear;
zquery1.sql.add('select count(shifr) as kolvo from podchin');
zquery1.Active:=true;
label1.Caption:='Общее число учеников: '+vartostr(zquery1.fieldbyname('kolvo').Value);
zquery1.Active:=false;
zquery1.sql.clear;
if ztable1.fieldbyname('shifr').asstring<>'' then
zquery1.sql.add('select count(shifr) as kolvo, round(max(srbal),2) as maxbal, round(min(srbal),2) as minbal, round(avg(srbal),2) as sredbal from podchin where shifr='+ztable1.fieldbyname('shifr').asstring)
else
zquery1.sql.add('select count(shifr) as kolvo, round(max(srbal),2) as maxbal, round(min(srbal),2) as minbal, round(avg(srbal),2) as sredbal from podchin where shifr=124578');
zquery1.Active:=true;
label3.Caption:='Число учеников в классе: '+vartostr(zquery1.fieldbyname('kolvo').Value);
label2.Caption:='Общий максимальный балл в классе: '+vartostr(zquery1.fieldbyname('maxbal').Value);
label5.Caption:='Общий минимальный балл в классе: '+vartostr(zquery1.fieldbyname('minbal').Value);
label4.Caption:='Общий средний балл в классе: '+vartostr(zquery1.fieldbyname('sredbal').Value);
end;
//код для параметрів підключення
procedure TForm1.FormCreate(Sender: TObject);
begin
try
zconnection1.connected:=false;
zconnection1.user:=user;
zconnection1.password:=password;
zconnection1.hostname:=server;
ztable1.active:=true;
ztable2.active:=true;
Connect:=true;
except
application.messagebox('Параметры подключения заданы не верно','Ошибка подключения',mb_ok+mb_iconstop);
connect:=false;
end;
schet;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ztable1.active:=false;
ztable2.active:=false;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
application.Terminate;
end;
//код при натиску на 1й кнопці(додавання до головної форми)
procedure TForm1.Button1Click(Sender: TObject);
begin
ztable1.append;
form3:=tform3.create(nil);
form3.showmodal;
form3.Repaint;
end;
//код при натиску на 3й кнопці(додавання до підлеглої форми)
procedure TForm1.Button3Click(Sender: TObject);
begin
ztable2.append;
form4:=tform4.create(nil);
form4.showmodal;
form4.Repaint;
end;
//код при натиску на 2й кнопці(видалення їз головної форми)
procedure TForm1.Button2Click(Sender: TObject);
begin
if ztable1.Recordcount >0 then
if application.messagebox ('Вилучити запис?','Запит на видалення',mb_yesno+ mb_iconquestion)=idyes then
ztable1.delete;
end;
//код при натиску на 4й кнопці(видалення їз підлеглої форми)
procedure TForm1.Button4Click(Sender: TObject);
begin
if ztable2.Recordcount >0 then
if application.messagebox ('Вилучити запис?','Запит на видалення',mb_yesno+ mb_iconquestion)=idyes then
ztable2.delete;
end;
procedure TForm1.ZTable1AfterPost(DataSet: TDataSet);
begin
ztable2.Refresh;
end;
//код при натиску на 5й кнопці(розгорнути)
procedure TForm1.Button5Click(Sender: TObject);
begin
while height<500 do
begin
height:=height+5;
top:=(screen.height-height) div 2;
end;
edit1.Setfocus;
end;
procedure TForm1.DBGrid2DblClick(Sender: TObject);
begin
ztable2.edit;
form4:=tform4.create(nil);
form4.showmodal;
form4.Repaint;
end;
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ztable1.edit;
form3:=tform3.create(nil);
form3.showmodal;
form3.Repaint;
end;
procedure TForm1.DBImage1DblClick(Sender: TObject);
begin
ztable2.edit;
if openpicturedialog1.Execute=true then
tblobfield(form1.ztable2.fieldbyname('foto')).loadfromfile(openpicturedialog1.Filename);
ztable2.post;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
schet;
end;
procedure TForm1.ZQuery1AfterPost(DataSet: TDataSet);
begin
schet;
end;
procedure TForm1.ZQuery1BeforeDelete(DataSet: TDataSet);
begin
schet;
end;
//код при натиску на 6й кнопці(відібрання даних для пошуку)
procedure TForm1.Button6Click(Sender: TObject);
begin
s:='';
if edit1.text<>'' then
s:=s+'shifr ='+edit1.Text;
if edit2.text<>'' then
if s<>'' then
s:=s+' and familia like '''+edit2.Text+'%'''
else
s:=s+'familia like '''+edit2.Text+'%''';
if edit3.text<>'' then
if s<>'' then
s:=s+' and imya like '''+edit3.Text+'%'''
else
s:=s+'imya like '''+edit3.Text+'%''';
if edit4.text<>'' then
if s<>'' then
s:=s+' and otch like '''+edit4.Text+'%'''
else
s:=s+'otch like '''+edit4.Text+'%''';
if edit5.text<>'' then
if s<>'' then
s:=s+' and srbal >= '+edit5.Text
else
s:=s+'srbal >= '+edit5.Text;
if edit6.text<>'' then
if s<>'' then
s:=s+' and srbal <= '+edit6.Text
else
s:=s+'srbal <= '+edit6.Text;
if s<>'' then
begin
zquery2.Active:=false;
zquery2.SQL.clear;
zquery2.sql.add('select * from podchin where '+s);
zquery2.Active:=true;
dbgrid2.datasource:=datasource3;
end;
end;
//код при натиску на 7й кнопці(очистка даних після пошуку)
procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
edit1.Setfocus;
dbgrid2.datasource:=datasource2;
end;
//код при натиску на 8й кнопці(згорнути)
procedure TForm1.Button8Click(Sender: TObject);
begin
Button7Click(Sender);
while height>360 do
begin
height:=height-5;
top:=(screen.height-height) div 2; end;
dbgrid2.Setfocus; end;
procedure TForm1.ZTable1AfterScroll(DataSet: TDataSet);
begin schet; end;
//код при натиску на 1й кнопці меню(всі дані, форд)
procedure TForm1.N1Click(Sender: TObject);
begin
zquery2.active:=false;
zquery2.sql.clear;
zquery2.sql.add('select * from podchin');
zquery2.active:=true;
spisok(1); end;
//код при натиску на 9й кнопці(розгортання меню для звітів)
procedure TForm1.Button9Click(Sender: TObject);
begin
popupmenu1.popup(form1.left+button9.left,form1.top+button9.top+button9.height); end;
//код при натиску на 2й кнопці меню(карточня учня, Word)
procedure TForm1.N2Click(Sender: TObject);
begin begin try
w:=getactiveoleobject('word.application'); except
w:=createoleobject('word.application'); end;
w.documents.add(extractfilepath(application.exename)+'shablon\kartochka uchenica.dot');
w.selection.find.text:='#shifr#';
w.selection.find.replacement.text:=ztable2.fieldbyname('shifr').value;
w.selection.find.execute(replace:=2);
w.selection.find.text:='#familia#';
w.selection.find.replacement.text:=ztable2.fieldbyname('familia').value;
w.selection.find.execute(replace:=2);
w.selection.find.text:='#imya#';
w.selection.find.replacement.text:=ztable2.fieldbyname('imya').value;
w.selection.find.execute(replace:=2);
w.selection.find.text:='#otch#';
w.selection.find.replacement.text:=ztable2.fieldbyname('otch').value;
w.selection.find.execute(replace:=2);
w.selection.find.text:='#harakteristica#';
w.selection.find.replacement.text:=ztable2.fieldbyname('harakteristica').value;
w.selection.find.execute(replace:=2);
w.selection.find.text:='#srbal#';
w.selection.find.replacement.text:=ztable2.fieldbyname('srbal').value;
w.selection.find.execute(replace:=2);
w.visible:=true; end; end;
//код при натиску на 1й кнопці меню(всі дані, Excel)
procedure TForm1.Excel1Click(Sender: TObject);
begin
zquery2.Active:=false;
zquery2.SQL.clear;
zquery2.sql.add('select * from podchin');
zquery2.Active:=true;
spisok1; end;
//код при натиску на 2й кнопці меню(картка учня, Excel)
procedure TForm1.Excel2Click(Sender: TObject);
begin try
e:=getactiveoleobject('excel.application');
except
e:=createoleobject('excel.application'); end;
e.workbooks.add(extractfilepath(application.Exename)+'shablon\kartochka uchenica.xlt');
e.activeworkbook.sheets.item[1].name:=ztable2.Fieldbyname('familia').asstring;
replacement:=ztable2.Fieldbyname('shifr').asstring);
e.activeworkbook.sheets.item[1].cells.replace(what:='#familia#', replacement:=ztable2.Fieldbyname('familia').asstring);
e.activeworkbook.sheets.item[1].cells.replace(what:='#imya#', replacement:=ztable2.Fieldbyname('imya').asstring);
e.activeworkbook.sheets.item[1].cells.replace(what:='#otch#', replacement:=ztable2.Fieldbyname('otch').asstring);
e.activeworkbook.sheets.item[1].cells.replace(what:='#harakteristica#', replacement:=ztable2.Fieldbyname('harakteristica').asstring);
e.activeworkbook.sheets.item[1].cells.replace(what:='#srbal#', replacement:=ztable2.Fieldbyname('srbal').asstring);
e.visible:=true;
end;
//код при натиску на 10й кнопці меню(файл допомоги)
procedure TForm1.Button10Click(Sender: TObject);
begin
application.helpcommand(help_contents, 0);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_f1 then
application.helpcontext(screen.activecontrol.helpcontext);
end;
end.
Код форми додавання до головної таблиці:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls;
type
TForm3 = class(TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Label3: TLabel;
DBEdit3: TDBEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
//код для першої кнопки(зберегти)
procedure TForm3.Button1Click(Sender: TObject);
begin
if (dbedit1.text<>'') and (dbedit2.text<>'') then
begin
form1.ztable1.post;
close;
end
else
begin
application.messagebox('Заповніть всі поля даними!','Помилка введення!',mb_ok+mb_iconstop);
dbedit1.Setfocus;
end;
end;
//код для другої кнопки(відмінити)
procedure TForm3.Button2Click(Sender: TObject);
begin
form1.ztable1.cancel;
close; end; end.
Код форми додавання до підлеглої таблиці:
unit Unit4
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DBCtrls, Mask, ExtDlgs, db;
type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBImage1: TDBImage;
DBRichEdit1: TDBRichEdit;
Label5: TLabel;
Button1: TButton;
Button2: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Label6: TLabel;
DBEdit5: TDBEdit;
procedure DBImage1DblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1;
//код для натиску на компоненті для додавання фото учня
procedure TForm4.DBImage1DblClick(Sender: TObject);
begin
if openpicturedialog1.Execute=true then
tblobfield(form1.ztable2.fieldbyname('foto')).loadfromfile(openpicturedialog1.Filename);
end;
//код для першої кнопки(зберегти)
procedure TForm4.Button1Click(Sender: TObject);
begin
if dbedit1.text<>'' then
begin
form1.ztable2.post;
close;
end
else
begin
application.messagebox('Код товару не може бути порожнім','Помилка введення!',mb_ok+mb_iconstop);
dbedit1.Setfocus;
end;
end;
//код для другої кнопки(відмінити)
procedure TForm4.Button2Click(Sender: TObject);
begin
form1.ztable2.cancel;
close;
end;
end 4 Тестування
Для перевірки роботи програми виконаємо декілька тестових завдань.
1. Відкриємо головну форму та натиснемо на кнопку "Добавить", у списку виберемо "Добавить класс", у вікні, що відкрилося, введемо такі дані, як показані на рис.9, та натиснемо кнопку "Сохранить":
Рисунок 9 - Додавання до головної форми Перевіримо, що дані збереглися в головній таблиці (рис.10):
Рисунок 10 - Перевірка
2. Відкриємо головну форму та натиснемо на кнопку "Добавить", у списку виберемо "Добавить ученика", у вікні, що відкрилося, введемо такі дані, як показані на рис.11, та натиснемо кнопку "Сохранить":
Рисунок 11 - Додавання до головної форми Перевіримо, що дані збереглися в підлеглій таблиці (рис.12):
Рисунок 12 - Перевірка
2. Відкриємо головну форму та вводимо критерії, наприклад, середній бал від 4 до 5 (рис.13):
Рисунок 13 - Пошук
3. Протестуємо на формі пошуку кнопку "Список".
Виберемо пункт меню "Все ученики(WORD)", відкриється вікно MS WORD з усіма даними із БД (див. Додаток А).
Виберемо пункт меню "Карточка ученика (WORD)", відкриється вікно MS WORD з карточкою учня із БД (див. Додаток Б).
Виберемо пункт меню "Все ученики(EXCEL)", відкриється вікно MS EXCEL з усіма даними із БД (див. Додаток В).
Виберемо пункт меню "Карточка ученика(EXCEL)", відкриється вікно MS EXCEL з карточкою учня із БД (див. Додаток Г).
5 Супровід
5.1 Посібник користувача
Після запуску програми на головній формі "Директор школи" розміщені таблиці. Зліва розміщена головна таблиця, а праворуч - підлегла. Для кожного учня відображається праворуч від таблиці фото. Головну та підлеглу таблиці можна редагувати за допомогою подвійного клацання по запису.
За допомогою кнопки "Добавить" можна додати запис як в головну, так і в підлеглу таблиці. При натисканні на кнопку "Добавить" відкривається форма для додавання запису. В цю форму можна ввести необхідні дані, при цьому в числові поля можна додавати тільки числові дані, а малюнок тільки формату *.bmp. Щоб додати малюнок натисніть на вікні два рази, вибравши малюнок він автоматично додається. Кнопка "Сохранить" - зберігає дані в таблицю, а кнопка "Отменить" - скасовує додавання і виходить із форми.
За допомогою кнопки "Удалить" можна видалити запис як із головної, так і з підлеглої таблиці. При натисканні цієї кнопки з'явиться повідомлення, в якому можна скасувати видалення або підтвердити.
За допомогою кнопки "Справка" можна довідатися, як користуватися програмою.
При натисканні на кнопку "Развернуть" відкриється частина форми, на якій задаються параметри фільтрації для пошуку даних. Після завдання параметра натисніть на кнопку "Отобрать" і відібрані дані відобразяться в рядку таблиці. При натисканні на кнопку "Очистить" поля фільтрації очищаються. Для виведення документів на друк використовуйте кнопку "Список". За допомогою цієї кнопки можна сформувати звіт в Word або Excel, залежно від вашого вибору буде запущений звіт з "Карточкою учня" або "Всіма учнями" (можна вибрати в контекстному меню).
На формі також відображається інформаційна панель, у якій відображається сумарна кількість записів, максимальна, мінімальна і середня кількість записів.
5.2 Посібник розробника
Для того щоб запустити проект треба спочатку встановити на комп'ютер програму MySQL Server 5.1. Створюємо адміністративний запис, який має ім'я, наприклад, - root, пароль - 111 і сервер - localhost.
Далі встановлюємо на комп'ютер програму "Директор школы" за допомогою інсталятору Setup.exe. Після завершення встановлення програми на робочому столі з'явиться ярлик запуску програми. У меню "Пуск" з'являться ярлики запуску та деінсталятору програми.
Заключення
Під час виконання курсової роботи я розробила інформаційну систему "Директор школи".
Оволоділа навиками роботи з MySQL Server 5.1, розробкою баз даних та таблиць, закріпила знання з мови побудови запитів SQL.
На практиці ознайомилась з засобами створювання звітів з використанням Microsoft Office Word та Microsoft Office Excel.
Програма MySQL Server 5.1 є відмінним інструментом для створення баз даних, а Borland Delphi 7 воістину відмінне середовище розробки додатків будь-якої складності, що відрізняється зручним інтерфейсом, різноманітністю компонентів, логічною мовою.
Система пройшла тестування, всі помилки були виправлені, програма готова до використання. Список літератури
1 Конспект лекцій по предмету "Інструментальні засоби візуального програмування"
2 Архангельский А. Я. Программирование в Delphi 7: Бином-Пресс, 2003
3 Архангельский А. Я. Работа с локальными базами данных в Delphi 5: Бином, 2000 4 Аткинсон Л. MySQL. Библиотека профессионала: Диалектика, 2002 5 Понамарев В. Базы данных в Delphi 7. Самоучитель: Питер, 2003
6. Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. - СПб: БХВ-Петербург, 2003. - 288 с.: ил. Додатки
Документ
Категория
Рефераты
Просмотров
104
Размер файла
1 242 Кб
Теги
poyasnitelnaya, zapiska, 125
1/--страниц
Пожаловаться на содержимое документа