Структуры данных

Автор: Пользователь скрыл имя, 11 Января 2012 в 10:03, контрольная работа

Описание работы

Разработать информационную систему с применением динамических структур данных. Для решения поставленной задачи рекомендуется использовать динамические структуры (списки, деревья, очереди, стеки и т.п.) в том случае, если для решения поставленной задачи их использование окажется более целесообразным. Обеспечить возможность выполнения следующих операций над выбранными структурами данных:
инициализацию;
добавление новых элементов;
удаление элементов;
перемещение по структуре данных;
поиск элементов структуры данных, отвечающих заданным критериям;
вывод всех элементов структуры данных на экран.

Содержание

задание
3
назначение основные возможности и характеристики программы
4
постановка задачи
5
структурная схема фрагмента информационной системы
8
таблица имен
9
иерархия объектов
11
разработка интерфейса программы
12
инструкция по работе с программой
14
заключение
18
литература.
19
Приложение 1 (исходный код)
20
Приложение 2. (пример работы)
35

Работа содержит 1 файл

1.doc

— 298.50 Кб (Скачать)

Молоток

10

Шт.

15

     Как видно, на каждый товар приходится по 5 строк в файле tovar.lst 

     Интерфейс состоит из 4-х форм (основная форма, форма вставки, редактирования, поиска).

     Основная  форма программы выглядит следующим образом:

       

     Интерфейс программы представлен таблицей товаров с информацией о них  и кнопками для работы со списком

     Нажав кнопку «Добавить », пользователь попадает в форму занесения информации о новом товаре

      . 
 

     Кнопка  «Удалить» - предназначена для удаления информации о конкретном отваре. После ее нажатия пользователю будет предложено подтвердить удаление. 

       

     С помощью кнопки «Поиск», можно найти  товар по его артикулу. 

       

     Кнопка  «Редактировать» (или двойной клик мыши на пациенте) вызывает форму редактирования информации.

     

       По кнопке «Выход» осуществляется  выход из программы. При выходе автоматически сохраняются сделанные изменения в файле tovar.lst.

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

     Сортировка  по артикулу:

     

     Сортировка  по наименованию

     

 

     Заключение 

     Динамические  структуры данных (списки, деревья, очереди, стеки и т.п) – мощный инструмент для создания приложений с заранее неизвестным количеством данных. Использование подобных структур часто облегчает программирование и повышает  надежность программ.

     В процессе  выполнения работы , на языке  C++ был написан класс, реализующий связанный линейный список структур с информацией о пациентах. На базе этого класса, в среде программирования Builder C++, была разработана информационная система для склада, реализующая следующие возможности работы со списком товаров:

  1. Просматривать список товаров
  2. Добавлять, удалять товаров
  3. Просматривать, редактировать информацию о товарах
  4. Искать отвары в списке по артикулу
  5. Сортировать список товаров по артикулу или наименованию.
 
 
 
 

 

     Литература 
 

    1. Архангельский А.Я.  Программирование в C++ Builder 6. – М:”Бином”,2002
    2. Павловская Т.А. C/C++. Программирование на языке высокого уровня: Учебник для вузов. - СПб:”Питер”,2003
    3. Шилдт Г. Самоучитель С++. – СПб:”BHV – Санкт-Петербург”,1998
    4. Страуструп Б. Язык программирования С++.1-Киев.:”Диасофт”,1993.
    5. Страуструп Б. Язык программирования С++.2-Киев.:”Диасофт”,1993.
 

 

     Приложение 1 

Файл tovar.hpp 

#ifndef __tovar

#define __tovar 

#include<classes.hpp> 
 

//Структура с  информацией о товаре

struct  tovar{

public:

String Art;    // артикул

String Name;   // наименование

int Kol;       // количество на складе

String Ed;     //единица измерения

String Pls;    // место хранения 

}; 

#endif 
 

Файл tovarlst.hpp 
 

#ifndef __tovarlst

#define __tovarlst

#include"pntnt.hpp"

#include<classes.hpp> 
 

struct unit 

{

tovar a;

unit *nt;//ссылка на  след. элемент

}; 

//список пациентов 

class tovarlst{

private:

unit *f;  //начало

unit *e;  //конец

int size; //размер 

public:

tovarlst(); //конструктор

~tovarlst(); //деструктор

void Add(tovar);     //вставка в конец

void Delete(int);         //удаление элемента по номеру

void SortByArt();        //сортировка по артикулу

void SortByName();      //сортировка по наименованию

int Count();              //возвращает размер

tovar &operator[](int);   //индексирование

int Search(String art);   //поиск по артикулу

}; 

#endif 
 
 

Файл tovarlst.cpp 
 

#include<stddef.h>

#include"pntlst.hpp" 

        //конструктор 

tovarlst::tovarlst()

{

        size=0;

        f=NULL;

        e=NULL;

} 
 

        //деструктор 

tovarlst::~tovarlst()

{

        while(size>0) Delete(0); 

} 

        //вставка элемента в конец 

void tovarlst::Add(tovar a)

{

        unit *p,*t;

        int i; 

        //увеличение размера

        size++;

        //создание узла

        p=new unit;

        p->a=a;

        p->nt=0;

       //вставка

        if (f==0)

        {f=p;

        e=p;return;} //если список пуст

        e->nt=p;

        e=p; 

} 
 

//удаление элемента  по номеру 

void   tovarlst::Delete(int n)

{

        unit *p,*t;

        int i; 

        //если индекс выходит за допустимые границы, то выход

        if (n<0 || n>=size) return; 

        t=f; 

        //если удаляется  первый элемент

        if(n==0)

        {

        t=f;

        f=f->nt;

        delete t;

        size--;

        return;

        } 
 

        //переход на узел, после которого  осуществляется удаление

        for(i=0;i<n-1;i++) t=t->nt; 

        //собственно удаление

        p=t->nt;

        t->nt=p->nt;

        if(n==size-1) e=t;

        //освобождение памяти

        delete p;

        //изменение размера

        size--; 

} 
 
 
 
 

//доступ по номеру 

tovar &tovarlst::operator[](int n)

{

       int i;

        unit *t; 

        t=f;

       for(i=0;i<n;i++) t=t->nt; 

        return((t->a)); 

} 
 

        //размер 

int tovarlst::Count()

{

        return(size);

} 
 

        //поиск 

int tovarlst::Search(String art)

{

        int i;

        tovar a; 

        for(i=0;i<size;i++)

         {

         a=(*this)[i];

         if (a.Art==art) break;

         } 

        if (i==size) i=-1;

        return(i);

} 
 

        //Сортировка по артикулу 

void tovarlst::SortByArt()

{

        unit *p,*t;

        int i,j;

        tovar z; 

        p=f; 

        for(i=0;i<size;i++,p=p->nt)

         for(j=0,t=f;j<size;j++,t=t->nt)

          if ((p->a).Art<(t->a).Art)

           {

           z=p->a;

           p->a=t->a;

           t->a=z;

           }

} 
 

        //Сортировка пузырьком по наименованию 

void tovarlst::SortByName()

{

        unit *p,*t;

        int i,j;

        tovar z; 

        p=f; 

        for(i=0;i<size;i++,p=p->nt)

         for(j=0,t=f;j<size;j++,t=t->nt)

          if ((p->a).Name<(t->a).Name)

           {

           z=p->a;

           p->a=t->a;

           t->a=z;

          }

} 
 

        //вывод в список строк (для  создания интерфейса) 

/*void pntlst::PatientsToStrings(TStringList *s)

{

        int i;

        patnt a; 

        for(i=0;i<size;i++)

         {

         a=(*this)[i];

         s->Add(a.F+"    "+a.I+"    "+a.O+"      "+a.A+"       "+a.D);

         } 

} */ 
 
 
 
 

Заголовочный файл основной формы

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

#ifndef sklad1H

#define sklad1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include"pntlst.hpp"

#include <ComCtrls.hpp>

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

class TForm1 : public TForm

{

__published: // IDE-managed Components

        TButton *Del;

        TButton *Add;

        TButton *Ext;

        TButton *Button1;

        TButton *Button2;

        TListView *LV;

        TButton *Button3;

        TButton *Button4;

        void __fastcall AddClick(TObject *Sender);

        void __fastcall DelClick(TObject *Sender);

        void __fastcall ExtClick(TObject *Sender);

        void __fastcall LBDblClick(TObject *Sender);

        void __fastcall Button1Click(TObject *Sender);

Информация о работе Структуры данных