//Jesus Alejandro Flores Hernandez
//codigo en SCILAB
//Ejemplode perceptron simple
//Probado y revisado 22 sep 2016
//Funcion OR
//Código para reconocer la entradas de la función OR
//
function graficaLinea(miColor)
for i=1:100
if w(2)==0 then
y3(i)=0
else
y3(i)=(-w(1)*x2(i)-w(3))/w(2);
end
end
plot(x2,y3,miColor);
endfunction
nct=4; //tamaño del conjunto de trabajo
y=[-1,-1,1,1;-1,1,-1,1]
x=y';
x1=x(:,1);//Arreglo x1 contiene coordenadas x
y1=x(:,2);//Arreglo y1 contiene coordenadas y
plot(x1,y1,'*');
//pesos iniciales son w1=0 and w2=0, w3 es el umbral
//w=[1;1;0.5];
w=[0;0;0.5];
class_F=[-1;1;1;1]; //salida de la función OR
mfprintf(6,'Perceptron para reconocer la tabla Or \n'); //escribe a consola
mfprintf(6,'Linea roja pesos iniciales\n'); //escribe a consola
mfprintf(6,'Linea verde iteraciones\n'); //escribe a consola
mfprintf(6,'Linea azul pesos finales:\n x y or'); //escribe a consola
disp([x,class_F]);
//muestra las puntos clasificados
for i=1:nct
if class_F(i)==1 then
plot(x1(i),y1(i),'gre*');
else
plot(x1(i),y1(i),'blu*');
end
end
//
x2=linspace(-2,2,100);
for i=1:100
y2(i)=2*x2(i);
end
//muestra la recta del perceptron con los pesos actuales
for i=1:100
if w(2)==0 then
y3(i)=0
else
y3(i)=(-w(1)*x2(i)-w(3))/w(2);
end
end
plot(x2,y3,'r');
//Calculamos la salida del perceptron con los pesos
//actuales para todos los puntos
for i=1:nct
g(i)=sign(w(2)*y1(i)+w(1)*x1(i)+w(3));
end
//~= operador relacionl es distonto que
//buscamos las salidas que no concuerdan con nuestra
//clasificación
ind = find(class_F ~= g);
iter=1;
while ~isempty(ind) //si es vacio => fin
mfprintf(6,'iteracion %d salidas que no concuerdad:\n real g',iter);
disp([class_F,g]);
mfprintf(6,'vector de pesos:\n w1 w2 w0=U');
disp(w');
//operador .* es multiplicación de matrices elemento a elemento
w(1) = w(1) + (class_F(ind(1))-g(ind(1))).*x1(ind(1)); //
w(2) = w(2) + (class_F(ind(1))-g(ind(1))).*y1(ind(1)); //
w(3) = w(3) + (class_F(ind(1))-g(ind(1))); //
//calcular la salida del perceptron
for i=1:nct
temp(i)=sign(w(2)*y1(i)+w(1)*x1(i)+w(3));
end
//buscar salidas que no concuerdan
ind = find(class_F ~= temp);
g=temp;
iter = iter + 1;
if iter>600 then
break;
end
graficaLinea('g');
end
mfprintf(6,'- - Al final de %d iteraciones\nvector de indices - - -',iter); //escribe a consola
disp(ind);
mfprintf(6,'vector de clasificación / vector salida: \nClass_F g');
disp([class_F,g]);
mfprintf(6,'vector de pesos:\n w1 w2 w0=U');
disp(w');
graficaLinea('b');
domingo, 2 de octubre de 2016
martes, 1 de marzo de 2016
jueves, 25 de febrero de 2016
sábado, 20 de febrero de 2016
/*
Jesus Alejandro Flores Hernandez
Clase para la evaluación de expresiones en notación polca inversa
Revisado en Dic 07 a parti del curso de POO del seg sem 2006
Evalua funciones en polaca inversa es usada por la clse Graficadora
*/
import java.util.StringTokenizer;
import java.util.Stack;
import java.util.EmptyStackException;
public class calcPolaca{
public double resultado;
boolean operador = false;
boolean funcion = false;
Stack p;
calcPolaca(String cad){
StringTokenizer cadena = new StringTokenizer(cad,",");
p = new Stack();
while (cadena.hasMoreTokens()){
String token = cadena.nextToken();
if (token=="=")break;
p.push(token);
if (func(token)){
calcularfunc();
}else{
if (oper( token )){
calcularop();
}
}
}
resultado = Double.parseDouble((String)(p.pop()));
}
private void calcularfunc(){
String token = (String)(p.pop());
String x = (String)(p.pop());
switch (token.charAt(0)){
case 'S':
p.push( String.valueOf( Math.sin( Double.parseDouble(x) )));
break;
case 'C':
p.push( String.valueOf( Math.cos( Double.parseDouble(x) )));
break;
case 'T':
p.push( String.valueOf( Math.tan( Double.parseDouble(x) )));
break;
case 'L':
try {
p.push( String.valueOf( Math.log(Double.parseDouble(x))));
break;
}catch (Exception e){
System.out.println("error");
}
case 'A':
p.push( String.valueOf( Math.abs( Double.parseDouble(x) )));
break;
default :
System.out.println("incorrecto");
}
}
public boolean func(String ffun){
switch (ffun.charAt(0)){
case 'S':
funcion = true;
break;
case 'C':
funcion = true;
break;
case 'A':
funcion = true;
break;
case 'L':
funcion = true;
break;
case 'T':
funcion = true;
break;
default:
funcion = false;
}
return(funcion);
}
private void calcularop(){
String operador = (String)(p.pop());
String op1 = (String)(p.pop());
String op2 = (String)(p.pop());
switch (operador.charAt(0)){
case '+':
p.push( String.valueOf (Double.parseDouble(op2)+ Double.parseDouble(op1)) );
break;
case '-':
p.push( String.valueOf (Double.parseDouble(op2) - Double.parseDouble(op1)) );
break;
case '*':
p.push( String.valueOf (Double.parseDouble(op2) * Double.parseDouble(op1)) );
break;
case '/':
p.push( String.valueOf (Double.parseDouble(op2) / Double.parseDouble(op1)) );
break;
case '^':
p.push( String.valueOf (Math.pow (Double.parseDouble(op2),Double.parseDouble(op1))) );
break;
default :
System.out.println("incorrecto");
}
}
public boolean oper(String opr){
if (opr.length() == 1 ){
char x = opr.charAt(0);
switch (x){
case '+':
operador = true;
break;
case '-':
operador = true;
break;
case '*':
operador = true;
break;
case '/':
operador = true;
break;
case '^':
operador = true;
break;
default :
operador = false;
}
}else
operador = false;
return(operador);
}//fin de oper
public static void main(String[] args){
calcPolaca aux = new calcPolaca("10,2,^ ".trim());
double valor = aux.resultado;
System.out.println(valor);
}
}//fin de la clase polaca
Jesus Alejandro Flores Hernandez
Clase para la evaluación de expresiones en notación polca inversa
Revisado en Dic 07 a parti del curso de POO del seg sem 2006
Evalua funciones en polaca inversa es usada por la clse Graficadora
*/
import java.util.StringTokenizer;
import java.util.Stack;
import java.util.EmptyStackException;
public class calcPolaca{
public double resultado;
boolean operador = false;
boolean funcion = false;
Stack p;
calcPolaca(String cad){
StringTokenizer cadena = new StringTokenizer(cad,",");
p = new Stack();
while (cadena.hasMoreTokens()){
String token = cadena.nextToken();
if (token=="=")break;
p.push(token);
if (func(token)){
calcularfunc();
}else{
if (oper( token )){
calcularop();
}
}
}
resultado = Double.parseDouble((String)(p.pop()));
}
private void calcularfunc(){
String token = (String)(p.pop());
String x = (String)(p.pop());
switch (token.charAt(0)){
case 'S':
p.push( String.valueOf( Math.sin( Double.parseDouble(x) )));
break;
case 'C':
p.push( String.valueOf( Math.cos( Double.parseDouble(x) )));
break;
case 'T':
p.push( String.valueOf( Math.tan( Double.parseDouble(x) )));
break;
case 'L':
try {
p.push( String.valueOf( Math.log(Double.parseDouble(x))));
break;
}catch (Exception e){
System.out.println("error");
}
case 'A':
p.push( String.valueOf( Math.abs( Double.parseDouble(x) )));
break;
default :
System.out.println("incorrecto");
}
}
public boolean func(String ffun){
switch (ffun.charAt(0)){
case 'S':
funcion = true;
break;
case 'C':
funcion = true;
break;
case 'A':
funcion = true;
break;
case 'L':
funcion = true;
break;
case 'T':
funcion = true;
break;
default:
funcion = false;
}
return(funcion);
}
private void calcularop(){
String operador = (String)(p.pop());
String op1 = (String)(p.pop());
String op2 = (String)(p.pop());
switch (operador.charAt(0)){
case '+':
p.push( String.valueOf (Double.parseDouble(op2)+ Double.parseDouble(op1)) );
break;
case '-':
p.push( String.valueOf (Double.parseDouble(op2) - Double.parseDouble(op1)) );
break;
case '*':
p.push( String.valueOf (Double.parseDouble(op2) * Double.parseDouble(op1)) );
break;
case '/':
p.push( String.valueOf (Double.parseDouble(op2) / Double.parseDouble(op1)) );
break;
case '^':
p.push( String.valueOf (Math.pow (Double.parseDouble(op2),Double.parseDouble(op1))) );
break;
default :
System.out.println("incorrecto");
}
}
public boolean oper(String opr){
if (opr.length() == 1 ){
char x = opr.charAt(0);
switch (x){
case '+':
operador = true;
break;
case '-':
operador = true;
break;
case '*':
operador = true;
break;
case '/':
operador = true;
break;
case '^':
operador = true;
break;
default :
operador = false;
}
}else
operador = false;
return(operador);
}//fin de oper
public static void main(String[] args){
calcPolaca aux = new calcPolaca("10,2,^ ".trim());
double valor = aux.resultado;
System.out.println(valor);
}
}//fin de la clase polaca
/*
Universidad Autonoma del Carmen
Ciencias de la Informacion
Asignatura: Laboratorio de programación Visual Para Ingenieria
Profesor: Jesus Alejandro Flores Hernández
Alumno: Samuel Santos de La Cuz Dic 2007
Proyecto---> Graficadora de funciones en notacion polaca
a partir de calculadora grafica en polaca inversa escrita en C++
por Jesús Alejandro Flores Hernández
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Graficadora{
public static void main(String args[]){
new Forma("Graficador de funciones en notacion Polaca");
}
}
class Forma extends JFrame{
public JTextField Tlim_inf,Tlim_sup,Texp;
JPanel p;
JComboBox opc;
JButton Bgraficar;
JLabel lim_inf,lim_sup,exp,ejemp;
areaGrafica DG;
Forma(String titulo){
super(titulo);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container frame=this.getContentPane();
frame.add(Panelprincipal());
pack();
show();
}
private JPanel Panelprincipal(){
GridBagLayout gridbag;
GridBagConstraints gbcon;
p = new JPanel();
DG=new areaGrafica();
oyenteClick oy=new oyenteClick();
gridbag = new GridBagLayout();
p.setLayout(gridbag);
gbcon = new GridBagConstraints();
Bgraficar = new JButton("Graficar");
gbcon.gridx =0 ;
gbcon.gridy = 0;
Bgraficar.addActionListener(oy);
p.add(Bgraficar,gbcon);
lim_inf = new JLabel("Limite Inferior");
gbcon.gridx = 0;
gbcon.gridy = 1;
p.add(lim_inf,gbcon);
Tlim_inf = new JTextField(8);
Tlim_inf.setText("-10");
gbcon.gridx = 0;
gbcon.gridy = 2;
p.add(Tlim_inf,gbcon);
lim_sup = new JLabel("Limite Superior");
gbcon.gridx = 0;
gbcon.gridy = 3;
p.add(lim_sup,gbcon);
Tlim_sup = new JTextField(8);
Tlim_sup.setText("10");
gbcon.gridx = 0;
gbcon.gridy = 4;
p.add(Tlim_sup,gbcon);
exp = new JLabel("Expresión");
gbcon.gridx = 0;
gbcon.gridy = 5;
p.add(exp,gbcon);
Texp = new JTextField(19);
Texp.setText("X,S");
gbcon.gridx = 0;
gbcon.gridy = 6;
p.add(Texp,gbcon);
ejemp = new JLabel("Ejemplos");
gbcon.gridx = 0;
gbcon.gridy = 7;
p.add(ejemp,gbcon);
opc = new JComboBox();
opc.addItem("X,2,^ = x^2");
opc.addItem("X,S = seno(x)");
opc.addItem("X,2,^,S = seno(x^2)");
opc.addItem("X,S,X,* = seno(x)*x");
opc.addItem("X,3,^ = x^3");
opc.addItem("X,S,X,C,*= seno(x)*coseno(x)");
opc.addItem("X,L = log x");
opc.addItem("X,S,A = abs(sen(x))");
opc.addItem("X,T = tan(x)");
opc.addItem("X,S,A,X,*= abs(sen(x))*x");
gbcon.gridx = 0;
gbcon.gridy = 8;
opc.addActionListener(oy);
p.add(opc,gbcon);
gbcon.gridx = 2;
gbcon.gridy= 2;
gbcon.gridwidth = 20;
gbcon.gridheight = 20;
p.add(DG,gbcon);
return(p);
}
class oyenteClick implements ActionListener{
public void actionPerformed(ActionEvent evento){
Object cual = evento.getSource();
if (cual instanceof JButton){
DG.EvalIntro(Texp,Tlim_inf,Tlim_sup);//------
}else if (cual instanceof JComboBox){
JComboBox opciones = (JComboBox)(cual);
if(opciones.getSelectedIndex()==6){
Tlim_inf.setText("1");
Tlim_sup.setText(" 10");
}else{
Tlim_inf.setText("-10");
Tlim_sup.setText(" 10");
}
//s.substring
Texp.setText(opciones.getSelectedItem().toString().substring(0,9));
}//de if
}//de action performed
}//de oyenteclick
}
class areaGrafica extends Canvas{
int AnchoCanvas = 500;
int AltoCanvas = 500;
boolean click;
double valYmax=0.0;
double valYmin=0.0;
double li = 0.0;
double ls = 0.0;
String texAnt = "";
String texAct = "";
areaGrafica(){
click = false;
setSize(500,500);
}
void EvalIntro(JTextField Texp,JTextField Tlim_inf,JTextField Tlim_sup){
li = Double.parseDouble(Tlim_inf.getText());
ls = Double.parseDouble(Tlim_sup.getText());
texAnt = Texp.getText();
repaint();
click = true;
}
public void paint(Graphics g){
g.drawRect(0,0,499,499);
if (click){
int ys;
int yp;
calculaMaximoMinimoDeLaFuncion();
yp = posicionY(0);
for (int xi=0; xi<500 i="" p=""> data-blogger-escaped-p="" data-blogger-escaped-xi=""> ys = posicionY(xi+1);
g.drawLine (xi,yp,xi+1,ys);
yp=ys;
}
}
}
void calculaMaximoMinimoDeLaFuncion(){
double aux=0;
valYmin=valYmax = valordeY(0);
for (int i = 0 ; i < 500; i++){
aux = valordeY(i);
if (aux > valYmax) valYmax=aux;
if (aux < valYmin) valYmin=aux;
}
}
int posicionY (int num){
double y;
int posY;
y = valordeY(num);
posY = (int)( (y-valYmin) * (AltoCanvas-1) / (valYmax-valYmin) );
posY = AltoCanvas - posY;
return( posY );
}
double valordeY(int num){
double x,valor;
double delta=(ls-li)/(AnchoCanvas);
x = li+(delta*num);
texAct = texAnt.replaceAll("X",String.valueOf(x));
calcPolaca aux = new calcPolaca(texAct.trim());
valor = aux.resultado;
return(valor);
}
}
500>
Universidad Autonoma del Carmen
Ciencias de la Informacion
Asignatura: Laboratorio de programación Visual Para Ingenieria
Profesor: Jesus Alejandro Flores Hernández
Alumno: Samuel Santos de La Cuz Dic 2007
Proyecto---> Graficadora de funciones en notacion polaca
a partir de calculadora grafica en polaca inversa escrita en C++
por Jesús Alejandro Flores Hernández
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Graficadora{
public static void main(String args[]){
new Forma("Graficador de funciones en notacion Polaca");
}
}
class Forma extends JFrame{
public JTextField Tlim_inf,Tlim_sup,Texp;
JPanel p;
JComboBox opc;
JButton Bgraficar;
JLabel lim_inf,lim_sup,exp,ejemp;
areaGrafica DG;
Forma(String titulo){
super(titulo);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container frame=this.getContentPane();
frame.add(Panelprincipal());
pack();
show();
}
private JPanel Panelprincipal(){
GridBagLayout gridbag;
GridBagConstraints gbcon;
p = new JPanel();
DG=new areaGrafica();
oyenteClick oy=new oyenteClick();
gridbag = new GridBagLayout();
p.setLayout(gridbag);
gbcon = new GridBagConstraints();
Bgraficar = new JButton("Graficar");
gbcon.gridx =0 ;
gbcon.gridy = 0;
Bgraficar.addActionListener(oy);
p.add(Bgraficar,gbcon);
lim_inf = new JLabel("Limite Inferior");
gbcon.gridx = 0;
gbcon.gridy = 1;
p.add(lim_inf,gbcon);
Tlim_inf = new JTextField(8);
Tlim_inf.setText("-10");
gbcon.gridx = 0;
gbcon.gridy = 2;
p.add(Tlim_inf,gbcon);
lim_sup = new JLabel("Limite Superior");
gbcon.gridx = 0;
gbcon.gridy = 3;
p.add(lim_sup,gbcon);
Tlim_sup = new JTextField(8);
Tlim_sup.setText("10");
gbcon.gridx = 0;
gbcon.gridy = 4;
p.add(Tlim_sup,gbcon);
exp = new JLabel("Expresión");
gbcon.gridx = 0;
gbcon.gridy = 5;
p.add(exp,gbcon);
Texp = new JTextField(19);
Texp.setText("X,S");
gbcon.gridx = 0;
gbcon.gridy = 6;
p.add(Texp,gbcon);
ejemp = new JLabel("Ejemplos");
gbcon.gridx = 0;
gbcon.gridy = 7;
p.add(ejemp,gbcon);
opc = new JComboBox();
opc.addItem("X,2,^ = x^2");
opc.addItem("X,S = seno(x)");
opc.addItem("X,2,^,S = seno(x^2)");
opc.addItem("X,S,X,* = seno(x)*x");
opc.addItem("X,3,^ = x^3");
opc.addItem("X,S,X,C,*= seno(x)*coseno(x)");
opc.addItem("X,L = log x");
opc.addItem("X,S,A = abs(sen(x))");
opc.addItem("X,T = tan(x)");
opc.addItem("X,S,A,X,*= abs(sen(x))*x");
gbcon.gridx = 0;
gbcon.gridy = 8;
opc.addActionListener(oy);
p.add(opc,gbcon);
gbcon.gridx = 2;
gbcon.gridy= 2;
gbcon.gridwidth = 20;
gbcon.gridheight = 20;
p.add(DG,gbcon);
return(p);
}
class oyenteClick implements ActionListener{
public void actionPerformed(ActionEvent evento){
Object cual = evento.getSource();
if (cual instanceof JButton){
DG.EvalIntro(Texp,Tlim_inf,Tlim_sup);//------
}else if (cual instanceof JComboBox){
JComboBox opciones = (JComboBox)(cual);
if(opciones.getSelectedIndex()==6){
Tlim_inf.setText("1");
Tlim_sup.setText(" 10");
}else{
Tlim_inf.setText("-10");
Tlim_sup.setText(" 10");
}
//s.substring
Texp.setText(opciones.getSelectedItem().toString().substring(0,9));
}//de if
}//de action performed
}//de oyenteclick
}
class areaGrafica extends Canvas{
int AnchoCanvas = 500;
int AltoCanvas = 500;
boolean click;
double valYmax=0.0;
double valYmin=0.0;
double li = 0.0;
double ls = 0.0;
String texAnt = "";
String texAct = "";
areaGrafica(){
click = false;
setSize(500,500);
}
void EvalIntro(JTextField Texp,JTextField Tlim_inf,JTextField Tlim_sup){
li = Double.parseDouble(Tlim_inf.getText());
ls = Double.parseDouble(Tlim_sup.getText());
texAnt = Texp.getText();
repaint();
click = true;
}
public void paint(Graphics g){
g.drawRect(0,0,499,499);
if (click){
int ys;
int yp;
calculaMaximoMinimoDeLaFuncion();
yp = posicionY(0);
for (int xi=0; xi<500 i="" p=""> data-blogger-escaped-p="" data-blogger-escaped-xi=""> ys = posicionY(xi+1);
g.drawLine (xi,yp,xi+1,ys);
yp=ys;
}
}
}
void calculaMaximoMinimoDeLaFuncion(){
double aux=0;
valYmin=valYmax = valordeY(0);
for (int i = 0 ; i < 500; i++){
aux = valordeY(i);
if (aux > valYmax) valYmax=aux;
if (aux < valYmin) valYmin=aux;
}
}
int posicionY (int num){
double y;
int posY;
y = valordeY(num);
posY = (int)( (y-valYmin) * (AltoCanvas-1) / (valYmax-valYmin) );
posY = AltoCanvas - posY;
return( posY );
}
double valordeY(int num){
double x,valor;
double delta=(ls-li)/(AnchoCanvas);
x = li+(delta*num);
texAct = texAnt.replaceAll("X",String.valueOf(x));
calcPolaca aux = new calcPolaca(texAct.trim());
valor = aux.resultado;
return(valor);
}
}
lunes, 24 de agosto de 2015
Narrativas
Ejemplo narrativas para Optativa NET:
1 Empresa Panuchos
1 Empresa Panuchos
La empresa Panuchos S.A.,
dedicada a la elaboración de panuchos en todo la republica, tiene varias
gerencias como son, Compras, Ventas, Tratamiento de información, Almacén y
Transportes, cada gerencia tiene un gerente que forma parte del personal de la
empresa, la gerencia tiene una clave que se forma con dos letras (que son como
un acrónimo, por ejemplo tratamiento de información tendrá las letras TI)
seguido de un número empezando en 1, así tratamiento de información tendrá la
clave TI1, compras tendrá la clave CO1, la gerencia tiene también una
dirección, un correo electrónico y un código postal, los empleados de cada
gerencia se identifican por el la clave de la gerencia seguida del número de
empleado (TI-01, TI1-02, etcétera), nombre, teléfono, correo electrónico, y
puesto, la empresa cuenta con un catálogo de puestos que tiene una clave, un
nombre del puesto, descripción del puesto y salario.
Debido a problemas sindicales esta empresa opto desde hace 5 años por la
contratación del 90% de su personal a través de OutSourcing, para lo cual el
consejo de administración periódicamente destina un conjunto de fondos de
capital asociados a un rubro específico cada uno, por ejemplo existe un fondo para
desarrollo de software del cual se extraen las partidas de capital necesarias
para el pago de salarios, otro para equipos de cómputo, los fondos de capital
también se asocian a contratos para la adquisición de equipos de cómputo redes
y otros rubros; los rubros que maneja la empresa son:
- Desarrollo de software
- Adquisición de hardware
- Salarios de recurso humano-software
- Salarios recursos humano-Hardware
(administrador de redes, bases de datos, instalaciones)
- Adquisición de mobiliario de oficina
- Adquisición de herramienta
- Adquisición de software
Pudiendo estos cambiar con el tiempo, es decir puede eliminarse o agregarse
rubros. Cada rubro tiene asociado para un año determinado un fondo de capital
con un monto. De los fondos de capital
los gerentes crean partidas de capital que se asocian a contratos de
outsourcing o de adquisición de equipos, y tiene un monto tope. Los contratos
junto con el monto asociado son creados por los gerentes siempre que haya
fondos de capital vigentes y que el monto necesario para el contrato esté
disponible, los contratos se aprueban después de una evaluación en el consejo
de administración, y pueden ser usados hasta que el director general los
autorice. Para cada contrato se debe saber los datos de la empresa que presta
el servicio para ese contrato, los datos son: rfc, razón social, correo
electrónico, teléfono, monto de capital asociado al contrato y enlace (persona
de la empresa encargada del contrato), el enlace periódicamente envía a la
empresa solicitudes de pago donde se indica la clave del contrato, la cantidad
solicitada, la fecha y el porcentaje de avance del proyecto, la empresa
panuchos asigna a uno de sus empleados como supervisor del contrato y debe
revisar que el porcentaje de avance sea mayor que la solicitud anterior, que
aún no se haya agotado la partida de capital asociado al contrato y de ser
así, los datos se cargan al sistema para
que sea autorizados por el gerente, en todo momento se debe saber si la
solicitud ya fue aprobada o no por el gerente, en cuanto la solicitud sea
aprobada, el monto solicitado se resta de la partida de capital asociada al
contrato. La empresa desea el desarrollo
de un sistema que controle:
- Los rubros y su fondo de capital
asociado,
- Los contratos con su fecha de inicio,
fecha de final, monto tope y partida, supervisor y representante
- Las solicitudes de pago enviadas por
los enlaces de las empresas.
- Los datos de las empresas de
outsourcing como son, clave, razón social, dirección, teléfono,
representante legal y el contrato y partida al que están sujetos, así como
un supervisor de la empresa que revise y autorice la utilización de los
montos de capital en las partidas,
- Datos de los representantes legales
de las empresas como nombre teléfono, e-mail.
- Datos de los empleados
- Datos de los representantes
- Datos de las gerencias
- Se debe verificar que la suma de las
partidas no exceda los fondos de capital disponibles.
- Graficar los avances de cada proyecto
Procesos
Para autorizar los fondos de capital. El supervisor recibe las solicitudes
de capital de las compañías de outsourcing, las evalúa y carga al sistema en su
caso, los datos que la compañía debe enviar al solicitar montos de capital son:
clave de la compañía, contrato, partida, monto solicitado, destino de los
fondos. Con esos datos el supervisor lo carga al sistema en espera de que el
gerente en su módulo de acceso al sistema autorice el fondo solicitado. Una vez
que el fondo este autorizado el supervisor puede girar un cheque con la clave
de autorización que el sistema asignó y enviarlo al gerente para su firma, una
vez firmado es enviado con acuse a la empresa.
Para ingresar los contratos al sistema. Cada contrato debe tener una clave
una descripción un conjunto de entregables con sus fechas, un monto asociado,
la partida a la que se asocia, los datos de un representante y los datos de un
supervisor, como se dijo antes, el representante es un empleado de la empresa
que presta el servicio y el supervisor es un empleado de la empresa panuchos.
Ampliación del monto de capital. La empresa que presta el servicio puede
solicitar la ampliación del monto de capital asociado a su contrato para lo
cual debe indicar la fecha, las razones de la ampliación y la cantidad
solicitada, el supervisor carga los datos a la base de datos y en su momento el
gerente aprueba la ampliación del monto si existe aún dinero en el fondo de
capital para ese rubro.
Catálogos. Se debe realizar el ABC (alta, baja, cambios) de cada catálogo
tales como: Empleados, Gerencias, Montos de capital y los que se requieran.
Suscribirse a:
Entradas (Atom)