Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Word - файл 1.doc


Word
скачать (1434.5 kb.)

Доступные файлы (1):

1.doc1435kb.24.11.2011 21:35скачать

содержание
Загрузка...

1.doc

Реклама MarketGid:
Загрузка...
Аннотация
Курсовая работа по дисциплине «Программирование на языке высокого уровня» посвящена разработке базы данных с последующей обработкой данных.

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


Содержание


1. Введение………………………………………………………………......6

2. Постановка задачи………………………………………………………..7

3. Теоретическая часть……………………………………………………8-10

4. Руководство программиста…………………………………………...11-13

4.1. Описание библиотек………………………………………………...11

4.2. Описание глобальных переменных………………………………...11

4.3. Описание класса…………………………………………………….12

4.4. Описание функций…………………………………………………13

5. Разработка блок-схем……………………………………………………..14

6. Тестирование программы……………………………………………..25-35

7. Заключение………………………………………………………………..36

8. Список литературы………………………………………………………..37

9.Листинг программы…………………………………………………….38-45
Приложение 1…………………………………………………………….15

Приложение 2…………………………………………………………….25
Введение
Цель курсового проекта: получение навыков по разработке программы на языке C\C++ для обработки данных типа структура, т.е. проектирования структуры базы данных, предназначенной для функционирования автоматизированной информационной системы. В данной работе эта цель достигается на примере разработки структуры базы данных «Водоемы». Для введения учета типов часто используют программы, работающие с базами данных. Для более доступного использования базы данных были переведены в электронный вид, в этих целях разрабатываются программы, которые их обрабатывают. Такими программами являются Microsoft Access, SQL, FoxPro, DB2 и много других. Упрощенным видом таких программ является данная программа. В ней используются только самые простейшие операции работы с базами данных.

Программный продукт написан на языке программирования С++. Реализация темы курсовой работы выполняется с среде С++ с использованием классов Динамических массивов структур.

Системные требования для использования программы:


  • Операционная система MS-DOS, Windows 98/2000/xp;

  • Процессор от Intel Pentium I и выше;

  • 32 MB RAM(ОЗУ) и выше;

  • HDD(Дисковая память) 20 MB;


Для создания программы «Характеристики персональных компьютеров» использовались:

  • AMD Athlon XP, 1473 MHz, 256 МВ

  • ATI Radeon 9600 / X1050 Series, 80 GB HDD;

  • Операционная система Microsoft Windows XP.

  • Turbo C++.



Постановка задачи
Разработать программу на языке C\C++ для обработки данных типа структура. Обработка данных должна включать следующие функции:

1) создание новой базы данных (с возможностью задания имени файла);

2) просмотр существующей базы данных (чтение данных осуществить из файла);

3) редактирование базы данных (с сохранением изменений в файле);

4) дополнение базы новыми записями (с сохранением в файле);

5) удаление записей из базы данных (с сохранением в файле);

6) поиск в базе данных (по одному и двум поисковым признакам) с выводом на экран найденных записей или сообщения о неуспешном поиске;

7) сортировка данных по заданному полю (с сохранением в файле).

«Водоёмы»

Название водоема

Расположение водоема

Обитатели водоема

Загрязнители водоема

Площадь водоема



Блок-схемы приведены в приложении 1, листинг программы – в приложении 2.

^ Теоретическая часть

Класс – это определенный пользователем тип данных, который обычно описывает свойства и способы поведения похожих объектов. Это абстракция, позволяющая построить реальные объекты. Составляющие класса: Поля– это данные класса. Методы – это функции, выполняющие определенные действия. Свойства – это атрибуты, определяющие состояние объекта. Обычно указывает те методы, которые должны использоваться.

Доступ к свойствам и методам разграничен следующим образом:

а) private – определяет поля и методы класса, которые недоступны вне функций-методов класса.

б) public – определяет поля и методы класса, к которым может обращаться любая часть кода программы.

Можно задавать несколько секций private и public, порядок их следования значения не имеет. Видимостью элементов класса можно также управлять с помощью ключевых слов struct и class. Если при описании класса используется слово struct, то все поля и методы по умолчанию будут общедоступными (public). Если при описании класса используется слово class, то по умолчанию все методы и поля класса будут скрытыми (private).

Структура – это набор из одной или более переменных, возможно различных типов, сгруппированных под одним именем для удобства обработки. (В некоторых языках, самый известный из которых паскаль, структуры называются “записями”). Структуры оказываются полезными при организации сложных данных особенно в больших программах, поскольку во многих ситуациях они позволяют сгруппировать связанные данные таким образом, что с ними можно обращаться, как с одним целым, а не как с отдельными объектами.

Файл – именованная совокупность данных, представляющая собой последовательность элементов данных одного типа, причем кол-во элементов данных, практически, не ограничено.



Массив – один из структурированных типов данных. Характеризуется тем, что все его элементы имеют один и тот же тип. При определении массива следует указать его имя и количество элементов. В некоторых случаях допустимо описание без указания количества элементов. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером.

Указатель – это переменная, содержащая адрес другой переменой. Значениями указателей служат адреса участков памяти, выделенных для объектов конкретных типов. Именно поэтому в определении и описании указателя всегда присутствует обозначение соответствующего ему типа. Эта информация позволяет в последующем с помощью указателя получить доступ ко всему сохраняемому объекту в целом. (в курсовой работе указатели будут очень распространены, так как совершается разработка класса динамических массивов).

Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы. Для работы с динамической памятью используют указатели. С их помощью осуществляется доступ к участкам динамической памяти, которые называются динамическими переменными. Динамические переменные создаются с помощью специальных функций и операций. Они существуют либо до конца работы программ, либо до тех пор, пока не будут уничтожены с помощью специальных функций или операций. Для создания динамических переменных используют операцию new, определенную в C++; Для удаления динамических переменных используется операция delete, определенная в C++. Размера сегмента данных может быть недостаточно для размещения больших массивов информации. Выходом из этой ситуации является использование динамической памяти.

Файловый поток – особая переменная, значением которой является файл.

Поток – понятие обозначающее на языке С++ внутренний (логический) файл. Это последовательность байтов передаваемых в процессе ввода,вывода и не зависящая от конкретного устройства с которым производится обмен информации. Для поддержки потоков в С++ используется библиотека содержащая иерархию классов, построенную на основе класса ios.

Конструктор – определяет способ создания объекта или его инициализации; имеет то же имя, что и класс.

Деструктор – операция, выполняющая очистку памяти, когда объект класса выходит за пределы области видимости или он удаляется; имеет то же имя, что и класс со знаком "~" перед ним.

Глобальные переменные – это переменные, описанные вне функций. Они видны во всех функциях, где нет локальных переменных с такими именами.

Локальные переменные – которые используются внутри данной функции. Память для них выделяется в стеке, поэтому после окончания работы функции они удаляются из памяти. Нельзя возвращать указатель на локальную переменную, т. к. память, выделенная такой переменной, будет освобождаться.




Переменная

Описание переменной

struct Vodoem

{char name [30];

char place [30];

char living [30];

char dirt [30];

double s ;

} ;


Структурная переменная Vodoem,содержит 5 полей:поле name(название водоема),поле place(расположение водоема),поле living(обитатели водоема),поле dirt(загрязнители водоема),поле S-площадь водоема.


int i;

Переменные i , часто используется в различных функциях, для выполнения разнообразных задач.
Руководство программиста

^

Описание библиотек



Библиотека

Функции библиотеки

iomanip.h

Библиотека для манипулирования текстом на экране (подключается для обеспечения удобства работы с программой).

iostream.h

Библиотека, содержащая функции ввода\вывода на экран (cin и cout).

fstream.h

Библиотека файловых входных выходных потоков.

stdlib.h

Библиотека содежит функцию exit().

string.h

Библиотека для работы со строковыми данными.

conio.h

Библиотека, содержащая функцию очистки экрана (clrscr()) и функцию задержки экрана (getch()).






Описание класса


Класс

Описание класса

class Tab

{private:

vodoem *pst;

int n;

public:

Tab(){n=0;pst=NULL;}

~Tab ();

void inputstructfile();

void outputstruct();

void sort1();

void sort2();

void searchmesto();

void searcploshad();

void addVodoem();

void deleteVodoem();

void redaktirovanie();

void input();

};


Класс с именем Tab. Класс описывает поля, методы, модификаторы, конструктор и деструктор.

private- описние скрытых полей и методов класса.

К классу private относятся поля и методы: Tab *pst, n.

public- описание доступных полей и методов класса.

К классу public относятся поля и методы: конструктор по умолчанию, деструктор (для освобождения памяти),

Tab(){n=0;pst=NULL;}-конструктор по умолчанию.

Tab() - деструктор.

^








Описание функций




Функция

Описание функции

void inputstructfile()

Ввод БД из файла.

void outputstruct()

Вывод данных на экран. Просмотр данных после различных операций.

void search ()

Поиск записей в базе данных по определённому признаку.

void addVodoem()

Дополнение в базу данных записи.

void deleteVodoem()

Удаление записи из базы данных.

void sort1()

Сортировка записей из базы данных по типу расположения водоема.

void sort2()

Сортировка записей из базы данных по площади водоема.

void redaktirovanie()

редактирование строки

void input()

ввод БД с клавиатуры

void main()

Главная функция, управляющая ходом работы программы.






^

Разработка блок-схем



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

Блок-схемы и описание используемых в подпрограмме локальных переменных приведены в Приложении 1. Структурная блок-схема программы приведена на рисунке 1.

Приложение 2
Тестирование программы

При запуске программы открывается главное меню. Пользователю предлагается выбрать один из 9 пунктов выполнения программы (рис. 1).




Рис.1

Для считывания из файла базы данных нажмем «1».

Рис.2




Файл vodoem.txt. Рис 3.


Нажав клавишу «2», в основном меню программы, на экране появится таблица БД, считанной из файла vodoem.txt (рис.4).



С помощью клавиш «3», «4», предоставляется возможность работы с БД. Это реализуется с помощью дополнительного меню

(рис. 5).

Рис.6.



С помощью дополнительных меню можно работать с БД.
Сортировка по типу расположение водоема:



Рис.7

Сортировка по типу площадь водоема:


Рис.8


Нажав клавишу «4» в основном меню программы, осуществим поиск по указанному критерию .

Поиск по названию: (рис.9)






Поиск по площади:

когда вводимой площади нет в БД, то осуществляется вывод данных с площадью, меньшей, чем была указана. Рис.10



Рис.11



«5» и «6» пункты главного меню позволяют добавлять из БД данные

(рис. 14) и удалять данные в БД (рис. 12).

Так же реализована проверка водимых данных

(рис. 13,15).

Исходная БД:

Удаление из БД:

Рис.12




Проверка на удаление:

Рис.13


5пункт Добавление записи :

Рис.14



Проверка на добавление:

Рис.15






при нажатии клавиши 7 можно осуществить редактирование:

исходная БД:
Рис.16


редактирование:



Рис.17


Проверка БД после редактирования:



Рис.18

При нажатии клавиши 8 можно осуществить ввод новой БД с клавиатуры:



рис.19

Показ новой БД:



рис.20

9 пункт главного меню отвечает за выход из программы.


Рис.21

Заключение



В данном курсовом проекте была спроектирована структура базы данных, предназначенной для функционирования автоматизированной информационной системы «Характеристики водоемов». Были получены навыки и умения проектирования подобной структуры базы данных.

Была разработана структура базы данных для информационной системы «Характеристики водоемов»

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

Программа была протестирована, проверена на правильность выполнения операций: поиска, сортировки, ввода, удаления, вывода записей данных, редактирования, ввода новой БД с клавиатуры.

Меню программы доступно и понятно пользователю.



^

Список литературы


  1. Павловская Т.А. С/С++. Программирование на языке высокого уровня – СПб.: Питер, 2006. – 461 с.: ил.

  2. Павловская Т.А.,Щупак Ю.А. С/С++. Структурное программирование: Практикум – СПб.: Питер, 2002. – 240 с.: ил.

  3. Введение в язык С++, Бьярн Страустрап, 1995 г., электронный учебник.

  4. Подбельский В.В. Язык Си++: Учеб. Пособие.-5-е изд.-М.:Финансы и статистика, 2004.-56-с.



Приложение 1

Блок-схема функции main()


Блок-схема функции inputstructfile()



Блок-схема функции outputstruct()








Блок-схема функции addVodoem ()


Блок-схема функции deleteVodoem()


Блок-схемы функций

sort1() и sort2() :



Блок-схема функции redaktirovanie() :


Блок-схема функции input()





Блок-схема функции

outputstructfile()


i=i+1


Блок-схема функции searchmesto()


Блок-схема функции searchploshad()

Листинг программы:
#include<iostream.h>

#include<string.h>

#include<iomanip.h>

#include<fstream.h>

#include<conio.h>

#include<stdlib.h>

struct Vodoem

{

char name[30];

char place[30];

char living[30];

char dirt[30];

double s;

};

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

class Tab

{

private:

Vodoem *pst;

int n;

public:

int i;

Tab(){n=0;pst=NULL;}

~Tab();

void inputstructfile();

void outputstruct();

void sort1();

void sort2();

void searchmesto();

void searchploshad();

void addVodoem();

void deleteVodoem();

void redaktirovanie();

void input();

};
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::inputstructfile()

{

ifstream fin;

char infile[20];

Vodoem t;

if(pst!=NULL){delete[] pst;n=0;pst=NULL;}

cout<<"please,enter the name of file:";

cin>>infile;

fin.open(infile);

if(fin==NULL){cout<<"orry,this file can not be open";getch();exit(1);}

n=0;

do{

fin>>t.name>>t.place>>t.living>>t.dirt>>t.s;

n++;

}

while(fin.good());

n--;

fin.close();

pst=new Vodoem[n];

if(pst==NULL){cout<<"sorry,there is no enough dinamic memory";getch();

exit(1);}

fin.open(infile);

if(fin==NULL){cout<<"sorry,file can not be open";getch();exit(1);}

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

{

fin>>pst[i].name>>pst[i].place>>pst[i].living>>pst[i].dirt>>pst[i].s;

}

fin.close();

cout<<"file vveden!:)";getch();

}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void Tab::outputstruct()

{ int i;

cout<<"\n\tData table:\n\n";

cout<<"---------------------------------------------------------"<<endl;

cout<<" #"<<setw(11)<<"Nazvanie"<<" "<<setw(9)<<"mesto "<<" "<<setw(11)<<"obitateli"<<" "<<setw(11)<<"zag-teli"<<" "<<setw(9)<<"plohad"<<endl;

cout<<"---------------------------------------------------------"<<endl;

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

cout<<setw(2)<<i+1<<" "<<setw(10)<<pst[i].name<<" "<<setw(9)<<pst[i].place<<" "<<setw(11)<<pst[i].living<<" "<<setw(11)<<pst[i].dirt<<" "<<setw(9)<<pst[i].s<<endl;

cout<<"---------------------------------------------------------"<<endl;
getch();
}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void Tab::sort1()

{

cout<<"sortirovka po mestoraspologeniu vodoema:";
Vodoem t;

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

for(int j=i+1;j<n;j++)

if(strcmp(pst[i].place,pst[j].place)>0)

{t=pst[i];pst[i]=pst[j];pst[j]=t;}

}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void Tab::sort2()

{

cout<<"sortirivka po ploshadi:";
Vodoem t;

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

for(int j=i+1;j<n;j++)

if((pst[i].s-pst[j].s)>0)

{t=pst[i];pst[i]=pst[j];pst[j]=t;}

}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::searchmesto()

{

cout<<"poisk po mestoraspologeniu:";

int d=0;

char imya[20];

cout<<"enter name:";

cin>>imya;

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

if(strcmp(imya,pst[i].name)==0)

{d=d++;}

if(d!=0)

{cout<<imya<<"\t"<<d<<endl;}

if(d==0){cout<<"there is no Vodoem with name"<<endl;

}

}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::searchploshad()

{

int i,h;

cout<<"poisk po ploshadi:";

cout<<"enter ploshad':";

cin>>h;

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

if(pst[i].s<=h)


cout<<setw(2)<<i+1<<" "<<setw(10)<<pst[i].name<<" "<<setw(9)<<pst[i].place<<" "<<setw(11)<<pst[i].living<<" "<<setw(11)<<pst[i].dirt<<" "<<setw(9)<<pst[i].s<<endl;
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::addVodoem()

{

Vodoem t,*p;

cout<<"enter name:";

cin>>t.name;

cout<<"enter place:";

cin>>t.place;

cout<<"enter living:";

cin>>t.living;

cout<<"enter dirt:";

cin>>t.dirt;

do{

cout<<"\nEnter ploshad':";

cin>>t.s;

if(t.s<0){cout<<"\nError!Ploshad' can not be bellow zero!Please,try again.\n";}

}

while(t.s<0);

p=pst;

pst=new Vodoem[n+1];

if(pst==NULL){cout<<"sorry,there is no enough dinamic memory";getch();exit(1);}

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

pst[i]=p[i];

pst[n]=t;

n++;

delete[] p;

cout<<"zapis' dobavlena";

getch();

}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::deleteVodoem()

{

Vodoem t;

cout<<"enter name:";

cin>>t.name;

cout<<"enter ploshad':";

cin>>t.s;

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

if(strcmp(t.name,pst[i].name)==0 && (t.s==pst[i].s))break;

if(i==n){cout<<t.name<<"not found \n";getch();exit(1);}

else{ for(int j=i+1;j<n;j++)

pst[j-1]=pst[j];

n--;

}

cout<<"zapis' ydalena";

getch();

}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

void Tab::redaktirovanie()

{

Vodoem x;

int i,j;

if(pst==NULL){cout<<"spisok pyst\n";getch();exit(1);}

cout<<"nomer redaktiryemou stroki:\n";

cin>>j;

cout<<"enter name:";

cin>>x.name;

cout<<"enter place:";

cin>>x.place;

cout<<"enter living:";

cin>>x.living;

cout<<"enter dirt:";

cin>>x.dirt;

cout<<"enter ploshad':";

cin>>x.s;

pst[j-1]=x;

cout<<"redaktirovanie zaverheno!"<<endl;

}
\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void Tab::input()

{

int i;

cout<<"enter kol-vo strok:"<<endl;

cin>>n;

cout<<"enter data table:"<<endl;

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

{ cout<<i+1<<".";

cout<<"name:";

cin>>pst[i].name;

cout<<"place:";

cin>>pst[i].place;

cout<<"living:";

cin>>pst[i].living;

cout<<"dirt:";

cin>>pst[i].dirt;

cout<<"ploshad':";

cin>>pst[i].s;

cout<<endl;

}

cout<<"data enterned!"<<endl<<endl;

}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Tab::~Tab()

{if(pst!=NULL){delete[] pst;n=0;pst=NULL;}

}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void main()

{

Tab a;

int j,m,b;

while(1)

{

clrscr();

cout<<"\n1.Enter the data table from file\n";

cout<<"\n2.Enter the data on displey\n";

cout<<"\n3.Sorting the data table\n";

cout<<"\n4.Searching for...\n";

cout<<"\n5.Addition the line to the data table\n";

cout<<"\n6.Removal the line from the data table\n";

cout<<"\n7.redaktirovanie\n";

cout<<"\n8.enter new BD\n";

cout<<"\n9.Exit the programm\n\n";

cin>>j;

switch(j)

{

case 1:a.inputstructfile();break;

case 2:a.outputstruct();getch();break;

case 3:

{

int fl=0;

while(fl!=0)

clrscr();

cout<<"\n1.Sorting on type place\n";

cout<<"\n2.Sorting on ploshd'\n";

cin>>m;

switch(m)

{

case 1:a.sort1();a.outputstruct();a.inputstructfile();getch();break;

case 2:a.sort2();a.outputstruct();a.inputstructfile();getch();break;

case 3:fl=1;break;

default: cout<<"Error!Try again";break;

}

break;

}

case 4:

{

int fl1=0;

while(fl1!=0)

clrscr();

cout<<"\n1.Searching on type of name\n";

cout<<"\n2.searching on ploshad'";

cout<<"\n3.Exit to the main menu\n";

cin>>b;

switch(b)

{

case 1:a.searchmesto();getch();break;

case 2:a.searchploshad();getch();break;

case 3:fl1=1;break;

default: cout<<"Error!Try again";break;

}

break;

}

case 5:a.addVodoem();getch();break;

case 6:a.deleteVodoem();getch();break;

case 7:a.redaktirovanie();getch();break;

case 8:a.input();getch();break;

case 9:cout<<"Exit the programm.Thank you for using the programm!Good Luck!=)";getch();return;

default: cout<<"Error!Try again.";break;

}

}

}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Скачать файл (1434.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru