-
Notifications
You must be signed in to change notification settings - Fork 0
/
crud.cpp
165 lines (148 loc) · 4.19 KB
/
crud.cpp
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Data {
string nama;
string alamat;
string telepon;
};
void tambahData();
void tampilkanData();
void ubahData();
void hapusData();
int main() {
int pilihan;
do {
cout << "=== Program CRUD dengan Akses File ===" << endl;
cout << "1. Tambah Data" << endl;
cout << "2. Tampilkan Data" << endl;
cout << "3. Ubah Data" << endl;
cout << "4. Hapus Data" << endl;
cout << "0. Keluar" << endl;
cout << "Pilihan: ";
cin >> pilihan;
switch (pilihan) {
case 1:
tambahData();
break;
case 2:
tampilkanData();
break;
case 3:
ubahData();
break;
case 4:
hapusData();
break;
case 0:
cout << "Terima kasih!" << endl;
break;
default:
cout << "Pilihan tidak valid!" << endl;
break;
}
} while (pilihan != 0);
return 0;
}
void tambahData() {
Data data;
cout << "=== Tambah Data ===" << endl;
cout << "Nama: ";
cin.ignore();
getline(cin, data.nama);
cout << "Alamat: ";
getline(cin, data.alamat);
cout << "Telepon: ";
getline(cin, data.telepon);
ofstream file("data.txt", ios::app);
if (file.is_open()) {
file << data.nama << "|" << data.alamat << "|" << data.telepon << endl;
file.close();
cout << "Data berhasil ditambahkan." << endl;
} else {
cout << "Gagal membuka file." << endl;
}
}
void tampilkanData() {
cout << "=== Tampilkan Data ===" << endl;
ifstream file("data.txt");
if (file.is_open()) {
string line;
int count = 1;
while (getline(file, line)) {
cout << "Data #" << count << endl;
cout << "Nama: " << line.substr(0, line.find("|")) << endl;
line = line.substr(line.find("|") + 1);
cout << "Alamat: " << line.substr(0, line.find("|")) << endl;
line = line.substr(line.find("|") + 1);
cout << "Telepon: " << line << endl;
cout << endl;
count++;
}
file.close();
} else {
cout << "Gagal membuka file." << endl;
}
}
void ubahData() {
int nomor;
cout << "=== Ubah Data ===" << endl;
cout << "Nomor Data yang ingin diubah: ";
cin >> nomor;
ifstream fileIn("data.txt");
ofstream fileOut("temp.txt", ios::app);
if (fileIn.is_open() && fileOut.is_open()) {
string line;
int count = 1;
while (getline(fileIn, line)) {
if (count == nomor) {
Data data;
cout << "Nama baru: ";
cin.ignore();
getline(cin, data.nama);
cout << "Alamat baru: ";
getline(cin, data.alamat);
cout << "Telepon baru: ";
getline(cin, data.telepon);
fileOut << data.nama << "|" << data.alamat << "|" << data.telepon << endl;
cout << "Data berhasil diubah." << endl;
} else {
fileOut << line << endl;
}
count++;
}
fileIn.close();
fileOut.close();
remove("data.txt");
rename("temp.txt", "data.txt");
} else {
cout << "Gagal membuka file." << endl;
}
}
void hapusData() {
int nomor;
cout << "=== Hapus Data ===" << endl;
cout << "Nomor Data yang ingin dihapus: ";
cin >> nomor;
ifstream fileIn("data.txt");
ofstream fileOut("temp.txt", ios::app);
if (fileIn.is_open() && fileOut.is_open()) {
string line;
int count = 1;
while (getline(fileIn, line)) {
if (count != nomor) {
fileOut << line << endl;
} else {
cout << "Data berhasil dihapus." << endl;
}
count++;
}
fileIn.close();
fileOut.close();
remove("data.txt");
rename("temp.txt", "data.txt");
} else {
cout << "Gagal membuka file." << endl;
}
}