Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 22:14, курсовая работа
Целью курсового проекта является разработка программного средства «iMusic.exe», организующего работу с базой данных, обеспечивающего демонстрацию методов сортировки, поиска, добавления записей, редактирования записей, удаления записей, печати таблицы, добавления таблиц, удаления таблиц, сохранение базы данных. При помощи данной программы каждый пользователь получит данные о расписании музыкальных передач для радиостанции. Исходя из этого программное средство будет востребовано на интернет-радиостанциях, а также на FM-радиостанциях для составления расписания.
Введение 4
1 Постановка задачи 7
1.1 Организационная сущность задачи 7
1.2 Информационная модель 7
1.3 Входные данные 9
1.4 Выходные данные 10
2 Вычислительная система 11
2.1 Используемые технические средства 11
2.2 Инструменты разработки 11
3 Проектирование задачи 13
3.1 Объектно-ориентированный анализ 13
3.2 Концептуальный прототип 14
3.3 Функции: логическая и физическая организация и элементы управления 18
4 Описание программного средства 20
4.1 Общие сведения 20
4.2 Функциональное назначение 20
5 Методика испытаний 21
5.1 Технические требования 21
5.2 Порядок проведения испытаний 21
5.2.1 Функциональное тестирование 21
5.2.2 Полное тестирование 22
6 Применение 50
6.1 Назначение программы 50
6.2 Условия применения 50
6.3 Справочная система 50
Заключение 57
Литература 58
В программе реализованы такие задачи, как:
Также был создан установочный файл для данного программного средства, который выполняет установку программы с возможностью ее удаления при надобности.
В процессе курсового проектирования программное средство прошло функциональное и полное тестирование, которые доказали корректность выполнения всех определенных функций, отсутствие сбоев и неадекватных реакций со стороны программы.
Возможными недостатками
является низкий уровень защиты данных,
что и планируется доработать
в последующих версиях
В процессе разработки программы использовался в большом объеме материал по программированию, что способствовало закреплению наработанных навыков и умений в этих интересных областях знаний.
Литература
Приложение А
(обязательное)
Текст главной формы
unit Music;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Variants, DB, ImgList, Menus, ExtCtrls, Grids, DBGrids,
printers, ADODB, jpeg, XPMan, shellapi;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
ADOQuery1Music: TWideStringField;
ADOQuery1DJ: TWideStringField;
ADOQuery1PlayTime: TDateTimeField;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
BitBtn3: TBitBtn;
Label1: TLabel;
Label2: TLabel;
BitBtn4: TBitBtn;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
Edit1: TEdit;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
ImageList1: TImageList;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
Bevel2: TBevel;
Bevel3: TBevel;
Bevel5: TBevel;
Bevel7: TBevel;
XPManifest1: TXPManifest;
Image2: TImage;
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DataSource1UpdateData(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox2KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Bitbtn5Click(Sender: TObject);
procedure Bitbtn6Click(Sender: TObject);
procedure Bitbtn7Click(Sender: TObject);
procedure Bitbtn8Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure FormClose(sender: TObject; var action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a: Byte;
implementation
uses About, Edit;
{$R *.dfm}
procedure Zapros(s: string); // Процедура выбора записей из базы
begin
If Form1.Combobox1.Text = '' then // Если в
комбобоксе выбрана группа
exit;
s:= '[' + s + ']'; // Обрамление строки скобками
Form1.ADOQuery1.Close; // Закрыть запрос
Form1.ADOQuery1.SQL.Clear; // Стереть запрос
Case Form1.ComboBox2.ItemIndex of // Выбираем индекс выбранной строчки в комбобоксе
0: Form1.ADOQuery1.SQL.Add('
1: Form1.ADOQuery1.SQL.Add('
2: Form1.ADOQuery1.SQL.Add('
else
Form1.ADOQuery1.SQL.Add('
end;
Form1.ADOQuery1.Open; // Открыть запрос
end;
procedure TForm1.FormCreate(Sender: TObject); // Действия при создании формы
begin
// нахождение всех таблиц в базе данных
ADOConnection1.GetTableNames(
If ComboBox1.Items.Count > 0 then
begin
Combobox1.ItemIndex:= 0; // Выбрали первую группу из списка
Zapros(Combobox1.Text); // Вызов процедуры запроса
end;
end;
procedure TForm1.DataSource1UpdateData(
begin
a:= 0;
end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); // Нажатие клавиш в сетке
var
s: string;
begin
a:= 1;
if DBGrid1.SelectedField.
case key of // Разрешаем вводить буквы, точку, enter, backspace, пробел и другие символы
'a'..'z' : ;
'A'..'Z' : ;
'а'..'я' : ;
'А'..'Я' : ;
'0'..'9' : ;
'-' : ;
':' : ;
',' : ;
'.' : ;
'=' : ;
'?' : ;
'&' : ;
'ё' : ;
'$' : ;
'"' : ;
'<' : ;
'>' : ;
'!' : ;
'№' : ;
'@' : ;
'#' : ;
'%' : ;
'(' : ;
')' : ;
'+' : ;
#13 : ;
#8 : ;
#32 : ;
else
begin
key:= #0; // Все остальные символы
не отображаем и выводим
If DBGrid1.SelectedField.
s:= 'Программа'
else
If DBGrid1.SelectedField.
s:= 'Ди-джей'
else
ShowMessage('Поле ''' + s + ''' не может состоять из символов или чисел');
end;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject); // Нажатие кнопки 1
begin
If a <> 0 then
begin
ADOQuery1.Post; // Сохранить базу
a:= 0;
end;
Showmessage('База успешно сохранена');
end;
procedure TForm1.BitBtn2Click(Sender: TObject); // Создание новой таблицы
var
TabName1: string;
begin
TabName1:= InputBox('База данных радиостанций', 'Введите день недели', ''); // Вводим название дня
if TabName1 = '' then
begin
MessageDlg('Название дня
exit;
end;
// Добавление таблицы
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('CREATE TABLE ' + '[' + TabName1 + ']' + '(Music Text(50), DJ Text(20), ' +
'PlayTime Time, id Counter, PRIMARY KEY (id))');
ADOQuery1.Parameters.Clear;
ADOQuery1.Prepared:= true;
ADOQuery1.ExecSQL;
Showmessage('Расписание на ' + TabName1 + ' успешно создано.');
except
// Обработка ошибок открытия таблицы
Exception.Create('Ошибка
end;
//
ComboBox1.Items.Add(TabName1);
ComboBox1.Text:= TabName1;
ComboBox2.ItemIndex:= 0;
Zapros(TabName1);
end;
procedure TForm1.ComboBox2KeyPress(
begin
if Key = #13 then
begin
Key:= #0;
Zapros(Combobox1.Text);
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject); // Удалить таблицу
var
TabName1: string;
i: integer;
begin
TabName1:= InputBox('База данных
if TabName1 = '' then
begin
MessageDlg('Название дня
exit;
end;
// Удаление таблицы
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DROP TABLE ' + '[' + TabName1 + ']');
ADOQuery1.Parameters.Clear;
ADOQuery1.Prepared:= true;
ADOQuery1.ExecSQL;
Showmessage('Расписание на ' + TabName1 + ' успешно удалено.');
except
// Обработка ошибок открытия таблицы
Exception.Create('Ошибка
end;
//
for i:= 0 to Combobox1.Items.Count - 1 do // Удаляем день из списка
If Combobox1.Items.Strings[i] = TabName1 then
Combobox1.Items.Delete(i);
Combobox1.Text:= ComboBox1.Items.Strings[0];
ComboBox2.ItemIndex:= 0;
Zapros(Combobox1.Text);
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
var
P, I, J, YPos, XPos, HorzSize, VertSize: Integer;
AnzSeiten, Seite, Zeilen, HeaderSize, FooterSize, ZeilenSize, FontHeight: Integer;
mmx, mmy: Extended;
begin
// Установка размеров
HeaderSize := 100;
FooterSize := 200;
ZeilenSize := 45;
FontHeight := 45;
// Инициализация принтера
Printer.Orientation := poPortrait {poLandscape};
Printer.Title := 'День: ' + ComboBox1.Text;
Printer.BeginDoc;
// Масштабирование
mmx := GetDeviceCaps(Printer.Canvas.
GetDeviceCaps(Printer.Canvas.
mmy := GetDeviceCaps(Printer.Canvas.
GetDeviceCaps(Printer.Canvas.
VertSize := Trunc(mmy) * 10;
HorzSize := Trunc(mmx) * 10;
SetMapMode(Printer.Canvas.
// Центр
Zeilen := (VertSize - HeaderSize - FooterSize) div ZeilenSize;
// Размещение сетки
if ADOQuery1.RecordCount mod Zeilen <> 0 then
AnzSeiten := ADOQuery1.RecordCount div Zeilen + 1
else
AnzSeiten := ADOQuery1.RecordCount div Zeilen;
Seite := 1;
// Рисование линий
for P := 1 to AnzSeiten do
begin
Printer.Canvas.Font.Height := 48;
Printer.Canvas.TextOut((
- 20, 'День: ' + ComboBox1.Text);
Printer.Canvas.Font.Height := FontHeight;
YPos := HeaderSize + 20;
XPos := 3;
// Печать шапки таблицы
Printer.Canvas.TextOut(XPos, - YPos, 'Программа');
XPos := XPos + DBGrid1.Columns[0].Width * 3;
Printer.Canvas.TextOut(XPos, - YPos, 'Ди-джей');
XPos := XPos + DBGrid1.Columns[1].Width * 3;
Printer.Canvas.TextOut(XPos, - YPos, 'Время');
XPos := XPos + DBGrid1.Columns[2].Width * 3;
Printer.Canvas.Pen.Width := 1;
Printer.Canvas.MoveTo(0, - YPos);
Printer.Canvas.LineTo(XPos, - YPos);
YPos := YPos + FontHeight;
ADOQuery1.First;
// Печать таблицы
for I := 1 to Zeilen do
begin
if ADOQuery1.RecordCount >= I + (Seite - 1) * Zeilen then
begin
XPos := 3;
for J := 0 to 2 do
begin
Printer.Canvas.TextOut(XPos, - YPos, DBGrid1.Fields[j].Value);
XPos := XPos + DBGrid1.Columns[j].Width * 3;
Printer.Canvas.MoveTo(0, - YPos);
Printer.Canvas.LineTo(XPos, - YPos);
end;
YPos := YPos + ZeilenSize;
ADOQuery1.Next;
end;
end;
Printer.Canvas.MoveTo(0, - YPos);
Printer.Canvas.LineTo(XPos, - YPos);
XPos := 0;
Printer.Canvas.MoveTo(XPos, - (HeaderSize + 20));
Printer.Canvas.LineTo(XPos, - YPos);
For j:= 0 to 2 do
begin
XPos := XPos + DBGrid1.Columns[j].Width * 3;
Printer.Canvas.MoveTo(XPos, - (HeaderSize + 20));
Printer.Canvas.LineTo(XPos, - YPos);
end;
Inc(Seite);
if Seite <= AnzSeiten then Printer.NewPage;
end;
Printer.EndDoc;
end;
procedure TForm1.CheckBox1Click(Sender: TObject); // клик по чекбоксу1
begin
if CheckBox1.Checked = true then // Если стоит флажок сделать
begin
CheckBox1.Caption:= 'Режим поиска включен'; // Присвоить название чекбоксу1
Edit1.SetFocus; // Фокус на поле ввода1
end
else
CheckBox1.Caption:= 'Режим поиска выключен'; // иначе присвоить другое название чекбоксу1
end;
procedure TForm1.Edit1Change(Sender: TObject); // Изменения данных в поле ввода1
var
strField:string;
begin
if not CheckBox1.Checked then Exit; // Если не стоит флажок в чекбоксе1 выйти из процедуры
// выбрать поле поиска
case RadioGroup1.ItemIndex of
0: strField:='Music';
1: strField:='DJ';
2: strField:='PlayTime';
end;
If Combobox1.Text <> '' then // Если в Combobox1.Text выбран день - делаем поиск
begin
// выполнить поиск
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
// ' LIKE "%'+Edit1.Text+'%"' - ищет фрагмент текста
ADOQuery1.SQL.Add('Select * from ['+ComboBox1.Text+']'+' where '+strField+' like '''+Edit1.Text+'%''');
ADOQuery1.Open;
end;
end;
procedure TForm1.Bitbtn5Click(Sender: TObject);
begin
ADOQuery1.First; // Переход на первую запись в запросе
end;
procedure TForm1.Bitbtn6Click(Sender: TObject);
begin
ADOQuery1.Last; // Переход на последнюю запись в запросе
end;
procedure TForm1.Bitbtn7Click(Sender: TObject);
begin
Form1.ADOQuery1.Insert;
Form3.ShowModal;
end;
procedure TForm1.Bitbtn8Click(Sender: TObject);
begin
Form3.BitBtn1.Enabled:=True;
Form3.ShowModal;
end;
procedure TForm1.N5Click(Sender: TObject); // Нажатие пятой кнопки в главном меню
begin
close; // закрыть программу
end;
procedure TForm1.ComboBox1Change(Sender: TObject); // Выбор дня
begin
Zapros(Combobox1.Text);
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
Zapros(Combobox1.Text);
end;
procedure TForm1.N18Click(Sender: TObject);
begin
Form2.ShowModal; // Показать форму о программе в модальном режиме
end;
procedure TForm1.N16Click(Sender: TObject);
begin
ShellExecute(Handle, 'Open','Help\Help.chm', nil, nil, sw_normal);
end;
procedure TForm1.FormClose(sender: TObject; var action: TCloseAction);
begin
AnimateWindow(Handle, 1000, AW_HIDE or AW_BLEND);
end;
end.
Текст формы добавления и изменения записей
unit Edit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Mask, DBCtrls, ExtCtrls, jpeg;
type
TForm3 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Image2: TImage;
Image1: TImage;
Image3: TImage;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Music;
{$R *.dfm}
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
If MessageDlg('Вы действительно хотите удалить запись?', mtWarning, [mbNo, mbYes], 0) = mrYes then
Form1.ADOQuery1.Delete; // Удаление записи из базы
Form3.Close;
Form3.BitBtn1.Enabled:=False;
Form1.ADOQuery1.ExecSQL;
Form1.ADOQuery1.Edit;
Form1.ADOQuery1.Post;
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
Form3.BitBtn1.Enabled:=False;
Form3.Close;
end;
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Form3.BitBtn1.Enabled:=False;
Form3.Close;
Form1.ADOQuery1.Post;
end;
end.
Текст формы со сведениями о программе
unit About;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
end.
Текст самого проекта программы
program iMusic;
uses
Forms,
Music in 'Music.pas' {Form1},
About in 'About.pas' {Form2},
Edit in 'Edit.pas' {Form3};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.Run;
End.
Приложение Б
(справочное)
Рисунок
Б.1 – Схема работы алгоритма «Добавление
записей»
Информация о работе Программа «Составление музыкальных передач на радиостанции»