Logo GenDocs.ru

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

Загрузка...

Аптека - файл Курсовой проект.doc


Аптека
скачать (177.4 kb.)

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

vika.cpp
vika.txt1kb.12.06.2009 18:10скачать
Курсовой проект.doc357kb.16.06.2009 15:52скачать

содержание

Курсовой проект.doc

Содержание
1) Введение 2

2) Аннотация 3

3) Описание глобальных переменных 4

4) Блок-схемы программы 5

5) Листинг программы 15

6) Тестирование программы 24

7) Заключение 31

8) Список используемой литературы 32

1. Введение
Цель работы: освоение функций работы со структурным типом данных и файлами.

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

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

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

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

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

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

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

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


Разработка базы данных «Аптека»

Название аптеки

Адрес

Поставщик лекарств в аптеку

Количество

Медицинский препарат


2. Аннотация
В данной курсовой работе приведены сведения о результатах разработки базы данных «Аптека» с использованием класса динамических массивов структур.

В курсовой работе приведены комплекс блок-схем алгоритмов, осуществляющих решение поставленной задачи, описание разработанных функций в табличной форме, листинг программного кода, реализованного на языке С++, результаты тестирования программы, подтверждающее корректную и достоверную работу всех методов, используемых в классе.
^ 3. Описание глобальных переменных, разработанных подпрограмм
Описание глобальных переменных:


struct apteka

{

char nazv[L];

char adres[L];

char poztav[L];

char preparat [L];

int kolvo;

};

Структура apteka, содержащая четыре поля: поле nazv (название аптеки), типа char; поле adres (адрес), типа char; поле poztav (поставщик лекарст в аптеку), типа char; поле prearat (медицинский препарат), типа char; поле kolvo (количество), типа int. Структура нужна для удобства работы с данными аптек.


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


Класс

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

class pharmacy

{

private:int n;

apteka *px;

void udal(int j);

public:

pharmacy(){}

pharmacy()

{

if(n>0)delete[]px;

}

int k;

void create();

void reading();

void output();

void record();

void find();

void adding();

void del();

void correct();

void sorting();

};

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

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

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

К классу private относятся поля и методы: px, n, void udal.

void udal - вспомогательная операция к функции удаления строки в массиве.

inst(){}- конструктор.

inst() {}- деструктор.

^ 4. Блок-схемы программы





нет





да



















да





нет



да





нет



да

нет









да

нет

да

нет

да

нет

да

нет

да

нет

да














нет





да



нет


да



нет



да

нет








n=0

adding()






нет



да














да

нет



adding()






i++


















i=0





нет





да

да

нет


i++




fl=0





да

нет



r=px[i];px[i]=px[i+1]; px[i+1]=r; fl=1









fl=0

r=px[i];px[i]=px[i+1]; px[i+1]=r; fl=1

да

да

нет

нет













нет

да

нет




fl=0





да

нет



r=px[i];px[i]=px[i+1]; px[i+1]=r; fl=1









fl=0

r=px[i];px[i]=px[i+1]; px[i+1]=r; fl=1

да

да

нет

нет










fl=0

r=px[i];px[i]=px[i+1]; px[i+1]=r; fl=1

да

нет

нет





да












fl=0



i=0




нет






да


i++



да

нет




fl=1













да

нет















нет

да





нет

да











нет

да


n=0





нет





да


i=0




n++

нет






n--

да



Чтение содержимого файла




i++





px=new apteka[n]



int sravn(apteka x,apteka y)












нет

да










i=h+1



да

нет

px[i-1]=px[i]; n--


i++











i=0




нет





да






i++










s=new apteka[n+1]




i=0





нет





да


s[i]=px[i]















n++



delete[]px



px=s; i++










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

#include <conio.h>

#include <string.h>

#include <iomanip.h>

#include <fstream.h>

#include <stdlib.h>

const int L=31, N=100;

struct apteka

{ char nazv [L];

char adres [L];

char poztav [L];

int kolvo;

char preparat [L];

};

class pharmacy

{

private:int n;

apteka *px;

void udal(int j);

public:

pharmacy(){}

~pharmacy(){if(n>0)delete[]px;}

int k;

void create();

void reading();

void output();

void record();

void find();

void adding();

void del();

void correct();

void sorting();

};
void pharmacy::create()

{int i;

px=new apteka[n];

if(px==NULL)

{cout<<"No Memory";

getch();

exit(1);

}

n=0;

adding();

do{cout<<"To add yet?\n";

cout<<"1-Yes\n";

cout<<"2-No\n";

cin>>i;

if(i==1)adding();

}while(i==1);

}
void main()

{int w;

pharmacy a;

while(1)

{

clrscr();

cout<<endl;

cout<<"1. Otkrit fail dannih\n";

cout<<"2. Sozdat fail dannih\n";

cout<<"3. Vivesti fail dannih na ekran\n";

cout<<"4. Dobavlenie zapisi v fail dannih\n";

cout<<"5. Ydalenie zapisi iz faila dannih\n";

cout<<"6. Redaktirovanie zapisi v faile dannih\n";

cout<<"7. Poisk zapisei v faile dannih\n";

cout<<"8. Sortirovka \n";

cout<<"9. Sohranenie faila dannih v fail\n";

cout<<"0. Vihod.\n"<<endl;

cout <<"Vvedite nomer menu: "; cin>>w;

switch(w)

{case 1:a.reading();break;

case 2:a.create();break;

case 3:a.output();getch();break;

case 4:a.adding();break;

case 5:a.del();break;

case 6:a.correct();break;

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

case 8:a.sorting();break;

case 9:a.record();break;

case 0:exit(0);

default:cout<<"Oshibka";getch(); } }}

void pharmacy::reading()

{ifstream in;

char file[N];

int i;apteka u;

cout<<"File name:\n";

cin>>file;

in.open(file);

if(in.fail())

{cout<<file<<"Don't open";getch();exit(1);}

n=0;

do{in>>u.nazv>>u.adres>>u.poztav>>u.kolvo>>u.preparat;

n++;

}while(in.good());

n--;

in.close();

px=new apteka[n];

if(px==NULL)

{cout<<"Error: HET memory";

getch();

exit(1);}

in.open(file);

if(in.fail())

{cout<<"Error: "<<file<<"HE open";

getch();

exit(1);}

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

in>>px[i].nazv>>px[i].adres>>px[i].poztav>>px[i].kolvo>>px[i].preparat;

in.close();}

int sravn(apteka x,apteka y);

void pharmacy::output()

{int i;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}
void pharmacy::find()

{

int b,i,k;

char p [20];

cout<<"Choose a point\n";

cout<<"1)Search to name.\n"; cout<<"2)Search to adres.\n"; cout<<"3)Search to poztavshik.\n"; cout<<"4)Search to kol-vo.\n"; cout<<"5)Search to preparat.\n";

cout<<"Point=\n";

cin>>b;

if(b==1)

{

cout<<"Nazvanie:\n";cin>>p;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

if (strcmp(px[i].nazv,p)==0)

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}

if(b==2)

{

cout<<"Adres:\n";cin>>p;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

if (strcmp(px[i].adres,p)==0)

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}


if(b==3)

{

cout<<"Postavshik lekarstv:\n";cin>>p;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

if (strcmp(px[i].poztav,p)==0)

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}


if(b==4)

{

cout<<"Kol-vo:\n";cin>>k;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

if (px[i].kolvo==k)

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}

if(b==5)

{

cout<<"Preparat:\n";cin>>p;

cout<<"********************************************************************"<<endl;

cout<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

cout<<"********************************************************************"<<endl;

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

if (strcmp(px[i].preparat,p)==0)

cout<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

}

}
void pharmacy::record()

{int i;

ofstream out;

char file[N];

cout<<"Name file save:\n";

cin>>file;

out.open(file);

if(out==NULL)

{cout<<file<<"Don' create";

getch();

exit(1);

}

out<<"********************************************************************"<<endl;

out<<""<<setw(10)<<"Nazvanie"<<" "<<setw(15)<<"Adres"<<" "<<setw(15)<<"Postavshik"<<" "<<setw(5)<<"Kolvo"<<" "<<setw(10)<<"Preparat"<<endl;

out<<"********************************************************************"<<endl;

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

out<<i+1<<"."<<setw(3)<<setw(10)<<px[i].nazv<<" "<<setw(15)<<px[i].adres<<setw(15)<<px[i].poztav<<" "<<setw(5)<<px[i].kolvo<<" "<<setw(10)<<px[i].preparat<<endl;

getch();out.close();

}

int sravn(apteka x,apteka y)

{ if(strcmp(x.nazv,y.nazv)>0)return 1; if(strcmp(x.nazv,y.nazv)<0)return -1; return 0;}

void pharmacy::adding()

{ apteka *s;int i;
s=new apteka[n+1];

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

s[i]=px[i];

cout<<"Enter information:\n";

cout<<"Nazvanie:\n";cin>>s[n].nazv;

cout<<"Adres:\n";cin>>s[n].adres;

cout<<"Poztavshik:\n";cin>>s[n].poztav;

cout<<"Kolvo:\n";cin>>s[n].kolvo;

cout<<"Preparat:\n";cin>>s[n].preparat;

n++;

delete[]px;

px=s;

cout<<"Add!";

getch();

}

void pharmacy::correct()

{ int i,q,j;

output();

cout<<"Nomep ctroki dlia redaktirovanie:";cin>>j;

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

if(i==j-1)

{

cout<<"Enter correct information:\n";

cout<<"Nazvanie:\n"<<""<<px[i].nazv<<endl<<"Ispravit nazvanie?\n"<<"1-Yes.0-No\n";

cin>>q;

if(q==1){cout<<"New nazvanie:\n";cin>>px[i].nazv;}

cout<<"Adres:\n"<<""<<px[i].adres<<endl<<"Ispravit adres?\n"<<"1-Yes.0-No\n";

cin>>q;

if(q==1){cout<<"New adres:\n";cin>>px[i].adres;}

cout<<"Poztavshik:\n"<<""<<px[i].poztav<<endl<<"Ispravit poztavshika?\n"<<"1-Yes.0-No\n";

cin>>q;

if(q==1){cout<<"New poztavshik:\n";cin>>px[i].poztav;}

cout<<"Kol-vo:\n"<<""<<px[i].kolvo<<endl<<"Ispravit kol-vo?\n"<<"1-Yes.0-No\n";

cin>>q;

if(q==1){cout<<"New kolvo:\n";cin>>px[i].kolvo;}

cout<<"Preparat:\n"<<""<<px[i].preparat<<endl<<"Ispravit preparat?\n"<<"1-Yes.0-No\n";

cin>>q;

if(q==1){cout<<"New preparat:\n";cout<<"";cin>>px[i].preparat;}

cout<<endl<<"Ready!\n.";

break; }

output();

getch();

}


void pharmacy::del()

{

int i,h,fl;

output();

cout<<"Enter line number:\n";

cin>>h;

fl=0;

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

if(i==h-1)

{ fl=1;udal(i);

cout<<endl<<"Ready!\n";

}

if(fl==0)cout<<"Not found.\n";

output();

getch();

}

void pharmacy::udal(int h)

{int i;

if(h<0||h>=n){cout<<"HETy ctroki";getch();return;}

for(i=h+1;i<n;i++)

px[i-1]=px[i];

n--;

}


void pharmacy::sorting()

{int i,p,fl;

apteka r;

cout<<"How sortirovat?\n";

cout<<"---------------\n";

cout<<"1.Sortirovat nazvania\n";

cout<<"2.Sortirovat adresa\n";

cout<<"3.Sortirovat postavshikov\n";

cout<<"4.Sortirovat kolichestva\n";

cout<<"5.Sortirovat preparati\n";

cout<<"Punkt-";

cin>>p;

do{for(i=0;i<(n-1);i++)

{

if(p==1){fl=0;

if(strcmp(px[i+1].nazv,px[i].nazv)<0)

{r=px[i];

px[i]=px[i+1];

px[i+1]=r;

fl=1;break;}}

if(p==2){fl=0;

if(strcmp(px[i+1].adres,px[i].adres)<0)

{r=px[i];

px[i]=px[i+1];

px[i+1]=r;

fl=1;break;}}

if(p==3){fl=0;

if(strcmp(px[i+1].poztav,px[i].poztav)<0)

{r=px[i];

px[i]=px[i+1];

px[i+1]=r;

fl=1;break;}}

if(p==4){fl=0;

if(px[i+1].kolvo<px[i].kolvo)

{r=px[i];

px[i]=px[i+1];

px[i+1]=r;

fl=1;break;}}

if(p==5){fl=0;

if(strcmp(px[i+1].preparat,px[i].preparat)<0)

{r=px[i];

px[i]=px[i+1];

px[i+1]=r;

fl=1;break;}}

}

}while(fl==1);

}


^ 6. Тестирование программы
При входе в программу появляется меню с выбором пунктов меню, доступных для любого пользователя:

1. Открыть файл данных

2. Создать файл данных

3. Вывести файл данных на экран

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

5. Удаление записи из файла данных

6. Редактирование записи в файле данных

7. Поиск записей в файле данных

8. Сортировка

9. Сохранение файла данных в файл

0. Выход

Теперь посмотрим, что происходит при нажатии пользователем каждого пункта меню. При неверном вводе данных во всех пунктах меню выходит сообщение об ошибке. Номера пунктов - номера клавиш на клавиатуре.

1. Открыть файл данных – в этом пункте пользователь может ввести свой файл.

2. Создать файл данных - в этом пункте вы можете создать новый файл данных.

3. Вывести файл данных на экран – в этом пункте пользователь может просмотреть свой файл.

4. Добавление записи в файл данных - в этом пункте можно добавить новую запись.

5. Удаление записи из файла данных - в этом пункте вы можете удалить какую-либо запись.

6. Редактирование записи в файле данных - в этом пункте вы можете отредактировать любую запись.

7. Поиск записей в файле данных - в этом пункте вы можете найти любую аптеку по любому полю.

8. Сортировка – сортировка файла данных по названию, адресу, поставщику, количеству, препарату.


9. Сохранение файла данных в файл - в этом пункте вы можете сохранить файл данных.

0. Выход - при наборе на клавиатуре числа 0 будет осуществлен выход из программы.

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

Предоставленная программа предназначена для работы с базой данных «Аптека» для любого пользователя.

Свойства программы - быстрый ввод, обработка и поиск данных в данной базе. Программа включает в себя следующие процедуры: создание новой базы данных, просмотр существующей базы данных, редактирование записей, их добавление и удаление (все с сохранением в текстовом файле), поиск записей и сортировка записей по данному полю.
^ 8. Список используемой литературы
1. Освой самостоятельно С++, Джесс Либерти, Москва, «Вильемс», 2001г., Стр. 837;

2. Основы алгоритмизаии и программирования язык С, Демидович, 2006г. , СПб:БХВ-Петербург, Стр. 440;

3. С++, Культин Н.Б, СПб:БХВ-Петербург, 2005г. Стр. 288;

4. Методические указания к лабораторным работам по программированию на языке С++.




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

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

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