Translate

Quanto já ganhei

domingo, 29 de setembro de 2013

Comandos DOS e arquivos .bat (Parte 5) – Cadastro de Pessoas

OBS.: 1) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
2) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que  funcionará no mesmo.


Atualizado em 08/01/2017  - Inserido a funcionalidade de editar cadastro.



Depois do Blog Cabeça Nerd desenvolver o programa NIVER, tiveram leitores pedindo-nos um programa para cadastro de pessoas. Lembro que para tal procedimento seria necessário uma linguagem de programação mais robusta. Entretanto, aceitei o desafio e fiz usando apenas comandos do MS-DOS através de arquivo em lote. Agradeço a participação e incentivos de todos, abaixo, segue o programa.


Nesse programa você poderá cadastrar:

  • Nome;
  • Endereço (rua, numero, complemento e CEP);
  • Telefone/fax;
  • Celular;
  • CPF e RG;
  • Sexo;
  • Estado civil;
  • e-mail e ainda colocar uma observação.


Poderá também consultar os dados cadastrados e excluí-los posteriormente. Esse é um típico programa onde se trabalha muito com strings (conjunto de caractere) e isso é bastante complicado em arquivos em lote. Sendo assim, os mais observadores poderão encontrar algumas limitações do programa, algo que peço que desconsiderem dadas as restrições dos comandos do MS-DOS. Obviamente, estarei disposto a receber opiniões, assim, ajudaremos todos.




  1. @echo Off
  2. mode con cols=60 lines=30

  3. :menuPrin
  4. rem ###Mostra Menu inicial.###
  5. Title Cadastro de Pessoas - Menu Principal
  6. cls
  7.  echo  Cadastro de Pessoas
  8. echo.
  9. echo  O que deseja fazer?
  10. echo.
  11. echo.
  12. echo                 1-Cadastrar
  13. echo                 2-Apagar
  14. echo                 3-Pesquisa
  15. echo                 4-Editar
  16. echo                 5-Desenvolvedor
  17. echo                 6-Sair
  18. echo.
  19. echo.
  20. set /p "op=Escolha uma opcao: "
  21. rem ###Validacao para aceitar apenas os valores pre determinados###

  22. if %op% LSS 1 (
  23. echo.
  24. echo ESCOLHA INCORRETA!
  25. echo.
  26. pause
  27. goto menuPrin
  28. )
  29. if %op% GTR 5 (
  30. echo.
  31. echo ESCOLHA INCORRETA!
  32. echo.
  33. pause
  34. goto menuPrin
  35. )
  36. rem ###Fim da validacao para aceitar apenas os valores pre determinados###

  37. if NOT exist codigo.cadp echo 0 > codigo.cadp
  38. rem ###Nesta linha 39 Caso nao exista o arquivo para
  39. rem gravacao e leitura do ultimo codigo cadastrado
  40. rem sera criado o arquivo com codigo zero "0" .###

  41. if %op%==1 set operacao=Cadastrar
  42. if %op%==2 set operacao=Apagar
  43. if %op%==3 set operacao=Pesquisar
  44. if %op%==4 set operacao=Editar
  45. if %op%==5 set operacao=Desenvolvedor
  46. if %op%==6 exit

  47. rem ###Cabecalho que sera usado para Cadastrar, Apagar, Pesquisar e Desenvolvedor###.
  48. :tipoOperacao
  49. Title Cadastro de Pessoas - %operacao%
  50. cls
  51. echo  Cadastro de Pessoas - Operacao escolhido: %operacao%
  52. echo.
  53. echo.

  54. if %op%==1 goto Cadastrar
  55. if %op%==2 goto Apagar
  56. if %op%==3 goto Pesquisa
  57. if %op%==4 goto Editar
  58. if %op%==5 goto Desenvolvedor
  59. rem ###Fim do cabecalho###

  60. :menuEscolha
  61. cls
  62. echo  Cadastro de Pessoas
  63. echo.
  64. echo.
  65. echo         C-Continuar a %operacao%
  66. echo         M-Menu Principal
  67. echo         S-Sair
  68. echo.
  69. echo.
  70. set /p "escolha=Escolha uma opcao: "
  71. if /I %escolha%==C goto tipoOperacao
  72. if /I %escolha%==M goto menuPrin
  73. if /I %escolha%==S exit

  74. :Cadastrar
  75. set operacao=Cadastrar
  76. set cod=type codigo.cadp

  77. echo Ultimo Codigo Cadastrado
  78. %cod%

  79. rem ###Obtendo dadas para a gravacao###.
  80. echo.
  81. echo.
  82. set /p "codigo=Codigo: "
  83. echo.
  84. set /p "nome=Nome: "
  85. echo.
  86. set /p "endereco=Endereco: "
  87. set /p "numero=Numero: "
  88. set /p "complemento=Complemento: "
  89. set /p "cep=CEP: "
  90. echo.
  91. set /p "telefoneFax=Telefone/Fax: "
  92. set /p "celular=Celular: "
  93. echo.
  94. set /p "cpf=CPF: "
  95. set /p "rg=RG: "
  96. set /p "sexo=Sexo: "
  97. set /p "estadoCivil=Estado Civil: "
  98. echo.
  99. set /p "email=E-mail: "
  100. echo.
  101. set /p "Observacao=Observacao: "
  102. rem ###Fim da obtencao dos dadas.###

  103. rem ###Gravando os dados###
  104. echo %codigo%__NOME: %nome% >> cadastros.cadp
  105. echo %codigo%__ENDERECO: %endereco% >> cadastros.cadp
  106. echo %codigo%__NUMERO: %numero% >> cadastros.cadp
  107. echo %codigo%__COMPLEMENTO: %complemento% >> cadastros.cadp
  108. echo %codigo%__CEP: %cep% >> cadastros.cadp
  109. echo %codigo%__TELEFONE/FAX: %telefoneFax% >> cadastros.cadp
  110. echo %codigo%__CELULAR: %celular% >> cadastros.cadp
  111. echo %codigo%__CPF: %cpf% >> cadastros.cadp
  112. echo %codigo%__RG: %rg% >> cadastros.cadp
  113. echo %codigo%__SEXO: %sexo% >> cadastros.cadp
  114. echo %codigo%__ESTADO CIVIL: %estadoCivil% >> cadastros.cadp
  115. echo %codigo%__E-MAIL: %email% >> cadastros.cadp
  116. echo %codigo%__OBSERVACAO: %observacao% >> cadastros.cadp
  117. echo. %codigo% > codigo.cadp
  118. rem ###Fim da gravacao dos dados###
  119. goto menuEscolha

  120. :Apagar
  121. set cod=type codigo.cadp
  122. echo Ultimo Codigo Cadastrado
  123. %cod%
  124. echo.
  125. echo.

  126. set operacao=Apagar
  127. set /p "apagar=Codigo que deseja apagar: "
  128. find /I /V "%apagar%__" cadastros.cadp > cadastros2.cadp
  129. echo.
  130. echo.
  131. pause
  132. del cadastros.cadp
  133. rename cadastros2.cadp cadastros.cadp
  134. find /I /V "cadastros.cadp" cadastros.cadp > cadastros2.cadp
  135. del cadastros.cadp
  136. rename cadastros2.cadp cadastros.cadp
  137. goto menuEscolha

  138. :Pesquisa
  139. set cod=type codigo.cadp
  140. echo Ultimo Codigo Cadastrado
  141. %cod%
  142. echo.
  143. echo.
  144. set /P "codigoPesq=Codigo para pesquisar: "
  145. if exist cadastros.cadp find /I "%codigoPesq%__" cadastros.cadp
  146. echo.
  147. pause
  148. set operacao=Pesquisar
  149. goto menuEscolha

  150. :Editar
  151. set cod=type codigo.cadp
  152. echo Ultimo Codigo Cadastrado
  153. %cod%
  154. echo.
  155. echo.
  156. set /P "codigoEdit=Codigo para editar: "
  157. find /I /V "%codigoEdit%__" cadastros.cadp > cadastros2.cadp
  158. echo.
  159. echo               ------ INSTRUCAO ------
  160. echo.
  161. echo.
  162. echo   Para os campos que nao deseja editar, deixar em branco.
  163. echo.
  164. echo.
  165. echo.
  166. pause
  167. cls
  168. echo Dados atuais:
  169. find /I "%codigoEdit%__" cadastros.cadp
  170. echo.
  171. echo.
  172. echo Novos dados:
  173. echo.
  174. echo.
  175. rem ###Obtendo dadas para a gravacao###.
  176. echo.
  177. echo.
  178. rem Zera a variavel###
  179. set nome=
  180. set /p "nome=Nome: "
  181. echo.
  182. set endereco=
  183. set /p "endereco=Endereco: "
  184. set numero=
  185. set /p "numero=Numero: "
  186. set complemento=
  187. set /p "complemento=Complemento: "
  188. set cep=
  189. set /p "cep=CEP: "
  190. echo.
  191. set telefoneFax=
  192. set /p "telefoneFax=Telefone/Fax: "
  193. set celular=
  194. set /p "celular=Celular: "
  195. echo.
  196. set cpf=
  197. set /p "cpf=CPF: "
  198. set rg=
  199. set /p "rg=RG: "
  200. set sexo=
  201. set /p "sexo=Sexo: "
  202. set estadoCivil=
  203. set /p "estadoCivil=Estado Civil: "
  204. echo.
  205. set email=
  206. set /p "email=E-mail: "
  207. echo.
  208. set observacao=
  209. set /p "observacao=Observacao: "
  210. rem ###Fim da obtencao dos dados.###

  211. rem ###Gravando os dados###
  212. if "%nome%"=="" (
  213. find /I "%codigoEdit%__NOME:" cadastros.cadp >> cadastros2.cadp
  214. ) else (
  215. echo %codigoEdit%__NOME: %nome% >> cadastros2.cadp
  216. )

  217. if "%endereco%"=="" (
  218. find /I "%codigoEdit%__ENDERECO:" cadastros.cadp >> cadastros2.cadp
  219. ) else (
  220. echo %codigoEdit%__ENDERECO: %endereco% >> cadastros2.cadp
  221. )

  222.  if "%numero%"=="" (
  223.  find /I "%codigoEdit%__NUMERO:" cadastros.cadp >> cadastros2.cadp
  224.  ) else (
  225.  echo %codigoEdit%__NUMERO: %numero% >> cadastros2.cadp
  226. )

  227.  if "%complemento%"=="" (
  228.  find /I "%codigoEdit%__COMPLEMENTO:" cadastros.cadp >> cadastros2.cadp
  229.  ) else (
  230. echo %codigoEdit%__COMPLEMENTO: %complemento% >> cadastros2.cadp
  231. )

  232. if "%cep%"=="" (
  233. find /I "%codigoEdit%__CEP:" cadastros.cadp >> cadastros2.cadp
  234. ) else (
  235.  echo %codigoEdit%__CEP: %cep% >> cadastros2.cadp
  236. )

  237. if "%telefoneFax%"=="" (
  238. find /I "%codigoEdit%__TELEFONE/FAX:" cadastros.cadp >> cadastros2.cadp
  239. ) else (
  240. echo %codigoEdit%__TELEFONE/FAX: %telefoneFax% >> cadastros2.cadp
  241. )

  242. if "%celular%"=="" (
  243. find /I "%codigoEdit%__CELULAR:" cadastros.cadp >> cadastros2.cadp
  244. ) else (
  245. echo %codigoEdit%__CELULAR: %celular% >> cadastros2.cadp
  246. )

  247. if "%cpf%"=="" (
  248. find /I "%codigoEdit%__CPF:" cadastros.cadp >> cadastros2.cadp
  249. ) else (
  250. echo %codigoEdit%__CPF: %cpf% >> cadastros2.cadp
  251. )

  252. if "%rg%"=="" (
  253. find /I "%codigoEdit%__RG:" cadastros.cadp >> cadastros2.cadp
  254. ) else (
  255. echo %codigoEdit%__RG: %rg% >> cadastros2.cadp
  256. )
  257.  
  258. if "%sexo%"=="" (
  259. find /I "%codigoEdit%__SEXO:" cadastros.cadp >> cadastros2.cadp
  260. ) else (
  261. echo %codigoEdit%__SEXO: %sexo% >> cadastros2.cadp
  262. )
  263.  
  264. if "%estadoCivil%"=="" (
  265. find /I "%codigoEdit%__ESTADO CIVIL:" cadastros.cadp >> cadastros2.cadp
  266. ) else (
  267. echo %codigoEdit%__ESTADO CIVIL: %estadoCivil% >> cadastros2.cadp
  268. )

  269. if "%email%"=="" ( 
  270. find /I "%codigoEdit%__E-MAIL:" cadastros.cadp >> cadastros2.cadp
  271. ) else (
  272. echo %codigoEdit%__E-MAIL: %email% >> cadastros2.cadp
  273. )
  274.  
  275. if "%observacao%"=="" (
  276. find /I "%codigoEdit%__OBSERVACAO:" cadastros.cadp >> cadastros2.cadp
  277. ) else (
  278. echo %codigoEdit%__OBSERVACAO: %observacao% >> cadastros2.cadp
  279. )
  280. rem ###Fim da gravacao dos dados###
  281.  
  282. del cadastros.cadp
  283. rename cadastros2.cadp cadastros.cadp
  284. find /I /V "cadastros.cadp" cadastros.cadp > cadastros2.cadp
  285. rem retira linhas em branco
  286. type cadastros2.cadp | find " " > cadastros3.cadp
  287. rem retira outras linhas em branco
  288. type cadastros3.cadp | find /V "  " > cadastros4.cadp
  289. del cadastros.cadp
  290. del cadastros2.cadp
  291. del cadastros3.cadp
  292. rename cadastros4.cadp cadastros.cadp
  293. echo.
  294. echo.
  295. pause
  296. set operacao=Editar
  297. goto menuEscolha
  298.  
  299. :Desenvolvedor
  300. echo.
  301. echo.
  302. echo ###########################################################
  303. echo #                                                         #
  304. echo # Cadastro de Pessoas eh um programa livre para cadastrar #
  305. echo # pessoas e seus respectivos dados, produzido por Leomar  #
  306. echo # Ilario como parte dos estudos do MS-DOS com arquivos em #
  307. echo # lote desenvolvido para o Blog Cabeca Nerd.              #
  308. echo #                                                         #
  309. echo #                                                         #
  310. echo # Contato desenvolvedor: blogcabecanerd@gmail.com         #
  311. echo #                                                         #
  312. echo ###########################################################
  313. echo.
  314. echo.
  315. echo.
  316. echo.
  317. echo.
  318. pause
  319. cls
  320. goto menuEscolha
O programa ficará da seguinte forma:





Veja também:

6 comentários:

  1. Que bacana ficou legal!!! Esses tutoriais estão ficando bacana, parabéns, mas parabéns mesmo amigão continue sempre com seus tutorias, que irão lhe fazer um bem no futuro, que você nem imagina rsrs

    ResponderExcluir
    Respostas
    1. Esse tipo de comentário serve como grande incentivo. É bom saber que nosso trabalho, de alguma forma, agrada as pessoas. Muito obrigado!!!

      Excluir
  2. excelente código, estou com um projeto será que você poderia me dar umas dicas?

    ResponderExcluir
  3. como edito um cadastro neste exemplo?
    Abrir mais uma opção no menu escrito : Editar Cadastro ou Alterar.
    Como ficaria o código ?

    ResponderExcluir
    Respostas
    1. Atualizei o código inserindo a funcionalidade de editar um cadastro. Obrigado pelo comentário.

      Excluir