Guest User

Untitled

a guest
Aug 15th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #define QUANT_CLIENTES 5
  6.  
  7. typedef struct {
  8. int agencia;// número inteiro de 3 dígitos;
  9. int contaCorrente ;// número inteiro de 4 dígitos;
  10. char nome[100];// vetor de caracteres (string) de no máximo 100 posições;
  11. float saldoC; // número real com duas casas de aproximação;
  12. float chequeEspecial;
  13. int preenchido;
  14. } tCliente;
  15.  
  16. void abrirContaCorrente(tCliente clientes[]){
  17. int i, op;
  18. float valorDeposito;
  19.  
  20. fflush(stdin);
  21.  
  22. for(i=0;i<QUANT_CLIENTES;i++){
  23. if(clientes[i].preenchido != 1){
  24. printf("\t--Cadastro do Cliente--");
  25. printf("\nNome: ");
  26. fgets(clientes[i].nome, 100, stdin); // Le o nome completo e com espaços e limpa o buffer do teclado
  27.  
  28. //obrigando o usuario a digitar um numero de 3 digitos
  29. while(clientes[i].agencia < 100 || clientes[i].agencia > 999){
  30. printf("\nAgencia[N° de 3 digitos]: ");
  31. scanf("%d", &clientes[i].agencia);
  32. }
  33.  
  34. //obrigando o usuario a digitar um numero de 4 digitos
  35. while(clientes[i].contaCorrente < 1000 || clientes[i].contaCorrente > 9999){
  36. printf("\nConta Corrente[N° de 4 digitos]: ");
  37. scanf("%d", &clientes[i].contaCorrente);
  38. }
  39.  
  40. printf("\nDeseja fazer um deposito inicial? <1 - Sim, outro valor - Nao>");
  41. scanf("%d", &op);
  42. if(op==1){
  43. printf("Informe o valor do deposito: ");
  44. scanf("%f", &valorDeposito);
  45.  
  46. while(valorDeposito<0){
  47. printf("Valor invalido! Por favor digite um valor positivo: ");
  48. scanf("%f", &valorDeposito);
  49. }
  50. clientes[i].saldoC = valorDeposito;
  51. }
  52. else
  53. clientes[i].saldoC = 0;
  54.  
  55. //atribuições
  56. clientes[i].chequeEspecial = 200;
  57. clientes[i].preenchido = 1;
  58.  
  59. return;
  60. }
  61. }
  62.  
  63. if(i==QUANT_CLIENTES)
  64. printf("ERRO: Atingiu a quantidade Maxima de Contas\n");
  65. }
  66.  
  67. int verificaUser(tCliente clientes[]){
  68. int agencia = 0,contaC = 0, i;
  69. while(agencia < 100 || agencia > 999){
  70. printf("Informe sua Agencia (3 digitos): ");
  71. scanf("%d",&agencia);
  72. }
  73. while(contaC < 1000 || contaC > 9999){
  74. printf("Informe sua Conta Corrente (4 digitos): ");
  75. scanf("%d",&contaC);
  76. }
  77.  
  78. for(i=0;i<QUANT_CLIENTES;i++){
  79. if(clientes[i].agencia == agencia && clientes[i].contaCorrente == contaC)
  80. return i;
  81. }
  82.  
  83. return -1;
  84. }
  85.  
  86. /*void Imprimir(tCliente cliente[]){
  87. int i;
  88. for(i=0;i<QUANT_CLIENTES; i++){
  89. if(cliente[i].preenchido ==1)
  90. printf("\nPosicao [%d] Prenchida\n",i);
  91. else
  92. printf("\nPosicao [%d] Nao Prenchida\n",i);
  93. }
  94. }
  95. */
  96.  
  97. void imprimirSaldo(tCliente clientes[], int *aux){
  98.  
  99. printf("\nSaldo Real: %2.f",clientes[*aux].saldoC);
  100. printf("\tChegue Especial: %2.f",clientes[*aux].chequeEspecial);
  101. printf("\tSaldo Total: %2.f\n", clientes[*aux].chequeEspecial + clientes[*aux].saldoC);
  102.  
  103. }
  104.  
  105. void debitar(tCliente clientes[],int *aux,float *valor, float *saldoTotal){
  106. if(*valor == *saldoTotal){
  107. clientes[*aux].saldoC = 0;
  108. clientes[*aux].chequeEspecial = 0;
  109. }
  110. if(*valor >= clientes[*aux].saldoC && *valor < *saldoTotal){
  111. clientes[*aux].chequeEspecial -= *valor - clientes[*aux].saldoC;
  112. clientes[*aux].saldoC = 0;
  113. }
  114. if(*valor <= clientes[*aux].saldoC){
  115. clientes[*aux].saldoC -= *valor;
  116. }
  117. }
  118.  
  119. void saldoContaCorrrente(tCliente clientes[]){
  120. int aux = verificaUser(clientes);
  121. if(aux >= 0){
  122. printf("\nSaldo Real: %2.f",clientes[aux].saldoC);
  123. printf("\tChegue Especial: %2.f",clientes[aux].chequeEspecial);
  124. printf("\tSaldo Total: %2.f\n", clientes[aux].chequeEspecial + clientes[aux].saldoC);
  125. }else
  126. printf("\n\tCliente nao existe\n");
  127. }
  128.  
  129. void fecharContaCorrente(tCliente clientes[]){
  130. int aux = verificaUser(clientes),i;
  131. if(aux >= 0){
  132. if(clientes[aux].saldoC == 0)
  133. printf("\nConta Fechada Com Sucesso !!\n");
  134. if(clientes[aux].saldoC > 0)
  135. printf("\nVenha receber R$ %2.f que está na sua conta",clientes[aux].saldoC);
  136. if(clientes[aux].chequeEspecial<200)
  137. printf("\nVenha nos pagar R$ %2.f",200 - clientes[aux].chequeEspecial);
  138.  
  139. //apagando e reorganizando o vetor]
  140. for(i=aux;i<QUANT_CLIENTES;i++){
  141. clientes[i] = clientes[i+1];
  142. }
  143.  
  144. }else
  145. printf("\n\tCliente nao existe\n");
  146. }
  147.  
  148. void depositoContaCorrente(tCliente clientes[]){
  149. float valorDeposito, debito;
  150. int aux = verificaUser(clientes);
  151.  
  152. printf ("\n");
  153.  
  154. if(aux>=0){
  155. printf("Informe o valor do deposito: ");
  156. scanf("%f", &valorDeposito);
  157. while(valorDeposito<0){
  158. printf("Valor invalido! Por favor digite um valor positivo: ");
  159. scanf("%f", &valorDeposito);
  160. }
  161.  
  162. debito = 200 - clientes[aux].chequeEspecial;
  163.  
  164. if (debito >= valorDeposito){
  165. clientes[aux].chequeEspecial += valorDeposito;
  166. }
  167. if(debito < valorDeposito){
  168. valorDeposito -= debito;
  169. clientes[aux].chequeEspecial += debito;
  170. clientes[aux].saldoC += valorDeposito;
  171. }
  172. printf("\nDeposito realizado com sucesso!\n");
  173. imprimirSaldo(clientes, &aux);
  174.  
  175. }
  176. else
  177. printf("\n\tCliente nao existe\n");
  178. }
  179.  
  180.  
  181. void saqueContaCorrente(tCliente clientes[]){
  182. int op, aux = verificaUser(clientes);
  183. float saque, saldoTotal = clientes[aux].saldoC + clientes[aux].chequeEspecial;
  184.  
  185. printf("\nSeu saldo total eh: %.2f\n", saldoTotal);
  186.  
  187. if(saldoTotal==0){
  188. printf("\nVoce nao possui saldo suficiente para saque!\n");
  189. }
  190. else{
  191. printf("\nInforme um valor para saque: ");
  192. scanf("%f", &saque);
  193.  
  194. while(saque > saldoTotal){
  195. printf("\nSaldo insuficiente!\n");
  196. printf("\nDeseja digitar outro valor? (1 - Sim, Outro valor - Nao)\n");
  197. scanf("%d", &op);
  198.  
  199. if(op==1){
  200. printf("Informe um valor: ");
  201. scanf("%f", &saque);
  202. }else{
  203. printf("Operacao Cancelada!\n");
  204. return;
  205. }
  206. }
  207.  
  208. debitar(clientes, &aux, &saque, &saldoTotal);
  209. }
  210. printf("\nSaque realizado com sucesso!\n");
  211. imprimirSaldo(clientes, &aux);
  212. }
  213.  
  214. void transferenciaEntreContas(tCliente clientes[]){
  215. int aux1, aux2, op, status;
  216. float transferir, saldoTotal, debito;
  217.  
  218. printf("--Dados da conta a ser RETIRADO o dinheiro--\n\n");
  219. aux1 = verificaUser(clientes);
  220.  
  221. if(aux1>=0){
  222. saldoTotal = clientes[aux1].saldoC + clientes[aux1].chequeEspecial;
  223. printf("\nInforme um valor a ser transferido: ");
  224. scanf("%f", &transferir);
  225.  
  226. while(transferir > saldoTotal){
  227. printf("\nSaldo insuficiente!\n");
  228. printf("\nDeseja digitar outro valor? (1 - Sim, Outro valor - Nao)\n");
  229. scanf("%d", &op);
  230.  
  231. if(op==1){
  232. printf("Informe um valor: ");
  233. scanf("%f", &transferir);
  234. }else{
  235. printf("Operacao Cancelada!\n");
  236. return;
  237. }
  238. }
  239.  
  240. }else{
  241. printf("\n\tCliente nao existe\n");
  242. }
  243.  
  244. printf("\n--Dados da conta a ser DEPOSITADO o dinheiro--\n\n");
  245. aux2 = verificaUser(clientes);
  246.  
  247. if(aux1 != aux2){
  248.  
  249. if(aux2>=0){
  250.  
  251. printf("\n--CONTA A SER RETIRADO O DINHEIRO--\n\n");
  252. printf("Nome: %s", clientes[aux1].nome);
  253. printf("Agencia: %d\n", clientes[aux1].agencia);
  254. printf("Conta: %d\n", clientes[aux1].contaCorrente);
  255.  
  256. printf("\n--CONTA A SER DEPOSITADO O DINHEIRO--\n\n");
  257. printf("Nome: %s", clientes[aux2].nome);
  258. printf("Agencia: %d\n", clientes[aux2].agencia);
  259. printf("Conta: %d\n", clientes[aux2].contaCorrente);
  260.  
  261. status = 1;
  262.  
  263. }else{
  264. printf("\nNao foi possivel realizar a transacao!\n");
  265. printf("\n\tCliente nao existe\n");
  266. status = 0;
  267. }
  268. }else{
  269. printf("\nNao foi possivel realizar a transacao!\n");
  270. printf("As contas sao iguais!\n");
  271. }
  272.  
  273. if(status==1){
  274.  
  275. debitar(clientes, &aux1, &transferir, &saldoTotal);
  276. debito = 200 - clientes[aux2].chequeEspecial;
  277.  
  278. if (debito >= transferir){
  279. clientes[aux2].chequeEspecial += transferir;
  280. }
  281. if(debito < transferir){
  282. transferir -= debito;
  283. clientes[aux2].chequeEspecial += debito;
  284. clientes[aux2].saldoC += transferir;
  285. }
  286. }
  287. }
  288.  
  289. int main(){
  290. tCliente clientes[QUANT_CLIENTES];
  291. int opcaoM;
  292. do{
  293. printf("\n--SISTEMA BANCARIO UNIVERSITARIO--\n");
  294. printf("\t1. Abrir Conta Corrente"); //ok - Faltava validar algumas entradas e deposito inicial
  295. printf("\n\t2. Saldo de Conta Corrente"); //ok
  296. printf("\n\t3. Deposito em Conta Corrente"); //ok
  297. printf("\n\t4. Saque de Conta Corrente"); //ok
  298. printf("\n\t5. Transferencia entre Contas Correntes"); //ok
  299. printf("\n\t6. Fechar Conta Corrente"); //ok
  300. printf("\n\t0. Sair do sistema\n"); //ok
  301.  
  302. printf("Digite a opcao do menu: ");
  303. scanf("%d", &opcaoM);
  304. printf("\n");
  305. switch(opcaoM) {
  306. case 1:
  307. abrirContaCorrente(clientes);
  308. break;
  309. case 2:
  310. saldoContaCorrrente(clientes);
  311. break;
  312. case 3:
  313. depositoContaCorrente(clientes);
  314. break;
  315. case 4:
  316. saqueContaCorrente(clientes);
  317. break;
  318. case 5:
  319. transferenciaEntreContas(clientes);
  320. break;
  321. case 6:
  322. fecharContaCorrente(clientes);
  323. break;
  324. case 0:
  325. printf("\tBye Bye!\n");
  326. break;
  327. default:
  328. printf("\tOpcao Invalida !\n");
  329. break;
  330. }
  331. }while(opcaoM!=0);
  332.  
  333.  
  334. return 0;
  335. }
Add Comment
Please, Sign In to add comment