Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h> //Library header input & output
- #include <conio.h> //Library header untuk menampilkan string
- #include <string.h> //Library header untuk manipulasi string
- //deklarasi tipe data pada struktur data nasabah
- static struct{
- int No_Rek;
- char Kode_Tran[1];
- int Jumlah;
- }RNasabah;
- struct {
- int No_Rek;
- char Nama_Cabang[2];
- long int Saldo;
- }RNasabahMaster;
- FILE *FNasabah; //Membuat file baru1 untuk nasabah
- FILE *FNasabah2; //Membuat file baru2 untuk nasabah
- FILE *Transaksi_Debit;
- FILE *Transaksi_Kredit;
- FILE *Transaksi;
- FILE *Master;
- FILE *FMaster;
- FILE *FMasterup;
- FILE *Hasil;
- //deklarasi fungsi prosedur
- void InputData();
- void OutputData();
- void KonsolidasiTanpaSeparatorA();
- void KonsolidasiTanpaSeparatorB();
- void Merging();
- void Splitting();
- void updating();
- //program utama
- int main(){
- //optional ' input data ke dalam file tanpa separator
- //InputData();
- //optional ' output data dalam file tanpa separator
- //prosedur konsolidasi A & B
- KonsolidasiTanpaSeparatorA();
- KonsolidasiTanpaSeparatorB();
- //Merging();
- OutputData();
- Splitting();
- updating();
- getche();
- return 0;
- }
- //prosedur untuk menginputkan data
- void InputData() {
- int jNasabah,jTransaksi;
- printf("Input Data Transaksi\n\n");
- printf("Input Jumlah Nasabah : ");scanf("%d",&jNasabah);
- printf("\n");
- FNasabah = fopen("Transaksi.txt","at"); //File Fnasabah dibuka menggunakan fungsi "fopen", kemudian di tulis fungsi
- for(int i = 1; i <= jNasabah; i++){
- printf("Nomor Rekening : ");scanf("%d",&RNasabah.No_Rek); //menampilkan inputan data nasabah, berupa no.rekening
- printf("Input Jumlah Transaksi : ");scanf("%d",&jTransaksi);
- printf("\n");
- for(int j = 1; j <= jTransaksi; j++){
- printf("Kode Transaksi : ");scanf("%s",&RNasabah.Kode_Tran); //menampilkan inputan kode transaksi & jumlah transaksi
- printf("Jumlah :Rp. ");scanf("%d",&RNasabah.Jumlah);
- printf("\n");
- fprintf(FNasabah,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
- }
- }
- fclose(FNasabah); //menutup file nasabah
- }
- void OutputData(){
- FNasabah = fopen("Transaksi.txt","r");
- printf(" Nomor Kode Jumlah\n");
- printf("Transaksi Transaksi Transaksi\n");
- printf("==============================\n");
- int k = 1;
- while(!feof(FNasabah)){
- fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- printf("%d | %s | Rp. %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
- k++;
- }
- fclose(FNasabah); //menutup file nasabah
- }
- void KonsolidasiTanpaSeparatorA(){ //pemanggilan fungsi prosedur KonsolidasiTanpaSeparatorA
- //isi dengan hasil konversi algoritma point 1.9 nomor 1a ke program C/C++
- printf("\nKonsolidasi A\n");
- FNasabah = fopen("Transaksi.txt","r"); //"r"=read, yaitu instruksi untuk membaca file nasabah di transaksi.txt
- int tNo_rek = 0, tKode_Tran, jDebit = 0, jKredit = 0, k, trans;
- fscanf(FNasabah,"%d\n",&tNo_rek);
- fclose(FNasabah);
- FNasabah = fopen("Transaksi.txt","r");
- while(!feof(FNasabah)){
- fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- trans = RNasabah.Jumlah;
- if(tNo_rek == RNasabah.No_Rek ){
- if(RNasabah.Kode_Tran[0] == 'D'){
- jDebit += trans;
- }else if(RNasabah.Kode_Tran[0] == 'K'){
- jKredit += trans;
- }
- }else{
- printf("No. Nasabah : %d\n",tNo_rek); //menampilkan data hasil yang telah di inputkan
- printf("Jumlah Kredit : Rp. %d\n",jKredit); //kode_trans = jumlah transaksi
- printf("Jumlah Debit : Rp. %d\n\n",jDebit);
- if(RNasabah.Kode_Tran[0] == 'D'){
- //printf("masuk");
- jDebit = trans;
- jKredit = 0;
- }else if(RNasabah.Kode_Tran[0] == 'K'){
- //printf("masuk");
- jKredit = trans;
- jDebit = 0;
- }
- tNo_rek = RNasabah.No_Rek;
- }
- k++;
- }
- printf("No. Nasabah : %d\n",tNo_rek);
- printf("Jumlah Kredit : Rp. %d\n",jKredit);
- printf("Jumlah Debit : Rp. %d\n",jDebit);
- if(RNasabah.Kode_Tran[0] == 'D'){
- jDebit = trans;
- jKredit = 0;
- }else if(RNasabah.Kode_Tran[0] == 'K'){
- jKredit = trans;
- jDebit = 0;
- }
- tNo_rek = RNasabah.No_Rek;
- fclose(FNasabah);
- }
- void KonsolidasiTanpaSeparatorB(){
- //isi dengan hasil konversi algoritma point 1.9 nomor 1b ke program C/C++
- printf("\nKonsolidasi B\n");
- FNasabah = fopen("Transaksi.txt","r");
- int tNo_rek = 0, k, trans;
- float rata = 0, c = 0, jTrans = 0;
- fscanf(FNasabah,"%d\n",&tNo_rek);
- fclose(FNasabah);
- FNasabah = fopen("Transaksi.txt","r");
- while(!feof(FNasabah)){
- fscanf(FNasabah,"%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- trans = RNasabah.Jumlah;
- if(tNo_rek == RNasabah.No_Rek ){
- if(RNasabah.Kode_Tran[0] == 'D'){
- jTrans -= trans;
- }else if(RNasabah.Kode_Tran[0] == 'K'){
- jTrans += trans;
- }
- c++;
- }else{
- printf("RAW : %f %f \n",c, jTrans);
- printf("No. Nasabah : %d\n",tNo_rek);
- rata = jTrans / c;
- printf("Rata - rata : Rp. %0.2f\n\n",rata);
- //jTrans = 0;
- //c = 0;
- tNo_rek = RNasabah.No_Rek;
- }
- k++;
- }
- //printf("RAW : %f %f \n",c, jTrans);
- printf("No. Nasabah : %d\n",tNo_rek);
- rata = jTrans / c;
- printf("Rata - rata : Rp. %0.2f\n",rata);
- rata = 0;
- jTrans = 0;
- c = 0;
- tNo_rek = RNasabah.No_Rek;
- fclose(FNasabah);
- }
- void Merging()
- {
- //isi dengan hasil konversi algoritma point 1.7 nomor 2 ke program C/C++
- FNasabah = fopen("Transaksi.txt","at");
- FNasabah2 = fopen("Transaksi2.txt","r");
- if (feof(FNasabah)){
- printf("File Kosong");
- }else{
- while(!feof(FNasabah2)){
- fscanf(FNasabah2, "%d %s %d\n",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- fprintf(FNasabah, "%d %s %d\n", RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
- }
- }
- fclose(FNasabah);
- fclose(FNasabah2);
- }
- void Splitting(){
- Transaksi_Kredit=fopen("Transaksi_Kredit.txt","wt");
- Transaksi_Debit=fopen("Transaksi_Debit","wt");
- Transaksi=fopen("Transaksi.txt","r");
- if (feof(Transaksi))
- {
- printf("file kosong");
- }
- else
- {
- fscanf(Transaksi,"%d %s %d",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- while(! feof(Transaksi))
- {
- if(RNasabah.Kode_Tran[0] == 'K')
- {
- fprintf(Transaksi_Kredit,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
- }
- else
- {
- fprintf(Transaksi_Debit,"%d %s %d\n",RNasabah.No_Rek,RNasabah.Kode_Tran,RNasabah.Jumlah);
- }
- fscanf(Transaksi,"%d %s %d",&RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- }
- }
- fclose(Transaksi_Kredit);
- fclose(Transaksi_Debit);
- fclose(Transaksi);
- }
- void updating(){
- FMaster = fopen("master.txt","r");
- FMasterup=fopen("transaksi.txt","r");
- Hasil=fopen("hasil_update.txt","at");
- int Saldo;
- while(! feof(FMaster))
- {
- while (((RNasabah.No_Rek) ==(RNasabahMaster.No_Rek)) && (! feof(FMasterup)))
- {
- fscanf(FMasterup,"%d %c %d", &RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- }
- if (RNasabah.No_Rek < RNasabahMaster.No_Rek){
- Saldo = RNasabahMaster.Saldo;
- do{
- if(RNasabah.Kode_Tran[0] == 'D'){
- Saldo = Saldo - RNasabah.Jumlah;
- }else if(RNasabah.Kode_Tran[0] == 'K'){
- Saldo = Saldo + RNasabah.Jumlah;
- }
- fscanf(FMasterup, "%d %c %d", &RNasabah.No_Rek,&RNasabah.Kode_Tran,&RNasabah.Jumlah);
- } while ((RNasabah.No_Rek == RNasabahMaster.No_Rek) || (!feof(FMasterup)));
- fprintf(Hasil, "%d %c %d\n", RNasabahMaster.No_Rek,RNasabahMaster.Nama_Cabang,Saldo);
- }else{
- fprintf(Hasil, "%d %c %d\n", RNasabahMaster.No_Rek,RNasabahMaster.Nama_Cabang,Saldo);
- }
- }
- fclose(FMaster);
- fclose(FMasterup);
- fclose(Hasil);
- }
Advertisement
Add Comment
Please, Sign In to add comment