Информационно-справочная система. Поставка товара в крупные сети розничной торговли

Автор работы: Пользователь скрыл имя, 03 Марта 2013 в 11:56, курсовая работа

Краткое описание

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

Содержание

ВВЕДЕНИЕ 4
1. СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ 5
1.1. Характеристика задачи 5
1.2. Входные данные 5
1.3. Выходные данные 5
2. ФОРМАЛИЗОВАННАЯ ПОСТАНОВКА ЗАДАЧИ 6
2.1. Разработка модели предметной области (МПО) 6
2.1.1. Определение объектов 6
2.1.2. Анализ процессов (запросов к информационной базе) 8
2.1.3. Установление функциональных связей и задание их характеристик 8
2.1.4. Установление структурных связей и задание их характеристик 11
2.2. Оптимизация и проверка корректности инфологической схемы МПО 13
3. АБСТРАКТНЫЙ АНАЛИЗ И СИНТЕЗ МПО ЗАДАЧИ 15
3.1. Представление МПО при помощи абстрактных структур данных (АСД) 15
3.2. Предварительное преобразование структуры данных 15
3.3. Декомпозиция структуры данных на более простые АСД 16
4. РАЗРАБОТКА ВНЕШНИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ 18
4.1. Разработка представления данных при помощи логических структур данных (ЛСД) 18
4.2. Интерфейс программы. Разработка макетов ввода/вывода 20
4.3. Разработка функций программы 21
4.4. Разработка функций программы по обработке ошибок 21
5. РАЗРАБОТКА ВНУТРЕННИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ 22
5.1. Разработка структуры программы 22
5.2. Разработка представления данных на уровне модели памяти 23
6. ОПИСАНИЕ ПРОГРАММЫ TOURISTAGENCY 24
6.1. Вводная часть 24
6.2. Функциональное назначение 24
6 . Описание информации 2
6.4. Описание логики программы 25
7. ОПИСАНИЕ ПОДПРОГРАММЫ TFORM1.FORMCREATE 26
8. ОПИСАНИЕ ПОДПРОГРАММЫ TFORM1.BUTTON10CLICK 27
9. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR1 28
10. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR2 29
11. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR3 30
12. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR4 31
13. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR5 32
14. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR6 33
15. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR7 34
16. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR8 35
17. ТЕСТИРОВАНИЕ ПРОГРАММЫ 36
17.1. Разработка плана тестирования и набора тестов 36
17.2. Результаты тестирования 37
ЗАКЛЮЧЕНИЕ 42
Список литературы 43
Приложение 1 ТЕКСТ ПРОГРАММЫ TOURISTAGENCY 44
Приложение 2 СОДЕРЖИМОЕ ВХОДНЫХ ФАЙЛОВ 53
Приложение 3 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 55
Приложение 4 РУКОВОДСТВО ПРОГРАММИСТА 57

Прикрепленные файлы: 1 файл

Курс_СиАОД_Клабуков.doc

— 689.50 Кб (Скачать документ)

    Button5: TButton;

    Button6: TButton;

    Button7: TButton;

    Button8: TButton;

    Button9: TButton;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Label9: TLabel;

    Label10: TLabel;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Label11: TLabel;

    Label12: TLabel;

    Edit5: TEdit;

    Label13: TLabel;

    Label14: TLabel;

    Label15: TLabel;

    Button10: TButton;

    Memo1: TMemo;

    Edit1: TEdit;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button10Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button7Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

    pKurort=^tKurort;

    tKurort=record

            name:string[15];

            strana:string[12];

            turAg:string[20];

            next:pKurort;

            end;

 

    pTurAg=^tTurAg;

    tTurAg=record

           name:string[20];

           gorod:string[15];

           next:pTurAg

           end;

 

   pOtel=^tOtel;

    tOtel=record

          name:string[20];

          kurort:string[15];

          next:pOtel;

          end;

 

    pAvia=^tAvia;

    tAvia=record

          num:string[3];

          otprav:string[15];

          prib:string[15];

          turAg:string[20];

          next:pAvia;

          end;

 

var

  Form1: TForm1;

  F:text;

  N_Zaprosa:byte;

  i:integer;

  kurort, pervKurort:pKurort;

  TurAg,pervTurAg:pTurAg;

  otel, pervOtel:pOtel;

  avia, pervAvia:pAvia;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

    close;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

    Memo1.Clear;

    assignfile (F,'D:\FKurorty.dat');

    reset(F);

    if IOResult=0 then

        begin

        new(kurort);

        pervkurort:=kurort;

        while not eof(F) do

           begin

            readln(F,kurort^.strana);

            readln(F,kurort^.name);

            readln(F,kurort^.turag);

            if not eof(F) then

                begin

                new(kurort^.next);

                kurort:=kurort^.next;

                end;

            end;

        kurort^.next:=nil;

        end

    else

        MessageDlg('Ошибка.Файл FKurorty пуст!',mtError,[mbOk],0);

    closefile(F);

    assignfile (F,'D:\FTurAg.dat');

    reset(F);

    if IOResult=0 then

        begin

        new(turag);

        pervturag:=turag;

        while not eof(F) do

            begin

            readln(F,turag^.name);

            readln(F,turag^.gorod);

            if not eof(F) then

                begin

                new(turag^.next);

                turag:=turag^.next;

                end;

            end;

        turag^.next:=nil;

        end

    else

        MessageDlg('Ошибка.Файл FTurAg пуст!',mtError,[mbOk],0);

    closefile(F);

    assignfile (F,'D:\FOtely.dat');

    reset(F);

    if IOResult=0 then

        begin

        new(otel);

        pervotel:=otel;

        while not eof(F) do

            begin

            readln(F,otel^.name);

            readln(F,otel^.kurort);

            if not eof(F) then

                begin

                new(otel^.next);

                otel:=otel^.next;

                end;

            end;

        otel^.next:=nil;

        end

    else

        MessageDlg('Ошибка.Файл FOtely пуст!',mtError,[mbOk],0);

    closefile(F);

    assignfile (F,'D:\FAviaLines.dat');

    reset(F);

    if IOResult=0 then

        begin

        pervavia:=avia;

        while not eof(F) do

            begin

            readln(F,avia^.num);

            readln(F,avia^.otprav);

            readln(F,avia^.prib);

            readln(F,avia^.turag);

            if not eof(F) then

                begin

                new(avia^.next) ;

                avia:=avia^.next;

                end;

            end;

        avia^.next:=nil;

        end

    else

        MessageDlg('Ошибка.Файл FAviaLines пуст!',mtError,[mbOk],0);

    i:=1;

    avia:=pervavia;

    while(avia<>nil) do

    begin

        form1.Memo1.Lines[i]:='#'+avia^.num+' otprav'+avia^.otprav+' prib'+avia^.prib+' turag'+avia^.turAg;

        avia:=avia^.next;

        inc(i);

    end;

    avia:=pervavia;

    closefile(F);

end;

 

procedure Zapr1;

begin

    Memo1.Lines[i]:='Турагенства, удовлетворяющие запросу:';

    otel:=pervotel;

    while (otel<>nil)and(otel^.name<>Edit5.Text) do

       otel:=otel^.next;

    if (otel<>nil)and(otel^.name=Edit5.text)and(otel^.kurort=Edit3.Text) then

        begin

        kurort:=pervkurort;

        repeat

            while (kurort<>nil)and(kurort^.name<>Edit3.Text) do

                kurort:=kurort^.next;

            if (kurort<>nil)and(kurort^.name=Edit3.Text) then

                begin

                turag:=pervturag;

                while (turAg<>nil)and(turag^.name<>kurort^.turag) do

                    turag:=turag^.next;

                if (turag<>nil)and(turag^.name=kurort^.turag)and(turag^.gorod=Edit1.Text)

                then

                    begin

                    inc(i);

                    Memo1.Lines[i]:=turag^.name;

                    end;

                end;

            if kurort<>nil then

                kurort:=kurort^.next;

        until kurort=nil;

        end;

end;

 

Procedure Zapr2;

begin

    Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';

    avia:=pervavia;

    repeat

        while (avia<>nil)and(avia^.prib<>Edit1.Text)do

            avia:=avia^.next;

        if (avia<>nil)and(avia^.prib=Edit1.Text)and(avia^.turAg=Edit2.Text)then

           begin

           kurort:=pervkurort;

           while (kurort<>nil)and(kurort^.name<>avia^.otprav)do

               kurort:=kurort^.next;

           if (kurort<>nil)and(kurort^.name=avia^.otprav)and(kurort^.strana=Edit4.Text)

           then

               begin

               inc(i);

               Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num;

               end;

           end;

        if avia<>nil then

            avia:=avia^.next;

   until avia=nil;

end;

 

Procedure Zapr3;

begin

    Memo1.Lines[i]:='Отели, удовлетворяющие запросу:';

    otel:=pervotel;

    repeat

        while (otel<>nil)and(otel^.kurort<>Edit3.Text)do

            otel:=otel^.next;

        if (otel<>nil)and(otel^.kurort=Edit3.Text) then

            begin

            kurort:=pervkurort;

            while (kurort<>nil)and(kurort^.turag<>Edit2.Text)do

                kurort:=kurort^.next;

            if (kurort<>nil)and(kurort^.turag=Edit2.Text)and

            (kurort^.name=Edit3.Text)then

                begin

                inc(i);

                Memo1.Lines[i]:=otel^.name;

                end;

            end;

    until otel=nil;

end;

 

Procedure Zapr4;

begin

    Memo1.Lines[i]:='Курорты, удовлетворяющие запросу:';

    kurort:=pervkurort;

    repeat

        while (kurort<>nil)and(kurort^.strana<>Edit4.Text)do

            kurort:=kurort^.next;

        if (kurort<>nil)and(kurort^.strana=Edit4.Text) then

            begin

            inc(i);

            Memo1.Lines[i]:=kurort^.name;

            end;

        if kurort<>nil then

            kurort:=kurort^.next;

    until kurort=nil;

end;

 

Procedure Zapr5;

begin

    Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';

    avia:=pervavia;

    repeat

        while (avia<>nil)and(avia^.otprav<>Edit1.Text)do

            avia:=avia^.next;

        if (avia<>nil)and(avia^.otprav=Edit1.Text) then

            begin

            inc(i);

            Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num +' '+avia^.turag;

            end;

        if avia<>nil then

            avia:=avia^.next;

    until avia=nil;

end;

 

Procedure Zapr6;

begin

    Memo1.Lines[i]:='Отели, удовлетворяющие запросу:';

    otel:=pervotel;

    repeat

         while (otel<>nil)and(otel^.kurort<>Edit3.Text)do

             otel:=otel^.next;

         if (avia<>nil)and(otel^.kurort=Edit3.Text) then

             begin

             inc(i);

             Memo1.Lines[i]:=otel^.name;

             end;

         if otel<>nil then

             otel:=otel^.next;

    until otel<>nil;

end;

 

Procedure Zapr7;

begin

    Memo1.Lines[i]:='Турагенства, удовлетворяющие запросу:';

    turag:=pervturag;

    repeat

        while (turag<>nil)and(turag^.gorod<>Edit1.Text)do

            turag:=turag^.next;

        if (turag<>nil)and(turag^.gorod=Edit1.Text) then

            begin

            inc(i);

            Memo1.Lines[i]:=turag^.name;

            end;

        if turag<>nil then

            turag:=turag^.next;

    until turag<>nil;

end;

 

Procedure Zapr8;

begin

    Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';

    avia:=pervavia;

    repeat

        while (avia<>nil) and (avia^.otprav<>Edit1.Text)do

            avia:=avia^.next;

        if (avia<>nil)and(avia^.otprav=Edit1.Text)and(avia^.prib=Edit3.Text)then

            begin

            inc(i);

            Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num+' '+avia^.turAg;

            end;

        if avia<>nil then

            avia:=avia^.next;

    until avia<>nil;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

    N_Zaprosa:=1;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=True;

    Edit2.Enabled:=False;

    Edit3.Enabled:=True;

    Edit4.Enabled:=True;

    Edit5.Enabled:=True;

    Button10.Enabled:=True;

    Edit1.SetFocus;

end;

 

procedure TForm1.Button10Click(Sender: TObject);

begin

    i:=0;

    Memo1.Clear;

    case N_Zaprosa of

        1:Zapr1;

        2:Zapr2;

        3:Zapr3;

        4:Zapr4;

        5:Zapr5;

        6:Zapr6;

        7:Zapr7;

        8:Zapr8;

        end;

    if i=0 then

        begin

        Memo1.Lines[1]:='На данный запрос ничего не найдено!';

        ShowMessage('На данный запрос ничего не найдено!');

        end;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

    N_Zaprosa:=2;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=True;

    Edit2.Enabled:=True;

    Edit3.Enabled:=False;

    Edit4.Enabled:=True;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit1.SetFocus;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

    N_Zaprosa:=3;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=False;

    Edit2.Enabled:=True;

    Edit3.Enabled:=True;

    Edit4.Enabled:=False;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit2.SetFocus;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

begin

    N_Zaprosa:=4;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=False;

    Edit2.Enabled:=False;

    Edit3.Enabled:=False;

    Edit4.Enabled:=True;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit4.SetFocus;

end;

 

procedure TForm1.Button6Click(Sender: TObject);

begin

    N_Zaprosa:=5;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=True;

    Edit2.Enabled:=False;

    Edit3.Enabled:=False;

    Edit4.Enabled:=False;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit1.SetFocus;

end;

 

procedure TForm1.Button7Click(Sender: TObject);

begin

    N_Zaprosa:=6;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=False;

    Edit2.Enabled:=False;

    Edit3.Enabled:=True;

    Edit4.Enabled:=False;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit3.SetFocus;

end;

 

procedure TForm1.Button8Click(Sender: TObject);

begin

    N_Zaprosa:=7;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=True;

    Edit2.Enabled:=False;

    Edit3.Enabled:=False;

    Edit4.Enabled:=False;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit1.SetFocus;

end;

 

procedure TForm1.Button9Click(Sender: TObject);

begin

    N_Zaprosa:=8;

    ShowMessage('Заполните соответствующие поля!');

    Edit1.Enabled:=True;

    Edit2.Enabled:=False;

    Edit3.Enabled:=True;

    Edit4.Enabled:=False;

    Edit5.Enabled:=False;

    Button10.Enabled:=True;

    Edit1.SetFocus;

end;

 

end.

 

ПРИЛОЖЕНИЕ 2

СОДЕРЖИМОЕ ВХОДНЫХ  ФАЙЛОВ

 

Текст входного файла FTurAg.dat:

ИКС-тур

Москва

Виа-тревел

Ижевск

Зори-тур

Ижевск

Лаймен

Париж

 

Текст входного файла FKurorty.dat:

Россия

Сочи

Виа-тревел

Россия

Сочи

Зори-тур

Россия

Сочи

ИКС-тур

Россия

Ижевск

ИКС-тур

Россия

Ижевск

Виа-тревел

Франция

Марсель

Франция

Париж

 

Текст входного файла FOtely.dat:

Файр

Марсель

Корсика

Сочи

Лазурь

Сочи

Ижевск

Ижевск

Россия

Москва

 

Текст входного файла FAviaLines.dat:

1

Ижевск

Москва

ИКС-тур

1

Ижевск

Москва

Зори-Тур

2

Ижевск

Москва

Зори-Тур

1

Новосибирск

Марсель

Виа-тревел

2

Сочи

Марсель

Виа-тревел

3

Москва

Марсель

Виа-тревел

 

ПРИЛОЖЕНИЕ 3

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Назначение  программы

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

-  для данного ГОРОДА выдать список ТУРАГЕНТСТВ, предоставляющих путёвку в данный ОПТОВАЯ БАЗА данной СТРАНЫ и с расположением в данном ОТЕЛЕ;

-  для данного ТУРАГЕНТСТВА выдать список АВИАРЕЙСОВ из данной СТРАНЫ в данный ГОРОД;

-  для данного ТУРАГЕНТСТВА выдать список ОТЕЛЕЙ, расположенных в данном КУРОРТЕ;

-  выдать список КУРОРТОВ в данной СТАНЕ;

-  выдать список АВИАРЕЙСОВ из данного ГОРОДА;

-  для данного КУРОРТА выдать список ОТЕЛЕЙ;

-  для данного ГОРОДА выдать список ТУРАГЕНТСТВ;

-  выдать список АВИАРЕЙСОВ из данного ГОРОДА в данный ОПТОВАЯ БАЗА.

 

Условия применения

Для работы с программой необходимо:

-  накопитель на жестких или гибких магнитных дисках;

-  компьютер, совместимый с IBM PC;

-  монитор:

-  свободная оперативная память не менее 2 760 Кб;

-  операционная система Linux/Windows NT 4.0/Windows 9x/Windows XP или выше.

 

Запуск программы

Для запуска программы необходимо запустить исполняемый файл программы Touristagency.exe.

 

Сообщения оператору

В начале работы программы на монитор  выводится основная форма программы (см. рис. П.3.1). Для выбора запроса  необходимо нажать на соответствующую запросу кнопку.

 

 

Рабочая форма

Рис. П.3.1

Перед оператором могут возникнуть сообщения представленные на рис. П.3.2. и рис. П.3.3.

Сообщения оператору

                                           Рис. П.3.2                                    Рис. П.3.3

Информация о работе Информационно-справочная система. Поставка товара в крупные сети розничной торговли