Ano Lectivo 2013/2014 ProjFinal Jos Rodrigues jgrodrigues@cv.unipiaget.org Informtica de Gesto, 1 Ano Engenharia de Sistemas e Informtica, 1 Ano 9 de Janeiro de 2014 1. Enquadramento A PraiaTel uma empresa que controla os servios de telecomunicaes na cidade da Praia. No momento a empresa se encontra composta por 5 funcionrios (um director, um Eng. de telecomunicaes, 2 tcnicos electrnicos e uma secretaria administrativa). A empresa tende-se numa perspectiva de crescimento onde a ideia centra-se em recrutar, no futuro, mais trs funcionrios. A PraiaTel decidiu investir num software (programa em C) para a gesto de processamento de salrios dos seus funcionrios. Portando foi lanado um concurso para os alunos de ESI e IGE 1Ano, com a finalidade de desenvolverem um programa para gesto de processamento de salrios que satisfazem as necessidades da PraiaTel. O programa deve manusear informaes como: funcionrios (codigo, nome, escalao, salario, INPS, sindicato, mes_proc) e TabIUR (taxa, limite_sal). 2. Descrio do Projecto Pretende-se que seja desenvolvida em C um programa chamada ProcSalario (que dever ser guardado com o nome de ProcSalario.c). Entretanto, o programa quando iniciado solicita ao utilizador um username e password para poder aceder ao sistema ou programa. Depois de trs tentativas erradas o programa deve terminar. Caso o utilizador conseguir aceder ao sistema o programa deve: inicializar o campo cdigo da estrutura de funcionrios a -1 (-1 significa vazio); carregar os dados de funcionrios existentes no ficheiro (deve existir um ficheiro com o nome funcionarios.txt com os dados de funcionrios) para a estrutura funcionrios; carregar os dados da tabela de IUR existentes no ficheiro (deve existir um ficheiro com o nome tabelaIUR.txt com as taxas de IUR e os respectivos salrios) para a estrutura TabIUR; apresentar no ecr o seguinte menu: ############# Menu ############## # 1 Processamento # # 2 Funcionario # # 3 Tabela IUR # # 4 Listagem # # 5 Sair # ################################# 1 Processamento - esta a primeira opo do menu principal. Ao escolher esta opo dever ser apresentado no ecr o seguinte submenu: ############ SubMenu ############ # 1 Manual # # 2 Automatico # # 3 Reimpressao # # 4 Menu anterior # ################################# 1 Manual - esta a primeira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador que introduza o cdigo de um funcionrio e logo de seguida dever ser apresentado no ecr o processamento de salrio do funcionrio com as respectivas informaes: cdigo e nome do funcionrio, Salrio Bruto, IUR (a taxa de IUR deve ser apurada na estrutura TabIUR, varia de acordo com o salrio e obrigatrio), INPS (a taxa de INPS de 8% para todos os funcionrios independentemente do salrio e opcional), Sindicato (a taxa de 1% para todos os funcionrios independentemente do salrio e opcional), Total Descontos (que a soma dos valores de IUR, INPS e Sindicato) e por fim Salrio Liquido (que a diferena entre o Salrio Bruto e o Total Descontos). Ex. de layout: *** PROCESSAMENTO DE SALARIO *** +-------------------------------+ | Cod: 101 Nome: Ana Ms: 3 +-------------------------------+ | SALARIO BRUTO | +-------------------------------+ | 54000.0 +-------------------------------+ | DESCONTOS | +-------------------------------+ | IUR: ......... 2970.0 | INPS: ........ 4320.0 | SINDICATO: ... 540.0 +-------------------------------+ | TOTAL DESCONTOS | +-------------------------------+ | 7830.0 +-------------------------------+ | SALARIO LIQUIDO | +-------------------------------+ | 46170.0 +-------------------------------+ !.!.!.! PROCESSAMENTO EFECTUADO COM SUCESSO !.!.!.! Em cada processamento o campo mes_proc da estrutura de funcionrios deve ser actualizado (quando for feito o primeiro processamento, o valor do campo mes_proc 1, que o numero correspondente ao ms de Janeiro, e quando for feito o segundo processamento o valor do campo mes_proc passa a ser 2 correspondente ao ms Fevereiro, e assim sucessivamente at 12 que corresponde ao ms Dezembro). No final os dados de processamento devero ser armazenados num ficheiro txt, cujo nome o cdigo de funcionrio. Ex. do nome de ficheiro: 101.txt. Ex. de dados no ficheiro (ateno os dados so separados por tabulao): 101 Ana 3 54000.0 2970.0 4320.0 540.0 7830.0 46170.0 2 Automatico - esta a segunda opo do submenu. Ao escolher esta opo o programa deve processar o salrio de todos os funcionrios. Terminado o processamento deve-se imprimir no ecr: !.!.!.! PROCESSAMENTO EFECTUADO COM SUCESSO !.!.!.! Os dados de processamento devero ser armazenados num ficheiro txt, com nome geral.txt. Ex. de dados no ficheiro (ateno os dados so separados por tabulao): 101 Ana 3 54000.0 2970.0 4320.0 540.0 7830.0 46170.0 102 Maria 3 78000.0 6630.0 6240.0 780.0 13650.0 64350.0 105 Beto 3 33500.0 335.0 2680.0 335.0 3350.0 30150.0 Tambm neste processamento o campo mes_proc da estrutura de funcionrios deve ser actualizado para todos os funcionrios (quando for feito o primeiro processamento, o valor do campo mes_proc 1, que o numero correspondente ao ms de Janeiro, e quando for feito o segundo processamento o valor do campo mes_proc passa a ser 2 correspondente ao ms Fevereiro, e assim sucessivamente at 12 que corresponde ao ms Dezembro). 3 Reimpressao - esta a terceira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador que introduza o cdigo de um funcionrio e logo de seguida dever ser apresentado no ecr o salrio processado deste funcionrio (partindo do principio que fica armazenado somente o ltimo processamento). Portanto, para apresentar no ecr o ltimo salrio processado deste funcionrio, ser necessrio ler os dados no ficheiro (se o cdigo do funcionrio for 101, ento o nome do ficheiro ser 101.txt. Se o ltimo processamento no for manual, mas sim automtico, ento o ficheiro a ser lido ser geral.txt. Portando deve- se procurar no ficheiro o registo correspondente ao funcionrio em causa e imprimir os dados no ecr). 4 Menu anterior esta opo permite ao utilizador voltar ao menu principal. 2 Funcionario - esta a segunda opo do menu principal. Ao escolher esta opo dever ser apresentado no ecr o seguinte submenu: ############ SubMenu ############ # 1 Cadastro # # 2 Alterar escalao # # 3 Remover # # 4 Outras opcoes # # 5 Menu anterior # ################################# 1 Cadastro - esta a primeira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador as informaes necessrias para preencher os dados de um funcionrio na estrutura. Portanto sero pedidos ao utilizador as seguintes informaes: cdigo (que nico para cada funcionrio), nome, escalo (temos quatro tipo de escalo: ESCALAOI enquadra todos os funcionrios cujo salrios so inferiores ou iguais a 30.000$00, ESCALAOII enquadra todos os funcionrios cujo salrios so superiores a 30.000$00 e inferiores a 94.600$00, ESCALAOIII enquadra todos os funcionrios cujo salrios so iguais ou superiores a 94.600$00 e inferiores a 154.250$00 e ESCALAOIV enquadra todos os funcionrios cujo salrios so iguais ou superiores a 154.250$00) e salrio (que deve respeitar os intervalos de cada escalo. Ex.: se um funcionrio de ESCALAOI, o seu salrio nunca pode ultrapassar os 30.000$00). Os campos sindicato, INPS, ult_proc so de preenchimento automtico. O programa deve preencher todos estes campos a zero (0). Sindicato e INPS com valor zero (0) significam que os descontos de sindicato e INPS no so aplicados este funcionrio. O campo ult_proc a zero (0) significa que ainda no foi processado nenhum salrio para este funcionrio. 2 Alterar escalo - esta a segunda opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador que introduza o cdigo de um funcionrio o qual deseja alterar o escalo. Mas lembrem-se que ao mudar um funcionrio de escalo, o seu salrio deve ser obrigatoriamente reajustado de acordo com o intervalo de salrio de cada escalo. 3 Remover - esta a terceira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador que introduza o cdigo de um funcionrio que deseja remover. Para remover um funcionrio, basta colocar o valor -1 no campo cdigo da estrutura funcionrio. 4 Outras opcoes - esta a quarta opo do submenu. Esta opo fica a disposio do grupo. Aqui o grupo livre para escolher uma funcionalidade que achar mais conveniente para esta opo. 5 Menu anterior esta opo permite ao utilizador voltar ao menu principal. 3 Tabela IUR - esta a terceira opo do menu principal. Ao escolher esta opo dever ser apresentado no ecr o seguinte submenu: ############ SubMenu ############ # 1 Nova taxa # # 2 Alterar taxa # # 3 Menu anterior # ################################# 1 Nova taxa - esta a primeira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador o nome de um ficheiro que contem os dados da tabela de IUR (taxa e limite de salrio. Estes dados esto disponveis no anexo deste projecto). O programa deve ler os dados do ficheiro e armazena-los na estrutura TabIUR. 2 Alterar taxa - esta a segunda opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador que introduza o valor de uma taxa de IUR. De seguida deve-se verificar a existncia desta taxa, caso a taxa existir na estrutura TabIUR, o programa deve pedir ao utilizador um novo salrio a reajustar na taxa, ou seja, substituindo o antigo salrio pelo novo. 3 Menu anterior esta opo permite ao utilizador voltar ao menu principal. 4 Listagem - esta a quarta opo do menu principal. Ao escolher esta opo dever ser apresentado no ecr o seguinte submenu: ############ SubMenu ############ # 1 Funcionarios # # 2 Func/Escalao # # 3 Func/IUR # # 4 Menu anterior # ################################# 1 Funcionarios - esta a primeira opo do submenu. Ao escolher esta opo o programa deve listar no ecr todos os dados dos funcionrios existentes na estrutura. 2 Func/Escalao - esta a segunda opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador um tipo de escalo e listar no ecr todos os dados dos funcionrios existentes na estrutura que esto neste escalo. 3 Func/IUR - esta a terceira opo do submenu. Ao escolher esta opo o programa deve pedir ao utilizador uma taxa de IUR e listar no ecr todos os dados dos funcionrios existentes na estrutura cuja taxa se aplicam aos seus salrios. 4 Menu anterior esta opo permite ao utilizador voltar ao menu principal. 5 Sair - esta opo permite terminar ou sair do programa. 3. Condies de entrega O trabalho dever ser entregue at 25 de Janeiro pelas 17 horas e 50 minutos. Para isso todos os ficheiros devero ser colocados na pasta ProjFinal da home directory de cada grupo. Depois desta data perdero as permisses de escrita nessa directoria. Juntamente com os ficheiros dever ser entregue um relatrio que dever conter: Capa: com ttulo (ProjFinal), subttulo (Processamento de salrios), o nmero e o nome de cada elemento do grupo; Introduo; Descrio das principais variveis; Descrio das principais funes e a filosofia utilizada na implementao; Outros aspectos considerados relevantes; Concluso; OBS: o relatrio valer 15% e a criatividade 5% da nota do ProjFinal. 4. Informaes adicionais A estrutura para o programa definida da seguinte forma: typedef struct { int codigo; char nome[20]; int escalao; float salario; int sindicato; int INPS; int ult_proc; }funcionario; typedef struct { float taxa; float limite_sal; }TabelaIUR; Nota 1: A cpia de resolues/solues na Internet, livro ou colega leva a penalizao do trabalho em -10 valores. Isto , 0 valores no corrente trabalho e -10 valores na nota do prximo projecto. Nota 2: Qualquer dvida poder ser esclarecida por e-mail, atravs dos endereos jgrodrigues@cv.unipiaget.org, e pessoalmente no final das aulas tericas e prticas. 5. Anexo Salrios Taxas 32.224,00 0,50 33.741,00 1,00 40.152,00 1,50 41.638,00 2,00 43.238,00 2,50 44.966,00 3,00 46.838,00 3,50 48.873,00 4,00 51.092,00 4,50 53.523,00 5,00 56.197,00 5,50 59.151,00 6,00 62.434,00 6,50 66.102,00 7,00 70.228,00 7,50 76.181,00 8,00 79.147,00 8,50 82.354,00 9,00 85.832,00 9,50 89.617,00 10,00 93.750,00 10,50 98.284,00 11,00 103.278,00 11,50 108.807,00 12,00 114.961,00 12,50 121.853,00 13,00 129.624,00 13,50 138.454,00 14,00 154.661,00 14,50 161.015,00 15,00 167.914,00 15,50 175.430,00 16,00 183.651,00 16,50 192.680,00 17,00 202.643,00 17,50 213.692,00 18,00 229.538,00 18,50 236.734,00 19,00 244.395,00 19,50 252.569,00 20,00 261.308,00 20,50 270.674,00 21,00 280.736,00 21,50 291.575,00 22,00 303.285,00 22,50 315.975,00 23,00 329.773,00 23,50 344.831,00 24,00 361.330,00 24,50 379.488,00 25,00 399.567,00 25,50 399.568,00 26,00