Compare commits

..

7 Commits

Author SHA1 Message Date
250409
3953b62484 Adicionado README 2026-05-08 13:30:43 +01:00
250409
5e04d938f0 Adicionado README 2026-05-08 13:25:41 +01:00
250409
38881b3f45 Adicionado README 2026-05-08 13:25:12 +01:00
250409
3e6c319c99 2026-04-30 12:11:04 +01:00
250409
bc8ee29e3e 2026-04-30 12:06:39 +01:00
250409
d7224649fb 2026-04-30 12:06:05 +01:00
250409
ac026ae383 2026-04-30 12:05:32 +01:00
10 changed files with 206 additions and 12 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

56
README.md Normal file
View File

@@ -0,0 +1,56 @@
# Gestor de Palavra-Passes
O Gestor de Palavra-Passes é uma aplicação desenvolvida em Java com o objetivo de guardar, listar, procurar e apagar contas de forma simples através da consola.
O projeto foi criado utilizando Apache NetBeans e Maven, permitindo uma estrutura organizada e fácil de executar em diferentes sistemas.
## Funcionalidades
* Criar contas
* Guardar aplicação/site, email/utilizador e palavra-passe
* Listar todas as contas guardadas
* Procurar contas rapidamente
* Apagar contas existentes
* Gerar palavras-passe aleatórias seguras
* Armazenamento local em ficheiro `.txt`
## Como Funciona
As contas são guardadas num ficheiro chamado `data.txt`.
Cada linha contém:
Aplicação/Site ; Nome/Email ; Palavra-Passe
Exemplo:
Netflix;[utilizador@email.com](mailto:utilizador@email.com);MinhaPassword123
O programa utiliza:
* `Scanner` para interação com o utilizador
* `BufferedWriter` para guardar dados
* `BufferedReader` para ler dados
* Estruturas de repetição e menus interativos
## Estrutura do Projeto
* `GestorPalavraPasses.java` → Classe principal
* `Menu` → Interface de menu da aplicação
* `Account` → Estrutura das contas
* `FileManager` → Gestão de ficheiros
* `PasswordGenerator` → Geração de passwords seguras
## Tecnologias Utilizadas
* Java
* Apache NetBeans
* Maven
## Objetivo
Este projeto foi desenvolvido com fins educativos para praticar:
* Programação orientada a objetos
* Manipulação de ficheiros
* Menus interativos
* Organização de projetos Java
* Gestão de dados locais

0
data.txt Normal file
View File

BIN
src/.DS_Store vendored Normal file

Binary file not shown.

BIN
src/main/.DS_Store vendored Normal file

Binary file not shown.

BIN
src/main/java/.DS_Store vendored Normal file

Binary file not shown.

BIN
src/main/java/com/.DS_Store vendored Normal file

Binary file not shown.

BIN
src/main/java/com/mycompany/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -30,26 +30,37 @@ public class GestorPalavraPasses {
System.out.println("5 - Gerar password");
System.out.println("0 - Sair");
System.out.println("****************************");
System.out.print("Opção: ");
op = scanner.nextInt();
scanner.nextLine();
switch (op) {
case 1:
System.out.println("Criar conta...");
System.out.print("Aplicação/Site: ");
String app = scanner.nextLine();
System.out.print("Nome/Email: ");
String user = scanner.nextLine();
System.out.print("Palavra-passe: ");
String pass = scanner.nextLine();
Account acc = new Account(app, user, pass);
FileManager.save(acc);
break;
case 2:
System.out.println("Listar contas...");
FileManager.readAll();
break;
case 3:
System.out.println("Procurar conta...");
System.out.print("Pesquisar: ");
String termo = scanner.nextLine();
FileManager.search(termo);
break;
case 4:
System.out.println("Apagar conta...");
System.out.print("Introduza o nome da app/site: ");
String apagar = scanner.nextLine();
FileManager.delete(apagar);
break;
case 5:
System.out.println("Gerar password...");
System.out.println("Palavra-passe gerada: " + PasswordGenerator.generate());
break;
case 0:
System.out.println("A sair...");
@@ -65,14 +76,140 @@ public class GestorPalavraPasses {
class Account {
String app;
String username;
String password;
public Account(String app, String username, String password) {
this.app = app;
this.username = username;
this.password = password;
}
}
class FileManager {
}
class PasswordGenerator {
public static void readAll() {
try {
java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.FileReader("data.txt")
);
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(";");
System.out.println("\nAplicação/Site: " + parts[0] +
" | Nome/Email: " + parts[1] +
" | Palavra-Passe: " + parts[2]);
}
reader.close();
} catch (Exception e) {
System.out.println("Erro ao ler ficheiro.");
}
}
public static void save(Account acc) {
try {
java.io.BufferedWriter writer = new java.io.BufferedWriter(
new java.io.FileWriter("data.txt", true)
);
writer.write(acc.app + ";" + acc.username + ";" + acc.password);
writer.newLine();
writer.close();
System.out.println("Conta guardada.");
} catch (Exception e) {
System.out.println("Erro ao guardar ficheiro.");
}
}
public static void search(String termo) {
try {
java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.FileReader("data.txt")
);
String line;
boolean encontrado = false;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains(termo.toLowerCase())) {
String[] parts = line.split(";");
System.out.println("\nAplicação/Site: " + parts[0] +
" | Nome/Email: " + parts[1] +
" | Palavra-passe: " + parts[2]);
encontrado = true;
}
}
if (!encontrado) {
System.out.println("Nenhuma conta encontrada.");
}
reader.close();
} catch (Exception e) {
System.out.println("Erro ao procurar.");
}
}
public static void delete(String termo) {
try {
java.io.File inputFile = new java.io.File("data.txt");
java.io.File tempFile = new java.io.File("temp.txt");
java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.FileReader(inputFile)
);
java.io.BufferedWriter writer = new java.io.BufferedWriter(
new java.io.FileWriter(tempFile)
);
String line;
boolean apagado = false;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains(termo.toLowerCase())) {
apagado = true;
continue;
}
writer.write(line);
writer.newLine();
}
writer.close();
reader.close();
inputFile.delete();
tempFile.renameTo(inputFile);
if (apagado) {
System.out.println("Conta(s) apagada(s).");
} else {
System.out.println("Nenhuma conta encontrada.");
}
} catch (Exception e) {
System.out.println("Erro ao apagar.");
}
}
}
class PasswordGenerator {
public static String generate() {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder pass = new StringBuilder();
java.util.Random rand = new java.util.Random();
for (int i = 0; i < 10; i++) {
pass.append(chars.charAt(rand.nextInt(chars.length())));
}
return pass.toString();
}
}