Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.60
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
#1

Программа учета больных в поликлинике - C++

13.11.2008, 15:35. Просмотров 3890. Ответов 4
Метки нет (Все метки)

Здраствуите,всем!!
Я тут написал программу, уже мозги ломаю не могу понять почему слетает программа при функций удаления.помогите пожалуисто срочно нужно!!!!!!
Код
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
void  rus        (char*src)              
{
	char dst[256];
	CharToOem(src,dst);
	cout<<dst;
}
struct Lobaratoriy {

	char deagnoz[256];
	char lekarstvo[256];
	char sostoynie[256];};

struct FIO{

		char familiy[256];
		char imy[256];
		char ochestvo[256];
		int age;};

struct Obwie{
			FIO f;
			Lobaratoriy l;};

enum keys{ENTER=13,ESC=27,UP=72,DOWN=80,ONE=49,TWO=50,THREE=51,FOUR=52,SPACE=32};
enum simbols {SMILE=2};
char Karta[20]="KartaPacient.bin";
int y=0;
			
			void  save           (Obwie*&a,int size);
			void  sortirovka     (Obwie*&a,int&size);
			void  Massiv         (Obwie*&a,int&size);
			void  AddPacient     (Obwie*&a,int&size);
			void  DelPacient     (Obwie*&a,int&size);
			void  printList      (Obwie*&a,int&size);
			void  search         (Obwie*&a,int&size);
			void  Cheng          (Obwie*&a,int&size);
			void  initpacient    (Obwie*&a,int&size);
			void  print          (Obwie*&a,int&size);
			void  Menu           (Obwie*&a,int&size);
			void  search_deagnoz (Obwie*&a,int&size,char*str);
			void prostoi(Obwie*&a,int&size,char*str);



void  main(){
	
	int  size=0;
	Obwie* mas=new Obwie [size];
	printList(mas,size);
	Menu(mas,size);
	delete[]mas;}


/*Меню Главное*/
void  Menu       (Obwie*&mas,int&size){

	HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD coord;
	
	void(*menu[4])(Obwie*&,int&)={AddPacient,DelPacient,search,Cheng};
	while(1){
		Massiv(mas,size);
		//printList(mas,size);
		SetConsoleTextAttribute(h,MENU_EVENT);
		system("cls");
		cout<<"N#   ";
		rus("Фамилия        ");rus("Имя            ");rus("Отчество\n");
		SetConsoleTextAttribute(h, FOREGROUND_RED|FOREGROUND_INTENSITY);
		cout<<"---------------------------------------------\n";
		for(int j=0,i=0;i<size;i++,j++){

			if(i==y){

			SetConsoleTextAttribute(h,MENU_EVENT);cout<<"N#"<<char(SMILE)<<":";
			coord.X=5;
			coord.Y=2+j++;
			SetConsoleCursorPosition(h,coord);
			cout<<mas[i].f.familiy<<'\t';
			coord.X=20;
			SetConsoleCursorPosition(h,coord);
			cout<<mas[i].f.imy<<'\t';
			coord.X=35;
			SetConsoleCursorPosition(h,coord);
			cout<<mas[i].f.ochestvo<<'\n';}

			else {

				SetConsoleTextAttribute(h, FOREGROUND_BLUE|FOREGROUND_INTENSITY);
				cout<<"N#"<<i+1<<":";
				coord.X=5;
				coord.Y=2+j++;
				SetConsoleCursorPosition(h,coord);
				cout<<mas[i].f.familiy<<'\t';
				coord.X=20;
				SetConsoleCursorPosition(h,coord);
				cout<<mas[i].f.imy<<'\t';
				coord.X=35;
				SetConsoleCursorPosition(h,coord);
				cout<<mas[i].f.ochestvo<<'\n';}

			SetConsoleTextAttribute(h, FOREGROUND_RED|FOREGROUND_INTENSITY);
			cout<<"---------------------------------------------\n";}

		cout<<'\n';
		cout<<'\n';
		SetConsoleTextAttribute(h,FOREGROUND_INTENSITY);
		rus("1:Добавление,2:Удаление,3:Поиск,4:Редактирование,ESC:Выход\n");
		int key=_getch();
		if(key==224||key==0)key=_getch();

		switch(key){

		case UP:y>0?y--:y=size-1;break;
		case DOWN:y<size-1?y++:y=0;break;
		case ONE: menu[0] (mas,size);break;
		case TWO: menu[1] (mas,size);break;
		case THREE:menu[2](mas,size);break;
		case FOUR:menu[3] (mas,size);break;
		case ENTER:print  (mas,size);break;
		case ESC:exit(0);}}}
/*Заполнение массива*/
void  Massiv     (Obwie *&a,int&size){

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

		a[i].f.familiy;
		a[i].f.imy;
		a[i].f.ochestvo;
		a[i].f.age;
		a[i].l.deagnoz;
		a[i].l.lekarstvo;
		a[i].l.sostoynie;}}

/*Вывод на экран 1 профеля*/
void  print      (Obwie *&a,int&size){

   if(size==0){Menu(a,size);}
	while(1){

	system("cls");
 
	cout<<"N"<<y+1<<'\n';
	rus("Фамилия: ");                             cout<<a[y].f.familiy<<'\n';
	rus("Имя: ");                                 cout<<a[y].f.imy<<'\n';
	rus("Отчество: ");                            cout<<a[y].f.ochestvo<<'\n';
	rus("Дата рождения: ");                       cout<<a[y].f.age<<'\n';
	rus("Диагноз: \n");                           cout<<a[y].l.deagnoz<<'\n';
	rus("Прописаные Лекарства\\Курс лечения: \n");cout<<a[y].l.lekarstvo<<'\n';
	rus("Общее состояния больного: \n");          cout<<a[y].l.sostoynie<<'\n';
	cout<<'\n';

	
		rus("ENTER:Выходв меню\n");
		rus("SPACE:сохранение\n");
		rus("1:Изменить профиль\n");
		rus("2:Удалить\n");
		int key=_getch();
		if(key==224||key==0)key=_getch();
		switch(key){
	     case ENTER: Menu(a,size);      break;
		 case TWO:   DelPacient(a,size);break;
		 case ONE:   Cheng (a,size);    break;
		 case SPACE: save (a,size);     break;}}}

/*работа с фаилами*/
/*write*/
void  save       (Obwie*&a,int size){

	FILE*file=fopen(Karta,"wb");
	fwrite(&size,sizeof(int),1,file);
	fwrite(a,sizeof(Obwie),size,file);
	fclose(file);}

/*read*/
void  printList  (Obwie*&a,int&size){

	FILE*file=fopen(Karta,"rb");
	if(file==0)Menu(a,size);
	fread(&size,sizeof(int),1,file);
	Obwie* tmp=new Obwie [size];
	fread(tmp,sizeof(Obwie),size,file);
	fclose(file);
	delete[]a;
	a=tmp;
	Massiv(a,size);}

/*Заполенние человека*/
void  initpacient(Obwie*&a,int&size){
	
	/*rus("ESC:Выход\n");
	int key=_getch();
	if(key==224||key==0)key=_getch();
	switch(key){

		 case ESC:Menu(a,size);}*/
    HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
	rus("Введите Фамилию: \n");                    cin>>a[size].f.familiy;
	rus("Введите Имя: \n");                        cin>>a[size].f.imy;
	rus("Введите Отчество: \n");                   cin>>a[size].f.ochestvo;
	rus("Возраст: \n");                            cin>>a[size].f.age;
	                                               cin.ignore();
	rus("Диагноз: \n");                            cin.getline(a[size].l.deagnoz,256);
	rus("Прописаные Лекарства\\Курс лечения: \n"); cin.getline(a[size].l.lekarstvo,256);
	rus("Общее состояния больного: \n");           cin.getline(a[size].l.sostoynie,256);
	}

/*Функция добовления*/
void  AddPacient (Obwie*&a,int&size){

	system("cls");
	HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
	Obwie*tmp=new Obwie[size+1];
	for(int i=0;i<size;i++)
		tmp[i]=a[i];
	initpacient(tmp,size);
	delete[]a;
	a=tmp;
	size++;
	cout<<'\n';
	
        SetConsoleTextAttribute(h, FOREGROUND_RED|FOREGROUND_INTENSITY);
		rus("ENTER:Выходв меню,не сохроняя\n");
		rus("SPACE:сохранение\n");
		int key=_getch();
		if(key==224||key==0)key=_getch();
		switch(key){
		 case ENTER:printList(a,size);Menu(a,size);break;
		 case SPACE:sortirovka(a,size);save (a,size);break;}}

/*Функция удаления*/
void  DelPacient (Obwie*&a,int&size){
	if(size==0){Menu(a,size);}
    system("cls");
	int b;
	HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD coord;
	rus("Вы действительно хотите удолить?1:Да,2:Нет\n");
	cout<<'\n';
	cout<<"N#   ";
	rus("Фамилия        ");rus("Имя            ");rus("Отчество\n");
	SetConsoleTextAttribute(h, FOREGROUND_RED|FOREGROUND_INTENSITY);
	cout<<"---------------------------------------------\n";
	 
	SetConsoleTextAttribute(h,MENU_EVENT);cout<<"N#"<<y+1<<":";

	coord.X=5;
	coord.Y=4;
	SetConsoleCursorPosition(h,coord);
	cout<<a[y].f.familiy<<'\t';
	coord.X=20;
	SetConsoleCursorPosition(h,coord);
	cout<<a[y].f.imy<<'\t';
	coord.X=35;
	SetConsoleCursorPosition(h,coord);
	cout<<a[y].f.ochestvo<<'\n';
	cin>>b;
    if(b==1){

	Obwie*tmp=new Obwie[size+1];
	for(int i=0,j=0;i<=size;i++,j++){

		if(i==y)
			i++;
		strcpy(tmp[j].f.familiy,a[i].f.familiy);
		strcpy(tmp[j].f.imy,a[i].f.imy);
		strcpy(tmp[j].f.ochestvo,a[i].f.ochestvo);
		tmp[j].f.age=a[i].f.age;
		strcpy(tmp[j].l.deagnoz,a[i].l.deagnoz);
		strcpy(tmp[j].l.lekarstvo,a[i].l.lekarstvo);
		strcpy(tmp[j].l.sostoynie,a[i].l.sostoynie);}

	delete[]a; a=tmp; size--;Massiv(a,size);save(a,size);printList(a,size);}}

/*Функцыя сортировки:работает по умолчанию*/
void  sortirovka (Obwie*&a,int&size){

	for(int i=1;i<size-1;i++){

		for(int j=size-1;j>=1;j--){

			if(strcmp(a[j].f.familiy,a[j-1].f.familiy)<0){

				Obwie tmp=a[j];
				a[j]=a[j-1];
				a[j-1]=tmp;}}}}

/*Функцыя поиска*/
void  search     (Obwie*&a,int& size){

	if(size==0){Menu(a,size);}
	rus("Введиде пацэнта(больного)");
	char str[256];cin.getline(str,256);
	int num=0;
	for(int j=0;str[j-1]!='\0';j++){

		if(str[j]=='?'||str[j]=='*'){num++;}}

		if(num>1){rus("Неправельный ввод поиска");exit(0);}
		if(num==0){
			prostoi(a,size,str);}
		if (num==1){

			for(int d=0;str[d-1]!='\0';d++){
				if(str[d]=='?'){search_deagnoz(a,size,str);}
				if (str[d]=='*'){rus("МОЛОДЕЦ!!!!");}}
		}

	while(1){

		rus("ENTER:Выходв меню\n");
		rus("4:Изменить профиль\n");
		int key=_getch();
		if(key==224||key==0)key=_getch();
		switch(key)
		{case ENTER:Menu(a,size);break;
		case FOUR:Cheng (a,size);break;
		case SPACE:save (a,size);break;}}}

void prostoi(Obwie*&a,int&size,char*str){
while(1){
      system("cls");
	for(int i=0;i<size;i++){

		if(strstr(a[i].f.familiy,str)!=0){

			rus("Фамилия: ");                             cout<<a[i].f.familiy<<'\n';
			rus("Имя: ");                                 cout<<a[i].f.imy<<'\n';
			rus("Отчество: ");                            cout<<a[i].f.ochestvo<<'\n';
			rus("Дата рождения: ");                       cout<<a[i].f.age<<'\n';
			rus("Диагноз: \n");                           cout<<a[i].l.deagnoz<<'\n';
			rus("Курс лечения: \n");                      cout<<a[i].l.lekarstvo<<'\n';
			rus("Общее состояния больного: \n");          cout<<a[i].l.sostoynie<<'\n';
			cout<<'\n';}}
	//while(1){

	rus("ENTER:Выходв меню\n");
	rus("SPACE:сохранение\n");
	rus("1:Изменить профиль\n");
	rus("2:Удалить\n");
	int key=_getch();
	if(key==224||key==0)key=_getch();
	switch(key){
		case ENTER: Menu(a,size);      break;
		case TWO:   DelPacient(a,size);break;
		case ONE:   Cheng (a,size);    break;
		case SPACE: save (a,size);     break;}}}

void search_deagnoz(Obwie*&a,int&size,char*str){

       system("cls");
	char str2[256],deagnoz[256];
	int num=0;
	size_t Len=strlen(str);
	for(int i=0;i<size;i++){

		strcpy(deagnoz,a[i].l.deagnoz);
		char*token=strtok(deagnoz," ");

	while(token!=NULL){

		num=0;
		strncpy(str2,token,Len);
		str2[Len]='\0';

	for(int j=0;str[j-1]!='\0';j++){

		if(str[j]==str2[j]){num++;}

			if(Len==num){
				rus("Фамилия: ");                             cout<<a[i].f.familiy<<'\n';
				rus("Имя: ");                                 cout<<a[i].f.imy<<'\n';
				rus("Отчество: ");                            cout<<a[i].f.ochestvo<<'\n';
				rus("Дата рождения: ");                       cout<<a[i].f.age<<'\n';
				rus("Диагноз: \n");                           cout<<a[i].l.deagnoz<<'\n';
				rus("Курс лечения: \n");                      cout<<a[i].l.lekarstvo<<'\n';
				rus("Общее состояния больного: \n");          cout<<a[i].l.sostoynie<<'\n';
				cout<<'\n';}}
                token=strtok(NULL," ");}}

	while(1){

		rus("ENTER:Выходв меню\n");
		rus("4:Изменить профиль\n");
		int key=_getch();
		if(key==224||key==0)key=_getch();
		switch(key)
		{case ENTER:Menu(a,size);break;
		case FOUR:Cheng (a,size);break;
		case SPACE:save (a,size);break;}}}

/*Редоктирования профиля*/
void  Cheng      (Obwie*&a,int&size){

    if(size==0){Menu(a,size);}
	system("cls");
	char str[256];
	int sim,num;

	rus("1:Изменить Фамилию:\n");
	rus("2:Изменить Имя\n");
	rus("3:Изменить Отчество\n");
	rus("4:Изменить Возраст\n");
	rus("5:Изменить Диагноз\n");
	rus("6:Изменить Лекарство\n");
	rus("7:Изменить Состояние\n");
	cin>>num;
	switch (num){

		system("cls");
		case 1:system("cls");rus("Изменить Фамилию:\n");  cin>>str;                         strcpy(a[y].f.familiy,str);  break;
		case 2:system("cls");rus("Изменить Имя\n");       cin>>str;                         strcpy(a[y].f.imy,str);      break;
		case 3:system("cls");rus("Изменить Отчество\n");  cin>>str;                         strcpy(a[y].f.ochestvo,str); break;
		case 4:system("cls");rus("Изменить Возраст\n");   cin>>sim;                         a[y].f.age=sim;              break;
		case 5:system("cls");rus("Изменить Диагноз\n");   cin.ignore();cin.getline(str,256);strcpy(a[y].l.deagnoz,str);  break;
		case 6:system("cls");rus("Изменить Лекарство\n"); cin.ignore();cin.getline(str,256);strcpy(a[y].l.lekarstvo,str);break;
		case 7:system("cls");rus("Изменить Состояние\n"); cin.ignore();cin.getline(str,256);strcpy(a[y].l.sostoynie,str);break;}

	sortirovka(a,size);
	print(a,size);
	}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2008, 15:35     Программа учета больных в поликлинике
Посмотрите здесь:

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

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xentar
Of Wolf and Man
993 / 188 / 4
Регистрация: 09.07.2008
Сообщений: 1,885
13.11.2008, 15:50     Программа учета больных в поликлинике #2
Casper!,выкладывай в следующий раз в тег #CODE который специально для этого сдесь есть .
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
13.11.2008, 16:19  [ТС]     Программа учета больных в поликлинике #3
хорошо ,проста я думал что так будет удобнеи потомучто когда я копирую в тег код у меня все слова слитно получаються ,вы же не будите сидеть ставить пробелы между словами ,правильно ???
mik-a-el
CyberForum Owner
56984 / 36734 / 231
Регистрация: 10.04.2006
Сообщений: 12,652
13.11.2008, 16:25     Программа учета больных в поликлинике #4
Цитата Сообщение от Casper! Посмотреть сообщение
хорошо ,проста я думал что так будет удобнеи потомучто когда я копирую в тег код у меня все слова слитно получаються ,вы же не будите сидеть ставить пробелы между словами ,правильно ???
Я вставил ваш код в тэг, все нормально?
Вот видите, ничего страшного.

О чем вообще код?
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
13.11.2008, 16:30  [ТС]     Программа учета больных в поликлинике #5
ой сорри забыл описать.
Вот собственно задание

Создать программу для учета больных в ПОЛИКЛИНИКЕ.
О больных необходимо хранить:
    • ФИО больного
    • Возраст
    • Диагноз
    • Лекарство
    • Общее состояние
Реализовать следующие возможности:
· Добавление записи
· Удаление записи
· Поиск по:
1. ФИО
2. Поиск по диагнозу
(дополнительно реализовать поиск по шаблону * и ?)
· Изменение диагноза, лекарства и общего состояния
· Показ всех записей
· Сортировка записей
Сохранение в файл

из это не доработан поиск на * и программа слитает при удолении пациэнта
Yandex
Объявления
13.11.2008, 16:30     Программа учета больных в поликлинике
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru