delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/05/21/08:03:13

From: "ADJ" <dv1b AT hotmail DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: SUBJECT:(HELP ME)My Computer is Stupied or I am Stupied ??? (Too mush lines? its source code!)
Date: 20 May 1997 20:48:31 GMT
Organization: ADJ
Lines: 335
Message-ID: <01bc655e$cfb4e000$79297dc2@qwerty>
NNTP-Posting-Host: dialup-121.dublin.iol.ie
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

SUBJECT:(HELP ME)My Computer is Stupied or I am Stupied ???

Hi, 

I have stupied problem. 

try to debug it on Addrec function.

cin.getlin      doesnt get string first time!!!
-----------------------------------------------



-----------------------------------------------------
By the way I am working in Win95, 
using gcc version 2.7.2.1, and RHide1.2
-----------------------------------------------------


#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mylib.h"

/* enum bool{true,false}; */

typedef struct{
	unsigned int nCode;
	char szFirstName[60];
	char szSurName[60];
	int nAge;
}RecorD;

class MyRecord
{
	public:
		MyRecord();
		void setFileName(char *);

		void AddRec();
		void DelRec();
		void DelAllRec();
		void ViewRec();
		void ViewAllRec();
		void SearchRec();
		void SortRec();
		void Exit(); /* This function have to sort file save it only then exit */
		void RecInFile();

	protected:
		RecorD Rec;
		char szFileName[60];
		int Search_4_Code(unsigned int );
};

MyRecord::MyRecord() {
	int i;
	Rec.nCode=0x0;
	for(i=0;i<60;i++)
		Rec.szFirstName[i]=Rec.szSurName[i]=0x0;
	Rec.nAge=0x0;
}

void MyRecord::setFileName(char *FName) { strcpy(szFileName,FName); }

void MyRecord::AddRec()
{
	FILE *tempfp;
	bool bOkCode=true;
	char szTemp[60];
	int counteri=0;

	do {
//		if(bOkCode==false) { 
      		cout << endl << "Please enter a NUMBER between 1 and 30000" <<
endl;
//    }
		bOkCode=true;
		cout << endl << endl;
		cout << "Enter Code:\t\t";
		/******************************************************************/
		/* HERE  DOESNT WANNA GETLINE FIRST TIME !!! **********************/
		/******************************************************************/
		cin.getline(szTemp,60);
		if(isitNumber(szTemp)==false)
			bOkCode=false;
		Rec.nCode=atoi(szTemp);
		if(bOkCode==true) {
			if((Search_4_Code(Rec.nCode))!=-1) {
   	   			cout << endl << "Sorry But Record with "
   	   			<< Rec.nCode
   	   			<<"code already exist." << endl << Search_4_Code(Rec.nCode);
				bOkCode=false;
			}
			if(Rec.nCode<=0)
				bOkCode=false;
	   	   	if(Rec.nCode>30000)
				bOkCode=false;
   		}
	}while(bOkCode==false);

	cout << "Enter  FirstName:\t";
	cin.getline(Rec.szFirstName,60);
	cout << "Enter  LastName:\t";
	cin.getline(Rec.szSurName,60);

	bOkCode=true;
	do {
		if(bOkCode==false)
			cout << "Pleasae Enter Age between 1 and 120." << endl;
		bOkCode=true;
		cout << "Enter  Age:\t\t";
		fflush(stdin);
		cin.getline(szTemp,4);
		if(isitNumber(szTemp)==false) // isit number? if number set bObCode to
FALSE
			bOkCode=false;
		Rec.nAge=atoi(szTemp);
		fflush(stdin);
		if(bOkCode==true) {
			if(Rec.nAge<=0)
				bOkCode=false;
			if(Rec.nAge>=120)
				bOkCode=false;
		}
	}while(bOkCode==false);

	if((tempfp=fopen(szFileName,"a+"))==NULL) {
 		cout << "ERROR No.2 Cannot open append to file. Press any key.";
		getch();
		exit(-1);
	}

	fwrite(&Rec, sizeof(Rec), 1, tempfp); // write struct Record to file
	fclose(tempfp); // close file

}




void MyRecord::DelRec()		{ }
void MyRecord::DelAllRec()	{ }
void MyRecord::ViewRec()	{ }
void MyRecord::ViewAllRec()	{ }
void MyRecord::SearchRec()	{ }
void MyRecord::SortRec()	{ }
void MyRecord::Exit()		{ }
void MyRecord::RecInFile()	{ }

int MyRecord::Search_4_Code(unsigned int unCode)
{ 
	FILE *tempfp;
	bool bFound=false;
	int nCounter=-1;
	int nRead;
	RecorD Records;

	if((tempfp=fopen(szFileName,"r"))==NULL) {
		cout << "\nERROR No.3 Cannot open "
		     << szFileName
		     << " file. Press any key.\n";
		getch();
		exit(-1);
	}

	rewind(tempfp);
	do {
		++nCounter;
		if(feof(tempfp))
			break;
		nRead=fread(&Records, sizeof(Records), 1, tempfp);
		if(nRead==1) {
			if(Rec.nCode==unCode)
				bFound=true;
			else
		  	bFound=false;
		}
		else
			bFound=false;
	}while(bFound==false);

	fclose(tempfp);

	if(bFound==false)
	   	return -1;
	else
		return nCounter;

}

void New_File(MyRecord *);
void Open_File(MyRecord *);


void main(void)
{
	MyRecord Record;
	char cChoice;

	do {
		clrscr();
		cout << "Welcome to Simple DataBase!" << endl;
		cout << "---------------------------" << endl << endl << endl;
		cout << "1. New File" << endl
		     << "2. Open File" << endl
		     << "3. EXIT" << endl
		     << "So? " << endl;

		cChoice=getch();
		putch(cChoice);
	}while(cChoice!='1'&&cChoice!='2'&&cChoice!='3');

	switch(cChoice) {
		case('1'):
			New_File(&Record);
			break;
		case('2'):
			Open_File(&Record);
			break;
		case('3'):
			exit(1);
	}

	do {
		clrscr();

		cout << "---------------------\n";
		cout << "1. Add Record\n";
		cout << "2. Delete Record\n";
		cout << "3. Delete All Records\n";
		cout << "4. View Record\n";
		cout << "5. View All Records\n";
		cout << "6. Search for Record\n";
		cout << "7. Sort Record\n";
		cout << "8. EXIT\n";
		cout << "So?\n";

		switch(cChoice=getche()) {
		case('1'):
			Record.AddRec();
			break;
		case('2'):
		        Record.DelRec();
		        break;
		case('3'):
		        Record.DelAllRec();
		        break;
		case('4'):
		        Record.ViewRec();
		        break;
		case('5'):
		        Record.ViewAllRec();
		        break;
		case('6'):
		        Record.SearchRec();
		        break;
		case('7'):
		        Record.SortRec();
		        break;
		case('8'):
		        Record.Exit();
		        break;
		}

	}while(cChoice!='8');

	exit(1);
}

void New_File(MyRecord *Record)
{
	char strTempFileName[60];
	bool bFileExist;
	FILE *fp1temp;

	do {
		cout << endl << "\t" << "Please Enter File Name: ";
		cin >> strTempFileName;
		if((isFileExist(strTempFileName))) {
			bFileExist=true;
			cout << "Sorry...but "
				<< strTempFileName
				<< " file already exist" << endl;
		}
		else {
			bFileExist=false;
			if((fp1temp=fopen(strTempFileName,"w"))==NULL) {
				cout << endl << "ERROR No.1 Cannot Create New File" << endl;
				exit(-1);
			}
			fclose(fp1temp);
		}

	}while(bFileExist==true);

	Record->setFileName(strTempFileName); /* set filename in class Record */

}

void Open_File(MyRecord *Record)
{
	char strTempFileName[60];
	bool bFileExist;
	FILE *fptemp;

	do {
		cout << endl << "\t" << "Please Enter File Name: ";
		cin >> strTempFileName;
		if(!isFileExist(strTempFileName)) {
			bFileExist=false;
			cout << "Sorry...Cannot open " << strTempFileName << " file" << endl;
		}
		else {
			bFileExist=true;
			if((fptemp=fopen(strTempFileName,"r"))==NULL) {
				cout << endl
					<< "ERROR No.1 Cannot Open "
					<< strTempFileName
					<< " File "
					<< endl;
				exit(-1);
				fclose(fptemp);
			}
		}
	}while(bFileExist==false);
		
	Record->setFileName(strTempFileName);

}



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019