Министерство народного образования и науки Республики Беларусь Белорусская государственная политехническая академия Факультет роботов и робототехнических систем Кафедра ”ПОВТ и АС” КУРСОВАЯ РАБОТА по дисциплине: ”Теория вычислительных процессов и структур” на тему: “Работа с базами данных” Выполнил: ст. гр. 307217 Погосский К. В. Принял: ст. пр. Михалевич А. П. Минск 2000 Содержание Стр. 1. Краткое введение в базы данных 3 2. Краткое техническое описание программы 4 3. Инструкция пользователю 5 4. Заключение 5. Литература Приложение 1 “Текст программы” Приложение 2 “Структура таблиц” Краткое введение в базы данных
Базой данных называется некоторый набор таблиц, связанных между собой определенной связью для выполнения различного рода задач, спектр которых охватывает широкие стороны нашего быта. В настоящее время, время информационных технологий использование систем управления базами данных становится наиболее проблематично из-за увеличения требований к ней. Специфика применения баз данных очень велика и сложна по своей структуре. Исходя из этого можно судить о требуемой мощности программного обеспечения.
Следует отметить повышенный спрос на программное обеспечение, позволяющее создавать полноправные системы управления базами данных. Из огромного количества таких пакетов мне хотелось бы выделить продукт компании Borland International Inc. “Delphi”. Данная система программирования достаточна сильна по своей архитектуре. Помимо всего “Delphi” предоставляет нам довольно широкий набор компонентов, из которых, как из кирпичей, можно создать полноценную систему управления базой данных (СУБД).
Еще одной не мола важной особенностью “Delphi” является поддержка международного языка баз данных–SQL. Язык потерпел некоторый ряд видоизменений и в настоящее время представляет собой мощное ядро, упрощающее общение с наборами данных. SQL является языком запросов, который содержит минимальный, и вместе с тем достаточный набор операторов и представляет мощное средства навигации данными. Краткое техническое описание программы
Представленный программный продукт написан для современных 32-разрядных операционных систем, в число которых входит Windows 95, Windows 98, Windows NT.
Программа предназначена для ведения учета библиотечных книг, позволяет вести учет отсутствующих книг, просмотру и внесению новых поступлений, просмотру и поиску интересующих книг.
Программно реализован поиск необходимой книги по автору, названию книги, ее стилю и т. д. Интуитивный интерфейс и наличие всплывающих подсказок облегчают ее использование, позволяют в кратчайшие сроки освоить данный продукт. Программа полностью реализована с использованием запросов на языке SQL. Создание и заполнение таблиц производилось при помощи стандартных пакетов, таких как Database Desktop, SQL Explorer, PowerDesigner 6. Программа предусматривает внос информации без перечисленных пакетов а из специально оформленной формы (см. Приложение 1 модуль SecF. pas).
Таблицы прописаны при помощи BDE Administrator’а. Все необходимые таблицы объединены в алиас “MyDB”, что позволяет придать системе управления большую гибкость. Настоящая база данных имеет третью степень нормализации, что для данного проекта вполне допустимо. Инструкция пользователю
Сразу, после загрузки программы пользователю предоставляется довольно обширная информация о текущей книге. (автор, наименование книги, ее жанр, а для более удобного поиска на стилаже количество страниц и тип обложки). Книга является текущей, если на ней стоит курсор (выделенная часть строки). Причем, каждая строка это новая книга в списке.
Программа предусматривает вхождение произведений в одну книгу (например, состав произведений в сборниках, наименование глав книги и т. д. ). Для просмотра этой информации достаточно нажать на кнопку“Детально”и перед пользователем открывается дополнительная секция формы, не видная до этого. Повторное нажатие снова скрывает полное описание для лучшего восприятия информации для книги.
Для удобства поиска требуемой книги на главной форме предусмотрен широкий набор визуальных команд, которые автоматически преобразуются в SQL-запросы. К таким командам относятся“Упорядочить по фамилии (жанру, названию)”, “поиск по фамилии, по вхождению, по жанру”, а также некоторый набор нестандартных команд, которые появляются по выпадающему списку.
Если книга в данный момент отсутствует, на форме высвечивается информация. Если книга отсутствует, появляется возможность просмотра информации о ее местонахождении и времени отсутствия.
Программа позволяет вести учет отданных книг. Для этого достаточно нажать на кнопку“Одолжить” и внести необходимые данные.
Для внесения новой книги служит кнопка “Добавить”. Простая в использовании форма представлена в виде анкеты. Причем для внесения книги в список должны быть заполнены все графы (возможно не заполнение графы“Полное описание”когда книга одноименна). Заложен минимальный набор данных с клавиатуры. Это позволяет уменьшить шанс внесения ошибочных данных, и упрощает работу для конечного пользователя.
Для внесения изменений в базу данных (временное отсутствие книги, “новая книга”) необходимо иметь определенные права. Для этого программа предусматривает проверку прав, определенных паролем. При некорректном вводе пароля программа не даст внести изменения. Заключение
Программа тестирована на персональном компьютере Pentium II 333, 64 Mb ОЗУ в операционной системе Windows 98 и показала неплохие результаты при выполнении сложных запросов. Задержка на считывание, обработку, сортировку данных не значительна.
Программа вполне может использоваться в библиотеках города, на технических и производственных предприятиях. Литература
1. Фаронов В. В. “Delphi 4. 0 Учебный курс”. Изд. “Нолидж” 1998 г. 2. Фаронов В. В. Вводный курс в базы данных. Изд. “Нолидж”, 1998 г. 3. Введение в SQL. 4. Волков А. СУБД. Стандарты языка SQL. 2 номер 1997. MainBD. DB Number Short * Famili Alpha[15] Inic Alpha[2] Janr Alpha[10] Nalich Logical NameBok Alpha[50] Nalichie. DB Number Short * Fam Alpha[15] Ch Date SecondDB. DB Numero Short * Stron Short Obl Logical Spravka. DB Number Short * Opisanie Alpha[50] Vedenie. DB Numero Short DataUser Date NameUser Alpha[15] * - первичный ключ таблицы Приложение 1 unit MainF; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, Db, DBTables, ExtCtrls; type TForm1 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; DBEdit1: TDBEdit; DataSource2: TDataSource; Table2: TTable; Label1: TLabel; Label2: TLabel; Edit1: TEdit; GroupBox1: TGroupBox; Label3: TLabel; Button1: TButton; Button3: TButton; RadioGroup1: TRadioGroup; Query1: TQuery; Query1Number: TSmallintField; Query1Famili: TStringField; Query1Inic: TStringField; Query1Janr: TStringField; Query1Nalich: TBooleanField; Query1NameBook: TStringField; DataSource3: TDataSource; Query2: TQuery; Button5: TButton; DBGrid2: TDBGrid; Table2Obl: TBooleanField; Table2Numero: TSmallintField; Table2Stron: TSmallintField; Query2Opisanie: TStringField; Button4: TButton; Button2: TButton; Button6: TButton; GroupBox2: TGroupBox; Label4: TLabel; Button7: TButton; Label5: TLabel; Edit2: TEdit; Button8: TButton; ComboBox1: TComboBox; Button9: TButton; DBLookupComboBox1: TEdit; Label6: TLabel; Button10: TButton; ComboBox2: TComboBox; procedure RadioGroup1Click(Sender: TObject); procedure Query1AfterScroll(DataSet: TDataSet); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; St : String; Ch : Boolean; YYY : Boolean; Snum : String; Recponse: String; Const pass='Andrey'; implementation uses SecF, NetuF, Unit5, Unit3, Avtor; {$R *. DFM} procedure TForm1. RadioGroup1Click(Sender: TObject); begin Case RadioGroup1. ItemIndex of
0: St: ='Select * from MainDB' + #13 + #10 + 'Order by Famili'; 1: St: ='Select * from MainDB' + #13 + #10 + 'Order by Janr'; 2: St: ='Select * from MainDB' + #13 + #10 + 'Order by NameBook'; end; Button4Click(RadioGroup1); end; procedure TForm1. Query1AfterScroll(DataSet: TDataSet); begin Label3. Caption: ='В наличии'; Button3. Visible: =False; Edit1. Text: ='Твердая'; Query2. Close; Query2. Sql. Clear; Query2. Sql. Add('Select * from Spravka' + #13 + #10 + 'Where Number=' + IntToStr(Query1Number. Value)); Query2. Open; If not Query1Nalich. Value Then begin Label3. Caption: ='Отсуствует'; Button3. Visible: =True; end; If not Table2Obl. Value Then begin Edit1. Text: ='Мягкая'; end; end; procedure TForm1. Button5Click(Sender: TObject); begin Ch: = Not Ch; If Ch then begin Button5. Caption: =' Form1. Height: =436; end; If Not Ch Then begin Button5. Caption: ='Детально>>'; Form1. Height: =324; end; end; procedure TForm1. FormCreate(Sender: TObject); begin Ch: =False; Form1. Height: =324; end; procedure TForm1. Button1Click(Sender: TObject); begin Query1. Active: =False; Table2. Active: =False; Query2. Active: =False;
Recponse : = InputBox('Проверка доступа', 'Введите пароль', ''); If Recponse=Pass Then Form2. ShowModal Else ShowMessage('Пароль введен не верно! '); Query1. Active: =True; Table2. Active: =True; Query2. Active: =True; end; procedure TForm1. Button3Click(Sender: TObject); begin Form4. ShowModal; end; procedure TForm1. Button2Click(Sender: TObject); begin
Recponse : = InputBox('Проверка доступа', 'Введите пароль', ''); If Recponse=Pass Then Begin YYY: =Query1Nalich. Value;
Form3. Label2. Caption: =Query1Famili. Value +' - ' + Query1NameBook. Value; St: =''; Snum: =IntToStr(Query1Number. Value); If not yyy then ShowMessage('Книга отдолжена') Else Begin Query1. Active: =False; Form3. ShowModal; Query1. Active: =True; End; End Else ShowMessage('Пароль введен не верно! '); End; procedure TForm1. Button4Click(Sender: TObject); begin Query1. Close; Query1. Sql. Clear; Query1. Sql. Add(St); Query1. Open; end; procedure TForm1. Button6Click(Sender: TObject); begin
Recponse : = InputBox('Проверка доступа', 'Введите пароль', ''); If Recponse=Pass Then begin YYY: =Query1Nalich. Value; Snum: =IntToStr(Query1Number. Value); If yyy then ShowMessage('Книга в наличии! ') Else Begin St: ='Delete from Nalichie Where number = ' + Snum; try Button4Click(Button6) Except end; St: ='Select * From MainDB'; try Button4Click(Button6) Except end; St: ='UpDate MainDB Set Nalich = True' + #13 + #10 + 'Where Number = ' + Snum; ; try Button4Click(Button6) Except end; St: ='Select * From MainDB'; try Button4Click(Button6) Except End; Query1. Active: =False; Query1. Active: =True; End; End Else ShowMessage('Пароль введен не верно! '); end; procedure TForm1. Button7Click(Sender: TObject); begin
St: ='Select * from MainDB Where Famili = "' + DBLookupComboBox1. Text +'"'; Button4Click(Button7); end; procedure TForm1. Button8Click(Sender: TObject); begin
St: ='SELECT * FROM MainDB WHERE NameBook LIKE "%'+ Edit2. Text +'%"'; Button4Click(Button7); end; procedure TForm1. ComboBox1Change(Sender: TObject); begin Button9. Enabled: =True; end; procedure TForm1. Button9Click(Sender: TObject); begin
St: ='SELECT * FROM MainDB WHERE Janr = "' + ComboBox1. Text +'"'; Button4Click(Button7); end; procedure TForm1. Button10Click(Sender: TObject); begin St: ='Select * from MainDB'; Button4Click(Button10); end; procedure TForm1. ComboBox2Change(Sender: TObject); begin Case ComboBox2. ItemIndex of 0: St: ='Select * from MainDB Where Nalich = False'; end; Button4Click(ComboBox2); end; end. Приложение 2 Добавить Просмотреть информацию Пароль Подтверждение