Simulador de um Banco
Publicado por Arimateia (última atualizaçăo em 26/03/2015)
[ Hits: 4.858 ]
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 : "
Gerenciamento de alunos com dados armazenados em arquivo
MakeInt - gerador de wordlist numérica
leitura/escrita de dados/estruturas em arquivo
Justificador de texto em 80 colunas
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteçăo de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalaçăo do drive do adaptador wiffi (7)