Автор: Пользователь скрыл имя, 11 Января 2012 в 10:03, контрольная работа
Разработать информационную систему с применением динамических структур данных. Для решения поставленной задачи рекомендуется использовать динамические структуры (списки, деревья, очереди, стеки и т.п.) в том случае, если для решения поставленной задачи их использование окажется более целесообразным. Обеспечить возможность выполнения следующих операций над выбранными структурами данных:
инициализацию;
добавление новых элементов;
удаление элементов;
перемещение по структуре данных;
поиск элементов структуры данных, отвечающих заданным критериям;
вывод всех элементов структуры данных на экран.
задание
3
назначение основные возможности и характеристики программы
4
постановка задачи
5
структурная схема фрагмента информационной системы
8
таблица имен
9
иерархия объектов
11
разработка интерфейса программы
12
инструкция по работе с программой
14
заключение
18
литература.
19
Приложение 1 (исходный код)
20
Приложение 2. (пример работы)
35
Молоток
10
Шт.
15
Как
видно, на каждый товар приходится по 5
строк в файле tovar.lst
Интерфейс состоит из 4-х форм (основная форма, форма вставки, редактирования, поиска).
Основная форма программы выглядит следующим образом:
Интерфейс программы представлен таблицей товаров с информацией о них и кнопками для работы со списком
Нажав кнопку «Добавить », пользователь попадает в форму занесения информации о новом товаре
.
Кнопка
«Удалить» - предназначена для удаления
информации о конкретном отваре. После
ее нажатия пользователю будет предложено
подтвердить удаление.
С
помощью кнопки «Поиск», можно найти
товар по его артикулу.
Кнопка «Редактировать» (или двойной клик мыши на пациенте) вызывает форму редактирования информации.
По кнопке «Выход»
Как уже было отмечено ранее, список товаров можно сортировать как по имени так и по адресу, с помощью соответствующих кнопок .
Сортировка по артикулу:
Сортировка по наименованию
Заключение
Динамические структуры данных (списки, деревья, очереди, стеки и т.п) – мощный инструмент для создания приложений с заранее неизвестным количеством данных. Использование подобных структур часто облегчает программирование и повышает надежность программ.
В процессе выполнения работы , на языке C++ был написан класс, реализующий связанный линейный список структур с информацией о пациентах. На базе этого класса, в среде программирования Builder C++, была разработана информационная система для склада, реализующая следующие возможности работы со списком товаров:
Литература
Приложение 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->
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->
if ((p->a).Name<(t->a).Name)
{
z=p->a;
p->a=t->a;
t->a=z;
}
}
//вывод в список строк (для
создания интерфейса)
/*void pntlst::PatientsToStrings(
{
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);