Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <math.h>
  5. #include <ctype.h>
  6. #include <time.h>
  7. #include <string.h>
  8.  
  9. #define MAX 20
  10.  
  11. /*------------------------------------------- ESTRUTURAS -------------------------------------------*/
  12.  
  13. typedef struct
  14. {
  15. int dia, mes, ano;
  16. }t_data;
  17.  
  18. typedef struct
  19. {
  20. char marca[20], modelo[30], matricula[9], estado;
  21. int cilindrada, combustivel;
  22. float preco;
  23. t_data dataPM;
  24.  
  25. }automovel;
  26.  
  27. typedef struct
  28. {
  29. char nome[100], morada[500];
  30. int cc,nif, telefone, id;
  31. }cliente;
  32.  
  33. typedef struct
  34. {
  35. char auto_matricula[10];
  36. int id_cliente, id_venda;
  37. float v_preco;
  38. t_data dataVenda;
  39. }venda;
  40.  
  41.  
  42.  
  43.  
  44. /*------------------------------------------- FUNÇÕES - DECLARAÇÃO -------------------------------------------*/
  45.  
  46.  
  47. void enviarFicheiroCliente(int i, cliente v_cliente[]);
  48. int carregarDadosCliente(cliente v_cliente[]);
  49.  
  50. void enviarFicheiroAutomovel(int j, automovel v_auto[]);
  51. int carregarDadosAutomovel(automovel v_auto[]);
  52.  
  53. void enviarFicheiroVenda(int n, venda v_venda[]);
  54. int carregarDadosVenda(venda v_venda[]);
  55.  
  56. char menu();
  57. char menuAuto();
  58. char menuCliente();
  59. char menuVenda();
  60.  
  61. int F_automovel();
  62. int F_Cliente(int i, cliente v_cliente[]);
  63. int F_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[]);
  64.  
  65. int inserir_cliente(int i,cliente v_cliente[]);
  66. int inserir_auto(int j, automovel v_automovel[]);
  67. int inserir_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[]);
  68.  
  69. void totalFaturado(int n, venda v_venda[]);
  70. void vendasMes(int n, venda v_venda[]);
  71. void vendaMaisAlta(int n, venda v_venda[]);
  72. void vendaMaisBaixa(int n, venda v_venda[]);
  73. void percCombustivel(int n, int j, venda v_venda[], automovel v_auto[]);
  74. void vendasCliente(int n, venda v_venda[]);
  75.  
  76. void listar_Cliente(int i,cliente v_cliente[]);
  77. void listar_Auto(int j,automovel v_auto[]);
  78.  
  79. void pesquisar_cliente(cliente v_cliente[], int i);
  80. void pesquisarAuto(int j, automovel v_auto[]);
  81.  
  82. void editar_cliente(cliente v_cliente[]);
  83. void editarAuto(automovel v_auto[], int j);
  84.  
  85. int validarCliente(int i,cliente v_cliente[]);
  86. int validar(int id, cliente v_cliente[], int i);
  87. int validarAuto(int j, automovel v_auto[], char matri[9]);
  88. int validar2(char matri[9], automovel v_auto[], int j);
  89. int validar3(int n, venda v_venda[], float num);
  90.  
  91. int eliminarAuto(int j, automovel v_auto[]);
  92.  
  93. int validarMatricula(char matri[9]);
  94.  
  95.  
  96. /*------------------------------------------- MAIN -------------------------------------------*/
  97. int main()
  98. {
  99. setlocale(LC_ALL, "Portuguese");
  100. int Ccliente=0;
  101. int Cauto=0;
  102. int Cvenda=0;
  103.  
  104. cliente v_cliente[MAX];
  105. automovel v_auto[MAX];
  106. venda v_venda[MAX];
  107. char op;
  108.  
  109. Ccliente = carregarDadosCliente(v_cliente);
  110. Cauto = carregarDadosAutomovel(v_auto);
  111. Cvenda = carregarDadosVenda(v_venda);
  112.  
  113. do
  114. {
  115. system("cls");
  116. op=menu();
  117. switch(op)
  118. {
  119. case 'A':
  120. Cauto = F_automovel(Cauto, v_auto);
  121. break;
  122. case 'C':
  123. Ccliente = F_Cliente(Ccliente, v_cliente);
  124. break;
  125. case 'V':
  126. Cvenda = F_venda(Cvenda, Cauto, v_venda, v_auto, v_cliente);
  127. break;
  128. case'S':
  129. break;
  130. default:
  131. printf("Opcao invalida!");
  132. getch();
  133. main();
  134. break;
  135. }
  136. }while(op!='S');
  137.  
  138. enviarFicheiroCliente(Ccliente,v_cliente);
  139. enviarFicheiroAutomovel(Cauto, v_auto);
  140. enviarFicheiroVenda(Cvenda, v_venda);
  141. }
  142.  
  143. /*------------------------------------------- MENUS! -------------------------------------------*/
  144.  
  145. char menu()
  146. {
  147. char op;
  148. printf("\t\t+--------------------------------------------+\n");
  149. printf("\t\t| A - Gestao de Automoveis |\n");
  150. printf("\t\t| C - Gestao de Clientes |\n");
  151. printf("\t\t| V - Gestao de Vendas |\n");
  152. printf("\t\t| |\n");
  153. printf("\t\t| S - Sair |\n");
  154. printf("\t\t+--------------------------------------------+\n\n");
  155. printf("\tSelecione a opcao:");
  156. fflush(stdin);
  157. scanf("%c", &op);
  158. op=toupper(op);
  159. return op;
  160. }
  161.  
  162. char menuAuto()
  163. {
  164. char opAuto;
  165. printf("\t\t+--------------------------------------------+\n");
  166. printf("\t\t| I - Inserir Automovel |\n");
  167. printf("\t\t| E - Editar Automovel |\n");
  168. printf("\t\t| A - Eliminar Automovel |\n");
  169. printf("\t\t| T - Consultar Todos os Automoveis |\n");
  170. printf("\t\t| P - Pesquisar Automovel (matricula) |\n");
  171. printf("\t\t| |\n");
  172. printf("\t\t| V - Voltar ao Menu Principal |\n");
  173. printf("\t\t+--------------------------------------------+\n\n");
  174. printf("\tSelecione a opcao:");
  175. fflush(stdin);
  176. scanf("%c", &opAuto);
  177. opAuto=toupper(opAuto);
  178. return opAuto;
  179. }
  180.  
  181. char menuCliente()
  182. {
  183. char opCliente;
  184. printf("\t\t+--------------------------------------------+\n");
  185. printf("\t\t| I - Inserir Cliente |\n");
  186. printf("\t\t| E - Editar Cliente |\n");
  187. printf("\t\t| L - Consultar Todos os Clientes |\n");
  188. printf("\t\t| P - Pesquisar Cliente (NIF) |\n");
  189. printf("\t\t| |\n");
  190. printf("\t\t| V - Voltar ao Menu Principal |\n");
  191. printf("\t\t+--------------------------------------------+\n\n");
  192. printf("\tSelecione a opcao:");
  193. fflush(stdin);
  194. scanf("%c", &opCliente);
  195. opCliente=toupper(opCliente);
  196. return opCliente;
  197. }
  198.  
  199. char menuVenda()
  200. {
  201. char opVenda;
  202. printf("\t+-----------------------------------------------------------------+\n");
  203. printf("\t| I - Inserir Venda |\n");
  204. printf("\t| T - Total Faturado |\n");
  205. printf("\t| M - Vendas por Mes |\n");
  206. printf("\t| A - Venda mais Alta |\n");
  207. printf("\t| B - Venda mais Baixa |\n");
  208. printf("\t| P - Percentagem de Vendas por Combustivel |\n");
  209. printf("\t| C - Vendas de um Cliente (numero de identificacao fiscal) |\n");
  210. printf("\t| |\n");
  211. printf("\t| V - Voltar ao Menu Principal |\n");
  212. printf("\t+-----------------------------------------------------------------+\n\n");
  213. printf("\tSelecione a opcao:");
  214. fflush(stdin);
  215. scanf("%c", &opVenda);
  216. opVenda=toupper(opVenda);
  217. return opVenda;
  218. }
  219.  
  220.  
  221. /*--------------------------------------------------------------------------------------------------*/
  222. /*---------------------------------Guardar e Carregar ficheiros-------------------------------------*/
  223. /*--------------------------------------------------------------------------------------------------*/
  224.  
  225. void enviarFicheiroCliente(int i, cliente v_cliente[])
  226. {
  227. int q;
  228. FILE *out;
  229. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  230. out = fopen("Cliente.txt", "w");
  231. if( out == NULL )
  232. {
  233. printf("ERRO: nгo consigo abrir o ficheiro Cliente.txt\n");
  234. exit(1);
  235. }
  236. fprintf(out, "%d\n", i);
  237. for(q=0; q<i;q++)
  238. {
  239. fprintf(out,"%d\n", v_cliente[q].id );
  240. fprintf(out,"%s\n", v_cliente[q].nome );
  241. fprintf(out,"%s\n", v_cliente[q].morada);
  242. fprintf(out,"%d\n", v_cliente[q].cc);
  243. fprintf(out,"%d\n", v_cliente[q].nif);
  244. fprintf(out,"%d\n\n", v_cliente[q].telefone);
  245. }
  246.  
  247. fclose( out );
  248. }
  249.  
  250.  
  251. int carregarDadosCliente(cliente v_cliente[])
  252. {
  253. int i=0,q;
  254.  
  255. FILE *in;
  256. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  257. in = fopen("Cliente.txt", "r");
  258.  
  259. if( in == NULL )
  260. {
  261. printf("ERRO: nao consigo abrir o ficheiro Cliente.txt\n");
  262. exit(1);
  263. }
  264. fscanf(in, "%d\n", &i);
  265. printf("%d", i);
  266.  
  267. for(q=0; q<i;q++)
  268. {
  269. fscanf(in,"%d\n", &v_cliente[q].id );
  270. fscanf(in,"%s\n", v_cliente[q].nome );
  271. fscanf(in,"%s\n", v_cliente[q].morada);
  272. fscanf(in,"%d\n", &v_cliente[q].cc);
  273. fscanf(in,"%d\n", &v_cliente[q].nif);
  274. fscanf(in,"%d\n\n", &v_cliente[q].telefone);
  275. }
  276.  
  277. fclose( in );
  278. return i;
  279. }
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286. void enviarFicheiroAutomovel(int j, automovel v_auto[])
  287. {
  288. int run_list;
  289. int q;
  290. FILE *out;
  291. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  292. out = fopen("Automovel.txt", "w");
  293. if( out == NULL )
  294. {
  295. printf("ERRO: não consigo abrir o ficheiro Automovel.txt\n");
  296. exit(1);
  297. }
  298.  
  299. fprintf(out, "%d\n", j);
  300. for(q=0; q<j;q++)
  301. {
  302. fprintf(out,"%s\n", v_auto[q].matricula );
  303. fprintf(out,"%s\n", v_auto[q].marca );
  304. fprintf(out,"%s\n", v_auto[q].modelo);
  305. fprintf(out,"%d\n", v_auto[q].cilindrada);
  306. fprintf(out,"%d\n", v_auto[q].combustivel);
  307. fprintf(out,"%c\n", v_auto[q].estado);
  308. fprintf(out,"%d\n", v_auto[q].dataPM.dia);
  309. fprintf(out,"%d\n", v_auto[q].dataPM.mes);
  310. fprintf(out,"%d\n", v_auto[q].dataPM.ano);
  311. fprintf(out,"%f\n", v_auto[q].preco);
  312. }
  313.  
  314. fclose( out );
  315. }
  316.  
  317.  
  318. int carregarDadosAutomovel(automovel v_auto[])
  319. {
  320. int k=0,q;
  321.  
  322. FILE *in;
  323. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  324. in = fopen("Automovel.txt", "r");
  325.  
  326. if( in == NULL )
  327. {
  328. printf("ERRO: não consigo abrir o ficheiro Automovel.txt\n");
  329. exit(1);
  330. }
  331. fscanf(in, "%d\n", &k);
  332.  
  333. for(q=0; q<k;q++)
  334. {
  335. fscanf(in,"%s\n", v_auto[q].matricula );
  336. fscanf(in,"%s\n", v_auto[q].marca );
  337. fscanf(in,"%s\n", v_auto[q].modelo);
  338. fscanf(in,"%d\n", &v_auto[q].cilindrada);
  339. fscanf(in,"%d\n", &v_auto[q].combustivel);
  340. fscanf(in,"%c\n", &v_auto[q].estado);
  341. fscanf(in,"%d\n", &v_auto[q].dataPM.dia);
  342. fscanf(in,"%d\n", &v_auto[q].dataPM.mes);
  343. fscanf(in,"%d\n", &v_auto[q].dataPM.ano);
  344. fscanf(in,"%f\n", &v_auto[q].preco);
  345. }
  346.  
  347. fclose( in );
  348. return k;
  349. }
  350.  
  351.  
  352.  
  353.  
  354.  
  355. void enviarFicheiroVenda(int n, venda v_venda[])
  356. {
  357. int run_list;
  358. int q;
  359. FILE *out;
  360. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  361. out = fopen("Venda.txt", "w");
  362. if( out == NULL )
  363. {
  364. printf("ERRO: não consigo abrir o ficheiro Venda.txt\n");
  365. exit(1);
  366. }
  367.  
  368. fprintf(out, "%d\n", n);
  369. for(q=0; q<n;q++)
  370. {
  371. fprintf(out,"%s\n", v_venda[q].auto_matricula);
  372. fprintf(out,"%d\n", v_venda[q].id_cliente);
  373. fprintf(out,"%d\n", v_venda[q].dataVenda.dia);
  374. fprintf(out,"%d\n", v_venda[q].dataVenda.mes);
  375. fprintf(out,"%d\n", v_venda[q].dataVenda.ano);
  376. fprintf(out,"%f\n", v_venda[q].v_preco);
  377. }
  378.  
  379. fclose( out );
  380. }
  381.  
  382.  
  383. int carregarDadosVenda(venda v_venda[])
  384. {
  385. int k=0,q;
  386.  
  387. FILE *in;
  388. /* abre o ficheiro resultados.txt para escrita e associa-o a out */
  389. in = fopen("Venda.txt", "r");
  390.  
  391. if( in == NULL )
  392. {
  393. printf("ERRO: não consigo abrir o ficheiro Venda.txt\n");
  394. exit(1);
  395. }
  396. fscanf(in, "%d\n", &k);
  397.  
  398. for(q=0; q<k;q++)
  399. {
  400. fscanf(in,"%s\n", v_venda[q].auto_matricula);
  401. fscanf(in,"%d\n", v_venda[q].id_cliente);
  402. fscanf(in,"%d\n", v_venda[q].dataVenda.dia);
  403. fscanf(in,"%d\n", v_venda[q].dataVenda.mes);
  404. fscanf(in,"%d\n", v_venda[q].dataVenda.ano);
  405. fscanf(in,"%f\n", v_venda[q].v_preco);
  406. }
  407.  
  408. fclose( in );
  409. return k;
  410. }
  411.  
  412.  
  413.  
  414. /*------------------------------------------- FUNÇOES! -------------------------------------------*/
  415.  
  416.  
  417. int F_automovel(int j, automovel v_auto[])
  418. {
  419. char op;
  420. do
  421. {
  422. system("cls");
  423. op=menuAuto();
  424. switch(op)
  425. {
  426. case 'I':
  427. j=inserir_auto(j, v_auto);
  428. break;
  429. case 'E':
  430. editarAuto(v_auto, j);
  431. break;
  432. case 'A':
  433. eliminarAuto(j, v_auto);
  434. break;
  435. case 'T':
  436. listar_Auto(j, v_auto);
  437. break;
  438. case 'P':
  439. pesquisarAuto(j, v_auto);
  440. break;
  441. case 'V':
  442. break;
  443. default:
  444. printf("Opcao invalida! Tente outra vez.");
  445. getch();
  446. break;
  447. }
  448. }while(op!='V');
  449. return j;
  450. }
  451.  
  452. int F_Cliente(int i,cliente v_cliente[])
  453. {
  454. char op;
  455. do
  456. {
  457. system("cls");
  458. op=menuCliente();
  459. switch(op)
  460. {
  461. case 'I':
  462. i=inserir_cliente(i,v_cliente);
  463. break;
  464. case 'E':
  465. editar_cliente(v_cliente);
  466. break;
  467. case 'L':
  468. listar_Cliente(i,v_cliente);
  469. break;
  470. case 'P':
  471. pesquisar_cliente(v_cliente, i);
  472. break;
  473. case 'V':
  474. break;
  475. default:
  476. F_Cliente( i,v_cliente);
  477. }
  478. }while(op!='V');
  479. return i;
  480. }
  481.  
  482. int F_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[])
  483. {
  484. char op;
  485. do
  486. {
  487. system("cls");
  488. op = menuVenda();
  489. switch(op)
  490. {
  491. case 'I':
  492. n = inserir_venda(n, j, v_venda, v_auto, v_cliente);
  493. break;
  494. case 'T':
  495. totalFaturado(n, v_venda);
  496. break;
  497. case 'M':
  498. vendasMes(n, v_venda);
  499. break;
  500. case 'A':
  501. vendaMaisAlta(n, v_venda);
  502. break;
  503. case 'B':
  504. vendaMaisBaixa(n, v_venda);
  505. break;
  506. case 'P':
  507. percCombustivel(n, j, v_venda, v_auto);
  508. break;
  509. case 'C':
  510. vendasCliente(n, v_venda);
  511. break;
  512. }
  513. }while(op != 'V');
  514.  
  515. return n;
  516. }
  517.  
  518. /*------------------------------------------- FUNÇOES! - INSERIR! -------------------------------------------*/
  519.  
  520.  
  521. int inserir_cliente(int i,cliente v_cliente[])
  522. {
  523. char op, str[15];
  524. int val,ndigitos;
  525. do
  526. {
  527. system("cls");
  528.  
  529. v_cliente[i].id= i+1;
  530. do
  531. {
  532. printf("\n Nome Do cliente:");
  533. scanf("%s", v_cliente[i].nome );
  534. val=validarCliente(i, v_cliente);
  535. }while(val!=1);
  536.  
  537. printf("\n Morada Do cliente:");
  538. scanf("%s", v_cliente[i].morada);
  539.  
  540.  
  541. do{
  542. printf("\n Cartão de Cidadão Do cliente:");
  543. scanf("%d", &v_cliente[i].cc);
  544. sprintf(str, "%d", v_cliente[i].cc);
  545. ndigitos=strlen(str);
  546. if (ndigitos<9 || ndigitos>9)
  547. {
  548. printf("\nCartão de Cidadão Inválido, insira novamente");
  549. }
  550. }while(ndigitos<9 || ndigitos>9);
  551.  
  552. printf("\n NIF Do cliente:");
  553. scanf("%d", &v_cliente[i].nif);
  554.  
  555. do{
  556. printf("NIF não válido, insira novamente.");
  557. scanf("%d", &v_cliente[i].nif);
  558. sprintf(str, "%d", v_cliente[i].nif);
  559. ndigitos=strlen(str);
  560. if (ndigitos<9 || ndigitos>9)
  561. {
  562. printf("\nNIF Inválido, insira novamente");
  563. }
  564. }while(ndigitos<9 || ndigitos>9);
  565.  
  566. do{
  567. printf("\n Telefone Do cliente:");
  568. scanf("%d", &v_cliente[i].telefone);
  569. sprintf(str, "%d", v_cliente[i].telefone);
  570. ndigitos=strlen(str);
  571. if (ndigitos<9 || ndigitos>9)
  572. {
  573. printf("\nTelefone Inválido, insira novamente");
  574. }
  575. }while(ndigitos<9 || ndigitos>9);
  576.  
  577.  
  578. printf("\nPrentede continuar ( Y / N ):");
  579. fflush(stdin);
  580. scanf("%c", &op);
  581. op=toupper(op);
  582. (i)++;
  583. }while(op!='N');
  584. return i;
  585. }
  586.  
  587.  
  588.  
  589. int inserir_auto(int j,automovel v_auto[]) // funcao para a insercao de automoveis
  590. {
  591. // declaracao de variaveis locais
  592. char estate, matri[9];
  593. int type;
  594. int day, mon, year;
  595. int val = 0;
  596. int val_matri = 0;
  597.  
  598. // inicio da insercao do automovel
  599.  
  600. fflush(stdin);
  601.  
  602. system("cls");
  603.  
  604. // pedido e validacao da matricula
  605.  
  606. do
  607. {
  608.  
  609.  
  610. printf("\n Matricula (AA-00-00): ");
  611. fflush(stdin);
  612. scanf("%s", matri);
  613.  
  614. val_matri = validarMatricula(matri);
  615.  
  616. // validacao do formato da matricula
  617.  
  618.  
  619. do
  620. {
  621.  
  622.  
  623. if(val_matri == 1)
  624. {
  625. strcpy(v_auto[j].matricula, matri);
  626. }else{
  627. printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
  628. printf("\n Introduza novamente a matricula: ");
  629. }
  630.  
  631. }while(val_matri != 1);
  632.  
  633.  
  634. // verificacao da existencia de automoveis introduzidos no ficheiro
  635. // senao existisse nenhum, o programa ficava preso no pedido da matricula
  636.  
  637. if(j == 0)
  638. {
  639. break;
  640. }else{
  641. val = validarAuto(j, v_auto, matri);
  642. }
  643.  
  644.  
  645. }while(val != 1);
  646.  
  647.  
  648. // insercao da marca
  649. printf("\n Marca: ");
  650. scanf("%s", v_auto[j].marca);
  651.  
  652. // insercao do modelo
  653. printf("\n Modelo: ");
  654. scanf("%s", v_auto[j].modelo);
  655.  
  656. // insercao da cilindrada
  657. printf("\n Cilindrada: ");
  658. scanf("%d", &v_auto[j].cilindrada);
  659.  
  660. // insercao e validacao do tipo de combustivel
  661. do
  662. {
  663.  
  664. printf("\n Tipo de Combustivel: ");
  665. printf("\n (1 - Gasolina)");
  666. printf("\n (2 - Gasoleo)");
  667. printf("\n (3 - GPL)");
  668. printf("\n (4 - Electricidade)");
  669. printf("\n -> Opcao: ");
  670. scanf("%d", &type);
  671.  
  672. if(type < 1 || type > 4)
  673. {
  674. printf("\n\n Tipo de combustivel invalido! Insira outra vez.\n\n");
  675. }
  676.  
  677. }while(type < 1 || type > 4);
  678.  
  679. v_auto[j].combustivel = type;
  680.  
  681. // insercao e validacao do estado do automovel
  682. do
  683. {
  684.  
  685. printf("\n Estado (V - Vendido/D - Disponivel): ");
  686. fflush(stdin);
  687. scanf("%c", &estate);
  688. estate = toupper(estate);
  689.  
  690. // mensagem de erro do estado
  691.  
  692. if(estate!='V' && estate!='D')
  693. {
  694. printf("\n Estado invalido. Tente outra vez.\n");
  695. }
  696.  
  697. }while(estate != 'V' && estate != 'D');
  698.  
  699. v_auto[j].estado = estate;
  700.  
  701. // insercao e validacao da data da primeira matricula do automovel
  702. printf("\n Data Primeira Matricula (DD-MM-YYYY): ");
  703.  
  704. do
  705. {
  706.  
  707. printf("\n \tDia: ");
  708. scanf("%d", &day);
  709.  
  710. if(day<1 || day>31)
  711. {
  712. printf("\n Dia invalido, insira outra vez.");
  713. }
  714.  
  715. }while(day<1 || day>31);
  716. v_auto[j].dataPM.dia=day;
  717.  
  718. do
  719. {
  720.  
  721. printf("\n \tMes: ");
  722. scanf("%d", &mon);
  723.  
  724. if(mon<1 || mon>12)
  725. {
  726. printf("\n Mes invalido, insira outra vez.");
  727. }
  728.  
  729. }while(mon<1 || mon>12);
  730. v_auto[j].dataPM.mes=mon;
  731.  
  732. do
  733. {
  734.  
  735. printf("\n \tAno: ");
  736. scanf("%d", &year);
  737.  
  738. if(year<1900 || year>2015)
  739. {
  740. printf("\n Ano invalido, insira outra vez.");
  741. }
  742.  
  743. }while(year<1900 || year>2015);
  744. v_auto[j].dataPM.ano=year;
  745.  
  746. // insercao do preco do automovel
  747. printf("\n Preco: ");
  748. scanf("%f", &v_auto[j].preco);
  749.  
  750. (j)++;
  751.  
  752. return j;
  753. }
  754.  
  755.  
  756.  
  757.  
  758. int inserir_venda(int n, int j, venda v_venda[], automovel v_auto[], cliente v_cliente[])
  759. {
  760.  
  761. char matri[10], str[15];
  762. int day, mon, year;
  763. int valMatri = 0, valCliente = 0;
  764. int val_matri = 0;
  765. int nif_cliente, ndigitos;
  766.  
  767.  
  768. system("cls");
  769.  
  770. v_venda[n].id_venda = n + 1;
  771.  
  772. printf("\n Introduza a data em que a venda foi efectuada: \n");
  773. do
  774. {
  775.  
  776. printf("\n \tDia: ");
  777. scanf("%d", &day);
  778.  
  779. if(day<1 || day>31)
  780. {
  781. printf("\n Dia invalido, insira outra vez.");
  782. }
  783.  
  784. }while(day<1 || day>31);
  785. v_venda[n].dataVenda.dia=day;
  786.  
  787. do
  788. {
  789.  
  790. printf("\n \tMes: ");
  791. scanf("%d", &mon);
  792.  
  793. if(mon<1 || mon>12)
  794. {
  795. printf("\n Mes invalido, insira outra vez.");
  796. }
  797.  
  798. }while(mon<1 || mon>12);
  799. v_venda[n].dataVenda.mes=mon;
  800.  
  801. do
  802. {
  803.  
  804. printf("\n \tAno: ");
  805. scanf("%d", &year);
  806.  
  807. if(year<1900 || year>2015)
  808. {
  809. printf("\n Ano invalido, insira outra vez.");
  810. }
  811.  
  812. }while(year<1900 || year>2015);
  813. v_venda[n].dataVenda.ano=year;
  814.  
  815.  
  816.  
  817. printf("\n Introduza a matricula(AA-00-00) do automovel que quer adicionar a venda: \n ");
  818. fflush(stdin);
  819. scanf("%s", matri);
  820.  
  821. val_matri = validarMatricula(matri);
  822. // validacao do formato da matricula
  823.  
  824.  
  825. do
  826. {
  827.  
  828.  
  829. if(val_matri == 1)
  830. {
  831.  
  832. strcpy(v_venda[n].auto_matricula, matri);
  833. break;
  834.  
  835. }else{
  836.  
  837. printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
  838. printf("\n Introduza novamente a matricula: ");
  839. scanf("%s", matri);
  840. val_matri = validarMatricula(matri);
  841. }
  842.  
  843. }while(val_matri != 1);
  844.  
  845.  
  846. int c;
  847.  
  848. for(c = 0; c < j; c++)
  849. {
  850. if(strcmp(v_auto[c].matricula, matri) == 0)
  851. {
  852. if(v_auto[c].estado == 'V')
  853. {
  854. printf("\n Este veiculo ja nao esta disponivel para venda! Tente outro veiculo.\n");
  855. printf("\n Introduza a matricula: ");
  856. scanf("%s", matri);
  857. val_matri = validarMatricula(matri);
  858. }else{
  859. printf("O veiculo com a matricula %s foi adicionado com sucesso", matri);
  860. v_auto[c].estado = 'V';
  861. break;
  862. }
  863. }else{
  864. printf("\n A matricula introduzida nao existe! Tente outra vez.\n");
  865. }
  866. }
  867.  
  868.  
  869. printf("\n NIF do cliente a adicionar a venda: ");
  870. scanf("%d", &nif_cliente);
  871.  
  872. do
  873. {
  874. printf("\n NIF invalido, insira novamente.");
  875. scanf("%d", &nif_cliente);
  876. sprintf(str, "%d", nif_cliente);
  877. ndigitos=strlen(str);
  878.  
  879. if (ndigitos<9 || ndigitos>9)
  880. {
  881. printf("\n NIF inválido, insira novamente");
  882. }
  883. }while(ndigitos<9 || ndigitos>9);
  884.  
  885. v_venda[n].id_cliente = nif_cliente;
  886.  
  887.  
  888. printf("\n Preco final: ");
  889. scanf("%f", &v_venda[n].v_preco);
  890.  
  891.  
  892. printf("\n\n Venda concluida com sucesso!\n\n");
  893. getch();
  894.  
  895. (n)++;
  896. return n;
  897. }
  898.  
  899.  
  900.  
  901. void totalFaturado(int n, venda v_venda[])
  902. {
  903. int i, j;
  904. float total_faturado = 0;
  905.  
  906.  
  907. system("cls");
  908.  
  909. printf("\n Numero total de vendas: %d", n);
  910.  
  911. for(j = 0; j < n; j++)
  912. {
  913. total_faturado = total_faturado + v_venda[j].v_preco;
  914. }
  915.  
  916. printf("\n Total faturado: %.2f", total_faturado);
  917. printf("\n\n Continuar . . . ");
  918. getch();
  919. }
  920.  
  921.  
  922. void vendasMes(int n, venda v_venda[])
  923. {
  924. int mes, i;
  925. float total = 0;
  926.  
  927. system("cls");
  928.  
  929. printf("Introduza o mes: ");
  930. scanf("%d", &mes);
  931.  
  932. for(i = 0; i < n; i++)
  933. {
  934. if(v_venda[i].dataVenda.mes == mes)
  935. {
  936. total = total + v_venda[i].v_preco;
  937. }
  938. }
  939.  
  940. if(total == 0)
  941. {
  942. printf("\n Nao foram efectuadas vendas no mes %d.", mes);
  943. }else{
  944. printf("\n O total facturado no mes %d foi: %.2f", mes, total);
  945. }
  946.  
  947. getch();
  948. }
  949.  
  950.  
  951. void vendaMaisAlta(int n, venda v_venda[])
  952. {
  953. int i, pos;
  954. float num;
  955.  
  956. system("cls");
  957.  
  958. for(i = 0; i < n; i++)
  959. {
  960. if(num < v_venda[i].v_preco)
  961. {
  962. num = v_venda[i].v_preco;
  963. }
  964. }
  965.  
  966. pos = validar3(n, v_venda, num);
  967.  
  968. if(pos != - 1)
  969. {
  970.  
  971. printf("\n ID venda: ", v_venda[pos].id_venda);
  972. printf("\n Data da venda: ");
  973. printf("\n -> Dia: ", v_venda[pos].dataVenda.dia);
  974. printf("\n -> Mes: ", v_venda[pos].dataVenda.mes);
  975. printf("\n -> Ano: ", v_venda[pos].dataVenda.ano);
  976. printf("\n Matricula do automovel: ", v_venda[pos].auto_matricula);
  977. printf("\n NIF do cliente: ", v_venda[pos].id_cliente);
  978. printf("\n Preco final: ", v_venda[pos].v_preco);
  979.  
  980. }else{
  981. printf("\n Nao existem vendas!");
  982. }
  983.  
  984. getch();
  985. }
  986.  
  987.  
  988. void vendaMaisBaixa(int n, venda v_venda[])
  989. {
  990. int i, pos;
  991. float num;
  992.  
  993. system("cls");
  994.  
  995. for(i = 0; i < n; i++)
  996. {
  997. if(num > v_venda[i].v_preco)
  998. {
  999. num = v_venda[i].v_preco;
  1000. }
  1001. }
  1002.  
  1003. pos = validar3(n, v_venda, num);
  1004.  
  1005. if(pos != - 1)
  1006. {
  1007.  
  1008. printf("\n ID venda: ", v_venda[pos].id_venda);
  1009. printf("\n Data da venda: ");
  1010. printf("\n -> Dia: ", v_venda[pos].dataVenda.dia);
  1011. printf("\n -> Mes: ", v_venda[pos].dataVenda.mes);
  1012. printf("\n -> Ano: ", v_venda[pos].dataVenda.ano);
  1013. printf("\n Matricula do automovel: ", v_venda[pos].auto_matricula);
  1014. printf("\n NIF do cliente: ", v_venda[pos].id_cliente);
  1015. printf("\n Preco final: ", v_venda[pos].v_preco);
  1016.  
  1017. }else{
  1018. printf("\n Nao existem vendas!");
  1019. }
  1020.  
  1021. getch();
  1022. }
  1023.  
  1024.  
  1025.  
  1026. void percCombustivel(int n, int j, venda v_venda[], automovel v_auto[])
  1027. {
  1028. int i, total;
  1029. float n1 = 0, n2 = 0, n3 = 0, n4 = 0;
  1030.  
  1031. system("cls");
  1032.  
  1033. for(i = 0; i < j; i++)
  1034. {
  1035.  
  1036. if(strcmp(v_auto[i].matricula, v_venda[i].auto_matricula) == 0)
  1037. {
  1038. if(v_auto[i].combustivel == 1)
  1039. {
  1040. n1 = n1 + 1;
  1041. }else if(v_auto[i].combustivel == 2)
  1042. {
  1043. n2 = n2 + 1;
  1044. }else if(v_auto[i].combustivel == 3)
  1045. {
  1046. n3 = n3 + 1;
  1047. }else if(v_auto[i].combustivel == 4)
  1048. {
  1049. n4 = n4 + 1;
  1050. }
  1051. }else{
  1052. printf("\n Nao existem vendas!");
  1053. break;
  1054. }
  1055. }
  1056.  
  1057. printf("\n Gasolina: %.2f \n", (n1 / n) * 100);
  1058. printf("\n Gasoleo: %.2f \n", (n2 / n) * 100);
  1059. printf("\n GPL: %.2f \n", (n3 / n) * 100);
  1060. printf("\n Electricidade: %.2f \n", (n4 / n) * 100);
  1061.  
  1062. getch();
  1063. }
  1064.  
  1065.  
  1066.  
  1067. void vendasCliente(int n, venda v_venda[])
  1068. {
  1069. int i, nif;
  1070.  
  1071. system("cls");
  1072.  
  1073. printf("Introduza o NIF do cliente: ");
  1074. scanf("%d", &nif);
  1075.  
  1076. for(i = 0; i < n; i++)
  1077. {
  1078. if(v_venda[i].id_cliente == nif)
  1079. {
  1080. printf("\n ID venda: ", v_venda[i].id_venda);
  1081. printf("\n Data da venda: ");
  1082. printf("\n -> Dia: ", v_venda[i].dataVenda.dia);
  1083. printf("\n -> Mes: ", v_venda[i].dataVenda.mes);
  1084. printf("\n -> Ano: ", v_venda[i].dataVenda.ano);
  1085. printf("\n Matricula do automovel: ", v_venda[i].auto_matricula);
  1086. printf("\n NIF do cliente: ", v_venda[i].id_cliente);
  1087. printf("\n Preco final: ", v_venda[i].v_preco);
  1088. break;
  1089. }else{
  1090. printf("\n NIF invalido ou cliente nao pertence a nenhuma venda.", nif);
  1091. break;
  1092. }
  1093. }
  1094.  
  1095. getch();
  1096.  
  1097. }
  1098.  
  1099.  
  1100. /*------------------------------------------- FUNÇOES! - VALIDAR! -------------------------------------------*/
  1101.  
  1102.  
  1103. int validarCliente(int i,cliente v_cliente[])
  1104. {
  1105. int j;
  1106. for(j=0;j<i;j++)
  1107. {
  1108. if(strcmp(v_cliente[i].nome,v_cliente[j].nome) == 0)
  1109. {
  1110. printf("\nNome do cliente ja se encontra no programa!\n\n Introduza um nome diferente\n ");
  1111. return 0;
  1112. }else{
  1113. return 1;
  1114. }
  1115. }
  1116. }
  1117.  
  1118.  
  1119. int validarAuto(int j, automovel v_auto[], char matri[9])
  1120. {
  1121. int a;
  1122.  
  1123. for(a = 0; a < j; a++)
  1124. {
  1125. if(strcmp(v_auto[a].matricula, matri) == 0)
  1126. {
  1127. printf("\n A matricula ja se encontra inserida! Introduza uma matricula diferente\n\n ");
  1128. return 0;
  1129. }else{
  1130. return 1;
  1131. }
  1132. }
  1133. }
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139. int validar(int id, cliente v_cliente[], int i)
  1140. {
  1141. int q, posicao = -1;
  1142. for(q=0; q<i; q++)
  1143. {
  1144. if(id==v_cliente[q].nif)
  1145. {
  1146. posicao=q;
  1147. q=i;
  1148. }
  1149. }
  1150. return posicao;
  1151. }
  1152.  
  1153.  
  1154.  
  1155. int validar2(char matri[9], automovel v_auto[], int j)
  1156. {
  1157. int a, posicao = - 1;
  1158.  
  1159. for(a = 0; a < j; a++)
  1160. {
  1161. if(strcmp(v_auto[a].matricula, matri) == 0)
  1162. {
  1163. posicao = a;
  1164. break;
  1165. }
  1166. }
  1167. return posicao;
  1168. }
  1169.  
  1170.  
  1171. int validar3(int n, venda v_venda[], float num)
  1172. {
  1173. int a, posicao = - 1;
  1174.  
  1175. for(a = 0; a < n; a++)
  1176. {
  1177. if(v_venda[a].v_preco == num)
  1178. {
  1179. posicao = a;
  1180. break;
  1181. }
  1182. }
  1183. return posicao;
  1184. }
  1185.  
  1186.  
  1187.  
  1188. int validarMatricula(char matri[9])
  1189. {
  1190. int i, count, ver;
  1191.  
  1192. if(matri[2] == '-')
  1193. {
  1194. if(matri[5] == '-')
  1195. {
  1196. for(i = 0; i < strlen(matri); i++)
  1197. {
  1198. if(isalpha(matri[i]))
  1199. {
  1200. count++;
  1201. if(isalpha(matri[i + 1]))
  1202. {
  1203. count++;
  1204. i++;
  1205. }else{
  1206. ver = 0;
  1207. }
  1208. }
  1209. }
  1210.  
  1211. if(count == 0 || count > 2)
  1212. {
  1213. ver = 1;
  1214. }
  1215. }else{
  1216. ver = 0;
  1217. }
  1218. }else{
  1219. ver = 0;
  1220. }
  1221.  
  1222. return ver;
  1223. }
  1224.  
  1225.  
  1226. /*------------------------------------------- FUNÇOES! - LISTAR! -------------------------------------------*/
  1227.  
  1228. void listar_Cliente(int i,cliente v_cliente[])
  1229. {
  1230. system("cls");
  1231. int kappa;
  1232. for (kappa=0; kappa<i; kappa++)
  1233. {
  1234. printf("\n ----------------- ID DE CLIENTE: %d -----------------",v_cliente[kappa].id);
  1235. printf("\n Nome Do cliente: %s",v_cliente[kappa].nome);
  1236. printf("\n Morada Do cliente: %s",v_cliente[kappa].morada);
  1237. printf("\n Cartão de Cidadão Do cliente: %d", v_cliente[kappa].cc);
  1238. printf("\n NIF Do cliente: %d",v_cliente[kappa].nif);
  1239. printf("\n Telefone Do cliente: %d\n\n",v_cliente[kappa].telefone);
  1240. }
  1241. printf("\n\n\n Continuar . . . ");
  1242. getch();
  1243. }
  1244.  
  1245.  
  1246.  
  1247. void listar_Auto(int j,automovel v_auto[])
  1248. {
  1249. system("cls");
  1250. int run_list;
  1251. for (run_list = 0; run_list < j; run_list++)
  1252. {
  1253. printf("\n ----------------- Matricula: %s -----------------\n", v_auto[run_list].matricula);
  1254. printf("\n Marca: %s",v_auto[run_list].marca);
  1255. printf("\n Modelo: %s",v_auto[run_list].modelo);
  1256. printf("\n Cilindrada: %d", v_auto[run_list].cilindrada);
  1257.  
  1258. if(v_auto[run_list].combustivel == 1){
  1259.  
  1260. printf("\n Combustivel: Gasolina\n");
  1261.  
  1262. }else if(v_auto[run_list].combustivel == 2){
  1263.  
  1264. printf("\n Combustivel: Gasoleo\n");
  1265.  
  1266. }else if(v_auto[run_list].combustivel == 3){
  1267.  
  1268. printf("\n Combustivel: GPL\n");
  1269.  
  1270. }else{
  1271.  
  1272. printf("\n Combustivel: Electricidade\n");
  1273.  
  1274. }
  1275.  
  1276. if(v_auto[run_list].estado == 'V')
  1277. {
  1278. printf("\n Estado: Vendido\n");
  1279. }else{
  1280. printf("\n Estado: Disponivel\n");
  1281. }
  1282.  
  1283. printf("\n Data Primeira Matricula: \n");
  1284. printf("\n -> Dia: %d\n", v_auto[run_list].dataPM.dia);
  1285. printf("\n -> Mes: %d\n", v_auto[run_list].dataPM.mes);
  1286. printf("\n -> Ano: %d\n", v_auto[run_list].dataPM.ano);
  1287. printf("\n Preco: %.2f\n\n\n\n",v_auto[run_list].preco);
  1288. }
  1289. printf("\n\n\n Continuar . . . ");
  1290. getch();
  1291. }
  1292.  
  1293. /*------------------------------------------- FUNÇOES! - EDITAR! -------------------------------------------*/
  1294.  
  1295. void editar_cliente(cliente v_cliente[])
  1296. {
  1297. system("cls");
  1298. int id;
  1299. char op;
  1300. do
  1301. {
  1302. printf("Introduza o id do cliente:");
  1303. scanf("%d", &id);
  1304. id=id-1;
  1305. printf("Prentede editar este cliente: \n\n");
  1306. printf("Nome: %s \nCartao de cidadao: %d\n\n ", v_cliente[id].nome, v_cliente[id].cc);
  1307. printf("(Y)es or (N)o: ");
  1308. fflush(stdin);
  1309. scanf("%c", &op);
  1310. op=toupper(op);
  1311. }while(op!='Y');
  1312. printf("\n Nome Do cliente:");
  1313. scanf("%s", v_cliente[id].nome );
  1314. printf("\n Morada Do cliente:");
  1315. scanf("%s", v_cliente[id].morada);
  1316. printf("\n Cartão de Cidadão Do cliente:");
  1317. scanf("%d", &v_cliente[id].cc);
  1318. printf("\n NIF Do cliente:");
  1319. scanf("%d", &v_cliente[id].nif);
  1320. printf("\n Telefone Do cliente:");
  1321. scanf("%d", &v_cliente[id].telefone);
  1322. }
  1323.  
  1324.  
  1325.  
  1326.  
  1327. void editarAuto(automovel v_auto[], int j)
  1328. {
  1329. system("cls");
  1330.  
  1331. char op, matri[9], estate;
  1332. int pos = - 1, val = 0, u = - 1;
  1333. int day, mon, year;
  1334. int type = 0, val_matri = 0;
  1335.  
  1336. do
  1337. {
  1338. do
  1339. {
  1340.  
  1341. printf("Introduza a matricula:");
  1342. scanf("%s", matri);
  1343.  
  1344. pos = validar2(matri, v_auto, j);
  1345.  
  1346. if(pos == u)
  1347. {
  1348.  
  1349. printf("\n\n O veiculo com a matricula %s nao existe.\n\n", matri);
  1350.  
  1351. }else{
  1352.  
  1353. u = u + 1;
  1354.  
  1355. }
  1356.  
  1357. }while(u == - 1);
  1358.  
  1359. printf("Prentede editar o veiculo com a matricula: %s\n\n", v_auto[pos].matricula);
  1360.  
  1361. printf("(S)im ou (N)ao: ");
  1362. fflush(stdin);
  1363. scanf("%c", &op);
  1364. op=toupper(op);
  1365. }while(op!='S');
  1366.  
  1367.  
  1368. do
  1369. {
  1370.  
  1371.  
  1372. printf("Introduza os novos dados: ");
  1373.  
  1374. printf("\n Matricula: ");
  1375. scanf("%s", matri );
  1376.  
  1377. val = validarAuto(j, v_auto, matri);
  1378. do
  1379. {
  1380.  
  1381.  
  1382. if(val_matri == 1)
  1383. {
  1384. strcpy(v_auto[j].matricula, matri);
  1385. }else{
  1386. printf("\n A matricula introduzida nao corresponde ao formato pedido.\n");
  1387. printf("\n Introduza novamente a matricula: ");
  1388. }
  1389.  
  1390. }while(val_matri != 1);
  1391.  
  1392. }while(val != 1);
  1393.  
  1394. strcpy(v_auto[pos].matricula, matri);
  1395.  
  1396. printf("\n Marca: ");
  1397. scanf("%s", v_auto[pos].marca);
  1398.  
  1399. printf("\n Modelo: ");
  1400. scanf("%s", v_auto[pos].modelo);
  1401.  
  1402. printf("\n Cilindrada: ");
  1403. scanf("%d", &v_auto[pos].cilindrada);
  1404.  
  1405. // insercao do tipo de combustivel
  1406. do
  1407. {
  1408.  
  1409. printf("\n Tipo de Combustivel: ");
  1410. printf("\n (1 - Gasolina)");
  1411. printf("\n (2 - Gasoleo)");
  1412. printf("\n (3 - GPL)");
  1413. printf("\n (4 - Electricidade)");
  1414. printf("\n -> Opcao: ");
  1415. scanf("%d", &type);
  1416.  
  1417. if(type < 1 || type > 4)
  1418. {
  1419. printf("\n\n Tipo de combustivel invalido! Insira outra vez.\n\n");
  1420. }
  1421.  
  1422. }while(type < 1 || type > 4);
  1423.  
  1424. v_auto[pos].combustivel = type;
  1425.  
  1426. // insercao e validacao do estado do automovel
  1427. do
  1428. {
  1429.  
  1430. printf("\n Estado (V - Vendido/D - Disponivel): ");
  1431. fflush(stdin);
  1432. scanf("%c", &estate);
  1433. estate = toupper(estate);
  1434.  
  1435. // mensagem de erro do estado
  1436.  
  1437. if(estate!='V' && estate!='D')
  1438. {
  1439. printf("\n Estado invalido. Tente outra vez.\n");
  1440. }
  1441.  
  1442. }while(estate != 'V' && estate != 'D');
  1443.  
  1444. v_auto[pos].estado = estate;
  1445.  
  1446. printf("\n Data Primeira Matricula (DD-MM-YYYY): ");
  1447.  
  1448. do
  1449. {
  1450.  
  1451. printf("\n \tDia: ");
  1452. scanf("%d", &day);
  1453.  
  1454. if(day<1 && day>31)
  1455. {
  1456. printf("\n Dia invalido, insira outra vez.");
  1457. }
  1458.  
  1459. }while(day<1 && day>31);
  1460. v_auto[pos].dataPM.dia=day;
  1461.  
  1462. do
  1463. {
  1464.  
  1465. printf("\n \tMes: ");
  1466. scanf("%d", &mon);
  1467.  
  1468. if(mon<1 && mon>12)
  1469. {
  1470. printf("\n Mes invalido, insira outra vez.");
  1471. }
  1472.  
  1473. }while(mon<1 && mon>12);
  1474. v_auto[pos].dataPM.mes=mon;
  1475.  
  1476. do
  1477. {
  1478.  
  1479. printf("\n \tAno: ");
  1480. scanf("%d", &year);
  1481.  
  1482. if(year<1900 && year>2015)
  1483. {
  1484. printf("\n Ano invalido, insira outra vez.");
  1485. }
  1486.  
  1487. }while(year<1900 && year>2015);
  1488. v_auto[pos].dataPM.ano=year;
  1489.  
  1490. printf("\n Preco: ");
  1491. scanf("%f", &v_auto[pos].preco);
  1492.  
  1493. printf("\n\n Automovel editado com sucesso!\n\n");
  1494. printf(" Continuar . . . ");
  1495. getch();
  1496. }
  1497.  
  1498.  
  1499.  
  1500.  
  1501. /*------------------------------------------- FUNÇOES! - PESQUISAR! -------------------------------------------*/
  1502.  
  1503.  
  1504. void pesquisar_cliente(cliente v_cliente[], int i)
  1505. {
  1506. system("cls");
  1507. int id,pos, u;
  1508. printf("Introduza o NIF do cliente:");
  1509. scanf("%d", &id);
  1510. pos=validar(id,v_cliente, i);
  1511. if(pos!=-1)
  1512. {
  1513. printf("\n ----------------- ID DE CLIENTE: %d -----------------",v_cliente[pos].id);
  1514. printf("\n Nome Do cliente: %s",v_cliente[pos].nome);
  1515. printf("\n Morada Do cliente: %s",v_cliente[pos].morada);
  1516. printf("\n Cartão de Cidadão Do cliente: %d", v_cliente[pos].cc);
  1517. printf("\n NIF Do cliente: %d",v_cliente[pos].nif);
  1518. printf("\n Telefone Do cliente: %d\n\n",v_cliente[pos].telefone);
  1519. }else{printf("Nao foi encontrada nenhum cliente");}
  1520. getch();
  1521. }
  1522.  
  1523.  
  1524. void pesquisarAuto(int j, automovel v_auto[])
  1525. {
  1526. system("cls");
  1527. int pos = - 1;
  1528. char matri[9];
  1529. printf("Introduza a matricula: ");
  1530. fflush(stdin);
  1531. scanf("%s", matri);
  1532. pos = validar2(matri, v_auto, j);
  1533. if(pos != - 1)
  1534. {
  1535. printf("\n ----------------- Matricula: %s -----------------\n", v_auto[pos].matricula);
  1536. printf("\n Marca: %s",v_auto[pos].marca);
  1537. printf("\n Modelo: %s",v_auto[pos].modelo);
  1538. printf("\n Cilindrada: %d", v_auto[pos].cilindrada);
  1539.  
  1540. if(v_auto[pos].combustivel == 1){
  1541.  
  1542. printf("\n Combustivel: Gasolina\n");
  1543.  
  1544. }else if(v_auto[pos].combustivel == 2){
  1545.  
  1546. printf("\n Combustivel: Gasoleo\n");
  1547.  
  1548. }else if(v_auto[pos].combustivel == 3){
  1549.  
  1550. printf("\n Combustivel: GPL\n");
  1551.  
  1552. }else{
  1553.  
  1554. printf("\n Combustivel: Electricidade\n");
  1555.  
  1556. }
  1557.  
  1558. if(v_auto[pos].estado == 'V')
  1559. {
  1560. printf("\n Estado: Vendido\n");
  1561. }else{
  1562. printf("\n Estado: Disponivel\n");
  1563. }
  1564.  
  1565. printf("\n Data Primeira Matricula: \n");
  1566. printf("\n Dia: %d\n", v_auto[pos].dataPM.dia);
  1567. printf("\n Mes: %d\n", v_auto[pos].dataPM.mes);
  1568. printf("\n Ano: %d\n", v_auto[pos].dataPM.ano);
  1569.  
  1570. printf("\n Preco: %.2f\n", v_auto[pos].preco);
  1571. }else{
  1572. printf("Nao foi encontrado nenhum automovel com a matricula indicada.");
  1573. }
  1574. getch();
  1575. }
  1576.  
  1577.  
  1578.  
  1579.  
  1580. /*------------------------------------------- FUNÇOES! - ELIMINAR! -------------------------------------------*/
  1581.  
  1582.  
  1583. int eliminarAuto(int j, automovel v_auto[])
  1584. {
  1585. char op, matri[9];
  1586. int pos = - 1, val = 0, u = - 1;
  1587.  
  1588. do
  1589. {
  1590. do
  1591. {
  1592.  
  1593. system("cls");
  1594.  
  1595. printf("\n Introduza a matricula: ");
  1596. scanf("%s", matri);
  1597.  
  1598. pos = validar2(matri, v_auto, j);
  1599.  
  1600. if(pos == u)
  1601. {
  1602.  
  1603. printf("\n\n Veiculo com a matricula %s nao existe.\n\n", matri);
  1604.  
  1605. }else{
  1606.  
  1607. u = u + 1;
  1608.  
  1609. }
  1610.  
  1611. }while(u == - 1);
  1612.  
  1613. printf("\n Prentede eliminar o veiculo com a matricula: %s\n", matri);
  1614.  
  1615. printf("\n (S)im ou (N)ao: ");
  1616. fflush(stdin);
  1617. scanf("%c", &op);
  1618. op=toupper(op);
  1619.  
  1620. }while(op!='S');
  1621.  
  1622. int i = 0;
  1623.  
  1624. for(i = pos; i < j; i++)
  1625. {
  1626. v_auto[i] = v_auto[i + 1];
  1627. }
  1628.  
  1629. j--;
  1630. return j;
  1631. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement