Программа «Составление музыкальных передач на радиостанции»

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

PZ_KP.docx

— 3.31 Мб (Скачать файл)

В программе реализованы  такие задачи, как:

  • поиск записей;
  • сортировка записей;
  • добавление записей;
  • удаление записей;
  • редактирование записей;
  • добавление таблиц;
  • удаление таблиц;
  • сохранение базы данных в файл Microsoft Office Access;
  • печать таблиц.

Также был создан установочный файл для данного программного средства, который выполняет установку  программы с возможностью ее удаления при надобности.

В процессе курсового проектирования программное средство прошло функциональное и полное тестирование, которые доказали корректность выполнения всех определенных функций, отсутствие сбоев и неадекватных реакций со стороны программы.

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

В процессе разработки программы использовался в большом объеме материал по программированию, что способствовало закреплению наработанных навыков и умений в этих интересных областях знаний.

 

Литература

  1. Багласова Т.Г. Методические указания по оформлению курсовых и дипломных работ. - Мн.: ТБП, 2006
  2. Грибанов В.П. и др. Основы алгоритмизации и программирование. – М.: Бином, 1999
  3. Культин Н.Б. Программирование в Turbo Pascal и Delphi.  2-ое изд. переработанное и дополненное. – С-Пб: БХВ-Петербург, 2008
  4. Леонтьев В.П. Новейшая энциклопедия персонального компьютера. – М.: ОЛМА-ПРЕСС, 2002
  5. Фаронов В.В. Delphi. Программирование на языке высокого уровня. – С-Пб: Питер, 2005
  6. ГОСТ 2.106-96. ЕСКД. Текстовые документы
  7. ГОСТ 19.401-2000. ЕСПД. Текст программы
  8. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем
  9. http://ru.wikipedia.org

 

Приложение А

(обязательное)

Текст программы

Текст главной формы

 

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('Select * from' + s + ' Order by Music');  //   Добавить новый запрос

1: Form1.ADOQuery1.SQL.Add('Select * from' + s + ' Order by DJ');  //   Добавить новый запрос

2: Form1.ADOQuery1.SQL.Add('Select * from' + s + ' Order by PlayTime');  //   Добавить новый запрос

else

Form1.ADOQuery1.SQL.Add('Select * from' + s + ' Order by PlayTime');  //   Добавить новый запрос

end;

Form1.ADOQuery1.Open;  //   Открыть запрос

end;

procedure TForm1.FormCreate(Sender: TObject);  //  Действия при создании формы

begin

// нахождение всех таблиц в  базе данных

ADOConnection1.GetTableNames(ComboBox1.Items, false);

If ComboBox1.Items.Count > 0 then

begin

Combobox1.ItemIndex:= 0;  //  Выбрали первую  группу из списка

Zapros(Combobox1.Text);  //  Вызов процедуры  запроса

end;

end;

procedure TForm1.DataSource1UpdateData(Sender: TObject);  //   при обновлении данных в базе

begin

a:= 0;

end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);  //   Нажатие клавиш в сетке

var

s: string;

begin

a:= 1;

if DBGrid1.SelectedField.FieldName <> 'PlayTime' then  //  Если текущее поле не равно PlayTime

case key of  //  Разрешаем вводить  буквы, точку, enter, backspace, пробел и  другие символы

'a'..'z' : ;

'A'..'Z' : ;

'а'..'я' : ;

'А'..'Я' : ;

'0'..'9' : ;

'-' : ;

':' : ;

',' : ;

'.' : ;

'=' : ;

'?' : ;

'&' : ;

'ё' : ;

'$' : ;

'"' : ;

'<' : ;

'>' : ;

'!' : ;

'№' : ;

'@' : ;

'#' : ;

'%' : ;

'(' : ;

')' : ;

'+' : ;

#13 : ;

#8 : ;

#32 : ;

else

begin

key:= #0;  //  Все остальные символы  не отображаем и выводим предупреждение

If DBGrid1.SelectedField.FieldName = 'Music' then

s:= 'Программа'

else

If DBGrid1.SelectedField.FieldName = 'DJ' then

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('Название дня недели не  может быть пустым', mtError, [mbOk], 0);  //  Если не ввели название  выходим из процедуры

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(Sender: TObject; var Key: Char);  //   Нажатие клавиш в комбобоксе2

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('Название дня недели не  может быть пустым', mtError, [mbOk], 0);  //  Если не ввели название  выходим из процедуры

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.Handle, PHYSICALWIDTH) /

GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4;

mmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) /

GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4;

VertSize := Trunc(mmy) * 10;

HorzSize := Trunc(mmx) * 10;

SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);

//  Центр

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((HorzSize div 2 - (Printer.Canvas.TextWidth('День: ' + ComboBox1.Text) div 2)),

- 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 – Схема работы алгоритма «Добавление записей» 

Информация о работе Программа «Составление музыкальных передач на радиостанции»