Simulador de um Banco
Publicado por Arimateia (última atualizaçăo em 26/03/2015)
[ Hits: 4.788 ]
Os pré-requisitos que eu usei para desenvolver essa aplicação:
- Foi levada em consideração a função que desempenha as necessidades já no código fonte para contas de clientes.
- O sistema de gestão de banco é relativamente fácil de entender.
Eu dividi este projeto em muitas funções, a maioria das quais estão relacionadas à atividades bancárias diferentes.
/**************************************************************************** José de Arimateia - * argmidia@gmail.com Jan 27 2015 * UFPI: * Disciplina: Desenvolvimento de Algoritmos * * \***************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> #include <time.h> #include <math.h> void gotoxy(int x,int y); void _password(char buffer[]); void rectangle(int x,int y,int l,int b); void cls(int x1,int y1,int x2, int y2); void increase(char i_id[]); void date_input(char date[]); void date_output(char date[]); void currency(char cur[], float n); void num2word(double n,char word[]); void _one(int n, char one[]); void _ten(int n,char ten[]); int date_check(char date[]); void title(); void welcome(); void admin(); void add_user(); void del_user(); void edit_user(); void view_log(); void staff(); void uptodate(); void add_ac(); void deposit(); void withdraw(); void fund_transfer(); void ac_info(); void transaction(); char date[13],ttime[10]; FILE *fp,*fp1,*tfp; struct { char uid[4]; char name[30], password[30]; } user; struct account { char ac_no[8]; char fname[30], lname[30]; char u_date[15]; char dob[12]; char sex; char address[50],contact[20]; char ac_type; float c_bal,interest,t_bal; }; struct trans { char ac_no[8],ac_t[25],_date[15],_ttime[10],usr[30]; float amt; }; typedef struct { char id[4]; char name[30]; char date[15]; char stime[10]; char etime[10]; }user_log; int gbl_flag=0; int main() { char c; welcome(); do { system("cls"); rectangle(8,9,70,13); gotoxy(11,11); printf("Pressione A para iniciar sessao como administrador ou S\t\t\t Para acessar como Usuario\n\n\n\t\t\t\t\t"); c=getche(); if(c=='A'||c=='a') { strcpy(user.name,"Ary"); admin(); break; } if (c=='S'||c=='s') { staff(); break; } if (c==27) exit(0); }while(1); return 0; } void staff() { int i,ch; char uname[30], pass[30],passwrd[30]={0},id[10],nam[30]; int c=0,cnt=0; char ex,stime[9],etime[9]; cnt=0; do { system("cls"); rectangle(10,8,70,15); gotoxy(7,5);printf("Apenas 3 tentativas serao autorizados a entrar nome de usuario e senha."); gotoxy(23,10); printf("Digite o nome do usuario : "); scanf("%s",user.name); gotoxy(23,12); printf("Senha : "); char passwrd[30]={0}; _password(passwrd); strcpy(user.password,passwrd); cnt++; if (cnt==3) { title(); gotoxy(25,10); printf("Nome de usuario ou senha invalida!\a"); gotoxy(22,12);printf("Pressione a tecla ENTER para sair do programa..."); getch(); exit(0); } c=0; fp=fopen("USER.DAT","r"); while(fscanf(fp,"%s %s %s\n",id,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(pass,strupr(pass)); strcpy(user.name,strupr(user.name)); strcpy(user.password,strupr(user.password)); if((strcmp(user.name,nam)==0)&&(strcmp(user.password,pass)==0)) { c++; strcpy(user.uid,id); } } fclose(fp); title(); if (c==0) { gotoxy(10,10); printf("Nao eh possivel encontrar a combinacao dado de Usuario e Senha!\a"); getch(); } else break; } while(1); _strtime(stime); uptodate(); do { title(); gotoxy(15,8);printf("1. Criar Nova Conta!!!\n"); gotoxy(15,10);printf("2. Deposito em Dinheiro!!"); gotoxy(15,12);printf("3. Retirada em Dinheiro!!!"); gotoxy(15,14);printf("4. Transferencia de Fundos!!!"); gotoxy(15,16);printf("5. Informacoes sobre a conta!!"); gotoxy(45,8);printf("6. As informações de transacoes!!"); gotoxy(45,10); printf("7. Sair!!"); gotoxy(45,12);printf("8. Saida"); gotoxy(1,17); for(i=0;i<78;i++) printf("_"); gotoxy(23,19);printf("Pressione um numero entre [1-8] "); switch(getch()-48) { case 1: add_ac(); break; case 2: deposit(); break; case 3: withdraw(); break; case 4: fund_transfer(); break; case 5: ac_info(); break; case 6: transaction(); break; case 7: title(); gotoxy(15,10); printf("Tem certeza de que deseja Sair? <Y/N> : "); ex=getche(); if (ex=='Y'||ex=='y') { _strtime(etime); fp=fopen("LOG.DAT","a"); fprintf(fp,"%s %s %s %s\n",user.uid,date,stime,etime); fclose(fp); staff(); } break; case 8: title(); gotoxy(15,10); printf("Tem certeza de que deseja Sair? <Y/N> : "); ex=getche(); if (ex=='Y'||ex=='y') { _strtime(etime); fp=fopen("LOG.DAT","a"); fprintf(fp,"%s %s %s %s\n",user.uid,date,stime,etime); fclose(fp); exit(0); } break; default: title(); gotoxy(10,10); printf("Sua entrada estah fora da faixa! Digite uma escolha entre 1-8!"); gotoxy(15,12); printf("Pressione qualquer tecla para voltar ao menu principal..."); getch(); } }while(1); //return 0; } void add_ac() { struct account ac; char acn[8],curr[35],ch; int i; float irate; fp=fopen("ACCOUNT.DAT","r"); if(fp==NULL) strcpy(ac.ac_no,"AC00001"); else { while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF);//note the while statement is terminated without any statement inside it. This helps in geting the last rec. of the data file increase(ac.ac_no); } fclose(fp); title(); gotoxy(8,8); printf("DADOS PESSOAL"); gotoxy(7,9); for(i=0;i<18;i++) printf("%c",205); gotoxy(10,11); printf("Nome Completo : "); scanf("%s",ac.fname); scanf("%s",ac.lname); gotoxy(10,13); printf("Sexo <M/F> : "); scanf(" %c",&ac.sex); int temp1,temp2; do { gotoxy(10,15); printf("Data (dd/mm/yyyy) : "); scanf(" %s",ac.dob); temp1=(ac.dob[6]-48)*1000+(ac.dob[7]-48)*100+(ac.dob[8]-48)*10+(ac.dob[9]-48); temp2=2000+(date[6]-48)*10+(date[7]-48); if(date_check(ac.dob)==0||temp1>temp2) { printf("\a"); cls(10,15,60,15); } }while(date_check(ac.dob)==0||temp1>temp2); _strdate(date); date_input(ac.dob); gotoxy(10,17); printf("Endereco : "); scanf(" %[^\n]s",ac.address); for(i=0;i<strlen(ac.address);i++) if (ac.address[i]==32) ac.address[i]='+'; int err; do { gotoxy(10,19); printf("Numero de contato : "); scanf(" %s",ac.contact); err=0; for(i=0;i<strlen(ac.contact);i++) if(!((ac.contact[i]>='0'&&ac.contact[i]<='9'||ac.contact[i]=='-'||ac.contact[i]=='+')&&strlen(ac.contact)>=6)) err++; if (err!=0) {printf("\a"); cls(10,19,70,19);} } while(err!=0); title(); gotoxy(8,8); printf("Detalhes da conta"); gotoxy(7,9); for(i=0;i<17;i++) printf("%c",205); gotoxy(10,11); printf("A/C Numero : %s",ac.ac_no); int flag; do { gotoxy(10,13); printf("A/C Tipo <S/C> : "); scanf(" %c",&ac.ac_type); flag=0; cls(45,13,78,13); if (ac.ac_type=='S'||ac.ac_type=='s') { irate=8; gotoxy(45,13); printf("Salvando Conta"); } else if (ac.ac_type=='C'||ac.ac_type=='c') { irate=4; gotoxy(45,13); printf("Conta Atual"); } else { printf("\a"); flag=1; } } while(flag==1); date_output(date); gotoxy(10,15); printf("Conta aberta Data : %s",date); _strdate(date); strcpy(ac.u_date,date); gotoxy(10,17); printf("Taxa de juro : %.2f%c per annum", irate,37); do { gotoxy(10,19); printf("Saldo de abertura (Em R$s.) : "); scanf("%f",&ac.c_bal); if (ac.c_bal<0) { printf("\a"); cls(10,19,70,19);} }while(ac.c_bal<0); ac.interest=0; ac.t_bal=ac.c_bal+ac.interest; title(); gotoxy(3,9); printf("Nome Completo : %s %s",ac.fname,ac.lname); gotoxy(3,11); printf("Sexo <M/F> : %c",ac.sex); gotoxy(3,13); printf("Data (mm/dd/yy) : %s",ac.dob); gotoxy(3,15); printf("Endereco : "); for(i=0;i<strlen(ac.address);i++) if (ac.address[i]=='+') putchar(32); else putchar(ac.address[i]); gotoxy(3,17); printf("Numero de contato : %s",ac.contact); gotoxy(43,9); printf("A/C Numero : %s",ac.ac_no); gotoxy(43,11); printf("A/C Tipo : "); if (ac.ac_type=='S'||ac.ac_type=='s') printf("Salvando Conta"); if (ac.ac_type=='C'||ac.ac_type=='c') printf("Conta Atual"); gotoxy(43,13); printf("Data Atual : %s",date); gotoxy(43,15); printf("Taxa de Juro : %.2f%c por Ano", irate,37); currency(curr,ac.c_bal); gotoxy(43,17); printf("Saldo de abertura : %s",curr); gotoxy(2,19); for(i=0;i<75;i++) printf("%c",196); gotoxy(15,21); printf("Suas informações, acima estao correta? <Y/N> "); ch=getche(); if (ch=='Y'||ch=='y') { fp=fopen("ACCOUNT.DAT","a"); fp1=fopen("TRANSACTION.DAT","a"); _strtime(ttime); fprintf(fp1,"%s %s %s %s %.2f %s\n",ac.ac_no,"A/C+Opened",date,ttime,ac.c_bal,user.name); fprintf(fp,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); fclose(fp); fclose(fp1); title(); gotoxy(20,10); printf("Gravado com sucesso!"); getch(); } } void uptodate() { struct account ac; int i,no_of_yr,no_of_month,no_of_days,n1,n2; float r; fp=fopen("ACCOUNT.DAT","r"); if (fp!=NULL) { fp1=fopen("TEMP.DAT","w"); i=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { no_of_yr=(date[6]-48)*10+(date[7]-48); no_of_month=(date[0]-48)*10+(date[1]-48); no_of_days=(date[3]-48)*10+(date[4]-48); n1=no_of_yr*365+no_of_month*30+no_of_days; no_of_yr=(ac.u_date[6]-48)*10+(ac.u_date[7]-48); no_of_month=(ac.u_date[0]-48)*10+(ac.u_date[1]-48); no_of_days=(ac.u_date[3]-48)*10+(ac.u_date[4]-48); n2=no_of_yr*365+no_of_month*30+no_of_days; if (ac.ac_type=='S'||ac.ac_type=='s') r=8.0/365; else r=4.0/365; ac.t_bal=ac.c_bal*pow((1+r/100),n1-n2); ac.interest+=ac.t_bal-ac.c_bal; ac.t_bal=ac.c_bal+ac.interest; strcpy(ac.u_date,date); fprintf(fp1,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); } fclose(fp); fclose(fp1); system("del ACCOUNT.DAT"); system("ren TEMP.DAT ACCOUNT.DAT"); } } void deposit() { title(); struct account ac; char acn[10],curr[35],ch,csh[80],temp[80],nam[35]; int c=0; float amt; gotoxy(5,10); printf("Deposita para A/C Numero : "); scanf("%s",acn); strcpy(acn,strupr(acn)); fp=fopen("ACCOUNT.DAT","r"); while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) if(strcmp(acn,ac.ac_no)==0) { c++; strcpy(nam,ac.fname); strcat(nam," "); strcat(nam,ac.lname); } fclose(fp); if(c==0) { title(); gotoxy(20,12); printf("Dado A/C Numero não existe!"); getch(); return; } gotoxy(50,10); printf("[ %s ]",nam); gotoxy(5,12); printf("Quantia a ser depositada (Em R$s.) : "); scanf("%f",&amt); title(); gotoxy(30,10); printf("Confirmar Transacao"); currency(curr,amt); gotoxy(3,12); printf("%s Para ser depositado na A/C Numero : %s [ %s ]",curr,acn,nam); num2word((double)amt,csh); strcpy(temp,"[Em palavras : "); strcat(temp,csh); strcat(temp,"]"); gotoxy(40-strlen(temp)/2,14); puts(temp); gotoxy(8,17);printf("Tem certeza de que deseja executar esta transacao? <Y/N>"); ch=getche(); if (ch=='Y'||ch=='y') { fp=fopen("ACCOUNT.DAT","r"); fp1=fopen("TEMP.DAT","a"); while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,acn)==0) ac.c_bal+=amt; ac.t_bal=ac.c_bal+ac.interest; fprintf(fp1,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); } fclose(fp1); fclose(fp); system("del ACCOUNT.DAT"); system("ren TEMP.DAT ACCOUNT.DAT"); fp=fopen("TRANSACTION.DAT","a"); _strtime(ttime); fprintf(fp,"%s %s %s %s %.2f %s\n",acn,"Cash+Deposited",date,ttime,amt,user.name); fclose(fp); title(); gotoxy(20,12);printf("Transacao concluida com exito!"); getch(); } } void withdraw() { title(); struct account ac; char acn[10],ch,curr[35],csh[80],temp[80], nam[50]; int c=0; float amt; gotoxy(5,10); printf("Retirar-se A/C Numero : "); scanf("%s",acn); strcpy(acn,strupr(acn)); fp=fopen("ACCOUNT.DAT","r"); while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) if(strcmp(acn,ac.ac_no)==0) { c++; strcpy(nam,ac.fname); strcat(nam," "); strcat(nam,ac.lname); } fclose(fp); if(c==0) { title(); gotoxy(20,12); printf("Dados A/C Numero nao existe!"); getch(); return; } gotoxy(50,10); printf("[ %s ]",nam); gotoxy(5,12); printf("Quantia a ser retirada (em R$s.) : "); scanf("%f",&amt); fp=fopen("ACCOUNT.DAT","r"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,acn)==0&&ac.t_bal<amt) { title(); gotoxy(20,12); printf("Desculpe, o saldo atual eh de Rs. % .2f Apenas!",ac.t_bal); gotoxy(25,14); printf("Transacao nao concluida!"); c=1; getch(); return; } } fclose(fp); title(); gotoxy(30,10); printf("Confirmar Transacao"); currency(curr,amt); gotoxy(3,12); printf("%s Sejam retirados A/C Numero : %s [%s]",curr,acn,nam); num2word((double)amt,csh); strcpy(temp,"[Em palavras : "); strcat(temp,csh); strcat(temp,"]"); gotoxy(40-strlen(temp)/2,14); puts(temp); gotoxy(8,17);printf("Tem certeza de que deseja executar esta transacao? <Y/N>"); ch=getche(); if (ch=='Y'||ch=='y') { fp=fopen("ACCOUNT.DAT","r"); fp1=fopen("TEMP.DAT","w"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,acn)==0) ac.c_bal-=amt; if (ac.c_bal<0) { ac.interest+=ac.c_bal; ac.c_bal=0; } ac.t_bal=ac.c_bal+ac.interest; fprintf(fp1,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); } fclose(fp1); fclose(fp); system("del ACCOUNT.DAT"); system("ren TEMP.DAT ACCOUNT.DAT"); fp=fopen("TRANSACTION.DAT","a"); _strtime(ttime); fprintf(fp,"%s %s %s %s %.2f %s\n",acn,"Caixa + Retirado",date,ttime,amt,user.name); fclose(fp); title(); gotoxy(20,12);printf("Transacao concluida com exito!"); getch(); } } void fund_transfer() { char f_acn[8],t_acn[8],ch,curr[35],rem[25],csh[80]={0},temp[80]={0},fnam[35],tnam[35]; struct account ac; float amt; int c=0; title(); gotoxy(3,8); printf("Transferido do (A/C nao. ) : "); scanf("%s",f_acn); strcpy(f_acn,strupr(f_acn)); fp=fopen("ACCOUNT.DAT","r"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) if(strcmp(f_acn,ac.ac_no)==0) { c++; strcpy(fnam,ac.fname); strcat(fnam," "); strcat(fnam,ac.lname); } fclose(fp); if (c==0) { title(); gotoxy(20,12); printf("Dados A/C Numero nao existe!"); getch(); return; } gotoxy(50,8); printf("[ %s ]",fnam); gotoxy(3,10); printf("Transferencia para (A/C nao. ) : "); scanf("%s",t_acn); strcpy(t_acn,strupr(t_acn)); fp=fopen("ACCOUNT.DAT","r"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) if(strcmp(t_acn,ac.ac_no)==0) { c++; strcpy(tnam,ac.fname); strcat(tnam," "); strcat(tnam,ac.lname); } fclose(fp); if (c==0) { title(); gotoxy(20,12); printf("Dados A/C Numero nao existe!"); getch(); return; } gotoxy(50,10); printf("[ %s ]",tnam); gotoxy(3,12); printf("Valor a ser transferido (em NRs.) : "); scanf("%f",&amt); fp=fopen("ACCOUNT.DAT","r"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,f_acn)==0) { if (ac.t_bal<amt) { title(); gotoxy(15,12); printf("Desculpe, o saldo atual é Rs. %.2f apenas!",ac.t_bal); gotoxy(28,14); printf("Transacao nao concluida!"); getch(); return; } } } fclose(fp); title(); gotoxy(30,8); printf("Confirmar Transacao"); currency(curr,amt); gotoxy(25,10); printf("%s Para ser transferido",curr); num2word((double)amt,csh); strcpy(temp,"[Em palavras : "); strcat(temp,csh); strcat(temp,"]"); gotoxy(40-strlen(temp)/2,12); puts(temp); gotoxy(18,14); printf("De A/C numero %s [ %s ]",f_acn,fnam); gotoxy(18,16); printf("Para A/C numero %s [ %s ]",t_acn,tnam); gotoxy(12,19);printf("Tem certeza de que deseja executar esta transacao? <Y/N>"); ch=getche(); if (ch=='Y'||ch=='y') { fp=fopen("ACCOUNT.DAT","r"); fp1=fopen("TEMP.DAT","w"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,f_acn)==0) ac.c_bal-=amt; if (ac.c_bal<0) { ac.interest+=ac.c_bal; ac.c_bal=0; } ac.t_bal=ac.c_bal+ac.interest; fprintf(fp1,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); } fclose(fp1); fclose(fp); system("del ACCOUNT.DAT"); system("ren TEMP.DAT ACCOUNT.DAT"); fp=fopen("ACCOUNT.DAT","r"); fp1=fopen("TEMP.DAT","w"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(ac.ac_no,t_acn)==0) ac.c_bal+=amt; ac.t_bal=ac.c_bal+ac.interest; fprintf(fp1,"%s %s %s %s %s %s %c %s %c %.2f %.2f %.2f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,ac.sex,ac.u_date,ac.ac_type,ac.c_bal,ac.interest,ac.t_bal); } fclose(fp1); fclose(fp); system("del ACCOUNT.DAT"); system("ren TEMP.DAT ACCOUNT.DAT"); fp=fopen("TRANSACTION.DAT","a"); _strtime(ttime); strcpy(rem,"Transfered+to+"); strcat(rem,t_acn); fprintf(fp,"%s %s %s %s %.2f %s\n",f_acn,rem,date,ttime,amt,user.name); strcpy(rem,"Received+from+"); strcat(rem,f_acn); fprintf(fp,"%s %s %s %s %.2f %s\n",t_acn,rem,date,ttime,amt,user.name); fclose(fp); title(); gotoxy(20,12);printf("Transacao concluida com exito!"); getch(); } } void ac_info() { int i; char buffer[30]={0},curr[35],curr1[35],curr2[35]; struct account ac,srh; float irate; char c,acn[8]; int pos = 0,n=0,m=0,cnt; title(); gotoxy(27,8);printf("1. Procurar por A/C numero"); gotoxy(27,10);printf("2. Pesquisa por Nome"); gotoxy(27,12);printf("3. Voltar para o menu principal"); gotoxy(25,16); printf("Pressione uma escolha entre 1-3 "); c=getche(); switch(c-48) { case 1: title(); gotoxy(5,8); printf("Entrar A/C numero : "); scanf("%s",acn); strcpy(acn,strupr(acn)); fp=fopen("ACCOUNT.DAT","r"); cnt = 0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { if (strcmp(acn,ac.ac_no)==0) { srh=ac; cnt++; } } if (cnt==0) { title(); gotoxy(20,12); printf("Dados A/C numero nao existe!"); getch(); return; } ac=srh; title(); gotoxy(3,9); printf("Nome completo : %s %s",ac.fname,ac.lname); gotoxy(3,11); printf("Sexo <M/F> : %c",ac.sex); gotoxy(3,13); printf("Data (mm/dd/yy) : %s",ac.dob); gotoxy(3,15); printf("Endereco : "); for(i=0;i<strlen(ac.address);i++) if (ac.address[i]=='+') putchar(32); else putchar(ac.address[i]); gotoxy(3,17); printf("Numero de contato : %s",ac.contact); gotoxy(43,9); printf("A/C Numero : %s",ac.ac_no); gotoxy(43,11); printf("A/C Tipo <S/F> : "); if (ac.ac_type=='S'||ac.ac_type=='s') { printf("Salvando Conta"); irate=8.0; } if (ac.ac_type=='C'||ac.ac_type=='c') { printf("Conta Atual"); irate=4.0; } gotoxy(43,13); printf("Taxa de juro : %.2f%c por Ano", irate,37); currency(curr,ac.c_bal); gotoxy(43,15); printf("Saldo atual : %s",curr); currency(curr1,ac.interest); gotoxy(43,17); printf("Interesse : %s",curr1); currency(curr2,ac.t_bal); gotoxy(43,19); printf("Balancete Total : %s",curr2); gotoxy(2,21); for(i=0;i<75;i++) printf("%c",196); gotoxy(5,22); printf("Pressione a tecla ENTER para pesquisar novamente ou qualquer outra tecla para voltar ao menu principal:"); c=getch(); if(c==13) ac_info(); else return; break; case 2: title(); gotoxy(5,6); printf("Digite o primeiro nome : "); do { gotoxy(2,7); for(i=0;i<75;i++) printf("%c",196); gotoxy(2,20); for(i=0;i<75;i++) printf("%c",196); gotoxy(15,21); printf("Pressione a tecla ENTER para exibir informações detalhadas do primeiro registro"); gotoxy(18,22); printf(" Ou pressione ESC para retornar ao menu principal"); gotoxy(25+n,6); c = getch(); if( isprint(c) ) { buffer[ pos++ ] = c; printf("%c", c); n++; } else if( c == 8 && pos ) { buffer[ pos-- ] = '\0'; printf("%s", "\b \b"); n--; } cls(3,10,75,11+m); m=0; gotoxy(3,8); printf("A/C Nao."); gotoxy(13,8); printf("Nome completo"); gotoxy(43,8); printf("Contacto nenhum."); gotoxy(60,8); printf("Balancete Liquido"); gotoxy(2,9); for(i=0;i<75;i++) printf("%c",196); fp=fopen("ACCOUNT.DAT","r"); while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) { cnt=0; for(i=0;i<strlen(buffer);i++) { if(buffer[i]>='a'&&buffer[i]<='z') buffer[i]=buffer[i]-32; if(ac.fname[i]>='a'&&ac.fname[i]<='z') ac.fname[i]=ac.fname[i]-32; if(buffer[i]!=ac.fname[i]) cnt++; } if(cnt==0) { if(m==0) srh=ac; if(m<=9) { gotoxy(3,10+m); printf("%s",ac.ac_no); gotoxy(13,10+m); printf("%s %s",ac.fname,ac.lname); gotoxy(43,10+m); printf("%s",ac.contact); currency(curr,ac.t_bal); gotoxy(55,10+m); printf("%20s",curr); m++; } } } fclose(fp); }while( c != 13&&c!=27 ); if (c==13) { ac=srh; title(); gotoxy(3,9); printf("Nome completo : %s %s",ac.fname,ac.lname); gotoxy(3,11); printf("Sexo <M/F> : %c",ac.sex); gotoxy(3,13); printf("Data (mm/dd/yy) : %s",ac.dob); gotoxy(3,15); printf("Endereco : "); for(i=0;i<strlen(ac.address);i++) if (ac.address[i]=='+') putchar(32); else putchar(ac.address[i]); gotoxy(3,17); printf("Numero de contato : %s",ac.contact); gotoxy(43,9); printf("A/C Numero : %s",ac.ac_no); gotoxy(43,11); printf("A/C Tipo <S/F> : "); if (ac.ac_type=='S'||ac.ac_type=='s') { printf("Salvando Conta"); irate=8.0; } if (ac.ac_type=='C'||ac.ac_type=='c') { printf("Canta atual "); irate=4.0; } gotoxy(43,13); printf("Taxa de juro : %.2f%c por Ano", irate,37); currency(curr,ac.c_bal); gotoxy(43,15); printf("Saldo atual : %s",curr); currency(curr1,ac.interest); gotoxy(43,17); printf("Interesse : %s",curr1); currency(curr2,ac.t_bal); gotoxy(43,19); printf("Balacete Total : %s",curr2); gotoxy(2,21); for(i=0;i<75;i++) printf("%c",196); gotoxy(5,22); printf("Pressione a tecla ENTER para pesquisar novamente ou qualquer outra tecla para voltar ao menu principal"); c=getch(); if(c==13) ac_info(); else return; } break; case 3: return; break; default: title(); gotoxy(10,10); printf("Sua entrada estah fora da faixa! Digite uma escolha entre 1-8!"); gotoxy(15,12); printf("Pressione qualquer tecla para voltar ao menu principal..."); getch(); ac_info(); } } void transaction() { char acn[8],mon[10],ch,camt[25],temp[40]; int c,i,j,l,n,x,pg=1; int nr; nr=num_of_rec("TRANSACTION.DAT",6); struct trans t, *selected; selected=(struct trans *)malloc(sizeof(struct trans)*nr); struct account ac,sac; title(); gotoxy(8,8); printf("A/C Numero : "); scanf("%s",acn); strcpy(acn,strupr(acn)); fp=fopen("ACCOUNT.DAT","r"); c=0; while(fscanf(fp,"%s %s %s %s %s %s %c %s %c %f %f %f\n",ac.ac_no,ac.fname,ac.lname,ac.dob,ac.address,ac.contact,&ac.sex,ac.u_date,&ac.ac_type,&ac.c_bal,&ac.interest,&ac.t_bal)!=EOF) if(strcmp(acn,ac.ac_no)==0) { c++; sac=ac; } fclose(fp); if (c==0) { title(); gotoxy(20,12); printf("Given A/C number does not exits!"); getch(); } else { fp=fopen("TRANSACTION.DAT","r"); i=0; while(fscanf(fp,"%s %s %s %s %f %s\n",t.ac_no,t.ac_t,t._date,t._ttime,&t.amt,t.usr)!=EOF) if(strcmp(acn,t.ac_no)==0) selected[i++]=t; l=i; fclose(fp); strcpy(selected[l].ac_no,t.ac_no); strcpy(selected[l].ac_t,"Interesse"); strcpy(selected[l]._date,date); _strtime(ttime); strcpy(selected[l]._ttime,ttime); selected[l].amt=sac.interest; l++; strcpy(selected[l].ac_no,t.ac_no); strcpy(selected[l].ac_t,"Saldo Final"); strcpy(selected[l]._date,date); _strtime(ttime); strcpy(selected[l]._ttime,ttime); selected[l].amt=sac.c_bal+sac.interest; l++; n=0; c=0; float dr=0,cr=0; do { title(); gotoxy(2,6);puts("SN"); gotoxy(6,6);puts(" Detalhes"); gotoxy(28,6); puts("Data"); gotoxy(44,6); puts("Tempo"); gotoxy(50,6);puts(" Dr. (NRs.)"); gotoxy(65,6);puts(" Cr. (NRs.)"); gotoxy(1,7); for(i=1;i<79;i++) printf("%c",196); gotoxy(1,21); for(i=1;i<79;i++) printf("%c",196); if(n>l) {n=0; pg=1;} i=n; gotoxy(2,22); printf("Pagina : %d fora de %d",pg,(int)l/10+1); if (l>9) if (pg!=(int)l/10+1) { gotoxy(25,22); printf("Pressione a barra de espaco para visualizar a pagina seguinte");} else { gotoxy(25,22); printf("Pressione barra de espaco para ver a primeira paágina");} gotoxy(2,20); printf("A/C Titular : %s %s",sac.fname,sac.lname); currency(camt,sac.t_bal); strcpy(temp,"Banco Balance : "); strcat(temp,camt); gotoxy(78-strlen(temp),20); printf("%s",temp); for(j=0;j<10;j++) { gotoxy(2,8+j); printf("%d.",i+1); for(x=0;x<strlen(selected[i].ac_t);x++) if(selected[i].ac_t[x]=='+') selected[i].ac_t[x]=32; gotoxy(6,8+j); puts(selected[i].ac_t); if (c==0) date_output(selected[i]._date); gotoxy(28,8+j); puts(selected[i]._date); selected[i]._ttime[5]='\0'; gotoxy(44,8+j); printf("%s",selected[i]._ttime); if(selected[i].ac_t[0]=='T') { gotoxy(65,8+j); printf("%13.2f",selected[i].amt); cr+=selected[i].amt; } else if (selected[i].ac_t[0]=='C'&&(selected[i].ac_t[5]=='W'||selected[i].ac_t[1]=='l')) { gotoxy(65,8+j); printf("%13.2f",selected[i].amt); cr+=selected[i].amt; } else { gotoxy(50,8+j); printf("%13.2f",selected[i].amt); dr+=selected[i].amt; } i++; if(i>=l) break; } n+=10; if (i>=l) { gotoxy(1,9+j); for(x=1;x<79;x++) printf("%c",196); gotoxy(40,10+j); printf("TOTAL"); gotoxy(50,10+j); printf("%13.2f",dr); gotoxy(65,10+j); printf("%13.2f",cr); dr=cr=0; gotoxy(1,11+j); for(x=1;x<79;x++) printf("%c",196); c++; } ch=getche(); if (ch==32) pg++; } while(ch==32); } } //---------------------------------------------------------------------------------------------- void admin() { char uname[30], pass[30]={0}; int c=0,cnt=0; do { c=0; system("cls"); gotoxy(7,5);printf("Apenas 3 tentativas serao autorizados a entrar nome de usuario e senha."); rectangle(10,8,70,15); gotoxy(23,10); printf("Digite o nome do usuario : "); scanf("%s",uname); char pass[30]={0}; gotoxy(23,12); printf("Senha : "); _password(pass); strcpy(uname,strupr(uname)); strcpy(pass,strupr(pass)); cnt++; if (cnt==3) { title(); gotoxy(25,8); printf("Nome de usuario ou senha invalida!\a"); gotoxy(22,11);printf("Pressione qualquer tecla para sair do programa..."); getch(); exit(0); } if(strcmp(uname,"ARIMATEIA")==0&&strcmp(pass,"QWE")==0) c=1; else { title(); gotoxy(25,10); printf("Nome de usuario ou senha invalida!\a"); getch(); } } while(c!=1); do { title(); int ch,i; char ex,key; gotoxy(30,8);printf("1. Adicionar Usuario"); gotoxy(30,10);printf("2. Excluir usuario"); gotoxy(30,12);printf("3. Editar nome de usuario / senha"); gotoxy(30,14);printf("4. Exibir relatorio do usuario"); gotoxy(30,16);printf("5. Sair"); gotoxy(1,17); for(i=0;i<78;i++) printf("_"); gotoxy(23,19);printf(" Pressione um numero entre o intervalo [1 -5] "); key=getche(); ch=key-48; switch(ch) { case 1: add_user(); break; case 2: del_user(); break; case 3: edit_user(); break; case 4: view_log(); break; case 5: title(); gotoxy(15,10); printf("Tem certeza de que deseja sair? <Y/N> : "); ex=getche(); if (ex=='Y'||ex=='y') exit(0); break; default: title(); gotoxy(10,10); printf("Sua entrada estah fora da faixa! Introduzir uma escolha entre 1 a 5!"); gotoxy(15,12); printf("Pressione a tecla ENTER para retornar ao menu principal..."); getch(); } } while(1); return; } void add_user() { int err1=0,c=0; char passwrd1[30]={0}; char passwrd2[30]={0}; char nam[30],pass[30]; do{ title(); err1=0; gotoxy(25,8);printf("Nome do Usuario : "); scanf("%s",user.name); fp=fopen("USER.DAT","r"); c=0; while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(user.name,strupr(user.name)); if(strcmp(nam,user.name)==0) c++; } fclose(fp); if(c!=0) { gotoxy(10,10); printf("Nome de usuario jah existe! Por favor insira um novo nome de usuario.\a"); getch(); err1++; continue; } gotoxy(25,10);printf("Senha : "); _password(passwrd1); strcpy(user.password,passwrd1); gotoxy(25,12);printf("Confirma Senha : "); _password(passwrd2); if (strcmp(user.password,passwrd2)!=0) { title(); gotoxy(10,10); printf("Senha e senha de confirmação nao corresponde!\a"); getch(); err1++; } }while(err1!=0); fp=fopen("USER.DAT","r"); char id[4]; if (fp==NULL) strcpy(user.uid,"U01"); else { while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF); increase(user.uid); } fclose(fp); fp=fopen("USER.DAT","a"); fprintf(fp,"%s %s %s\n",user.uid,user.name,user.password); fclose(fp); title(); gotoxy(25,10); printf("Registro adicionado com exito!"); getch(); } void del_user() { char nam[30], pass[30],ch,id[5],passwrd[30]={0}; int c=0; user_log log; title(); gotoxy(25,8);printf("Nome de Usuario : "); scanf("%s",user.name); gotoxy(25,10);printf("Senha : "); _password(passwrd); strcpy(user.password,passwrd); fp=fopen("USER.DAT","r"); while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(pass,strupr(pass)); strcpy(user.name,strupr(user.name)); strcpy(user.password,strupr(user.password)); if(strcmp(user.name,nam)==0&&strcmp(user.password,pass)==0) c++; } fclose(fp); title(); if (c==0) { gotoxy(10,10); printf("Nao eh possivel encontrar a combinacao dado de usuario e senha!\a"); getch(); return; } gotoxy(15,10); printf("Tem certeza de que deseja excluir este usuario? <Y/N> : "); ch=getche(); if(ch=='Y'||ch=='y') { fp=fopen("USER.DAT","r"); tfp=fopen("temp.dat","a"); while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(pass,strupr(pass)); if(strcmp(user.name,nam)!=0||strcmp(user.password,pass)!=0) fprintf(tfp,"%s %s %s\n",user.uid,nam,pass); else strcpy(id,user.uid); } fclose(fp); fclose(tfp); system("del USER.DAT"); system("ren temp.dat USER.DAT"); fp=fopen("LOG.DAT","r"); tfp=fopen("temp.dat","w"); while(fscanf(fp,"%s %s %s %s",log.id,log.date,log.stime,log.etime)!=EOF) { strupr(log.id); strupr(id); if(strcmp(log.id,id)!=0) fprintf(tfp,"%s %s %s %s\n",log.id,log.date,log.stime,log.etime); } fclose(fp); fclose(tfp); system("del LOG.DAT"); system("ren temp.dat LOG.DAT"); title(); gotoxy(25,10); printf("Registro excluido com sucesso!"); getch(); } } void edit_user() { char nam[30], pass[30],ch, n_nam[30], n_pass[30]={0},passwrd[30]={0},n_pass1[30]={0}; int c=0,err=0; title(); gotoxy(25,8);printf("Nome de Usuario : "); scanf("%s",user.name); gotoxy(25,10);printf("Senha : "); _password(passwrd); strcpy(user.password,passwrd); fp=fopen("USER.DAT","r"); while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(pass,strupr(pass)); strcpy(user.name,strupr(user.name)); strcpy(user.password,strupr(user.password)); if(strcmp(user.name,nam)==0&&strcmp(user.password,pass)==0) c++; } fclose(fp); title(); if (c==0) { gotoxy(10,10); printf("Nao eh possivel encontrar a combinacao dado de usuario e senha!\a"); getch(); } else { gotoxy(8,10); printf("Tem certeza de que deseja alterar o nome de usuario e / ou senha? <Y/N> : "); ch=getche(); if(ch=='Y'||ch=='y') { do { title(); err=0; gotoxy(25,8); printf("Novo Usuario : "); scanf("%s",n_nam); gotoxy(25,10); printf("Nova Senha : "); _password(n_pass); gotoxy(25,12); printf("Confirma Senha : "); _password(n_pass1); if (strcmp(n_pass,n_pass1)!=0) { title(); gotoxy(10,10); printf("Senha e senha de confirmacao nao corresponde!\a"); getch(); err++; } } while(err!=0); fp=fopen("USER.DAT","r"); tfp=fopen("temp.dat","a"); while(fscanf(fp,"%s %s %s\n",user.uid,nam,pass)!=EOF) { strcpy(nam,strupr(nam)); strcpy(pass,strupr(pass)); if(strcmp(user.name,nam)!=0||strcmp(user.password,pass)!=0) fprintf(tfp,"%s %s %s\n",user.uid,nam,pass); else fprintf(tfp,"%s %s %s\n",user.uid,n_nam,n_pass); } fclose(fp); fclose(tfp); system("del USER.DAT"); system("ren temp.dat USER.DAT"); title(); gotoxy(25,10); printf("Registro foi editado com sucesso!"); getch(); } } } void view_log() { int nr; nr=num_of_rec("LOG.DAT",4); user_log *log,*selected,*temp; log=(user_log *)malloc(sizeof(user_log)*nr); selected=(user_log *)malloc(sizeof(user_log)*nr); temp=(user_log *)malloc(sizeof(user_log)*nr); int i=0,l,j,c=0,n=0,l1,cnt=0; char uid[4],nam[30],pass[30],key,ch; do { i=0;c=0;n=0;cnt=0; tfp=fopen("LOG.DAT","r"); while(fscanf(tfp,"%s %s %s %s\n",log[i].id,log[i].date,log[i].stime,log[i].etime)!=EOF) { fp=fopen("USER.DAT","r"); while(fscanf(fp,"%s %s %s\n",uid,nam,pass)!=EOF) if(strcmp(log[i].id,uid)==0) strcpy(log[i].name,nam); i++; fclose(fp); } l=i; fclose(tfp); title(); gotoxy(30,8);printf("1. Ver por nome de usuario"); gotoxy(30,10);printf("2. Ver por Data"); gotoxy(30,12);printf("3. Ver toda a historia do usuario"); gotoxy(30,14);printf("4. Voltar para o menu de capital"); gotoxy(1,15); for(i=0;i<78;i++) printf("_"); gotoxy(23,17);printf(" Pressione um número entre o intervalo [1 -4] "); key=getche()-48; j=0; title(); switch(key) { case 1: gotoxy(30,10); printf("Digite o nome do usuario : "); scanf(" %s",nam); strcpy(nam,strupr(nam)); for(i=0;i<l;i++) { strcpy(log[i].name,strupr(log[i].name)); if(strcmp(log[i].name,nam)==0) selected[j++]=log[i]; } l1=j; break; case 2: do { gotoxy(30,10); printf("Digite Data (dd/mm/yyyy) : "); scanf(" %s",nam); if(date_check(nam)==0) { cls(30,10,70,10); printf("\a");} }while(date_check(nam)==0); date_input(nam); for(i=0,j=0;i<l;i++) if(strcmp(log[i].date,nam)==0) selected[j++]=log[i]; l1=j; break; case 3: for(i=0;i<l;i++) selected[j++]=log[i]; l1=j; break; case 4: return; break; default: title(); gotoxy(10,10); printf("Sua entrada está fora da faixa! Digite uma escolha entre 1 a 4!"); gotoxy(15,12); printf("Pressione a tecla ENTER para retornar ao menu principal..."); getch(); c=1; } if(l1==0) { title(); gotoxy(27,12); printf("Nenhum registro (s) relacionado encontrado!\a"); getch(); view_log(); } if(c==0) { for(i=0,j=l1-1;i<l1;i++,j--) temp[i]=selected[j]; for(i=0;i<l1;i++) selected[i]=temp[i]; do { title(); if (l1<12) { gotoxy(8,21); printf("Pressione S para alternar entre Classificando ordem crescente ou decrescente."); } else { gotoxy(15,21); printf("Pressione barra de espaco para ver mais dados"); } gotoxy(5,8); printf("SN\t Nome do Usuario\tData\t\tHora de inicio\tFinal"); gotoxy(4,9); for(i=0;i<70;i++) printf("%c",196); if(cnt!=0) { for(i=l1-1;i>=0;i--) temp[l1-i-1]=selected[i]; for(i=0;i<l1;i++) selected[i]=temp[i]; } if(n>l1) n=0; for(i=n,j=0;i<l1;i++,j++) { gotoxy(5,10+j);printf("%d.",i+1); selected[i].stime[5]='\0'; selected[i].etime[5]='\0'; if (strlen(selected[i].date)<10) { date_output(selected[i].date); } gotoxy(9,10+j); printf("%s\t\t%s\t%s\t\t%s",selected[i].name,selected[i].date,selected[i].stime,selected[i].etime); if(i>=n+9) { n=n+10; break;} } ch=getche(); if(ch=='S'||ch=='s')cnt=1; if(ch==32&&i==l1) n=0; } while(ch=='S'||ch=='s'||ch==32); } else c=0; } while(1); } //------------------------------------------------------------------------------------------------ void welcome() { int i; system("cls"); rectangle(0,0,80,23); gotoxy(27,4); printf("SISTEMA DE GESTAO BANCARIA"); gotoxy(25,5); for(i=0;i<27;i++) printf("%c",196); gotoxy(25,8); printf("Desenhado e programado por:"); gotoxy(25,9);for(i=0;i<27;i++) printf("%c",196); gotoxy(33,11); printf("Jose de Arimateia"); gotoxy(33,13); printf("FELIZ NATAL!!"); gotoxy(33,15); printf("FELIZ ANO NOVO DEUS EH BOM!!"); gotoxy(24,20); printf("Pressione qualquer tecla para continuar..."); getch(); } void date_input(char date[]) { char temp[15]; temp[3]=date[0]; temp[4]=date[1]; temp[0]=date[3]; temp[1]=date[4]; temp[6]=date[8]; temp[7]=date[9]; temp[8]='\0'; temp[2]=temp[5]='/'; strcpy(date,temp); } void date_output(char date[]) { struct { int dd; char mm[4]; int yyyy; }_date; char temp[15]; int mm,c,i; _date.dd=(date[3]-48)*10+(date[4]-48); mm=(date[0]-48)*10+(date[1]-48); _date.yyyy=2000+(date[6]-48)*10+(date[7]-48); switch(mm) { case 1: strcpy(_date.mm,"Jan"); break; case 2: strcpy(_date.mm,"Feb"); break; case 3: strcpy(_date.mm,"Mar"); break; case 4: strcpy(_date.mm,"Abr"); break; case 5: strcpy(_date.mm,"Mai"); break; case 6: strcpy(_date.mm,"Jun"); break; case 7: strcpy(_date.mm,"Jul"); break; case 8: strcpy(_date.mm,"Ago"); break; case 9: strcpy(_date.mm,"Set"); break; case 10: strcpy(_date.mm,"Out"); break; case 11: strcpy(_date.mm,"Nov"); break; case 12: strcpy(_date.mm,"Dez"); break; } temp[0]=(int)(_date.dd/10)+48; temp[1]=(int)(_date.dd%10)+48; temp[2]=32; temp[3]='\0'; strcat(temp,_date.mm); temp[6]=','; c=0; temp[7]=32; for(i=3;i>=0;i--) { temp[8+c]=(int)(_date.yyyy/pow(10,i))+48; c++; _date.yyyy%=(int)pow(10,i); } temp[12]='\0'; strcpy(date,temp); } int date_check(char _date[]) { int err=0,mm,dd,yyyy; if(strlen(_date)!=10) err++; if(_date[2]!='/'||_date[5]!='/') err++; mm=(_date[3]-48)*10+(_date[4]-48); if (mm>12) err++; dd=(_date[0]-48)*10+(_date[1]-48); yyyy=(_date[6]-48)*1000+(_date[7]-48)*100+(_date[8]-48)*10+(_date[9]-48); switch(mm) { case 1: if (dd>31) err++; break; case 2: if (dd>28) err++; if (yyyy%4==0&&dd==29) err--; break; case 3: if (dd>31) err++; break; case 4: if (dd>30) err++; break; case 5: if (dd>31) err++; break; case 6: if (dd>30) err++; break; case 7: if (dd>31) err++; break; case 8: if (dd>31) err++; break; case 9: if (dd>30) err++; break; case 10: if (dd>31) err++; break; case 11: if (dd>30) err++; break; case 12: if (dd>31) err++; break; } if (err==0) return 1; else return 0; } void num2word(double n,char word[]) { long int num; int a[6],i; num=(int)n; a[5]=num%1000; num=num/1000; for(i=4;i>=0;i--) { a[i]=num%100; num=num/100; } int m,h,tt,t,o; m=a[5]; h=m/100; tt=m%100; t=tt/10; o=tt%10; char one[10],ten[10],hh[20]={0}; if(tt<20&&h!=0) { _one(h,one); strcpy(hh,one); strcat(hh,"Cem "); _one(tt,one); strcat(hh,one); } else if(tt<20&&h==0) { _one(tt,one); strcpy(hh,one); } else if(tt>20&&h!=0) { _one(h,one); strcpy(hh,one); strcat(hh,"Cem "); _ten(t,ten); strcat(hh,ten); _one(o,one); strcat(hh,one); } else { _ten(t,ten); strcpy(hh,ten); _one(o,one); strcat(hh,one); } char aa[5][30]; for(i=4;i>=0;i--) { if (a[i]<20) { _one(a[i],one); strcpy(aa[i],one); } else { _ten(a[i]/10,ten); strcpy(aa[i],ten); _one(a[i]%10,one); strcat(aa[i],one); } } char x[10]={0},w[50]={0}; int l; for(i=0;i<5;i++) { l=strlen(aa[i]); if(l!=0) { switch(i) { case 0: strcpy(x,"Real "); break; case 1: strcpy(x,"Arab "); break; case 2: strcpy(x,"Crore "); break; case 3: strcpy(x,"Lakh "); break; case 4: strcpy(x,"Thousand "); break; } strcat(w,aa[i]); strcat(w,x); } } strcpy(word,w); strcat(word,hh); word[strlen(word)-1]='\0'; } void _ten(int n,char ten[]) { switch(n) { case 2: strcpy(ten,"Vinte "); break; case 3: strcpy(ten,"Trinta "); break; case 4: strcpy(ten,"Quarenta "); break; case 5: strcpy(ten,"Cinquenta "); break; case 6: strcpy(ten,"Sessenta "); break; case 7: strcpy(ten,"Setenta "); break; case 8: strcpy(ten,"Oitenta "); break; case 9: strcpy(ten,"Noventa "); break; default: strcpy(ten,""); } } void _one(int n, char one[]) { switch(n) { case 1: strcpy(one,"Um "); break; case 2: strcpy(one,"Dois "); break; case 3: strcpy(one,"Tres "); break; case 4: strcpy(one,"Quatro "); break; case 5: strcpy(one,"Cinco "); break; case 6: strcpy(one,"Seis "); break; case 7: strcpy(one,"Sete "); break; case 8: strcpy(one,"Oito "); break; case 9: strcpy(one,"Nove "); break; case 10: strcpy(one,"Dez "); break; case 11: strcpy(one,"Onze "); break; case 12: strcpy(one,"Doze "); break; case 13: strcpy(one,"Treze "); break; case 14: strcpy(one,"Quartoze "); break; case 15: strcpy(one,"Quinze "); break; case 16: strcpy(one,"Dezesseis "); break; case 17: strcpy(one,"Dezessete "); break; case 18: strcpy(one,"Dezoito "); break; case 19: strcpy(one,"Dezenove "); break; default: strcpy(one,""); } } void currency(char cur[], float n) { int num,i,x,c; char temp[30]; num=(int)n; int a[6]; a[5]=num%1000; num=num/1000; for(i=4;i>=0;i--) { a[i]=num%100; num=num/100; } for(i=0;i<6;i++) if (a[i]!=0) break; x=i; c=0; for(i=x;i<6;i++) { if(i==5) { if (a[i]>=100||i!=x) cur[c++]=(a[i]/100)+48; if (a[i]%100>=10||i!=x) cur[c++]=(a[i]%100)/10+48; if (a[i]%100<10&&i==x) cur[c++]=48; cur[c++]=(a[i]%100)%10+48; } else { if (a[i]>=10||i!=x) cur[c++]=(a[i]/10)+48; cur[c++]=(a[i]%10)+48; cur[c++]=','; } } cur[c++]='.'; num=(n-(int)n)*100; cur[c++]=num/10+48; cur[c++]=num%10+48; cur[c]='\0'; if (n==0) strcpy(cur,"0.00"); strcpy(temp,"Rs. "); strcat(temp,cur); strcpy(cur,temp); } void cls(int x1,int y1,int x2, int y2) { int i,j; for(i=y1;i<=y2;i++) for(j=x1;j<=x2;j++) { gotoxy(j,i); printf("%c",32); } } void increase(char i_id[]) { int l; l=strlen(i_id)-1; do { if(i_id[l]!='9') i_id[l]+=1; else i_id[l]='0'; l--; }while(i_id[l+1]=='0'); } int num_of_rec(char file[],int n) { FILE *fptr; char dat[200]; long int c=0; fptr=fopen(file,"r"); while(fscanf(fptr,"%s",dat)!=EOF) c++; fclose(fptr); return c/n; } void _password(char buffer[]) { char c; int pos = 0; do { c = getch(); if( isprint(c) ) { buffer[ pos++ ] = c; printf("%c", '*'); } else if( c == 8 && pos ) { buffer[ pos-- ] = '\0'; printf("%s", "\b \b"); } }while( c != 13 ); } void rectangle(int x,int y,int l,int b) { int i,m; gotoxy(x,y); printf("%c",201); for(i=x+1;i<l-1;i++) { gotoxy(i,y); printf("%c",205); } gotoxy(i,y); printf("%c",187); for (m=y+1;m<b;m++) { gotoxy(x,m); for(i=x;i<l;i++) { if(i==x||i==l-1) { gotoxy(i,m); printf("%c",186); } } } gotoxy(x,m); printf("%c",200); for(i=x+1;i<l-1;i++) { gotoxy(i,m); printf("%c",205); } gotoxy(i,m); printf("%c",188); } void title() { int i; system("cls"); rectangle(0,0,80,23); gotoxy(25,1); printf("SISTEMA BANCARIO"); gotoxy(5,3); if (strcmp(user.name,"Arimateia")==0) gbl_flag=1; if (gbl_flag) printf("Usuario Atual : Arimateia"); else printf("Usuario Atual : %s",user.name); printf("\t\t\t\tData : "
Ajustando o sincronismo da legenda com o filme
leitura/escrita de dados/estruturas em arquivo
Copia uma linha selecionada para um arquivo secundário
Compactando arquivos de log *.txt
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes năo usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automaçăo de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas ŕs imagens de uma pasta