Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_Abdrahmanov_Marat.docx
Скачиваний:
28
Добавлен:
17.12.2018
Размер:
938.82 Кб
Скачать

2 Реализация практического задания

2.1 Описание структуры базы данных

База состоит из следующих таблиц:

  • knigi – список книг;

  • razdely - спиcок разделов библиотеки;

2.2 Блок-схема реализации поставленной задачи

Программа представляет собой несколько форм в приложении.

  1. Zastavka- заставка;

  2. Main – главное окно программы;

  3. Prosmotr – окно для просмотра информации о книге;

  4. Redact – окно для редактирования информации о книге;

  5. Sozd – окно для создании записи о книге;

  6. Rubrika – окно редактирования рубрик библиотеки;

  7. Vydacha – ввод данных о выдаче книги;

  8. Spravka – окно «Cправка»;

  9. About – окно «О программе»;

  10. Inventar – окно инвентаризации.

Рис.3.1 - Блок-схема реализации

Основной алгоритм это работа с поиском в базе данных, данный алгоритм указан на рис.3.2.

Рис.3.2. - Основной алгоритм.

2.3 Техническое описание программы

Разработка приложения осуществлялась на ПК на базе процессора AMD Athlon(tn) 64 2,01 ГГц, 1 ГБ ОЗУ, NVIDIA GeForce7600GS 1 ГБ под управлением операционной системы Windows XP Домашняя базовая. В качестве RAD-системы использовалась среда С++ Builderv6.0 от фирмы Borland. База данных для данного приложения была создана в Microsoft Access разработки фирмы Microsoft. База данных содержит две таблицы.

2.4 Основные компоненты приложения

Для запуска приложения необходимо запустить файл Мир Книг.exe. Появиться заставка (рис.1)

Рисунок 1. Заставка

После заставки появится главная форма программы (рис. 2).

Рис.2 – Главная форма

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

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

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

Чтобы отредактировать запись в таблице необходимо нажать на соответствующую кнопку “Редактировать”. После этого на панели в полях отобразятся данные, которые можно изменить. После изменения данных для сохранения необходимо нажать на кнопку “Сохранить”. Для отмены изменений необходимо нажать на кнопку “Закрыть” (рис. 3).

Рисунок 3. Редактирование данных.

Для инвентаризации библиотеки нажмите кнопку "Инвентаризация". в открывшемся окне отредактируйте значения столбцов "В наличии" и "Кому отдан". Изменения сохраняются автоматически.

В верхней левой части экрана находится ”Справка”. При выборе строки “Справка”, появится новое окно с руководством к программному продукту. При нажатии на кнопку “ОК”, данное окно закроется(рис.5).

Компоненты GroupBox и RadioGroup, с размещенеием в них компонентов Label, Edit, RadioButton, Button

Компонент GroupBox, RadioGroup служат для создания группы управляющих элементов.

КомпонентLabel - это просто строка текста, оформленная как графический компонент для размещения в контейнере.

КомпонентEdit - однострочный редактор (строка), предназначенный для ввода пользователем некоторых данных. Содержимое строки является значением свойства Text.

Компонент Button — это кнопка стандартного для данной графической системы вида с надписью, умеющая реагировать на щелчок кнопки мыши.

Компонент RadioButton служит для выбора пользователем одного из многих предложений. Причем, когда пользователь выбирает какой-то пункт, то остальные переключатели в RadioGroup автоматически выключаются.

Листинг приложения.

1)Заставка.

TZastavka *Zastavka;

//---------------------------------------------------------------------------

__fastcall TZastavka::TZastavka(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TZastavka::Timer1Timer(TObject *Sender)

{

Main->Visible=true;

Zastavka->Visible=false;

}

//---------------------------------------------------------------------------

2)Меню.

#include <vcl.h>

#pragma hdrstop

#include<DateUtils.hpp>

#include<dstring.h>

#include "Umain.h"

#include "USpravka.h"

#include "UAbout.h"

#include "UZastavka.h"

#include "USozd.h"

#include "URedact.h"

#include "UProsmotr.h"

#include "URubrika.h"

#include "UVydacha.h"

#include "UInventar.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TMain *Main;

TDateTime tt;

AnsiString poisk;

filtr(AnsiString field)

{

if(Main->RadioGroup1->ItemIndex==0)

Main->ADOKnigi->SQL->Text="Select * From knigi Where nakichie=true ";

if(Main->RadioGroup1->ItemIndex==1)

Main->ADOKnigi->SQL->Text="Select * From knigi Where nakichie=false ";

if(Main->RadioGroup1->ItemIndex==2)

Main->ADOKnigi->SQL->Text="Select * From knigi Where kod>0 ";

if((Main->Edit1->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND nazvanie LIKE \"%"+Main->Edit1->Text+"%\"";

if((Main->Edit2->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND avtory LIKE \"%"+Main->Edit2->Text+"%\"";

if((Main->DBLookupComboBox2->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND razdel='"+Main->DBLookupComboBox2->Text+"'";

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+"ORDER by "+field;

Main->ADOKnigi->ExecSQL();

Main->ADOKnigi->Active=true;

}

//---------------------------------------------------------------------------

__fastcall TMain::TMain(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TMain::FormCreate(TObject *Sender)

{

ADOConnection1->Connected=true;

ADOKnigi->SQL->Text="Select * From knigi Where nakichie=true Order by nazvanie";

ADOKnigi->Active=true;

ADORazdel->Active=true;

RadioGroup1->ItemIndex=0;

Button1->Visible=true;

Button2->Visible=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::N2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TMain::N4Click(TObject *Sender)

{

Application->CreateForm(__classid(TSpravka), &Spravka);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::N5Click(TObject *Sender)

{

Application->CreateForm(__classid(TAbout), &About);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::FormClose(TObject *Sender, TCloseAction &Action)

{

Zastavka->Close();

}

//---------------------------------------------------------------------------

void __fastcall TMain::N6Click(TObject *Sender)

{

Application->CreateForm(__classid(TSozd), &Sozd);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::N7Click(TObject *Sender)

{

Application->CreateForm(__classid(TRedact), &Redact);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn1Click(TObject *Sender)

{

Application->CreateForm(__classid(TSozd), &Sozd);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn2Click(TObject *Sender)

{

Application->CreateForm(__classid(TRedact), &Redact);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn3Click(TObject *Sender)

{

if(Application->MessageBox("Удалить запись?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)

{

ADOKnigi->Delete();

}

}

//---------------------------------------------------------------------------

void __fastcall TMain::N8Click(TObject *Sender)

{

if(Application->MessageBox("Удалить запись?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)

{

ADOKnigi->Delete();

}

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn4Click(TObject *Sender)

{

Application->CreateForm(__classid(TProsmotr), &Prosmotr);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::RadioGroup1Click(TObject *Sender)

{

if(RadioGroup1->ItemIndex==0) // в наличии

{ ADOKnigi->SQL->Text="Select * From knigi Where nakichie=true Order by nazvanie";

Button1->Visible=true;

Button2->Visible=false;

}

if(RadioGroup1->ItemIndex==1)

{ ADOKnigi->SQL->Text="Select * From knigi Where nakichie=false Order by nazvanie";

Button1->Visible=false;

Button2->Visible=true;

}

if(RadioGroup1->ItemIndex==2)

{ ADOKnigi->SQL->Text="Select * From knigi Order by nazvanie";

Button1->Visible=false;

Button2->Visible=false;

}

ADOKnigi->ExecSQL();

ADOKnigi->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TMain::N10Click(TObject *Sender)

{

Application->CreateForm(__classid(TProsmotr), &Prosmotr);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn5Click(TObject *Sender)

{

/*if(RadioGroup1->ItemIndex==0)

ADOKnigi->SQL->Text="Select * From knigi Where nakichie=true ";

if(RadioGroup1->ItemIndex==1)

ADOKnigi->SQL->Text="Select * From knigi Where nakichie=false ";

if(RadioGroup1->ItemIndex==2)

ADOKnigi->SQL->Text="Select * From knigi Where kod>0 ";

if((Edit1->Text).Length()!=0)

ADOKnigi->SQL->Text=ADOKnigi->SQL->Text+" AND nazvanie LIKE \"%"+Edit1->Text+"%\"";

if((Edit2->Text).Length()!=0)

ADOKnigi->SQL->Text=ADOKnigi->SQL->Text+" AND avtory LIKE \"%"+Edit2->Text+"%\"";

if((DBLookupComboBox2->Text).Length()!=0)

ADOKnigi->SQL->Text=ADOKnigi->SQL->Text+" AND razdel='"+DBLookupComboBox2->Text+"'";

ADOKnigi->SQL->Text=ADOKnigi->SQL->Text+"ORDER by nazvanie";

ADOKnigi->ExecSQL();

ADOKnigi->Active=true; */

filtr("nazvanie");

}

//---------------------------------------------------------------------------

void __fastcall TMain::DBGrid1TitleClick(TColumn *Column)

{

filtr(Column->FieldName);

//ADOKnigi->IndexFieldNames = Column->FieldName;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn6Click(TObject *Sender)

{

Edit1->Text="";

Edit2->Text="";

ADORazdel->Active=false;

filtr("nazvanie");

ADORazdel->Active=true;

}

//---------------------------------------------------------------------------

void __fastcall TMain::Hfpltks1Click(TObject *Sender)

{

Application->CreateForm(__classid(TRubrika), &Rubrika);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::Button2Click(TObject *Sender)

{

if(Application->MessageBox("Создать запись о возврате книги?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)

{

ADOKnigi->Edit();

ADOKniginakichie->Value=true;

ADOKnigikomu_otdan->Value="";

ADOKnigi->Post();

filtr("nazvanie");

}

}

//---------------------------------------------------------------------------

void __fastcall TMain::Button1Click(TObject *Sender)

{

Application->CreateForm(__classid(TVydacha), &Vydacha);

Main->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TMain::BitBtn7Click(TObject *Sender)

{

RadioGroup1->ItemIndex=2;

Application->CreateForm(__classid(TInventar), &Inventar);

Main->Enabled=false; }

3) Просмотр.

TProsmotr *Prosmotr;

//---------------------------------------------------------------------------

__fastcall TProsmotr::TProsmotr(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TProsmotr::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TProsmotr::BitBtn2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

4)Редактирование.

TRedact *Redact;

//---------------------------------------------------------------------------

__fastcall TRedact::TRedact(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TRedact::FormCreate(TObject *Sender)

{

Main->ADOKnigi->Edit();

}

//---------------------------------------------------------------------------

void __fastcall TRedact::BitBtn1Click(TObject *Sender)

{

if((DBEdit1->Text).Length()!=0)

{

if(Application->MessageBox("Сохранить изменения?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)!=IDNO)

{ Main->ADOKnigi->Post();

BitBtn1->Enabled=false;

}

}

}

//---------------------------------------------------------------------------

void __fastcall TRedact::BitBtn2Click(TObject *Sender)

{

Main->ADOKnigi->Cancel();

Close();

}

//---------------------------------------------------------------------------

void __fastcall TRedact::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true; }

5)Создание.

TSozd *Sozd;

//---------------------------------------------------------------------------

__fastcall TSozd::TSozd(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TSozd::FormCreate(TObject *Sender)

{

Main->ADOKnigi->Insert();

}

//---------------------------------------------------------------------------

void __fastcall TSozd::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->ADOKnigi->Cancel();

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TSozd::BitBtn2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TSozd::BitBtn1Click(TObject *Sender)

{

if((DBEdit1->Text).Length()!=0)

{

if(Application->MessageBox("Сохранить данные?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)

{

Main->ADOKnigi->Post();

}

}

}

//---------------------------------------------------------------------------

6). Редактирование Рубрик.

TRubrika *Rubrika;

//---------------------------------------------------------------------------

__fastcall TRubrika::TRubrika(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TRubrika::BitBtn1Click(TObject *Sender)

{

Main->ADORazdel->Insert();

DBEdit1->Text=Edit1->Text;

Main->ADORazdel->Post();

}

//---------------------------------------------------------------------------

void __fastcall TRubrika::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TRubrika::BitBtn2Click(TObject *Sender)

{

if(Application->MessageBox("Удалить запись?","Подтверждение",MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)

Main->ADORazdel->Delete();

}

//---------------------------------------------------------------------------

void __fastcall TRubrika::FormCreate(TObject *Sender)

{

}

//---------------------------------------------------------------------------

7)Выдача

TVydacha *Vydacha;

filtr(AnsiString field)

{

if(Main->RadioGroup1->ItemIndex==0)

Main->ADOKnigi->SQL->Text="Select * From knigi Where nakichie=true ";

if(Main->RadioGroup1->ItemIndex==1)

Main->ADOKnigi->SQL->Text="Select * From knigi Where nakichie=false ";

if(Main->RadioGroup1->ItemIndex==2)

Main->ADOKnigi->SQL->Text="Select * From knigi Where kod>0 ";

if((Main->Edit1->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND nazvanie LIKE \"%"+Main->Edit1->Text+"%\"";

if((Main->Edit2->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND avtory LIKE \"%"+Main->Edit2->Text+"%\"";

if((Main->DBLookupComboBox2->Text).Length()!=0)

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+" AND razdel='"+Main->DBLookupComboBox2->Text+"'";

Main->ADOKnigi->SQL->Text=Main->ADOKnigi->SQL->Text+"ORDER by "+field;

Main->ADOKnigi->ExecSQL();

Main->ADOKnigi->Active=true;

}

//---------------------------------------------------------------------------

__fastcall TVydacha::TVydacha(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TVydacha::FormCreate(TObject *Sender)

{

Main->ADOKnigi->Edit();

}

//---------------------------------------------------------------------------

void __fastcall TVydacha::BitBtn1Click(TObject *Sender)

{

Main->ADOKnigi->Edit();

Main->ADOKniginakichie->Value=false;

Main->ADOKnigi->Post();

filtr("nazvanie");

Close();

}

//---------------------------------------------------------------------------

void __fastcall TVydacha::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->ADOKnigi->Cancel();

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TVydacha::BitBtn2Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

8)Справка.

TSpravka *Spravka;

//---------------------------------------------------------------------------

__fastcall TSpravka::TSpravka(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TSpravka::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TSpravka::BitBtn1Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TSpravka::FormCreate(TObject *Sender)

{

}

//---------------------------------------------------------------------------

9)О программе.

TAbout *About;

//---------------------------------------------------------------------------

__fastcall TAbout::TAbout(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TAbout::OKClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TAbout::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TAbout::BtnOKClick(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

void __fastcall TAbout::FormShow(TObject *Sender)

{

BtnOK->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TAbout::FormCreate(TObject *Sender)

{

}

//---------------------------------------------------------------------------

10) TInventar *Inventar;

//---------------------------------------------------------------------------

__fastcall TInventar::TInventar(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TInventar::FormClose(TObject *Sender, TCloseAction &Action)

{

Main->Enabled=true;

}

//---------------------------------------------------------------------------

void __fastcall TInventar::DBGrid1KeyPress(TObject *Sender, char &Key)

{

if(DBGrid1->SelectedIndex==2)

Key=0;

}

//---------------------------------------------------------------------------

void __fastcall TInventar::FormCreate(TObject *Sender)

{

}

//---------------------------------------------------------------------------

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]