Advertisement
argentinapb

Untitled

Jun 24th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct data{
  5. int dia;
  6. int mes;
  7. int ano;
  8. };
  9.  
  10. typedef struct data data;
  11.  
  12. struct endereco{
  13. char rua[100];
  14. char cidade[30];
  15. char estado[30];
  16. int numero;
  17. };
  18.  
  19. typedef struct endereco endereco;
  20.  
  21. struct cliente{
  22. int cpf;
  23. int telefone;
  24. char nome[100];
  25. struct endereco;
  26. struct data;
  27. struct cliente *ant;
  28. struct cliente *prox;
  29. };
  30.  
  31. typedef struct cliente cliente;
  32.  
  33. struct produto{
  34. int codigo;
  35. char descricao;
  36. int quant_est;
  37. double preco_und;
  38. struct produto *ante;
  39. struct produto *proxi;
  40. };
  41.  
  42. typedef struct produto produto;
  43.  
  44. struct venda {
  45. int qtd_compra;
  46. int c;
  47. int co;
  48. struct venda *antes;
  49. struct venda *proxim;
  50. };
  51.  
  52. typedef struct venda venda;
  53.  
  54. cliente *inicializar_cliente(int x){
  55. cliente *novo =(cliente*) malloc(sizeof(cliente));
  56. novo->cpf = x;
  57.  
  58. printf("digite o nome do cliente: ");
  59. gets(novo->nome);
  60.  
  61. printf("digite o telefone do cliente: ");
  62. scanf("%d", &novo->telefone);
  63.  
  64. printf("digite a data de aniversario do cliente dd/mm/aaaa: ");
  65. scanf("%d/%d/%d", &novo->data->dia, &novo->data->mes, &novo->data->ano);
  66.  
  67. printf("digitar o estado do cliente: ");
  68. gets(novo->endereco->estado);
  69.  
  70. printf("digitar a cidade do cliente: ");
  71. gets(novo->endereco->cidade);
  72.  
  73. printf("digitar a rua do cliente: ");
  74. gets(novo->endereco->rua);
  75.  
  76. printf("digitar o numero do cliente: ");
  77. gets(novo->endereco->numero);
  78.  
  79.  
  80. novo->prox = NULL;
  81. novo->ant = NULL;
  82. return novo;
  83. }
  84.  
  85. produto *inicializar_produto(int x){
  86. produto *novo =(produto*) malloc(sizeof(produto));
  87. novo->codigo = x;
  88.  
  89. printf("digite a descricao do produto: ");
  90. gets(novo->descricao);
  91.  
  92. printf("digite a quantidade de estoque: ");
  93. scanf("%d", &novo->quant_est);
  94.  
  95. printf("digite o preco da unidade: ");
  96. scanf("%lf", novo->preco_und);
  97.  
  98. novo->proxi = NULL;
  99. novo->ante = NULL;
  100. return novo;
  101. }
  102.  
  103. void inclusao_cliente(cliente *lista, int cpf){
  104. int z = 0;
  105. if(lista->prox == NULL){
  106. cliente *novo = inicializar(cpf);
  107. lista->prox = novo;
  108. novo->ant = lista;
  109. }
  110. else {
  111. cliente *aux = lista;
  112.  
  113. while(aux->prox != NULL){
  114. if(aux->cpf == cpf){
  115. z = 1;
  116. }
  117. aux = aux->prox;
  118.  
  119. }
  120. if(z == 0){
  121. cliente *novo = inicializar_cliente(cpf);
  122. aux->prox = novo;
  123. novo->ant = aux;
  124. }
  125. }
  126. return;
  127.  
  128. }
  129.  
  130.  
  131.  
  132. void alteracao_cliente(cliente *lista, int cpf){
  133. int z = 0;
  134. cliente *aux= lista;
  135. while(aux->prox != NULL){
  136. if(aux->cpf == cpf){
  137. inicializar_cliente(cpf);
  138. z = 1;
  139. }
  140. aux = aux->prox;
  141.  
  142. }
  143. if(z == 0)
  144. printf("cliente nao encontrado\n");
  145.  
  146. return;
  147. }
  148.  
  149. void consulta_cliente(cliente *lista, int cpf){
  150. int z = 0;
  151. cliente *aux= lista;
  152. while(aux->prox != NULL){
  153. if(aux->cpf == cpf){
  154. printf("cpf: %d\n", aux->cpf);
  155. printf("nome: %s\n", aux->nome);
  156. printf("telefone: %d\n", aux->telefone);
  157. printf("estado: %s\n", aux->endereco->estado);
  158. printf("cidade: %s\n", aux->endereco->cidade);
  159. printf("rua: %s\n", aux->endereco->rua);
  160. printf("numero: %d\n", aux->endereco->numero);
  161. z = 1;
  162. }
  163. aux = aux->prox;
  164.  
  165. }
  166. if(z == 0)
  167. printf("cliente nao encontrado\n");
  168. return;
  169. }
  170.  
  171.  
  172. void deletar_cliente(cliente *lista, venda *lista1, int cpf){
  173. int x = 0;
  174. venda *aux = lista1;
  175. while(aux->proxim != NULL){
  176. if(aux->c == cpf){
  177. x = 1;
  178. }
  179. aux = aux->proxim;
  180. }
  181. if(x == 0){
  182. cliente *aux1 = lista;
  183. cliente *aux2 = lista->prox;
  184. while(aux2 != NULL){
  185. if(aux2->cpf == cpf){
  186. aux2 = aux2->prox;
  187. aux1->prox = aux2;
  188. aux2->ant = aux1;
  189. }
  190. aux1 = aux1->prox;
  191. aux2 = aux2->prox;
  192. }
  193. }
  194. else{
  195. printf("cliente cadastrado em venda\n");
  196. }
  197.  
  198. return;
  199. }
  200.  
  201. void inclusao_produto(produto *lista, int codigo){
  202. int z = 0;
  203. if(lista->proxi == NULL){
  204. produto *novo = inicializar_produto(codigo);
  205. lista->proxi = novo;
  206. novo->ante = lista;
  207. }
  208. else {
  209. produto *aux = lista;
  210.  
  211. while(aux->proxi != NULL){
  212. if(aux->codigo == codigo){
  213. z = 1;
  214. }
  215. aux = aux->prox;
  216. }
  217. if(z == 0){
  218. produto *novo = inicializar_produto(codigo);
  219. aux->proxi = novo;
  220. novo->ante = aux;
  221. }
  222. }
  223. return;
  224. }
  225.  
  226. void alteracao_produto(produto *lista, int codigo){
  227. int z = 0;
  228. produto *aux= lista;
  229. while(aux->proxi != NULL){
  230. if(aux->codigo == codigo){
  231. inicializar_produto(codigo);
  232. z = 1;
  233. }
  234. aux = aux->proxi;
  235.  
  236. }
  237. if(z == 0)
  238. printf("cliente nao encontrado\n");
  239.  
  240. return;
  241. }
  242.  
  243. void consulta_produto(produto *lista, int codigo){
  244. int z = 0;
  245. produto *aux= lista;
  246. while(aux->proxi != NULL){
  247. if(aux->codigo == codigo){
  248. printf("codigo: %d\n", aux->codigo);
  249. printf("descricao: %s\n", aux->descricao);
  250. printf("quantidade em estoque: %d\n", aux->quant_est);
  251. printf("preco unitario: %lf\n", aux->preco_und);
  252.  
  253. z = 1;
  254. }
  255. aux = aux->proxi;
  256.  
  257. }
  258. if(z == 0)
  259. printf("cliente nao encontrado\n");
  260. return;
  261. }
  262.  
  263. void deletar_produto(produto *lista, int codigo){
  264. int x = 0;
  265. venda *aux = lista1;
  266. while(aux->proxim != NULL){
  267. if(aux->co == codigo){
  268. x = 1;
  269. }
  270. aux = aux->proxim;
  271. }
  272. if(x == 0){
  273. produto *aux1 = lista;
  274. produto *aux2 = lista->proxi;
  275. while(aux2 != NULL){
  276. if(aux2->codigo == codigo){
  277. aux2 = aux2->proxi;
  278. aux1->proxi = aux2;
  279. aux2->ante = aux1;
  280. }
  281. aux1 = aux1->proxi;
  282. aux2 = aux2->proxi;
  283. }
  284. }
  285. else{
  286. printf("produto cadastrado em venda\n");
  287. }
  288.  
  289. return;
  290. }
  291.  
  292. void inclusao_venda(venda *lista, cliente *lista1, produto *lista2, int codigo, int cpf, int qtd){
  293. produto *aux = lista2;
  294. cliente *aux1 = lista1;
  295. int z = 0, y = 0, x = 0;
  296.  
  297. while(aux->proxi != NULL){
  298. if(aux->codigo == codigo){
  299. z = 1;
  300. if(aux->quant_est >= qtd){
  301. x = 1;
  302. }
  303. }
  304. aux = aux->prox;
  305. }
  306.  
  307. while(aux1->prox !=NULL){
  308. if(aux1->cpf == cpf){
  309. y = 1;
  310. }
  311. aux1 = aux1->prox;
  312. }
  313. if(x == 1 && y == 1 && z == 1){
  314. if(lista->proxim == NULL){
  315. venda* novo = (venda*) malloc(sizeof(venda));
  316. venda->proxim = NULL;
  317. venda->antes = NULL;
  318. venda->qtd_compra = qtd;
  319. venda->c = cpf;
  320. venda->co = codigo;
  321. lista->proxim = novo;
  322. novo->antes = lista;
  323. }
  324. else{
  325.  
  326. venda *aux2 = lista;
  327.  
  328. while(aux2->proxim, != NULL){
  329. aux2 = aux2->proxim;
  330. }
  331. venda* novo = (venda*) malloc(sizeof(venda));
  332. venda->proxim = NULL;
  333. venda->antes = NULL;
  334. venda->qtd_compra = qtd;
  335. venda->c = cpf;
  336. venda->co = codigo;
  337. aux2->proxim = novo;
  338. novo->antes = aux;
  339. }
  340. }
  341. if(x == 1 && y == 0){
  342. printf("produto nao encontrado\n");
  343. }
  344. else if (x == 1 && y == 1 && z == 0 ){
  345. printf("quantidade de estoque menor\n");
  346. }
  347. else
  348. printf("cliente nao encontrado\n");
  349. return;
  350. }
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357. void alteracao_venda(venda *lista, int codigo, int cpf){
  358.  
  359. venda *aux = lista;
  360. while(aux->proxim != NULL){
  361. if(aux->c == cpf && aux->co == codigo){
  362. printf("digite o novo cpf: ");
  363. scanf("%d", &aux->c);
  364. printf("digite o novo codigo: ");
  365. scanf("%d", &aux->co);
  366. printf("digite a nova quantidade: ");
  367. scanf("%d", &aux->qtd_compra);
  368. }
  369. aux = aux->proxim;
  370. }
  371.  
  372. return;
  373. }
  374.  
  375. void consulta_venda(venda *lista, int codigo, int cpf){
  376. venda *aux = lista;
  377. while(aux->proxim != NULL){
  378. if(aux->c == cpf && aux->co == codigo){
  379. printf("o cpf eh: %d\n", aux->c);
  380. printf("o codigo eh: %d\n", aux->co);
  381. printf("a quantidade eh: %d\n", aux->qtd_compra);
  382.  
  383. }
  384. aux = aux->proxim;
  385. }
  386. return;
  387. }
  388.  
  389. void deletar_venda(venda *lista, int codigo, int cpf){
  390. int x = 0;
  391. venda *aux1 = lista;
  392. venda *aux2 = lista->proxim;
  393. while(aux2 != NULL){
  394. if(aux2->co == codigo && aux2->c == cpf){
  395. aux2 = aux2->proxim;
  396. aux1->proxim = aux2;
  397. aux2->antes = aux1;
  398. x = 1;
  399. }
  400. aux1 = aux1->proxim;
  401. aux2 = aux2->proxim;
  402. }
  403. if(x == 0)
  404. printf("venda nao encontrada:\n");
  405. return;
  406.  
  407. }
  408.  
  409. int main (){
  410. int x, y, cp, cod, qtd;
  411. cliente lista;
  412. lista.prox = NULL;
  413. lista.ant = NULL;
  414. produto lista1;
  415. lista1.ante = NULL;
  416. lista1.proxi = NULL;
  417. venda lista2;
  418. lista2.antes = NULL;
  419. lista2.proxim = NULL;
  420. do{
  421. printf("1.Cliente\n2.Produto\n3.Vendas");
  422. scanf("%d",&x);
  423.  
  424. switch(x){
  425. case 1:
  426.  
  427. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  428. scanf("%d", &y);
  429. switch(y){
  430. case 1:
  431. printf("digite o cpf do cliente: ");
  432. scanf("%d", &cp);
  433. inclusao_cliente(&lista, cp);
  434. break;
  435. case 2:
  436. printf("digite o cpf do cliente: ");
  437. scanf("%d", &cp);
  438. alteracao_cliente(&lista, cp);
  439. break;
  440. case 3:
  441. printf("digite o cpf do cliente: ");
  442. scanf("%d", &cp);
  443. consulta_cliente(&lista, cp);
  444. break;
  445. case 4:
  446. printf("digite o cpf do cliente: ");
  447. scanf("%d", &cp);
  448. deletar_cliente(&lista, &lista2, cp);
  449. break;
  450. default:
  451. printf("valor invalido, tente novamente\n");
  452.  
  453.  
  454. }
  455. case 2:
  456.  
  457. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  458. scanf("%d", &y);
  459. switch(y){
  460. case 1:
  461. printf("digite o codigo do produto: ");
  462. scanf("%d", &cod);
  463. inclusao_cliente(&lista1, cod);
  464. break;
  465. case 2:
  466. printf("digite o codigo do produto: ");
  467. scanf("%d", &cod);
  468. alteracao_produto(&lista1, cod);
  469. break;
  470. case 3:
  471. printf("digite o codigo do produto: ");
  472. scanf("%d", &cod);
  473. consulta_produto(&lista1, cod);
  474. break;
  475. case 4:
  476. printf("digite o codigo do produto: ");
  477. scanf("%d", &cod);
  478. deletar_produto(&lista1, cod);
  479. break;
  480. default:
  481. printf("valor invalido, tente novamente\n");
  482.  
  483. case 3:
  484.  
  485. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  486. scanf("%d", &y);
  487. switch(y){
  488. case 1:
  489. printf("digite o codigo do produto e o cpf do cliente e a quantidade a ser vendida: ");
  490. scanf("%d %d %d", &cod, &cp, &qtd);
  491. inclusao_venda(&lista2, &lista, &lista1, cod, cp, qtd);
  492. break;
  493. case 2:
  494. printf("digite o codigo do produto e o cpf do cliente: ");
  495. scanf("%d %d", &cod, &cp);
  496. alteracao_venda(&lista2, cod, cp);
  497. break;
  498. case 3:
  499. printf("digite o codigo do produto e o cpf do cliente: ");
  500. scanf("%d", &cod, &cp);
  501. consulta_venda(&lista2, cod, cp);
  502. break;
  503. case 4:
  504. printf("digite o codigo do produto e o cpf do cliente: ");
  505. scanf("%d %d", &cod, &cp);
  506. deletar_produto(&lista2, cod, cp);
  507. break;
  508. default:
  509. printf("valor invalido, tente novamente\n");
  510.  
  511. }
  512.  
  513.  
  514.  
  515.  
  516. }
  517. }
  518. }while (x!= 0);
  519. return 0;
  520. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement