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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Аддитивные операции http://www.cyberforum.ru/cpp-beginners/thread15840.html
Кто может наглядно привести пример Аддитивных операций?:scratch:
C++ HELLO WORLD Vsem Privet:) Ranshe ya izuchil yizik PASKAL;:umnik: A tiper C++ :umnik: Na PASKALE bil nekotoriy funksiy rabota so storokami; Naprimer malenkaya programka::rtfm: s:string; d:string; m:string; http://www.cyberforum.ru/cpp-beginners/thread15826.html
C++ Многомерный массив в динамической памяти
Vsem Privet; Unas problema s mnogamernim massivami. Naprimer ya obyivlaye massiv ( int myArray; ) Etot isxodnik komliliruyetsa bez oshibok. No sama proga nerabotayet. Dayot kakoyta oshibki tipa (writeadress: 0x000001)... Naverna eto problema svyazn s pamitami. Naverna nexvatayet stekovoy pamit. komentariya {
сортировка двумерного массива C++
Помогите с задачей,плииз! упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.Найти номер первого из столбцов,не содержащих ни одного отрицательного элемента
C++ Скажите, почему различаются результаты? http://www.cyberforum.ru/cpp-beginners/thread15806.html
Добрый день. Скажите пожалуйста, почему различаются результаты при выполении арифметических операций на чистом С++ и при использовании АССЕМБЛЕРНОЙ ВСТАВКИ? #include <iostream> #include <windows.h> #include <iomanip> using namespace std; BYTE ddS = 10; BYTE ccS = 10;
C++ Чтение двухмерного массива из файла Помогите пожалуйста! есть файл с матрицей напр 12334 12323 12440 12424 как считать ведь файл типа char? написал но там читает ASCII что делать? подробнее

Показать сообщение отдельно
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167

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

13.11.2008, 15:35. Просмотров 3878. Ответов 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);
	}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru