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 ----------
|