adhieresthenes

Program ATM C/C++ (fungsi updating)!

Feb 20th, 2014
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. #include <stdio.h> //Library header input & output
  2. #include <conio.h> //Library header untuk menampilkan string
  3. #include <string.h> //Library header untuk manipulasi string
  4. //deklarasi tipe data pada struktur data nasabah
  5. static struct{
  6. int No_Rek;
  7. char Kode_Tran[1];
  8. int Jumlah;
  9.  
  10.  
  11. }RNasabah;
  12.  
  13. struct {
  14. int No_Rek;
  15. char Nama_Cabang[2];
  16. long int Saldo;
  17.  
  18. }RNasabahMaster;
  19.  
  20. FILE *FNasabah; //Membuat file baru1 untuk nasabah
  21. FILE *FNasabah2; //Membuat file baru2 untuk nasabah
  22. FILE *Transaksi_Debit;
  23. FILE *Transaksi_Kredit;
  24. FILE *Transaksi;
  25. FILE *Master;
  26. FILE *FMaster;
  27. FILE *FMasterup;
  28. FILE *Hasil;
  29.  
  30. //deklarasi fungsi prosedur
  31. void InputData();
  32. void OutputData();
  33. void KonsolidasiTanpaSeparatorA();
  34. void KonsolidasiTanpaSeparatorB();
  35. void Merging();
  36. void Splitting();
  37. void updating();
  38.  
  39. //program utama
  40. int main(){
  41. //optional ' input data ke dalam file tanpa separator
  42. //InputData();
  43.  
  44.  
  45. //optional ' output data dalam file tanpa separator
  46.  
  47. //prosedur konsolidasi A & B
  48. KonsolidasiTanpaSeparatorA();
  49.  
  50. KonsolidasiTanpaSeparatorB();
  51.  
  52. //Merging();
  53. OutputData();
  54.  
  55. Splitting();
  56. updating();
  57. getche();
  58. return 0;
  59. }
  60. //prosedur untuk menginputkan data
  61. void InputData() {
  62. int jNasabah,jTransaksi;
  63.  
  64. printf("Input Data Transaksi\n\n");
  65. printf("Input Jumlah Nasabah : ");scanf("%d",&jNasabah);
  66. printf("\n");
  67. FNasabah = fopen("Transaksi.txt","at"); //File Fnasabah dibuka menggunakan fungsi "fopen", kemudian di tulis fungsi
  68. for(int i = 1; i <= jNasabah; i++){
  69. printf("Nomor Rekening : ");scanf("%d",&RNasabah.No_Rek); //menampilkan inputan data nasabah, berupa no.rekening
  70. printf("Input Jumlah Transaksi : ");scanf("%d",&jTransaksi);
  71. printf("\n");
  72. for(int j = 1; j <= jTransaksi; j++){
  73. printf("Kode Transaksi : ");scanf("%s",&RNasabah.Kode_Tran); //menampilkan inputan kode transaksi & jumlah transaksi
  74. printf("Jumlah :Rp. ");scanf("%d",&RNasabah.Jumlah);
  75. printf("\n");
  76. fprintf(FNasabah,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
  77. }
  78. }
  79. fclose(FNasabah); //menutup file nasabah
  80. }
  81.  
  82. void OutputData(){
  83. FNasabah = fopen("Transaksi.txt","r");
  84. printf(" Nomor Kode Jumlah\n");
  85. printf("Transaksi Transaksi Transaksi\n");
  86. printf("==============================\n");
  87. int k = 1;
  88. while(!feof(FNasabah)){
  89. fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  90. printf("%d | %s | Rp. %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
  91. k++;
  92. }
  93. fclose(FNasabah); //menutup file nasabah
  94. }
  95.  
  96. void KonsolidasiTanpaSeparatorA(){ //pemanggilan fungsi prosedur KonsolidasiTanpaSeparatorA
  97. //isi dengan hasil konversi algoritma point 1.9 nomor 1a ke program C/C++
  98. printf("\nKonsolidasi A\n");
  99. FNasabah = fopen("Transaksi.txt","r"); //"r"=read, yaitu instruksi untuk membaca file nasabah di transaksi.txt
  100. int tNo_rek = 0, tKode_Tran, jDebit = 0, jKredit = 0, k, trans;
  101. fscanf(FNasabah,"%d\n",&tNo_rek);
  102. fclose(FNasabah);
  103.  
  104. FNasabah = fopen("Transaksi.txt","r");
  105. while(!feof(FNasabah)){
  106. fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  107. trans = RNasabah.Jumlah;
  108. if(tNo_rek == RNasabah.No_Rek ){
  109. if(RNasabah.Kode_Tran[0] == 'D'){
  110. jDebit += trans;
  111. }else if(RNasabah.Kode_Tran[0] == 'K'){
  112. jKredit += trans;
  113. }
  114. }else{
  115. printf("No. Nasabah : %d\n",tNo_rek); //menampilkan data hasil yang telah di inputkan
  116. printf("Jumlah Kredit : Rp. %d\n",jKredit); //kode_trans = jumlah transaksi
  117. printf("Jumlah Debit : Rp. %d\n\n",jDebit);
  118. if(RNasabah.Kode_Tran[0] == 'D'){
  119. //printf("masuk");
  120. jDebit = trans;
  121. jKredit = 0;
  122. }else if(RNasabah.Kode_Tran[0] == 'K'){
  123. //printf("masuk");
  124. jKredit = trans;
  125. jDebit = 0;
  126. }
  127. tNo_rek = RNasabah.No_Rek;
  128. }
  129. k++;
  130. }
  131. printf("No. Nasabah : %d\n",tNo_rek);
  132. printf("Jumlah Kredit : Rp. %d\n",jKredit);
  133. printf("Jumlah Debit : Rp. %d\n",jDebit);
  134. if(RNasabah.Kode_Tran[0] == 'D'){
  135. jDebit = trans;
  136. jKredit = 0;
  137. }else if(RNasabah.Kode_Tran[0] == 'K'){
  138. jKredit = trans;
  139. jDebit = 0;
  140. }
  141. tNo_rek = RNasabah.No_Rek;
  142.  
  143. fclose(FNasabah);
  144. }
  145.  
  146. void KonsolidasiTanpaSeparatorB(){
  147. //isi dengan hasil konversi algoritma point 1.9 nomor 1b ke program C/C++
  148. printf("\nKonsolidasi B\n");
  149. FNasabah = fopen("Transaksi.txt","r");
  150. int tNo_rek = 0, k, trans;
  151. float rata = 0, c = 0, jTrans = 0;
  152. fscanf(FNasabah,"%d\n",&tNo_rek);
  153. fclose(FNasabah);
  154.  
  155. FNasabah = fopen("Transaksi.txt","r");
  156. while(!feof(FNasabah)){
  157. fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  158. trans = RNasabah.Jumlah;
  159. if(tNo_rek == RNasabah.No_Rek ){
  160. if(RNasabah.Kode_Tran[0] == 'D'){
  161. jTrans -= trans;
  162. }else if(RNasabah.Kode_Tran[0] == 'K'){
  163. jTrans += trans;
  164. }
  165. c++;
  166. }else{
  167. printf("RAW : %f %f \n",c, jTrans);
  168. printf("No. Nasabah : %d\n",tNo_rek);
  169. rata = jTrans / c;
  170. printf("Rata - rata : Rp. %0.2f\n\n",rata);
  171. //jTrans = 0;
  172. //c = 0;
  173. tNo_rek = RNasabah.No_Rek;
  174. }
  175. k++;
  176. }
  177. //printf("RAW : %f %f \n",c, jTrans);
  178. printf("No. Nasabah : %d\n",tNo_rek);
  179. rata = jTrans / c;
  180. printf("Rata - rata : Rp. %0.2f\n",rata);
  181. rata = 0;
  182. jTrans = 0;
  183. c = 0;
  184. tNo_rek = RNasabah.No_Rek;
  185.  
  186. fclose(FNasabah);
  187. }
  188.  
  189. void Merging()
  190.  
  191. {
  192. //isi dengan hasil konversi algoritma point 1.7 nomor 2 ke program C/C++
  193. FNasabah = fopen("Transaksi.txt","at");
  194. FNasabah2 = fopen("Transaksi2.txt","r");
  195. if (feof(FNasabah)){
  196. printf("File Kosong");
  197.  
  198. }else{
  199.  
  200.  
  201. while(!feof(FNasabah2)){
  202. fscanf(FNasabah2, "%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  203.  
  204. fprintf(FNasabah, "%d %s %d\n", RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
  205.  
  206.  
  207. }
  208. }
  209. fclose(FNasabah);
  210. fclose(FNasabah2);
  211.  
  212. }
  213.  
  214.  
  215. void Splitting(){
  216.  
  217.  
  218. Transaksi_Kredit=fopen("Transaksi_Kredit.txt","wt");
  219. Transaksi_Debit=fopen("Transaksi_Debit","wt");
  220. Transaksi=fopen("Transaksi.txt","r");
  221.  
  222. if (feof(Transaksi))
  223. {
  224. printf("file kosong");
  225. }
  226. else
  227. {
  228. fscanf(Transaksi,"%d %s %d",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  229. while(! feof(Transaksi))
  230. {
  231. if(RNasabah.Kode_Tran[0] == 'K')
  232. {
  233. fprintf(Transaksi_Kredit,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
  234. }
  235. else
  236. {
  237. fprintf(Transaksi_Debit,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
  238. }
  239. fscanf(Transaksi,"%d %s %d",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  240. }
  241. }
  242. fclose(Transaksi_Kredit);
  243. fclose(Transaksi_Debit);
  244. fclose(Transaksi);
  245.  
  246.  
  247. }
  248. void updating(){
  249. FMaster = fopen("master.txt","r");
  250. FMasterup=fopen("transaksi.txt","r");
  251. Hasil=fopen("hasil_update.txt","at");
  252.  
  253. int Saldo;
  254. while(! feof(FMaster))
  255. {
  256.  
  257. while (((RNasabah.No_Rek) ==(RNasabahMaster.No_Rek)) && (! feof(FMasterup)))
  258. {
  259.  
  260. fscanf(FMasterup,"%d %c %d", &RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  261.  
  262. }
  263. if (RNasabah.No_Rek < RNasabahMaster.No_Rek){
  264. Saldo = RNasabahMaster.Saldo;
  265. do{
  266.  
  267. if(RNasabah.Kode_Tran[0] == 'D'){
  268. Saldo = Saldo - RNasabah.Jumlah;
  269. }else if(RNasabah.Kode_Tran[0] == 'K'){
  270. Saldo = Saldo + RNasabah.Jumlah;
  271. }
  272.  
  273.  
  274. fscanf(FMasterup, "%d %c %d", &RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
  275.  
  276. } while ((RNasabah.No_Rek == RNasabahMaster.No_Rek) || (!feof(FMasterup)));
  277.  
  278. fprintf(Hasil, "%d %c %d\n", RNasabahMaster.No_Rek,RNasabahMaster.Nama_Cabang,Saldo);
  279.  
  280. }else{
  281.  
  282. fprintf(Hasil, "%d %c %d\n", RNasabahMaster.No_Rek,RNasabahMaster.Nama_Cabang,Saldo);
  283.  
  284. }
  285.  
  286.  
  287.  
  288.  
  289. }
  290. fclose(FMaster);
  291. fclose(FMasterup);
  292. fclose(Hasil);
  293. }
Advertisement
Add Comment
Please, Sign In to add comment