Compare commits
7 Commits
474be8660a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3953b62484 | ||
|
|
5e04d938f0 | ||
|
|
38881b3f45 | ||
|
|
3e6c319c99 | ||
|
|
bc8ee29e3e | ||
|
|
d7224649fb | ||
|
|
ac026ae383 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/target/
|
||||
56
README.md
Normal file
56
README.md
Normal 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
|
||||
BIN
src/.DS_Store
vendored
Normal file
BIN
src/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
src/main/.DS_Store
vendored
Normal file
BIN
src/main/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
src/main/java/.DS_Store
vendored
Normal file
BIN
src/main/java/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
src/main/java/com/.DS_Store
vendored
Normal file
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
BIN
src/main/java/com/mycompany/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user