Welcome to Dream.In.Code
Getting C++ Help is Easy!

Join 136,413 C++ Programmers for FREE! Get instant access to thousands of C++ experts, tutorials, code snippets, and more! There are 2,431 people online right now. Registration is fast and FREE... Join Now!




database

 
Reply to this topicStart new topic

database

avinandanaot
15 Oct, 2008 - 01:35 AM
Post #1

New D.I.C Head
*

Joined: 14 Oct, 2008
Posts: 13


My Contributions
cpp

#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define DELETED_RECORD '*'
#define USABLE_RECORD ' '

#define NUMERIC_FIELD 'N'
#define CHARACTER_FIELD 'C'
#define LOGICAL_FIELD 'L'
#define MEMO_FIELD 'M'
#define DATE_FIELD 'D'
#define FLOAT_FIELD 'F'
#define PICTURE_FIELD 'P'

#pragma pack(1)
typedef struct {

unsigned int bfVersion:7;
unsigned int bfHasMemo:1;
unsigned int bYear:8;
unsigned char bMonth;
unsigned char bDay;
long int lNumberRecords;
short int nFirstRecordOffset;
short int nRecordLength;
unsigned char szReserved[20];
} DB3HEADER;
typedef struct {
char szColumnName[11];
char chType;
long lFieldPointer;
unsigned char byLength;
unsigned char byDecimalPlace;
char szReserved[14];
} COLUMNDEF;
int main()
{
FILE *DBFile;
DB3HEADER db3Header;
struct _DBRECORD {
char sStatus[1];
char sName[40];
char sAddr1[40];
char sAddr2[40];
char sCity[20];
char sState[2];
char sZip[5];
} OurRecord;
char *pOurRecord;
COLUMNDEF ColumnDef[6];
char szBuffer[200];
char szTime[26];
char szFileName[25];
int i;
int nColumnCount = 0;
int nResult;
long lCurrentRecord = 0;
double dSales = 0.0;
struct tm *NewTime;
time_t aClock;

printf("Please enter new database name: ");
gets(szFileName);
DBFile = fopen(szFileName, "wb");
if (DBFile == NULL)
{
fprintf(stderr,
"ERROR: File '%s' couldn't be opened.\n", szFileName);
exit(4);
}

time( &aClock );
NewTime = localtime(&aClock);
memset(&db3Header, 0, sizeof(db3Header));

db3Header.bfVersion = 3;

db3Header.bfHasMemo = 0;

db3Header.bYear = NewTime->tm_year;
db3Header.bMonth = (unsigned char)(NewTime->tm_mon + 1);
db3Header.bDay = (unsigned char)NewTime->tm_mday;

db3Header.lNumberRecords = 0;

db3Header.nFirstRecordOffset = sizeof(DB3HEADER) + sizeof(ColumnDef)
+ 2;

db3Header.nRecordLength = sizeof(OurRecord);
nResult = fwrite((char *)&db3Header,
sizeof(DB3HEADER),
1,
DBFile);
if (nResult != 1)
{
fprintf(stderr, "ERROR: File '%s', write error (Database \
header).\n",
szFileName);
fclose(DBFile);
exit(4);
}

memset(ColumnDef, 0, sizeof(ColumnDef));

strcpy(ColumnDef[0].szColumnName, "Name");
ColumnDef[0].chType = CHARACTER_FIELD;
ColumnDef[0].byLength = sizeof(OurRecord.sName);
ColumnDef[0].byDecimalPlace = 0;
strcpy(ColumnDef[1].szColumnName, "Address1");
ColumnDef[1].chType = CHARACTER_FIELD;
ColumnDef[1].byLength = sizeof(OurRecord.sAddr1);
ColumnDef[1].byDecimalPlace = 0;
strcpy(ColumnDef[2].szColumnName, "Address2");
ColumnDef[2].chType = CHARACTER_FIELD;
ColumnDef[2].byLength = sizeof(OurRecord.sAddr2);
ColumnDef[2].byDecimalPlace = 0;
strcpy(ColumnDef[3].szColumnName, "City");
ColumnDef[3].chType = CHARACTER_FIELD;
ColumnDef[3].byLength = sizeof(OurRecord.sCity);
ColumnDef[3].byDecimalPlace = 0;
strcpy(ColumnDef[4].szColumnName, "State");
ColumnDef[4].chType = CHARACTER_FIELD;
ColumnDef[4].byLength = sizeof(OurRecord.sState);
ColumnDef[4].byDecimalPlace = 0;
strcpy(ColumnDef[5].szColumnName, "Zipcode");
ColumnDef[5].chType = CHARACTER_FIELD;
ColumnDef[5].byLength = sizeof(OurRecord.sZip);
ColumnDef[5].byDecimalPlace = 0;
nResult = fwrite((char *)ColumnDef,
sizeof(ColumnDef),
1,
DBFile);
if (nResult != 1)
{
fprintf(stderr, "ERROR: File '%s', write error (Column \
headers).\n",
szFileName);
fclose(DBFile);
exit(4);
}

nResult = fwrite((char *)"\x0D\0",
sizeof(char) * 2,
1,
DBFile);
if (nResult != 1)
{
fprintf(stderr, "ERROR: File '%s', write error (Column \
headers).\n",
szFileName);
fclose(DBFile);
exit(4);
}
db3Header.nFirstRecordOffset = (int)ftell(DBFile);
/* Step 5. Get some records for the database. */
memset(&OurRecord, 0, sizeof(OurRecord));
printf("Enter the name: (or no name to end)");
gets(szBuffer);
strncpy(OurRecord.sName, szBuffer, sizeof(OurRecord.sName));
while (strlen(szBuffer) > 0)
{
OurRecord.sStatus[0] = USABLE_RECORD;
printf("Enter address line 1: ");
gets(szBuffer);
strncpy(OurRecord.sAddr1, szBuffer, sizeof(OurRecord.sAddr1));
printf("Enter address line 2:");
gets(szBuffer);
strncpy(OurRecord.sAddr2, szBuffer, sizeof(OurRecord.sAddr2));
printf("Enter city:");
gets(szBuffer);
strncpy(OurRecord.sCity, szBuffer, sizeof(OurRecord.sCity));
printf("Enter state (2 characters only):");
gets(szBuffer);
strncpy(OurRecord.sState, szBuffer, sizeof(OurRecord.sState));
printf("Enter Zipcode:");
gets(szBuffer);
strncpy(OurRecord.sZip, szBuffer, sizeof(OurRecord.sZip));

pOurRecord = (char *)&OurRecord;
for (i = 0; i < sizeof(OurRecord); i++)
{
if (pOurRecord[i] == '\0')
{
pOurRecord[i] = ' ';
}
}
nResult = fwrite((char *)&OurRecord,
sizeof(OurRecord),
1,
DBFile);
if (nResult != 1)
{
fprintf(stderr, "ERROR: File '%s', write error (Column \
headers).\n",
szFileName);
fclose(DBFile);
exit(4);
}
else
{
++db3Header.lNumberRecords;
}
memset(&OurRecord, 0, sizeof(OurRecord));
printf("Enter the name: (or no name to end)");
gets(szBuffer);
strncpy(OurRecord.sName, szBuffer, sizeof(OurRecord.sName));
}

time( &aClock );
NewTime = localtime(&aClock);
/* Set the date to now */
db3Header.bYear = NewTime->tm_year;
db3Header.bMonth = (unsigned char)(NewTime->tm_mon + 1);
db3Header.bDay = (unsigned char)NewTime->tm_mday;
/* The number of records is already set */
nResult = fseek(DBFile, (long)0, SEEK_SET);
if (nResult != 0)
{
fprintf(stderr, "ERROR: File '%s', seek error (rewrite of \
header).\n",
szFileName);
fclose(DBFile);
exit(4);
}
nResult = fwrite((char *)&db3Header,
sizeof(DB3HEADER),
1,
DBFile);
if (nResult != 1)
{
fprintf(stderr, "ERROR: File '%s', write error (Database header \
rewrite).\n",
szFileName);
fclose(DBFile);
exit(4);
}

fclose(DBFile);
return(0);
}


** Edit ** code.gif
User is offlineProfile CardPM
+Quote Post

AmitTheInfinity
RE: Database
15 Oct, 2008 - 01:40 AM
Post #2

C Surfing ∞
Group Icon

Joined: 25 Jan, 2007
Posts: 1,025



Thanked: 35 times
Dream Kudos: 125
My Contributions
Any problem in that code? you are supposed to post your problems as well, we are not mind readers here.

And always code.gif
User is offlineProfile CardPM
+Quote Post

no2pencil
RE: Database
15 Oct, 2008 - 01:42 AM
Post #3

My fridge be runnin OH NOEZ!
Group Icon

Joined: 10 May, 2007
Posts: 6,462



Thanked: 66 times
Dream Kudos: 2425
Expert In: Goofing Off

My Contributions
*sigh*
User is online!Profile CardPM
+Quote Post

Reply to this topicStart new topic
Time is now: 12/2/08 12:39PM

Live C++ Help!

C++ Tutorials

Reference Sheets

C++ Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month