Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5. #define MAXNOME 60
  6.  
  7. //definição da estrutura aluno
  8. typedef struct aluno
  9. {
  10.  
  11. char codigo[5];
  12. char nome[MAXNOME];
  13. char cpf[11];
  14. char periodo[6];
  15.  
  16. } aluno;
  17.  
  18. //definição da estrutura disciplina
  19. typedef struct disciplina
  20. {
  21.  
  22. char codigo[4];
  23. char nome[MAXNOME];
  24. int quantiadeCreditos;
  25. char periodo[6];
  26.  
  27. } disciplina;
  28.  
  29. int verificaCPF(char *cpf)
  30. {
  31.  
  32. int j, k, t, digito1 = 0, digito2 = 0;
  33. char numIguais[11], i;
  34.  
  35. if(strlen(cpf) != 11)
  36. return 0;
  37.  
  38. //cpf com todos os digitos iguais é falso
  39. for(i = '0'; i <= '9'; ++i)
  40. {
  41.  
  42. for(j = 0; j < 11; ++j)
  43. {
  44. numIguais[j] = i;
  45. }
  46.  
  47. if(strcmp(cpf, numIguais) == 0)
  48. {
  49. return 0;
  50. }
  51.  
  52. }
  53.  
  54. for(k = 0, t = 10; k < strlen(cpf) - 2; k++, t--)
  55. {
  56. digito1 += (cpf[k] - 48) * t;
  57. }
  58.  
  59. digito1 %= 11;
  60.  
  61. if(digito1 < 2)
  62. {
  63. digito1 = 0;
  64. }
  65.  
  66. else
  67. {
  68. digito1 = 11 - digito1;
  69. }
  70.  
  71. if((cpf[9] - 48) != digito1)
  72. {
  73. return 0;
  74. }
  75.  
  76. else
  77. {
  78.  
  79. for(k = 0, t = 11; k < strlen(cpf) - 1; k++, t--)
  80. {
  81. digito2 += (cpf[k] - 48) * t;
  82. }
  83.  
  84. digito2 %= 11;
  85.  
  86. if(digito2 < 2)
  87. {
  88. digito2 = 0;
  89. }
  90.  
  91. else
  92. {
  93. digito2 = 11 - digito2;
  94. }
  95.  
  96. if((cpf[10] - 48) != digito2)
  97. {
  98. return 0;
  99. }
  100.  
  101. }
  102.  
  103. return 1;
  104. }
  105.  
  106. int isNumeric(char *c)
  107. {
  108.  
  109. for(int i = 0; i < strlen(c); i++)
  110. {
  111.  
  112. if(c[i] < '0' || c[i] > '9')
  113. {
  114. return 0;
  115. }
  116. }
  117.  
  118. return 1;
  119. }
  120.  
  121. void adicionaAluno(aluno *baseAlunos, int *numeroAlunos)
  122. {
  123.  
  124. aluno novoAluno;
  125.  
  126. printf("Digite o nome do aluno: ");
  127. scanf(" %[^\n]", novoAluno.nome);
  128.  
  129. while(1){
  130.  
  131. printf("\nDigite o código do aluno: ");
  132. scanf("%s", novoAluno.codigo);
  133. if(strlen(novoAluno.codigo) != 5)
  134. {
  135. printf("Código inválido\n");
  136. }
  137. else
  138. {
  139. break;
  140. }
  141. }
  142.  
  143. while(1){
  144.  
  145. printf("\nDigite o CPF do aluno: ");
  146. scanf("%s", novoAluno.cpf);
  147. if(verificaCPF(novoAluno.cpf) == 0)
  148. {
  149. printf("CPF inválido\n");
  150. }
  151. else
  152. {
  153. break;
  154. }
  155. }
  156.  
  157. while(1){
  158.  
  159. printf("\nDigite o período do aluno: ");
  160. scanf("%s", novoAluno.periodo);
  161. if(strlen(novoAluno.periodo) != 6)
  162. {
  163. printf("Período precisa ser da forma XXXX.Y\n");
  164. }
  165. else
  166. {
  167. break;
  168. }
  169. }
  170. *numeroAlunos += 1;
  171.  
  172. aluno *novosAlunos = (aluno *)realloc(baseAlunos, *numeroAlunos * sizeof(aluno));
  173.  
  174. if(novosAlunos != NULL)
  175. {
  176. baseAlunos = novosAlunos;
  177. baseAlunos[*numeroAlunos - 1] = novoAluno;
  178. printf("\nNovo aluno adicionado com sucesso!\n\n");
  179. }
  180.  
  181. else
  182. {
  183. printf("\nErro ao adicionar aluno na base de dados\n\n");
  184. }
  185. }
  186.  
  187. void adicionaDisciplina(disciplina *baseDisciplina, int *numeroDisciplinas)
  188. {
  189.  
  190. disciplina novaDisciplina;
  191. printf("Digite o nome da disciplina: ");
  192. scanf(" %[^\n]", novaDisciplina.nome);
  193.  
  194. while(1){
  195.  
  196. printf("\nDigite o código da disciplina: ");
  197. scanf("%s", novaDisciplina.codigo);
  198. if(strlen(novaDisciplina.codigo) != 4)
  199. {
  200. printf("Código inválido\n");
  201. }
  202. else
  203. {
  204. break;
  205. }
  206. }
  207.  
  208. printf("\nDigite a quantidade de créditos da disciplina: ");
  209. scanf("%d", &novaDisciplina.quantiadeCreditos);
  210.  
  211. while(1){
  212.  
  213. printf("\nDigite o período da disciplina: ");
  214. scanf("%s", novaDisciplina.periodo);
  215. if(strlen(novaDisciplina.periodo) != 6)
  216. {
  217. printf("Período precisa ser da forma XXXX.Y\n");
  218. }
  219. else
  220. {
  221. break;
  222. }
  223. }
  224.  
  225. *numeroDisciplinas += 1;
  226.  
  227. disciplina *novasDisciplinas = (disciplina *)realloc(baseDisciplina, *numeroDisciplinas * sizeof(disciplina));
  228.  
  229. if(novasDisciplinas != NULL)
  230. {
  231. baseDisciplina = novasDisciplinas;
  232. baseDisciplina[*numeroDisciplinas - 1] = novaDisciplina;
  233. printf("\nNova disciplina adicionada com sucesso!\n\n");
  234. }
  235.  
  236. else
  237. {
  238. printf("\nErro ao adicionar disciplina na base de dados\n\n");
  239. }
  240. }
  241.  
  242. void printAluno (aluno *a){
  243.  
  244. printf("%s\n%s\n%s\n", a->nome, a->cpf, a->codigo);
  245. }
  246.  
  247. void buscarAluno(aluno *baseAlunos, int numeroAlunos)
  248. {
  249.  
  250. aluno *p = baseAlunos;
  251. int i, opcao;
  252. char cpf[11], nome[60], codigo[5];
  253. printf ("\t\t SELECIONE COMO DESEJA FAZER A BUSCA \n");
  254. printf ("\t\t\t================================\n");
  255. printf ("\t\t\t|\t |\n");
  256. printf("\t\t\t| 1 - CPF |\n");
  257. printf("\t\t\t| 2 - Código |\n");
  258. printf("\t\t\t| 3 - Nome |\n");
  259. printf ("\t\t\t| |\n");
  260. printf ("\t\t\t================================\n");
  261. printf ("\n\n");
  262. printf("\t\t\tPor favor, selecione uma opção: ");
  263. scanf("%d", &opcao);
  264.  
  265. if(opcao == 1){
  266.  
  267. printf ("Digite o CPF do aluno: ");
  268. scanf("%s", cpf);
  269. for (i=0; i < numeroAlunos; i++)
  270. {
  271. printf("%s", baseAlunos[i].cpf);
  272. if(strcmp(baseAlunos[i].cpf, cpf) == 0)
  273. {
  274. p = &baseAlunos[i];
  275. break;
  276. }
  277. }
  278. if(p != NULL)
  279. {
  280. printAluno(p);
  281. }
  282.  
  283. }
  284.  
  285. if(opcao == 2){
  286.  
  287. printf ("Digite o código do aluno: ");
  288. scanf("%s", codigo);
  289. for (i=0; i < numeroAlunos; i++)
  290. {
  291. if(strcmp(baseAlunos[i].codigo, codigo) == 0)
  292. {
  293. p = &baseAlunos[i];
  294. break;
  295. }
  296. }
  297. if(p != NULL)
  298. {
  299. printAluno(p);
  300. }
  301.  
  302. }
  303.  
  304. if(opcao == 3){
  305.  
  306. printf ("Digite o nome do aluno: ");
  307. scanf("%s", nome);
  308. for (i=0; i < numeroAlunos; i++)
  309. {
  310. if(strcmp(baseAlunos[i].nome, nome) == 0)
  311. {
  312. p = &baseAlunos[i];
  313. break;
  314. }
  315. }
  316. if(p != NULL)
  317. {
  318. printAluno(p);
  319. }
  320. }
  321. return;
  322. }
  323.  
  324. int main()
  325. {
  326.  
  327. setlocale(LC_ALL, "Portuguese");
  328.  
  329. int opcaoMenu = 1, opcaoObjeto = 1, numeroAlunos = 0, numeroDisciplinas = 0;
  330.  
  331. aluno *baseAlunos = NULL;
  332. disciplina *baseDisciplina = NULL;
  333.  
  334. printf("\n\n");
  335.  
  336. do
  337. {
  338. printf ("\t\t SISTEMA DE CONTROLE DE DISCIPLINAS E ALUNOS\n");
  339. printf ("\t\t\t================================\n");
  340. printf ("\t\t\t|\t |\n");
  341. printf("\t\t\t| 1 - Consultar |\n");
  342. printf("\t\t\t| 2 - Adicionar |\n");
  343. printf("\t\t\t| 3 - Remover |\n");
  344. printf("\t\t\t| 0 - Sair |\n");
  345. printf ("\t\t\t| |\n");
  346. printf ("\t\t\t================================\n");
  347. printf ("\n\n");
  348. printf("\t\t\tPor favor, selecione uma opção: ");
  349. scanf("%d", &opcaoMenu);
  350. printf ("\n\n");
  351. // se a opcao nao e invalida
  352. if ((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3))
  353. {
  354. printf ("\t\t SELECIONE UMA OPÇÃO PARA ADICIONAR OU VOLTAR\n");
  355. printf ("\t\t\t================================\n");
  356. printf ("\t\t\t|\t |\n");
  357. printf("\t\t\t| 1 - Aluno |\n");
  358. printf("\t\t\t| 2 - Disciplina |\n");
  359. printf("\t\t\t| 3 - Voltar |\n");
  360. printf ("\t\t\t| |\n");
  361. printf ("\t\t\t================================\n");
  362. printf ("\n\n");
  363. printf("\t\t\tPor favor, selecione uma opção: ");
  364. scanf("%d", &opcaoObjeto);
  365. printf("\n\n");
  366.  
  367. // se o objeto nao e invalido
  368. if((opcaoObjeto == 1) || (opcaoObjeto == 2))
  369. {
  370.  
  371. // consultar
  372. if(opcaoMenu == 1)
  373. {
  374. buscarAluno(baseAlunos, numeroAlunos);
  375. }
  376.  
  377. // adicionar
  378. else if(opcaoMenu == 2)
  379. {
  380. // aluno
  381. if(opcaoObjeto == 1)
  382. {
  383. adicionaAluno(baseAlunos, &numeroAlunos);
  384. }
  385.  
  386. // disciplina
  387. else
  388. {
  389. adicionaDisciplina(baseDisciplina, &numeroDisciplinas);
  390. }
  391.  
  392. }
  393.  
  394. // remover
  395. else if(opcaoMenu == 3)
  396. {
  397.  
  398. }
  399. }
  400. }
  401. }
  402. while((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3));
  403.  
  404. printf("Aplicação terminada\n");
  405.  
  406. return 0;
  407. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement