summaryrefslogtreecommitdiffstats
path: root/3.04.personenListe.cc
blob: ac480217f92fbb0b0a1eaf44efb94f76dea0af54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// =====================================================================================
//
//       Filename:  3.04.personenListe.cc
//
//    Description:  Personen as list with Structs
//
//        Version:  1.0
//        Created:  23.04.2014 21:50:42
//       Revision:  none
//       Compiler:  gcc
//
//         Author:  Stefan Suhren (SSuhren), suhren.stefan@fh-swf.de
//   Organization:  FH Südwestfalen, Iserlohn
//
// =====================================================================================

#include	<cstdlib>
#include	<iostream>
#include	<iomanip>
#include	<fstream>
#include	<string>

using namespace std;

// ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE #############
struct mitarbeiter{
	string identnummer;
	string nachname;
	string vorname;
	string abteilung;
	unsigned int durchwahl;
	mitarbeiter *next;
}; // ---------- end of struct mitarbeiter ----------

// ===  FUNCTION  ======================================================================
//         Name:  main
//  Description:  Reading and printing the personen.dat file
// =====================================================================================
int main ( int argc, char *argv[] ){

	string    ifs_file_name = "personen.dat";     // input  file name 
	ifstream  ifs;                                // create ifstream object 

	ifs.open ( ifs_file_name.c_str() );           // open ifstream 
	if (!ifs) {
		cerr << "\nERROR : failed to open input file " << ifs_file_name << endl;
		exit (EXIT_FAILURE);
	}
	
	// Creating anchor and cursor
	mitarbeiter *ma = 0, *cursor = 0, *maNeu = 0;
	int satz = 0;

	while ( ifs ) {
		
		// Create temporary object
		maNeu = new mitarbeiter;

		if( ifs >> maNeu->identnummer >> maNeu->nachname >> maNeu->vorname >> maNeu->abteilung >> maNeu->durchwahl ){
			// Makes sure next is NULL
			maNeu->next = NULL;
			if( ma == NULL ){
				ma = maNeu;
				cursor = ma;
			}
			else{
				cursor->next = maNeu;
				cursor = maNeu;
			}
//			cout << "Person Nr." << satz+1 << "\n"
//				 << "\t ID:        " << cursor->identnummer << "\n"
//				 << "\t Nachname:  " << cursor->nachname    << "\n"
//				 << "\t Vorname:   " << cursor->vorname     << "\n"
//				 << "\t Abteilung: " << cursor->abteilung   << "\n"
//				 << "\t Durchwahl: " << cursor->durchwahl   << "\n";

			satz++;
		}
		else{
			delete maNeu;
		}
	}

	ifs.close ();                                 // close ifstream 

	// Reset cursor
	cursor = ma;
	// Walk over list to find the record
	while( cursor != NULL && cursor->durchwahl != 4731 ){
		cursor = cursor->next;
	}

	// Check if something was found
	if( cursor != NULL ){
		cout << "Record found.\nName: " << cursor->vorname << " " << cursor->nachname << "\n";
	}
	else{
		cout << "Record not found!!!" << "\n";
	}

	// Now delete the list
	// Reset cursor
	// Temp var for deleting
	while( ma != NULL ){
		cursor = ma;
		ma = cursor->next;
		delete cursor;
	}
	// Make list sane again
	// ma = NULL;

	return EXIT_SUCCESS;
}	// ----------  end of function main  ----------