Hi
und hier ein kleines Datenbankprogramm von mir
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#define A_STR_MAX 50 //
#define B_STR_MAX 50
struct person_ds {
char name[A_STR_MAX];
char vname[A_STR_MAX];
char strasse[A_STR_MAX];
int plz;
char stadt[A_STR_MAX];
int tel;
int fax;
int p_id;
};
int pers_count; //Koëè÷åñòâî Àäðåñîø
struct person_ds *adrs; //Óêàçàòåëü ía ïåðåìåííóþ Àäðåñîø
struct buch_ds {
char name[B_STR_MAX];
char autor[B_STR_MAX];
char isbn[15]; //ïðèìåð: 3-8272-6812-5
char info[200];
int vorrat;
int b_id;
};
int buch_count; //Koëè÷åñòâî Kíèã
struct buch_ds *buchr; //Óêàçàòåëü ía ïåðåìåííóþ Kíèã
//ñòðóêòóðà àíòðàãà
struct auftrag_ds {
int p_id;
int b_id;
int outzahl;
char outdatum[11];
char indatum[11];
int auftrag_id;
};
int aufraege_count; //Koëè÷åñòâî àíòðàãîâ
struct auftrag_ds *aufraege; //Óêàçàòåëü ía ïåðåìåííóþ àíòðàãîâ
/* Binäre Suche nach String s in adrs */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des nächstgrösseren Elements */
int p_BinSuche( char s[50] )
{
int unten=0, oben=pers_count, mitte;
if ( strcmp(s, adrs[unten].name)<=0 )
//Wenn s keiner oder gleich ...[0].name ist
return 0;
else
{
while( oben - unten > 1 )
{
mitte = (oben-unten)/2;
if ( strcmp(s, adrs[unten+mitte].name) == 0 )
{
unten += mitte;
oben = unten;
}
if ( strcmp(s, adrs[unten+mitte].name) > 0 )
unten += mitte;
else
oben = unten + mitte;
}
if ( strcmp(s, adrs[oben-1].name) == 0 )
oben--;
return oben;
}
}
/* Binäre Suche nach String s in buchr */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des nächstgrösseren Elements */
int b_BinSuche( char s[50] )
{
int unten=0, oben=buch_count, mitte;
if ( strcmp(s, buchr[unten].name)<=0 )
//Wenn s keiner oder gleich ...[0].name ist
return 0;
else
{
while( oben - unten > 1 )
{
mitte = (oben-unten)/2;
if ( strcmp(s, buchr[unten+mitte].name) == 0 )
{
unten += mitte;
oben = unten;
}
if ( strcmp(s, buchr[unten+mitte].name) > 0 )
unten += mitte;
else
oben = unten + mitte;
}
if ( strcmp(s, buchr[oben-1].name) == 0 )
oben--;
return oben;
}
}
/* Suche nach Zahl s in aufraege */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int a_Suche( int s )
{
int unten=0, oben=aufraege_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == aufraege[mitte].auftrag_id )
return mitte;
return oben;
}
/* Suche nach Zahl s in adrs */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int p_IDSuche( int s )
{
int unten=0, oben=pers_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == adrs[mitte].p_id )
return mitte;
return oben;
}
/* Suche nach Zahl s in buchr */
/* */
/* zurueckgeliefert wird die Position an der s */
/* gefunden wurde oder ( falls s nicht in der Liste ist) */
/* die Position des letzten Elements */
int b_IDSuche( int s )
{
int unten=0, oben=buch_count, mitte;
for ( mitte = unten; mitte < oben; mitte++ )
if ( s == buchr[mitte].b_id )
return mitte;
return oben;
}
// Vergleich zweier Adressen nach dem Namen
// für qsort
int p_vgl( const void* p1,const void* p2 )
{
struct person_ds* adr1,*adr2;
adr1=( struct person_ds* )p1;
adr2=( struct person_ds* )p2;
return strcmp( adr1->name, adr2->name );
}
// Vergleich zweier Buecher nach dem Namen
// für qsort
int b_vgl( const void* b1,const void* b2 )
{
struct buch_ds* buch1,*buch2;
buch1=( struct buch_ds* )b1;
buch2=( struct buch_ds* )b2;
return strcmp( buch1->name, buch2->name );
}
// Vergleich zweier Aufträde nach dem Namen
// für qsort
int a_vgl( const void* a1,const void* a2 )
{
struct auftrag_ds* auftrag1,*auftrag2;
auftrag1=( struct auftrag_ds* )a1;
auftrag2=( struct auftrag_ds* )a2;
if ( auftrag1->auftrag_id < auftrag2->auftrag_id )
return -1;
if ( auftrag1->auftrag_id > auftrag2->auftrag_id )
return 1;
if ( auftrag1->auftrag_id == auftrag2->auftrag_id )
return 0;
}
//########################################################################
void p_ausgabe();
void p_ausgeben(struct person_ds adr, int _select);
void b_ausgabe();
void b_ausgeben(struct buch_ds buch, int _select);
/*char* string_einlesen()
{
char* str;
return str;
}*/
// Einlesen einer Adresse ueber die Tastatur
struct person_ds p_einlesen()
{
struct person_ds adr;
char str[100];
strcpy(str, " ");
printf( "\n" );
printf( "Name : " );
gets( str );
strcpy(adr.name, str);
printf( "Vorname : " );
gets( str );
strcpy(adr.vname, str);
printf( "Strasse : " );
gets( str );
strcpy(adr.strasse, str);
printf( "PLZ : " );
scanf("%d", &(adr.plz));
fflush( stdin );
printf( "Stadt : " );
gets( str );
strcpy(adr.stadt, str);
printf( "Telefon : " );
scanf("%d", &(adr.tel));
fflush( stdin );
printf( "Telefax : " );
scanf("%d", &(adr.fax));
fflush( stdin );
srand( (unsigned)time( NULL ) );
adr.p_id = rand();
return adr;
}
// Einlesen eines Buches ueber die Tastatur
struct buch_ds b_einlesen()
{
struct buch_ds buch;
char str[100];
strcpy(str, " ");
printf( "\n" );
printf( "Buchname : " );
gets( str );
strcpy(buch.name, str);
printf( "ISBN : " );
gets( str );
strcpy(buch.isbn, str);
printf( "Autor : " );
gets( str );
strcpy(buch.autor, str);
printf( "Beschreibung: " );
gets( str );
strcpy(buch.info, str);
printf( "Vorrat : " );
scanf( "%d", &(buch.vorrat) );
fflush( stdin );
srand( (unsigned)time( NULL ) );
buch.b_id = rand();
return buch;
}
// Einlesen eines Auftrags ueber die Tastatur
struct auftrag_ds a_einlesen()
{
struct auftrag_ds auftrag;
char s[50];
char tmp[11];
int k=0;
char taste;
/*/ fur TCP
struct date d;
getdate(&d);
strcpy(tmp,(char*)&d.da_mon);strcat(tmp,"/");
strcat(tmp,(char*)&d.da_day);strcat(tmp,"/");
strcat(tmp,(char*)&d.da_year);
// für VC++-----*/
_strdate( tmp );
//--------------
strcpy(auftrag.outdatum, tmp);
strcpy(auftrag.indatum, "__/__/__");
while( taste != 'j' ) // P_ID für den auftrag vestlegen
{
p_ausgabe();
printf( "\nName eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 ){
printf("\n");
p_ausgeben( adrs[k], 2); taste = ' ';
while((taste != 'j') && (taste != 'n'))
{
printf( "\nDie Person %s ins Auftrag aufnemmen? j/n:",s);
taste = getch();
if ( taste == 'j' )
auftrag.p_id = adrs[k].p_id;
printf("\n\n");
}}
else
printf( "\nName %s nicht vorhanden\n\n", s );
}
taste = ' '; k=0;
while( taste != 'j' ) // B_ID für den auftrag vestlegen
{
b_ausgabe();
printf( "\nBuchnamen eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
printf("\n");
b_ausgeben( buchr[k], 2);
if (buchr[k].vorrat>0)
{
taste = ' ';
while((taste != 'j') && (taste != 'n'))
{
printf( "\nDas Buch %s ins Auftrag aufnemmen? j/n:",s);
taste = getch(); //scanf( "%c", taste );
//fflush( stdin );
if ( taste == 'j' )
auftrag.b_id = buchr[k].b_id; printf("\n");
}
}
else
printf( "\nBuch %s ist momentan nich nicht vorretig\n\n", s );
}
else
printf( "\nBuchname %s nicht vorhanden\n\n", s );
}
int i;
do
{
printf( "\nWieviele Buecher werden ausgegeben : " );
scanf( "%d", &i );
if ( i>buchr[k].vorrat )
printf("\nEs koenen nur %d Buecher ausgegeben werden!\n", buchr[k].vorrat );
else
break;
}while(1);
auftrag.outzahl=i;
buchr[k].vorrat = buchr[k].vorrat - auftrag.outzahl;
srand( (unsigned)time( NULL ) );
auftrag.auftrag_id = rand();
//int b_id
return auftrag;
}
// Ausgeben einer Adresse auf den Bildschirm
void p_ausgeben(struct person_ds adr, int _select)
{
// _select = 0, or _select = 1, or _select = 2
int i;
char tmp_name[50];
if (strlen(adr.name)>13){
for (i=0; i<13; i++ )
tmp_name
= adr.name;
tmp_name = '\0';}
else
strcpy(tmp_name, adr.name);
char tmp_vname[50];
if (strlen(adr.vname)>12){
for (i=0; i<12; i++ )
tmp_vname = adr.vname;
tmp_vname = '\0';}
else
strcpy(tmp_vname, adr.vname);
char tmp_strasse[50];
if (strlen(adr.strasse)>14){
for (i=0; i<14; i++ )
tmp_strasse = adr.strasse;
tmp_strasse = '\0';}
else
strcpy(tmp_strasse, adr.strasse);
char tmp_stadt[50];
if (strlen(adr.stadt)>13){
for ( i=0; i<13; i++ )
tmp_stadt = adr.stadt;
tmp_stadt = '\0';}
else
strcpy(tmp_stadt, adr.stadt);
if (_select == 0)
printf( "\1 %-5d", adr.p_id );
if (_select == 1)
printf( "\2 %-5d", adr.p_id );
if (_select == 2)
printf( " %-5d", adr.p_id );
printf( "| %-14s", tmp_name );
printf( "| %-13s", tmp_vname );
printf( "| %-15s", tmp_strasse );
printf( "| %-6d", adr.plz );
printf( "| %-14s\n", tmp_stadt );
}
// Ausgeben eines Buches auf den Bildschirm
void b_ausgeben(struct buch_ds buch, int _select)
{
int i;
// _select = 0, or _select = 1, or _select = 2
char tmp_name[50];
if (strlen(buch.name)>13){
for ( i=0; i<13; i++ )
tmp_name = buch.name;
tmp_name = '\0';}
else
strcpy(tmp_name, buch.name);
char tmp_isbn[50];
if (strlen(buch.isbn)>13){
for ( i=0; i<13; i++ )
tmp_isbn = buch.isbn;
tmp_isbn = '\0';}
else
strcpy(tmp_isbn, buch.isbn);
char tmp_autor[50];
if (strlen(buch.autor)>13){
for ( i=0; i<13; i++ )
tmp_autor = buch.autor;
tmp_autor = '\0';}
else
strcpy(tmp_autor, buch.autor);
if (_select == 0)
printf( "\1 %-5d", buch.b_id );
if (_select == 1)
printf( "\2 %-5d", buch.b_id );
if (_select == 2)
printf( " %-5d", buch.b_id );
printf( "| %-14s", tmp_name );
printf( "| %-14s", tmp_isbn );
printf( "| %-14s", tmp_autor );
printf( "| %-14d\n", buch.vorrat );
//printf( "%-7d\n", buch );
}
// Ausgeben eines Aufrags auf den Bildschirm
void a_ausgeben(struct auftrag_ds auftrag, int _select)
{
int i;
// _select = 0, or _select = 1, or _select = 2
int k = p_IDSuche(auftrag.p_id);
char tmp_pname[50];
if (strlen(adrs[k].name)>13){
for ( i=0; i<13; i++ )
tmp_pname = adrs[k].name;
tmp_pname = '\0';}
else
strcpy(tmp_pname, adrs[k].name);
char tmp_pvname[50];
if (strlen(adrs[k].vname)>13){
for ( i=0; i<13; i++ )
tmp_pvname = adrs[k].vname;
tmp_pvname = '\0';}
else
strcpy(tmp_pvname, adrs[k].vname);
k = b_IDSuche(auftrag.b_id);
char tmp_bname[50];
if (strlen(buchr[k].name)>13){
for ( i=0; i<13; i++ )
tmp_bname = buchr[k].name;
tmp_bname = '\0';}
else
strcpy(tmp_bname, buchr[k].name);
if (_select == 0)
printf( "\1 %-5d", auftrag.auftrag_id );
if (_select == 1)
printf( "\2 %-5d", auftrag.auftrag_id );
if (_select == 2)
printf( " %-5d", auftrag.auftrag_id );
printf( "| %-14s", tmp_pname );
printf( "| %-14s", tmp_pvname );
printf( "| %-14s", tmp_bname );
printf( "| %-5d\n", auftrag.outzahl );
}
// Abspeichern einer eingelesenen Adresse
// in einer Datei
void p_eingabe()
{
struct person_ds adr;
adr = p_einlesen();
// falls die Datei nicht leer war
if ( pers_count > 0 )
{
adrs = (struct person_ds*)realloc(adrs, (pers_count+1)*sizeof(person_ds));
adrs[pers_count] = adr;
}
// falls die Datei leer war
else
adrs[0] = adr;
pers_count++;
// Adressen neu sortieren
qsort(adrs, pers_count, sizeof (struct person_ds), p_vgl);
}
// Abspeichern eines eingelesenen Buches
// in einer Datei
void b_eingabe()
{
struct buch_ds buch;
buch = b_einlesen();
// falls die Datei nicht leer war
if ( buch_count > 0 )
{
buchr = (struct buch_ds*)realloc(buchr, (buch_count+1)*sizeof(buch_ds));
buchr[buch_count] = buch;
}
// falls die Datei leer war
else
buchr[0] = buch;
buch_count++;
// Buecher neu sortieren
qsort(buchr, buch_count, sizeof (struct buch_ds), b_vgl);
}
// Abspeichern eines eingelesenen Auftrages
// in einer Datei
void a_eingabe()
{
struct auftrag_ds auftrag;
auftrag = a_einlesen();
// falls die Datei nicht leer war
if ( aufraege_count > 0 )
{
// in der variable 'auftraege' platz für einen neuen auftrag schafen
aufraege = (struct auftrag_ds*)realloc(aufraege, (aufraege_count+1)*sizeof(auftrag_ds));
// den neuen Aufrag an die hientere stelle in die variable 'auftraege' einfuegen
aufraege[aufraege_count] = auftrag;
}
// falls die Datei leer war
else
// wird der Auftrag an erste stelle in der Variable 'auftraege' einfuegen
aufraege[0] = auftrag;
aufraege_count++;
// Auftraege neu sortieren
qsort(aufraege, aufraege_count, sizeof (struct auftrag_ds), a_vgl);
}
// Ausgabe der gesamten Adressdatei
void p_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-13s %-15s %-6s %-14s\n\n" ,"ID","Name",
"Vorname","Strasse","PLZ","Stadt");
//printf( "Name\tVorname\tStrasse\tPLZ\tStadt\tTelefon\tTelefax\n\n");
if( pers_count <= 0 )
printf( "Keine Adressen vorhanden\n" );
else
for ( k = 0; k < pers_count; k++ )
p_ausgeben( adrs[k] , 1 );
}
// Ausgabe der gesamten Buchdatei
void b_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-14s %-14s %-14s\n\n" ,"ID","Buchname","ISBN","Autor","Vorrat");
if( buch_count <= 0 )
printf( "Keine Buecher vorhanden\n" );
else
for ( k = 0; k < buch_count; k++ )
b_ausgeben( buchr[k], 1 );
}
// Ausgabe der gesamten Auftraegedatei
void a_ausgabe()
{
int k;
//clrscr();
printf(" %-5s %-14s %-14s %-14s %-5s\n\n" ,"A-ID","Name","Vorname","Buchname","Zahl");
if( aufraege_count <= 0 )
printf( "Keine Auftraege vorhanden\n" );
else
for ( k = 0; k < aufraege_count; k++ )
a_ausgeben( aufraege[k], 1 );
}
// Suchen einer Adresse
void p_suchen()
{
char s[50];
int k=0;
printf( "Name eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 )
{
printf("\n %-5s %-14s %-13s %-15s %-6s %-14s\n\n" ,"ID","Name",
"Vorname","Strasse","PLZ","Stadt");
p_ausgeben( adrs[k], 2);
}
else
printf( "\nName %s nicht vorhanden!!!\n", s );
}
// Suchen ein Buch
void b_suchen()
{
char s[50];
int k=0;
printf( "Buchname eingeben: " );
scanf( "%s", s );
fflush( stdin );
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
printf(" %-5s %-14s %-14s %-14s %-5s\n\n" ,
"A-ID","Name","Vorname","Buchname","Zahl");
b_ausgeben( buchr[k], 2);
}
else
printf( "\nBuchname %s nicht vorhanden!!!\n", s );
}
// Suchen ein Auftrag
void a_suchen()
{
int s=0;
int k=0;
printf( "Auftrag ID eingeben: " );
scanf( "%d", s );
fflush( stdin );
k = a_Suche(s);
if ( aufraege[k].auftrag_id == s )
a_ausgeben( aufraege[k], 2);
else
printf( "\nAuftrag mit ID %d nicht vorhanden!!!\n", s );
}
//Eine Adresse Loeschen
void p_loeschen()
{
int k = 0;
char s[50];
printf( "\nName eingeben: " );
scanf("%s", &s);
k = p_BinSuche(s);
if ( strcmp(adrs[k].name, s) == 0 )
{
adrs[k] = adrs[pers_count - 1];
pers_count--;
// Adressen neu sortieren
qsort(adrs, pers_count, sizeof (struct person_ds), p_vgl);
}
else
printf( "Name %s nicht vorhanden\n", s );
adrs = (struct person_ds*)realloc(adrs, pers_count*sizeof(struct person_ds));
}
//Eine Buch Loeschen
void b_loeschen()
{
int k = 0;
char s[50];
printf( "\nBuchname eingeben: " );
scanf("%s", &s);
k = b_BinSuche(s);
if ( strcmp(buchr[k].name, s) == 0 )
{
buchr[k] = buchr[buch_count - 1];
buch_count--;
// Buecher neu sortieren
qsort(buchr, buch_count, sizeof (struct buch_ds), b_vgl);
}
else
printf( "Buchname %s nicht vorhanden\n", s );
buchr = (struct buch_ds*)realloc(buchr, buch_count*sizeof(struct buch_ds));
}
//Eine Auftrag Loeschen
void a_loeschen()
{
int k = 0;
int s;
char taste;
a_ausgabe();
printf( "\nAuftrag ID eingeben: " );
scanf("%d", &s);
k = a_Suche(s);
if ( aufraege[k].auftrag_id == s )
{
// Zahl der Buecher aus dem Auftrag in Vorrat ubertragen
while( (taste != 'j') && (taste != 'n'))
{
printf("\nSollen die Buecher wieder zu Vorrat addiert werden? j/n:");
taste = getch();
if (taste == 'j')
buchr[b_IDSuche(aufraege[k].b_id)].vorrat =
buchr[b_IDSuche(aufraege[k].b_id)].vorrat + aufraege[k].outzahl;
}
// der zu loeschender Auftrag mit dem Index 'k' wird durch
// den letzten Auftrag aus der Liste ersetzt
aufraege[k] = aufraege[aufraege_count - 1];
aufraege_count--; // Anzahl der Auftraege wird decremmentiert
// Auftraege neu sortieren
qsort(aufraege, aufraege_count, sizeof (struct auftrag_ds), a_vgl);
}
else
printf( "Auftrag mit ID: %d nicht vorhanden\n", s );
// Raallocation der variable 'auftraege' mit der aktuelle Aufträgeanzahl 'aufraege_count'
aufraege = (struct auftrag_ds*)realloc(aufraege, aufraege_count*sizeof(struct auftrag_ds));
}
// laden der Adressdatei in das Feld adrs
void p_laden()
{
FILE* stream;
stream = fopen( "adressen.dat", "r" );
free(adrs);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Adressen einlesen
fread( &pers_count, sizeof( int ), 1, stream );
// Speicher allokieren
adrs = (struct person_ds*)calloc(pers_count, sizeof(struct person_ds));
// Adressen einlesen
fread( adrs, sizeof(struct person_ds), pers_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Adressdatei gefunden!\n" );
printf( "\nGeben Sie eine Adresse ein\n\n" );
pers_count = 0;
adrs = (struct person_ds*)calloc( 1, sizeof(struct person_ds) );
p_eingabe();
}
}
// laden der Bucherdatei in das Feld buchr
void b_laden()
{
FILE* stream;
stream = fopen( "buecher.dat", "r" );
free(buchr);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Adressen einlesen
fread( &buch_count, sizeof( int ), 1, stream );
// Speicher allokieren
buchr = (struct buch_ds*)calloc(buch_count, sizeof(struct buch_ds));
// Adressen einlesen
fread( buchr, sizeof(struct buch_ds), buch_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Bucherdatei gefunden!\n" );
printf( "\nGeben Sie ein Buch ein\n\n" );
buch_count = 0;
buchr = (struct buch_ds*)calloc( 1, sizeof(struct buch_ds) );
b_eingabe();
}
}
// laden der Auftraegedatei in das Feld aufraege
void a_laden()
{
FILE* stream;
stream = fopen( "auftraege.dat", "r" );
free(aufraege);
// falls das Laden funktioniert hat
if ( stream != NULL )
{
// Anzahl der Auftraege einlesen
fread( &aufraege_count, sizeof( int ), 1, stream );
// Speicher allokieren
aufraege = (struct auftrag_ds*)calloc(aufraege_count, sizeof(struct auftrag_ds));
// Auftraege einlesen
fread( aufraege, sizeof(struct auftrag_ds), aufraege_count, stream );
fclose(stream);
}
// falls die Datei leer war
else
{
printf( "\nKeine Auftraege gefunden!\n" );
printf( "\nGeben Sie ein Auftrag ein\n\n" );
aufraege_count = 0;
aufraege = (struct auftrag_ds*)calloc( 1, sizeof(struct auftrag_ds) );
a_eingabe();
}
}
// speichern von adrs in der Adressedatei
void p_speichern()
{
FILE* stream;
int k;
stream = fopen( "adressen.dat", "w+" );
fwrite( &pers_count, sizeof( int ), 1, stream );
for ( k=0; k<=pers_count-1; k++ )
{
fwrite( &adrs[k], sizeof(struct person_ds), 1, stream);
}
fclose(stream);
}
// speichern von buchr in der Bucherdatei
void b_speichern()
{
FILE* stream;
int k;
stream = fopen( "buecher.dat", "w+" );
fwrite( &buch_count, sizeof( int ), 1, stream );
for ( k=0; k<=buch_count-1; k++ )
{
fwrite( &buchr[k], sizeof(struct buch_ds), 1, stream);
}
fclose(stream);
}
// speichern von aufraege in der Auftragdatei
void a_speichern()
{
FILE* stream;
int k;
stream = fopen( "auftraege.dat", "w+" );
fwrite( &aufraege_count, sizeof( int ), 1, stream );
for ( k=0; k<=aufraege_count-1; k++ )
{
fwrite( &aufraege[k], sizeof(struct auftrag_ds), 1, stream);
}
fclose(stream);
}
// Auswahl der Programmunterpunkte fuer Adressen
int p_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Adressen ******/\n\n" );
printf( "1. Adresse eingeben\n" );
printf( "2. Adresse suchen\n" );
printf( "3. Adressliste\n" );
printf( "4. Adresse loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Buecher
int b_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Bucher ******/\n\n" );
printf( "1. Buch eingeben\n" );
printf( "2. Buch suchen\n" );
printf( "3. Buchliste\n" );
printf( "4. Buch loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Auftraege
int a_menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue Auftraege ******/\n\n" );
printf( "1. Auftrag eingeben\n" );
printf( "2. Auftrag suchen\n" );
printf( "3. Auftragliste\n" );
printf( "4. Auftrag loeschen\n" );
printf( "5. Laden\n" );
printf( "6. Speichern\n" );
printf( "7. Zurueck\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
// Auswahl der Programmunterpunkte fuer Buecher
int menue()
{
int a=0;
char c[10];
//clrscr();
while ( a<1 || a>7 )
{
printf( "\n/****** Menue ******/\n\n" );
printf( "1. Adressen\n" );
printf( "2. Buecher\n" );
printf( "3. Auftraege\n" );
printf( "4. Ende\n\n" );
printf( "Ihre Eingabe : " );
scanf( "%s", &c );
fflush( stdin );
printf( "\n" );
a = c[0] - 48;
}
return a;
}
int main()
{
int a;
p_laden();
b_laden();
a_laden();
do
{
a=menue();
switch(a)
{
case 1:
do
{
a = p_menue();
switch (a)
{
case 1: p_eingabe(); break;
case 2: p_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: p_ausgabe(); break;
case 4: p_loeschen(); break;
case 5: p_laden(); break;
case 6: p_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
case 2:
do
{
a = b_menue();
switch (a)
{
case 1: b_eingabe(); break;
case 2: b_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: b_ausgabe(); break;
case 4: b_loeschen(); break;
case 5: b_laden(); break;
case 6: b_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
case 3:
do
{
a = a_menue();
switch (a)
{
case 1: a_eingabe(); break;
case 2: a_suchen();
printf("\nweiter mit Eingabetaste\n");
getchar();
break;
case 3: a_ausgabe(); break;
case 4: a_loeschen(); break;
case 5: a_laden(); break;
case 6: a_speichern(); break;
}
if (a==7)
break;
//printf("\nweiter mit Eingabetaste\n");
//getchar();
} while (1);
break;
}
if (a==4)
break;
} while (1);
p_speichern();
b_speichern();
a_speichern();
free(adrs);
free(buchr);
free(aufraege);
return 0;
}