PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → Exemplo de projeto para gerenciar terrenos áreas agrícolas
Exemplo de projeto para gerenciar terrenos áreas agrícolas
Iniciado por Boller, 17,mar. 2025 13:30 - No hay respuesta
Miembro registrado
3.855 mensajes
Publicado el 17,marzo 2025 - 13:30
// Programa de Gerenciamento de Terrenos em wlanguage
// Desenvolvido em WLanguage para Wx

// Declaração de estruturas
STTerreno is Structure
ID is int
Descrição is string
Área is real
Endereço is string
ValorMetroQuadrado is currency
DataAquisição is date
Proprietário is string
Documentos is array of strings
Coordenadas is string
END

// Variáveis globais
gArquivoTerrenos is string = fDataDir() + ["\"] + "terrenos.fic"
gColTerrenos is Array of STTerreno

// Inicializa a aplicação
PROCEDURE InitApplication()

// Cria arquivo de dados caso não exista
IF NOT fFileExist(gArquivoTerrenos) THEN
CarregarDadosExemplo()
SalvarTerrenos()
ELSE
CarregarTerrenos()
END
RETURN

// Carrega dados de exemplo
PROCEDURE CarregarDadosExemplo()
terreno1 is STTerreno
terreno1.ID = 1
terreno1.Descrição = "Terreno residencial plano"
terreno1.Área = 500.0
terreno1.Endereço = "Rua das Flores, 100, Bairro Jardim"
terreno1.ValorMetroQuadrado = 350.00
terreno1.DataAquisição = DateSys()
terreno1.Proprietário = "João Silva"
ArrayAdd(terreno1.Documentos, "Escritura")
ArrayAdd(terreno1.Documentos, "IPTU 2025")
terreno1.Coordenadas = "-23.5505,-46.6333"

terreno2 is STTerreno
terreno2.ID = 2
terreno2.Descrição = "Terreno comercial esquina"
terreno2.Área = 1200.0
terreno2.Endereço = "Av. Principal, 500, Centro"
terreno2.ValorMetroQuadrado = 750.00
terreno2.DataAquisição = DateSys() - 365
terreno2.Proprietário = "Empresa Construções Ltda"
ArrayAdd(terreno2.Documentos, "Contrato de Compra")
ArrayAdd(terreno2.Documentos, "Certidão Negativa")
terreno2.Coordenadas = "-23.5505,-46.6330"

ArrayAdd(gColTerrenos, terreno1)
ArrayAdd(gColTerrenos, terreno2)
RETURN

// Salva a coleção de terrenos no arquivo
PROCEDURE SalvarTerrenos()
Serialize(gArquivoTerrenos, gColTerrenos, psdXML)
RETURN

// Carrega a coleção de terrenos do arquivo
PROCEDURE CarregarTerrenos()
Deserialize(gArquivoTerrenos, gColTerrenos, psdXML)
RETURN

// Adiciona um novo terreno
PROCEDURE AdicionarTerreno(terreno is STTerreno)
// Gerar próximo ID
terreno.ID = 1
IF gColTerrenos.Count > 0 THEN
terreno.ID = gColTerrenos[gColTerrenos.Count].ID + 1
END

ArrayAdd(gColTerrenos, terreno)
SalvarTerrenos()
RETURN terreno.ID

// Atualiza um terreno existente
PROCEDURE AtualizarTerreno(terreno is STTerreno) : boolean
FOR i = 1 TO gColTerrenos.Count
IF gColTerrenos[i].ID = terreno.ID THEN
gColTerrenos[i] = terreno
SalvarTerrenos()
RETURN True
END
END
RETURN False

// Remove um terreno pelo ID
PROCEDURE RemoverTerreno(idTerreno is int) : boolean
FOR i = 1 TO gColTerrenos.Count
IF gColTerrenos[i].ID = idTerreno THEN
ArrayDelete(gColTerrenos, i)
SalvarTerrenos()
RETURN True
END
END
RETURN False

// Calcula o valor total de um terreno
PROCEDURE CalcularValorTerreno(idTerreno is int) : currency
FOR i = 1 TO gColTerrenos.Count
IF gColTerrenos[i].ID = idTerreno THEN
RETURN gColTerrenos[i].Área * gColTerrenos[i].ValorMetroQuadrado
END
END
RETURN 0

// Busca terrenos por proprietário
PROCEDURE BuscarTerrenosPorProprietario(proprietario is string) : array of STTerreno
resultados is array of STTerreno

FOR i = 1 TO gColTerrenos.Count
IF Position(Upper(gColTerrenos[i].Proprietário), Upper(proprietario)) > 0 THEN
ArrayAdd(resultados, gColTerrenos[i])
END
END
RETURN resultados

// Busca terrenos por área (min e max)
PROCEDURE BuscarTerrenosPorArea(areaMin is real, areaMax is real) : array of STTerreno
resultados is array of STTerreno

FOR i = 1 TO gColTerrenos.Count
IF gColTerrenos[i].Área >= areaMin AND gColTerrenos[i].Área <= areaMax THEN
ArrayAdd(resultados, gColTerrenos[i])
END
END
RETURN resultados

// Função para gerar relatório de terrenos
PROCEDURE GerarRelatorioTerrenos() : string
relatorio is string = "RELATÓRIO DE TERRENOS" + CR + CR
valorTotalPatrimonio is currency = 0

FOR i = 1 TO gColTerrenos.Count
terreno is STTerreno = gColTerrenos[i]
valorTerreno is currency = terreno.Área * terreno.ValorMetroQuadrado
valorTotalPatrimonio += valorTerreno

relatorio += "ID: " + terreno.ID + CR
relatorio += "Descrição: " + terreno.Descrição + CR
relatorio += "Área: " + terreno.Área + " m²" + CR
relatorio += "Endereço: " + terreno.Endereço + CR
relatorio += "Valor do m²: " + CurrencyToString(terreno.ValorMetroQuadrado) + CR
relatorio += "Valor Total: " + CurrencyToString(valorTerreno) + CR
relatorio += "Data de Aquisição: " + DateToString(terreno.DataAquisição) + CR
relatorio += "Proprietário: " + terreno.Proprietário + CR
relatorio += "-------------------------------------" + CR
END

relatorio += CR + "VALOR TOTAL DO PATRIMÔNIO: " + CurrencyToString(valorTotalPatrimonio) + CR
RETURN relatorio

// Código da Janela Principal
PROCEDURE WinMain()
InitApplication()
Open(FEN_GerenciamentoTerrenos)
RETURN

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/