AISHA SH Ответов: 2

Проект C++...дисплей не работает(Ошибка времени выполнения)


#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
class hospappt
{
	char uname[20];
	int idno;
	int age;
	int pno;
	int id;
	int dp;
	int hospid;
	char hospname[50];
	char email[30];
	char dpt[30];
	char gender;
	char docname[50];
	public:
	void admin();
	void user();
	void insert();
	void Delete();
	void display();
	void dept();
};
void hospappt::admin()
{
	clrscr();
	int c;
	char ch;
	do
	{
		cout<<"\n\t\t****ADMIN MENU****";
		cout<<"\n\t\t1. INSERT INFORMATION";
		cout<<"\n\t\t2. DISPLAY INFORMATION";
		cout<<"\n\t\t3. DELETE INFORMATION";
		cout<<"\n\t\t4.RETURN TO MAIN";
		cout<<"\n\t\tPLEASE ENTER YOUR CHOICE: ";
		cin>>c;
		switch(c)
		{
		case 1:
			insert();
			break;
		case 2:
			display();
			break;
		case 3:
			Delete();
			break;
		case 4:
			return;
		default:
			cout<<"\n\t\tWRONG OPTION!!!!!";
			return;
		}
		cout<<"\n\tDO YOU WANT TO CONTINUE WITH ADMIN MODE?(Y\N)";
		cin>>ch;
	}while(ch=='Y'||ch=='y');
}

void hospappt::insert()
{
	clrscr();
	int n,i;
	hospappt h;
	ofstream d;
	d.open("doct.dat",ios::app|ios::binary);
	cout<<"\nENTER NUMBER OF DOCTORS YOU WOULD LIKE TO ADD:";
	cin>>n;
	for(i=0;i<n;++i)
	{
		cout<<"\n\t\tPLEASE ENTER THE FOLLOWING DETAILS";
		cout<<"\n\t\tHOSPITAL ID: ";
		cin>>hospid;
		cout<<"\n\t\tHOSPITAL NAME: ";
		gets(hospname);
		cout<<"\n\t\tDEPARTMENT: ";
		gets(dpt);
		cout<<"\n\t\tNAME OF DOCTOR:  ";
		gets(docname);
		d.write((char*)&h,sizeof(h));
		cout<<"\n\t\t!!!!!RECORD SUCCESSFULLY INSERTED!!!!!";
	}
	d.close();
	return;
}

void hospappt::display()
{
	hospappt h;
	int id;
	char dep[30];
	ifstream fin;
	fin.open("doct.dat",ios::app|ios::binary);
	cout<<"ENTER ID NUMBER:";
	cin>>id;
	cout<<"ENTER DEPARTMENT:";
	gets(dep);
	while(fin.read((char*)&h,sizeof(h)))
	{
		if(id==hospid)
		{
			if(strcmpi(dpt,dep))
			{
				cout<<"HOSPITAL NAME: "<<hospname;
				cout<<"DEPARTMENT   : "<<dpt;
				cout<<"DOCTOR       : "<<docname;
			}
		}
		else
		{
			cout<<"HOSPITAL NOT FOUND!!!";
			return;
		}
	}
	fin.close();
	return;
}


void hospappt::dept()
{
	clrscr();
	cout<<"\n\t\t*****DEPARTMENT*******";
	cout<<"\n\t1. GENERAL MEDICINE";
	cout<<"\n\t2. CARDIOLOGY";
	cout<<"\n\t3. ENT";
	cout<<"\n\t4. GASTROENTEROLOGY";
	cout<<"\n\t5. GYNAECOLOGY";
	cout<<"\n\t6. PEDIATRICIAN";
	cout<<"\n\t7. NEUROLOGY";
	cout<<"\n\t8. ONCOLOGY";
	cout<<"\n\t9. OPTHALMOLOGY";
	cout<<"\n\t10.ORTHOPAEDICS";
	cout<<"\n\t     PLEASE ENTER YOUR OPTION:";
	cin>>dp;
	return;
}
void hospappt::Delete()
{
	return;
}
void main()
{
	hospappt h;
	h.admin();
	cout<<"SMILE";
	getch();
	return;
}


Что я уже пробовал:

В приведенной выше программе функция отображения не работает..даже если я вставляю информацию, когда я пытаюсь отобразить ее, она не дает желаемого результата (т. е. информация, которую я вставил через функцию вставки)
Я надеюсь получить ответ/исправление очень скоро.

(p.s. программа не завершена, так как я не могу продолжить работу, не исправив эту ошибку) =)

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Проект C++...дисплей не работает(Ошибка времени выполнения)

Когда вы просите о помощи, обычно считается хорошей идеей рассказать, в чем заключается ошибка и ее положение.
Цитата:
когда я пытаюсь отобразить его, он не дает желаемого результата..

И каков желаемый результат ?

Совет: Научитесь правильно делать отступы в вашем коде, это покажет его структуру и поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
class hospappt
{
	char uname[20];
	int idno;
	int age;
	int pno;
	int id;
	int dp;
	int hospid;
	char hospname[50];
	char email[30];
	char dpt[30];
	char gender;
	char docname[50];
	public:
	void admin();
	void user();
	void insert();
	void Delete();
	void display();
	void dept();
};
void hospappt::admin()
{
	clrscr();
	int c;
	char ch;
	do
	{
		cout<<"\n\t\t****ADMIN MENU****";
		cout<<"\n\t\t1. INSERT INFORMATION";
		cout<<"\n\t\t2. DISPLAY INFORMATION";
		cout<<"\n\t\t3. DELETE INFORMATION";
		cout<<"\n\t\t4.RETURN TO MAIN";
		cout<<"\n\t\tPLEASE ENTER YOUR CHOICE: ";
		cin>>c;
		switch(c)
		{
		case 1:
			insert();
			break;
		case 2:
			display();
			break;
		case 3:
			Delete();
			break;
		case 4:
			return;
		default:
			cout<<"\n\t\tWRONG OPTION!!!!!";
			return;
		}
		cout<<"\n\tDO YOU WANT TO CONTINUE WITH ADMIN MODE?(Y\N)";
		cin>>ch;
	}while(ch=='Y'||ch=='y');
}

void hospappt::insert()
{
	clrscr();
	int n,i;
	hospappt h;
	ofstream d;
	d.open("doct.dat",ios::app|ios::binary);
	cout<<"\nENTER NUMBER OF DOCTORS YOU WOULD LIKE TO ADD:";
	cin>>n;
	for(i=0;i<n;++i)
	{
		cout<<"\n\t\tPLEASE ENTER THE FOLLOWING DETAILS";
		cout<<"\n\t\tHOSPITAL ID: ";
		cin>>hospid;
		cout<<"\n\t\tHOSPITAL NAME: ";
		gets(hospname);
		cout<<"\n\t\tDEPARTMENT: ";
		gets(dpt);
		cout<<"\n\t\tNAME OF DOCTOR:  ";
		gets(docname);
		d.write((char*)&h,sizeof(h));
		cout<<"\n\t\t!!!!!RECORD SUCCESSFULLY INSERTED!!!!!";
	}
	d.close();
	return;
}

void hospappt::display()
{
	hospappt h;
	int id;
	char dep[30];
	ifstream fin;
	fin.open("doct.dat",ios::app|ios::binary);
	cout<<"ENTER ID NUMBER:";
	cin>>id;
	cout<<"ENTER DEPARTMENT:";
	gets(dep);
	while(fin.read((char*)&h,sizeof(h)))
	{
		if(id==hospid)
		{
			if(strcmpi(dpt,dep))
			{
				cout<<"HOSPITAL NAME: "<<hospname;
				cout<<"DEPARTMENT   : "<<dpt;
				cout<<"DOCTOR       : "<<docname;
			}
		}
		else
		{
			cout<<"HOSPITAL NOT FOUND!!!";
			return;
		}
	}
	fin.close();
	return;
}


void hospappt::dept()
{
	clrscr();
	cout<<"\n\t\t*****DEPARTMENT*******";
	cout<<"\n\t1. GENERAL MEDICINE";
	cout<<"\n\t2. CARDIOLOGY";
	cout<<"\n\t3. ENT";
	cout<<"\n\t4. GASTROENTEROLOGY";
	cout<<"\n\t5. GYNAECOLOGY";
	cout<<"\n\t6. PEDIATRICIAN";
	cout<<"\n\t7. NEUROLOGY";
	cout<<"\n\t8. ONCOLOGY";
	cout<<"\n\t9. OPTHALMOLOGY";
	cout<<"\n\t10.ORTHOPAEDICS";
	cout<<"\n\t     PLEASE ENTER YOUR OPTION:";
	cin>>dp;
	return;
}
void hospappt::Delete()
{
	return;
}
void main()
{
	hospappt h;
	h.admin();
	cout<<"SMILE";
	getch();
	return;
}

Стиль отступа - Википедия[^]

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]


Stefan_Lang

- Это также помогает выявлять структурные ошибки.
Говоря о структурных ошибках, ключевое слово public не должно иметь отступа. Сначала я не заметил его и удивился, как этот код вообще может компилироваться...

Рейтинг:
0

Richard MacCutchan

void hospappt::insert()
{
 clrscr();
 int n,i;
 hospappt h; // this is a local object and is redundant
 ofstream d;
 d.open("doct.dat",ios::app|ios::binary);
 cout>n;
 for(i=0;i>hospid;
  cout<<"\n\t\tHOSPITAL NAME: ";
  gets(hospname);
  cout<<"\n\t\tDEPARTMENT: ";
  gets(dpt);
  cout<<"\n\t\tNAME OF DOCTOR:  ";
  gets(docname);
  d.write((char*)&h,sizeof(h)); // you are writing an empty object
  cout<<"\n\t\t!!!!!RECORD SUCCESSFULLY INSERTED!!!!!";
 }
 d.close();
 return;
}


Вы не должны создавать локальную копию вашего класса внутри одного из его методов. Используйте this указатель для ссылки на переменные внутри объекта.

И, пожалуйста, выключите caps lock; ввод текста во всех верхних строках считается криком в интернете. Кроме того, Пожалуйста, не утверждайте, что ваш проект является срочным, он никому здесь не нужен.


AISHA SH

Спасибо!
Но есть ли какой-либо другой вариант, кроме *этого* указателя?

Richard MacCutchan

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

 cin >> this->variable;

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

Когда вы приходите, чтобы записать запись в постоянное хранилище, вам нужно использовать сериализатор, который записывает каждую переменную по очереди. В качестве альтернативы в вашем простом проекте вы можете написать и прочитать объект внутри вашего основного метода.

AISHA SH

Хорошо