package lab5; import java.util.*; import java.io.*; /** * Classe usada para a geração dos dados para o Lab 5 (2016) * */ public class GeraLista { static Random rn = new Random(); static final int nAlunos = 500; //1137000; // tamanho da lista de alunos static final String delim = "; "; // delimitador do arq. csv static int ran(int n){ int k = rn.nextInt(); if(k < 0 ) k = -k; return k % n; } /* lista de nomes */ static String[] nomes = { "Andre","Luiz", "Vinicius","Geraldo","Isabela","Fernando","Marcelo","Isabel","Ricarda", "Ricardo","Danilo","Flavio","Gustavo","Ivanildo","Jose","Leandro","Candido","Flavia","Lavinia", "Jose Carlos", "Carlos Jose","Jose Luiz","Jose Pedro","Joao Pedro","Jose Roberto", "Carla","Petra", "Romao","Ramon","Marcos","Maicol","Michel","Michelle","Rodrigo","Sergio", "Ramona", "Vitoria","Vitorina", "Victor","Vitor","Vitorio","Humberto","Rafael","Fabio","Fabiano","Fabiana", "Rafaela", "Josefina","Carlota", "Fabiola","Davi","Giordano","Mauricio","Thiago","Thomaz","Tomas","Alexandre", "Divina","Valdivino", "Henrique","Aline","Angelo","Bruna","Bruno","Dario","Evandro","Felipe","Izis", "Vanda", "Angela", "Tiago","Thiago","Lucas","Mateus","Vera Lucia","Regina","Cecilia","Rosana","Luiza", "Rosiane","Renato","Renata","Andreia","Maria Carolina","Maria Leticia", "Mario Sergio", "Guilhermina", "Luiz Antonio","Luiz Ignacio","Luiz Carlos","Pedro Luiz", "Pedro", "Alberto", "Daniela","Marcela","Maura","Zildo", "Marco Antonio","Marco Aurelio","Marco","Augusto","Luiz Augusto","Maria Cecilia", "Marcio","Cristian","Cristiana", "Alice","Alice Maria", "Maria Jose", "Jose Maria", "Joao Carlos", "Joao Luiz", "Joana Luiza","Maria Luiza","Elisa", "Joao Marcos", "Joana","Heraldo","Johnny","Gladys","Patrick","Steve","Samuel","Maria Elisa","Francisca","Juliana", "Willian","Guilherme","Severino", "Mario","Aurelio","Jose Roberto","Renata","Ana Renata","Alda", "Cristina","Maria Cristina","Marta","Marcia","Edilene","Daniel", "Agnes", "Agata", "Lorella", "Edson","Francisco","Candido","Vagner","Antonio Candido","Eulalia","Nestor", "Ernesto","Adoniram","Edvaldo","Evair","Juliano","Ariovaldo","Osvaldo", "Jose Osvaldo","Renato","Jose Renato","Lino","Geraldo", "Nilson", "Volnei", "Aldo", "Silverio","Isaac","Jaco", "Martin","Edivaldo","Sinval","Aloisio","Lana","Lara","Mayanna","Senor","Vanderson","Candida", "Nestor", "Ernesto", "Graca","Adalberto","Elisio","Alberta","Albertina","Tina","Bertha","Olivio","Olivia","Livia", "George","Jorge","Georgina","Maria Benta","Caetano","Maria da Graca"}; /* lista de sobrenomes */ static String[]sobrenomes = { "Carvalho","Acceturi","Santana","Santos","Figueiredo", "Oliveira", "Henriques","Nunes","Bertoni","Jurgensen","Martins","Mangini", "Marini","Conti","Rocha","Silva","Lessa","Junqueira","Ramos","Archangelo", "Santini","Pinto","Andrade","Silva Pinto","Aquino", "Leite","Moreira","Melo","Carboni","Oliveira","Guedes","Mamede","Prates", "Takamoto","Vicentini","Macedo","Geraldo","Felix","Faria","Pereira", "Souza","Amaral","Romano","Romancini","Bertoncini","Ferracini", "Bergamo","Bergamasco","Bressan","Bresciani","Modenesi","Mantovani", "Matsumoto","Kubota","Doval","Candido","Portinari","Almeida","Mussel", "Cirne","dos Reis","Pereira","de Abreu","da Silva", "de Oliveira", "do Monte","dos Afonsos","Goncalves","de Andrade", "Russeldorf", "van der Graaf","Zeppelin","Harrison", "Starkey", "von Zuben", "Bretzel","Passarelli","Burrel","Matheny","Delmiro","Giannini","del Vecchio", "di Giorgio","Lotufo","Pini","Magalhaes","Cabral","Goldstein","Soler", "Lacerda","Fonseca","Pinheiro","Gatti","Santos","dos Santos","da Mata", "Colombo","Goncalvez","Penha","Geraldi","Girardi","Mendonca","Donato", "Simionato","Simoes","Almeida","Madeira","Ferro","Carvalhaes","Coutinho", "Nogueira","Pereira","Goes","Borghetti","Teixeira","Tucunduva", "Tartini", "Corsini","Boldrini","Marchetti","Americano","Maia","Bartolini","Carmignani", "Tachelli","Maciel","Antonioni","Pedrosa","Cadete","Palma","Segall","Simon", "Xavier","Mendonca","Silverio","Camillo","Penna","Saboia","Abravanel","Wander", "Magalhaes","Auerbach","Rochester","Romano","Brescianni","Agostinho","Juliani","Rocha", "Ferraz","Amaral","Sampaio","Dias","Ramirez","Bruni","Brancaleone","Favero","Marcondes", "Fagundes","Correa","Correia","Corracini","Berger","Fleury","Candido", "Levi", "Fujimori", "Tanaka","Matsui","Motoyama","Yamamoto","Watanabe","Camara","Cascudo","Tagliari","Nakamura", "Yakoub","Mandell","Rupp","Rupini","Canal","Parente","Cunhado","Liberatori","Apolinario","Caetano","Salazar" }; static String[] mod = {"","-X","-A","-B","-Y","-Z","-C","","","",""}; static String[] codTurmas = { "A1","A2","B1","B2","C1","C2"}; static String[] codCursos = { "ML","MB","MA","MC","EC","CC","EM","EE","EA","EQ","FL","FB","BE","HL","HS","AR","AC","NN","NA","NH","NL","SL" }; static HashSet nSet = new HashSet(); // p/ garantir nomes unicos static HashSet docSet = new HashSet(); // p/ garantir docs id. unicos static int nrep = 0; static String maiorNome = ""; static String maiorNomeRepetido = ""; /** * Gera um nome - caso esse nome ja exista, e gerado outro * ate que o nome gerado nao exista (nao esteja em nSet) * @return */ static String geraNome(){ String nome; //nome = nomes[ran(nomes.length)]; do{ nome = nomes[ran(nomes.length)]; if(rn.nextBoolean()){ nome += " "+sobrenomes[ran(sobrenomes.length)]; if(rn.nextBoolean()) { nome +=" "+sobrenomes[ran(sobrenomes.length)]; if(rn.nextBoolean()) { nome +=" "+sobrenomes[ran(sobrenomes.length)]; } } } nome +=" "+sobrenomes[ran(sobrenomes.length)]; if(nSet.contains(nome)) { if((++nrep % 2033) == 0){ System.out.println("INJETANDO:"+nome); return nome; // 'injetando' nomes repetidos } if(nome.length() > maiorNomeRepetido.length()){ System.out.println(""+nrep+" nome repetido:"+nome); maiorNomeRepetido = nome; } } } while (nSet.contains(nome)); if(nome.length() > maiorNome.length()) maiorNome = nome; nSet.add(nome); return nome; } static int nDocRep = 0; // número de docs. repetidos /** * Gera um numero p/ doc. de identidade, unico. * @return */ static String geraDoc(){ String n; do{ n = ""+ran(1000)+"." +(ran(900)+100)+'.' +(ran(900)+100)+mod[ran(mod.length)]; if(docSet.contains(n) && ((++nDocRep % 2) == 0)) { System.out.println("INJETANDO:"+n); return n; // injetando no. doc. repetido } } while(docSet.contains(n)); docSet.add(n); return n; } /** * Gera um numero de matricula, verificando se o mesmo * ja nao esta em matSet (se estiver, tenta gerar outro e * assim por diante...) * @return */ static String geraMatricula(){ return ran(99)+"."+ran(9999); } static void geraListaConcurso(){ final String fileName = "concurso.csv"; System.out.println("nomes:"+nomes.length+" sobrenomes:"+sobrenomes.length); try{ FileWriter fw = new FileWriter(fileName); for(int i = 0; i < nAlunos; i++){ String matricula; if(ran(100) < 20) matricula = ""; else matricula = geraMatricula(); String pontuacao = ""+ran(10001); String nome = geraNome(); fw.write(matricula+";"+nome+";"+pontuacao+"\n"); } fw.close(); } catch (Exception ee){ ee.printStackTrace(); System.out.println("erro ao criar arquivo "+fileName); } } static void geraListaAlunos(String fName){ try{ FileWriter fw = new FileWriter(fName); for(int i = 0; i < nAlunos; i++){ String nome = geraNome(); String doc = geraDoc(); String idade = ""+(15+ran(6)); int k = ran(codCursos.length); //String curso = nomeCursos[k]; String codCurso = codCursos[k]; String turma = codTurmas[ran(codTurmas.length)]; fw.write(nome+";"+doc+";"+idade+";"+codCurso+";"+turma+"\n"); //System.out.println(i+" "+nome+" "+doc+" "+idade+" "+codCurso+" "+turma); } fw.close(); } catch(Exception ee){ ee.printStackTrace(); System.out.println("erro ao criar arquivo "+fName); } } static String geraEmail(){ String str = sobrenomes[ran(sobrenomes.length)]+"@"+sobrenomes[ran(sobrenomes.length)]+".com.br"; String res = ""; for(int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if(ch != ' ') res += ch; } return res.toLowerCase(); } /** * @param args */ public static void main(String[] args) { geraListaAlunos("alunos.csv"); } }