¡Buscamos urgentemente diseño de programa VF! ¡Sistema de gestión!
1. Diseño lógico
El diseño comienza con el análisis de los datos de entrada. Ciertos tipos de datos relacionados en los datos de entrada se pueden resumir en una tabla. llamados al mismo tiempo, deben cumplir con los requisitos de la asociación. Una vez diseñada la base de datos, se puede verificar su usabilidad analizando los datos de salida. Si se descubre que algunos datos de salida no se pueden derivar de los datos de entrada, se debe continuar con la recopilación de datos de los usuarios.
Este ejemplo resume una base de datos que incluye dos tablas basadas en documentos de entrada, como una tabla de información de estudiantes, una tabla de información básica del curso, una tabla de información de maestros, etc. Estas se enumeran a continuación:
( 1) Lista de estudiantes: xs (número de estudiante, nombre, sexo, fecha de nacimiento, miembro o no, número de teléfono, dirección postal, código postal, puntaje total, comentarios)
(2) Lista de cursos: kc (número de curso, nombre del curso, semestre, créditos, docente, departamento)
(3) Lista de docentes: js (número, nombre, género, educación, título profesional, cursos impartidos, información de contacto, comentarios)
La cadena de símbolos fuera de los corchetes de arriba es el nombre de la tabla, fuera de los corchetes está la tabla de nombres de campo y los campos subrayados son palabras clave asociadas. Según las necesidades del procesamiento de datos del sistema, la asociación de estas tablas es. se muestra en la Figura 1.1.
En la figura, se utiliza un cuadro rectangular para representar la tabla. Las dos tablas que deben asociarse están conectadas por un segmento de línea. La palabra clave de asociación está marcada en un extremo de la línea. se deberá establecer un índice en la tabla de este extremo.
Profesor
Número de horas cursos
Logro de los estudiantes
Figura 1.1 Diseño de asociación entre tablas
① Al mismo tiempo, para llamar datos en diferentes tablas, deben estar relacionados, por lo que a veces se deben agregar campos a las tablas.
② El diseño de la base de datos debe prestar atención a la racionalidad. Si se colocan diferentes tipos de datos en la misma tabla, puede producirse un exceso de datos. La división de tablas a menudo puede reducir la redundancia de datos, pero un aumento en el número de tablas aumentará la complejidad del programa, porque estas tablas deben abrirse en diferentes espacios de trabajo y las tablas deben estar relacionadas para lograr la unión de datos.
1. Diseño físico
La estructura y los índices necesarios de todas las tablas en el sistema de gestión del estado de los estudiantes se enumeran a continuación para facilitar que los lectores comprendan este sistema de ejemplo. Algunas de las tablas también se enumeran; consulte xs, kc, js para obtener más detalles.
1. Lista de estudiantes (XS.DBF)
Nombre de campo tipo ancho nombre de campo decimales
Número de estudiante Tipo de carácter C 4 número de estudiante
Nombre C carácter tipo 8 nombre
Género C carácter tipo 2 género
Fecha de nacimiento D fecha tipo 8 fecha de nacimiento
Si es miembro del grupo o no L tipo lógico 1 ya sea miembro del partido o no
Número de teléfono C carácter tipo 16 número de teléfono
Dirección de correspondencia C carácter tipo 30 dirección de correspondencia
Código postal C carácter tipo 6 código postal
p>Puntuación total N Tipo numérico 6 Puntuación total 2
Observaciones M Tipo de observación Observaciones
2. (KC.DBF)
Índice de ancho del tipo de nombre de campo
Número de curso tipo de carácter C 8V
Nombre del curso tipo de carácter C 30
Semestre C carácter tipo 2
Horas de crédito D fecha tipo 2
Profesor C carácter tipo 30
Departamento C carácter tipo 30
3 Hoja de profesor (JS.DBF)
Índice de ancho de tipo de nombre de campo
Número C tipo de carácter 4V
Nombre C tipo de carácter 8
Título profesional D fecha tipo 20
Educación L lógica tipo 10
Cursos impartidos C carácter tipo 50
Información de contacto Tipo de carácter C 30
Observación M Tipo de observación
El entorno operativo del sistema de gestión del estado de los estudiantes es Windows 9x/Me/2000/XP+Microsoft Visual FoxPro 6.0.
El diseño específico del sistema de gestión del estado de los estudiantes es el siguiente:
1. El programa principal del sistema de gestión del estado de los estudiantes (A:\main.prg)
.Función: Proveedor La interfaz principal y la interfaz para ingresar a cada módulo funcional del sistema incluyen un programa de palabras voladoras que se desplaza de derecha a izquierda.
Programa fuente:
desactivar conversación &&cerrar diálogo persona-computadora
desactivar escape &&configurar la tecla ESC escape no funciona, es decir, presionar la tecla por error no funciona Terminará la ejecución del programa
borrar todo &&limpiar la pantalla
establecer colo en 0/7,7/0 &&establecer el color predeterminado del sistema VFP
borrar && Borrar pantalla
@4,42 borrar a 30,92
establecer color en 7+/ && producir caracteres blancos desde la fila 4, columna 42 a fila 30, columna 92 Bloque de color de fondo negro
@4,42 claro a 30,92 &&mostrar bloque de color
@3,40 claro a 29,90
establezca colo en 7+/4 &&De la fila 3, columna 40 a la fila 29, columna 90, se produce un bloque de color con texto blanco y fondo negro
@3,40 claro a 29,90 &&mostrar bloque de color
@4,42,28,88 box space(9) &&Generar estructura alámbrica desde la cuarta fila y la 42.ª columna en la esquina superior izquierda hasta la 28.ª fila y la 88.ª columna en la esquina inferior derecha
@7,52 say '==Sistema de gestión del estado del estudiante==' &&Muestre las palabras Sistema de gestión del estado del estudiante en la fila 7, columna 52
@8,50 say'--- --------- ------------------' &&Mostrar la línea divisoria en la fila 8 y la columna 50
@9,57 say '==1. Ingrese datos ==' &&Muestra 1. Ingrese datos en la fila 9 y la columna 57
@11,57 say'==2. 57. Modificar la palabra de datos
@13,57 say'==3. Consultar datos==' &&Mostrar la palabra 3. Consultar datos en la fila 13, columna 57
@15 ,57 say'==4.Datos estadísticos==' &&Mostrar 4.Datos estadísticos en la fila 15, columna 57
@17,57 say'==5.Mostrar datos==' && Línea 17, la columna 57 muestra las palabras 5. Imprimir datos
@19,57 say'==6. Eliminar datos==' && Muestra las palabras 6. Salir de los datos en la línea 19, columna 57
@21,57 say'==7.Exit==' &&Mostrar las palabras 7.Salir en la fila 21 y columna 57
x=1 &&Establecer valor inicial x=1 p>
b1="◆Bienvenido a utilizar el sistema de gestión del estado de los estudiantes, presione cualquier tecla para continuar◆Desarrollado por Wu Tianmei, Tan Maoyan, Yuan Yao, Wang Hongmei y Zeng Ling del Instituto de Tecnología de Chongqing.
&&Asigna la cadena a la variable b1
do while.t. &&Cuando la condición es verdadera, la computadora hace la siguiente declaración
hz1=substr(b1,x,29) &&Obtiene el carácter La cadena b1 se asigna desde el carácter 1 al 29 a la variable hz1
@25,51 digamos hz1 &&muestra la cadena hz1 en la línea 25 y la columna 51
bb= inkey( 0.6) &&Asignar la función inkey que espera 0.6 segundos por pulsaciones de teclas a bb
si bb<>0 &&La variable bb no es igual a 0, es decir, se produce una pulsación
salir &&Luego, no muestre la cadena
endi &&Emparejado con la declaración de juicio condicional if
x=x+2 &&Agregue 2 al valor de la variable x y asígnelo a x
if x>83 &&Si la variable x tiene más de 83 caracteres
x=1 &&Luego, asigna 1 a la variable x, es decir, muestra la cadena desde el principio
endi && Emparejado con sentencia de juicio condicional if
endd && Emparejado con sentencia de bucle do while
@27,51 say 'Por favor seleccione 1--7:' && en la línea 27 51 visualizaciones de columnas, seleccione 1-7:
esperar ' ' para k &&La computadora espera a que el usuario ingrese un carácter desde el teclado a la variable k
do case &&realizar una declaración de selección
caso k='1' &&Cuando el valor de la variable k es igual a 1
haga a:\input &&La computadora salta a una:\input subrutina
case k='2' &&Cuando el valor de la variable k es igual a 2
haga a:\modify &&La computadora salta a una:\modify subrutina
case k='3 ' &&Cuando el valor de la variable k es igual a 3
hace un:\search &&La computadora salta a una:\subrutina de búsqueda
case k='4' &&Cuando el valor de la variable k Cuando el valor es igual a 4
haga a:\total &&La computadora salta a la subrutina a:\total
caso k='5' &&Cuando el valor de la variable k es igual a 5
hacer a:\dp &&La computadora salta a la subrutina a:\dp
caso k='6' &&Cuando el valor de la variable k es igual a 6 p>
hacer a:\del &&La computadora salta a una subrutina:\del
caso k='7' &&Cuando el valor de la variable k es igual a 7
set colo a 0 /7,7/0 &&Establecer el color predeterminado del sistema VFP
borrar &&Borrar la pantalla
retu &&Volver al programa principal de VFP
endcase &&Seleccione con do case Declaración coincidente
2. Configuración del entorno
Nombre del programa: SE.
TTING.PRG
desactivar el menú del sistema
configurar el menú del sistema en
desactivar la barra de estado
desactivar la conversación
desactivar notificación
establecer estado del reloj
desactivar paleta
activar campana desactivar seguridad
activar escape
establecer keycomp en Windows
establecer continuar
establecer confirmación en
establecer exacto en
establecer cerca de
p>desactivar ansi
activar bloqueo
activar exclusivo
activar bloqueos múltiples
activar eliminación
p>establecer optimización en
establecer actualización en 0,5
establecer intercalar en 'stroke'
establecer valor predeterminado en sys(5)+curdir ()
establecer ruta a sys(5)+curdir()
desactivar sysformats
activar segundos
desactivar siglo
establecer moneda restante
establecer moneda en 'nt$'
establecer horas en 12
establecer fecha en EE.UU.
establecer decimales en 2
establecer fdow en 1
establecer fweek en 1
establecer marca en '.'
Establecer separador en '."
Establezca el punto en '.'
Restauración del entorno
Nombre del programa: RESET.PRG
establezca el menú del sistema en el valor predeterminado
activar el menú del sistema
activar la conversación
activar la notificación
activar exclusivo
activar la seguridad
Pantalla de ventana de modificación
3. Configuración de la función de contraseña
Las funciones de contraseña incluyen ingresar contraseñas, cambiar contraseñas, agregar usuarios y eliminar usuarios. Sólo cuando el usuario ingresa correctamente su contraseña podrá ingresar al sistema, y solo se permitirá cambiar su propia contraseña. Sólo los administradores de la organización tienen autoridad para agregar y eliminar usuarios. Para ello se establecen niveles de usuario, que también son fijados por el supervisor. Los diferentes niveles de usuario tienen diferentes permisos. Si el nivel de usuario es 4, solo se pueden realizar operaciones de salida de archivos.
(1) Ideas de diseño:
(1) Crear una base de datos: biblioteca de contraseñas,
(2) Y crear la tabla checker.dbf,
p >
(3) Los nombres de los campos son Cpassword (contraseña), Nombre (nombre de usuario legal) y Rango (nivel de autoridad).
(2) Diseño del formulario de ingreso de contraseña:
<1>Seleccione un usuario legal a través del cuadro combinado y escriba el código en su evento Interactivechange para ingresar el texto de la contraseña. El cuadro obtiene el foco (permite la entrada de valores). Este evento ocurre cuando el valor del control cambia.
<2>Programe en el evento de clic del botón "Aceptar", primero busque el nombre de usuario en la tabla (use la instrucción de localización) y luego juzgue la contraseña juzgando si la contraseña ingresada es igual al valor correspondiente en la base de datos. ¿Es correcto? Si hay un error, puede volver a ingresar, pero configure la variable local I para acumular el número de entradas. Puede configurarla para que ingrese solo tres veces. Cuando I sea mayor que 3, el formulario se liberará. Y aparece un cuadro de mensaje que indica que no se puede ingresar al sistema. Hay una variable global yhdj en el programa principal. Si la contraseña ingresada es correcta, a yhdj se le asigna el valor del campo de nivel de usuario.
<3>Agregue una etiqueta "Descripción" para explicar las reglas para ingresar la contraseña. Para aumentar la estética, puede utilizar el control Active X Three Frame Control.
<4>El método para agregar controles Active X es el mismo que para agregar clases personalizadas.
<5>Agregue etiquetas para formar un cuadro de descripción.
<6>Si desea que aparezca un cuadro de aviso cuando el mouse permanece en el botón durante un segundo, puede establecer la propiedad Mostrar sugerencias del formulario en .T. y la propiedad Texto de información sobre herramientas de el botón que se mostrará en el cuadro de mensaje.
<7>Si desea que el mouse cambie de forma cuando está sobre el botón, puede configurar el atributo Puntero del mouse del botón en: 99-custom y el atributo Icono del mouse en el ícono. archivo que desea que aparezca.
(3) Diseño del formulario de contraseña
<1>La parte de modificación de contraseña es la misma que el formulario anterior Sólo cuando la contraseña es correcta se puede ingresar una nueva contraseña o. Ingrese al sistema: Si el nivel de usuario es superior, también puede ingresar al formulario para agregar y eliminar usuarios. Estos se programan en el evento Lostfocus del cuadro de texto de ingreso de contraseña. Este evento ocurre cuando el cuadro de texto pierde el foco.
<2>Después de ingresar la nueva contraseña, verifique que la contraseña no pueda estar vacía. Esto se implementa mediante programación en el evento Lostfocus del cuadro de texto.
<3>También se configura un cuadro de confirmación de contraseña para evitar errores de entrada accidentales. Permitir que el usuario vuelva a ingresar cuando la contraseña ingresada sea diferente de la contraseña confirmada. Estos se resuelven mediante programación en el evento Click del botón "OK". Si no hay errores, haga clic en el botón "Aceptar" y reemplace la contraseña original con la declaración reemplazar...con. Para configurar el entorno del búfer, puede modificar o dejar de cambiar la contraseña mediante las funciones tableupdate() y tablerevert() antes mencionadas.
(4) Diseño del formulario de configuración de contraseña
El diseño del formulario de configuración de contraseña, incluida la adición y eliminación de usuarios.
<1>Utilice marcos de página para completar estas dos tareas respectivamente. Una página agrega usuarios y otra página los elimina.
<2>Al agregar usuarios, no se usa el búfer, sino que se usan skip-1 y ship. Esto también puede almacenar los resultados directamente en la tabla correspondiente.
4. Configuración de permisos:
En cuanto a los permisos de usuario, las variables globales se configuran en el programa principal y se les asignan valores en los formularios de entrada y modificación de contraseña. en las operaciones de formulario, solo necesita juzgar su valor para completar la configuración de permisos. También existe la necesidad de restricciones en el menú, lo que también se logra mediante el valor de esta variable global y el uso del elemento de omisión del menú. Los detalles se introducirán en el diseño del menú.
5. Subrutina del módulo de entrada (A:\input.prg)
Función: Proporciona una interfaz de entrada de datos estilo tarjeta.
Programa fuente: desactive la conversación
use a:\xj && abra un archivo de base de datos:\xj.dbf
vaya al fondo && mueva el puntero del registro al final de la base de datos
saltar &&saltar al siguiente registro
hk=recn() &&asignar el número de registro actual a la variable hk
hk1=str(hk , 3) &&Convierta los primeros tres dígitos del valor hk de la variable de un valor numérico a una cadena y asígnelo a hk1
c1=.t &&Asigne la variable lógica "verdadero" a la variable c1
do while c1 &&Cuando la condición es verdadera, la computadora hace la siguiente declaración
a1=spac(2) &&Asigna 2 espacios a la variable a1
a2=spac( 6 ) &&Asignar 6 espacios a la variable a2
a3=spac(2) &&Asignar 2 espacios a la variable a3
a4=spac(8) &&Asignar 8 espacios Asignar a la variable a4
a5=spac(2) &&Asigna 2 espacios a a5
a6=spac(8) &&Asigna 8 espacios a a6
a7=spac(30) &&Asigna 30 espacios a a7
a8=spac(6) &&Asigne 6 espacios a a8
a9=spac(6 ) &&Asigne 6 espacios a a9
a10=spac(50) &&Asignar 50 espacios a a10
kk=.t. && Establecer la variable lógica como "verdadero" Asignar a la variable kk
hacer mientras kk &&Cuando la condición es verdadera, la computadora hace lo siguiente declaración
clea &&Borrar la pantalla
@1,5 diga "Ingrese la primera tarjeta "+hk1+"" &&Muestra las palabras para ingresar la tarjeta "+hk1+" en la primera fila y Quinta columna, donde hk1 es el reemplazo de la macro
hk=hk+1 &&El valor de la variable hk Suma 1
hk1=str(hk,3) &&Toma 3 dígitos del valor de la variable hk y asígnela a hk1
@row()+1,5 diga "Número de estudiante:" obtenga a1 &&Muestre el número de estudiante en la columna 5 de la siguiente fila
@row (),40 dice"Nombre:" obtiene a2 &&Mostrar nombre en la columna 40 de la fila actual
@row()+1,5 dice"Género:"obtiene a3 &&Mostrar género en la columna 5 de la siguiente fila de la fila actual
@row()+1,5 dice"Año de nacimiento Mes (DD/MM/AA): "obtener a4 && Muestra el año y el mes de nacimiento en la quinta columna de la siguiente fila de la fila actual
@row()+1,40 dice" Si el miembro del grupo: "obtiene a5
@row()+1,40 dice "Dirección de correspondencia: " get a7 &&Mostrar la dirección de correspondencia en la columna 5 de la siguiente fila de la fila actual
@row()+1, 5 say"Código postal:"get a8 &&
amp;Muestre el código postal en la quinta columna de la siguiente fila de la fila actual
@row()+1,5 diga "Puntuación total:" obtenga a9 &&Muestre la puntuación total en la columna 40 de la fila actual
@row()+1,5 dice "Observaciones: "obtener a10 &&Mostrar los comentarios en la columna 5 de la siguiente fila de la fila actual
leer &&Leer el teclado memoria de entrada
y="y" &&Asigne el carácter y a la variable y
@12,5 diga "¿La entrada es correcta? (Y/N)" obtenga y &&en el día 12 El 5 La columna de la fila muestra las palabras "¿Es correcta la entrada?"
lee && y lee el y o n ingresado en la memoria
si y="Y".or.y ="y" && Si el valor de la variable y es Y mayúscula o y minúscula
kk=.f &&, entonces asigne un no lógico a la variable kk
endif && coincide si
enddo && coincidencias do while
appe blan &&agregar nuevo registro al registro en blanco
reemplazar número de estudiante con a1, nombre con a2, género con a3, año de nacimiento Mes con ctod(a4), si el miembro del grupo está en a5
reemplace el número de teléfono con val(a6), la dirección postal con val(a7), el código postal con val(a8), la puntuación total con a9, comentarios con a10 && Reemplace la entrada del teclado en el campo correspondiente
y=" " &&Asigne un espacio a la variable y
clea
@14,5 say "¿Quieres continuar ingresando? (s/n) "obtiene y && muestra el mensaje "Continuar ingresando" en la línea 14 y la columna 5
lee && y lee el y o n ingresado en la memoria p>
if y="N".or.y="n" &&Si el valor de la variable y es N mayúscula o n minúscula
kk=.f &&Luego, asigne un no lógico a la variable. kk
exit && sale de la interfaz de entrada
endif &&matches if
enddo &&matches do while
clear && borra la pantalla
hacer a:\main &&ejecutar A:\main.prg programa principal
6. Modificar la subrutina del módulo (A:\modify.prg)
Función: Proporcionar Función de modificación de datos estilo tarjeta.
Programa fuente: desactivar la conversación
desactivar el delimitador
usar a:\xj &&abrir el archivo de base de datos A:\xj.dbf
kk=.t.
hacer mientras kk
borrar
ir arriba
yy=espacio(2)
@4,20 diga "Ingrese su ID de estudiante" obtenga yy
leer
ubique todo para ID de estudiante=yy
if eof()
@5,5 say" "
espera"¡Este registro no existe! ¡Presiona cualquier tecla para regresar!"
y="y"
clea
@6,5 diga "¿Continuar modificando? (S/N)" obtenga y
lectura
si y= "Y ".or.y="y"
bucle
endi
limpia
hacer a:\main
retu
endi
clea
kk=.t.
hacer mientras kk
borrar
@row()+1,1 decir "ID de estudiante:" obtener ID de estudiante
@row(),40 decir "Nombre:" obtener nombre
@row()+1,1 dice "Género:" obtiene género
@row()+1,1 dice "Fecha de nacimiento:" obtiene fecha de nacimiento
@row (),60 dice "Si es miembro:" obtiene si es miembro
@row()+1,1 dice "Número de teléfono:" obtiene el número de teléfono
@row()+1,25 dice"Dirección de correspondencia:" obtiene Dirección de correspondencia
@row(),25 dice"Código postal:" obtiene Código postal
@row() +1,1 decir "Puntuación total: " obtener puntuación total
@row(),60 decir "Observaciones (haga doble clic en el cuadro de texto para ingresar contenido): " obtener observación
leer
y=" "
@9,15 decir"¿Es correcta la modificación? (Y/N)" obtiene y
lectura
if y="y".or.y="Y"
kk=.f.
else
bucle
endi
enddo
clear
y=""
@5,15 dice "¿Continuar modificando? (Y/N)" obtiene y
lectura
if y="n".or.y="N"
kk=.f.
endif
enddo
clea
do a:\main
7. \search.prg)
Función: proporciona tres funciones de consulta de datos de submódulo: recuperación por número de estudiante, recuperación por nombre, recuperación por número y nombre de estudiante, y recuperación por número, nombre y género de estudiante. p>
Las funciones de los botones en el formulario incluyen: ingresar condiciones de consulta, consultar, mostrar condiciones de consulta, borrar condiciones de consulta, vista previa de impresión, imprimir y darse por vencido Inicialmente, botones distintos de ingresar condiciones de consulta, mostrar condiciones de consulta y. renunciar no están disponibles. Cuando se hace clic en el botón "Ingresar condiciones de consulta", los campos en la unidad de formulario están vacíos y el usuario puede ingresar cualquier condición conocida como condición de consulta. Si hace clic en Consulta, los resultados de la consulta se mostrarán en la página de exploración elemento por elemento del formulario. Al mismo tiempo, esta página también muestra cuántos registros se consultaron y el botón mover registro para ver los registros uno por uno. uno.
El botón Mostrar condiciones de consulta puede ver las condiciones ingresadas en esta consulta; el botón Borrar condiciones de consulta puede borrar las condiciones de esta consulta para la siguiente consulta; el botón Imprimir generará los resultados de esta consulta; impresora; el botón Renunciar Luego abandone esta consulta y libere esta unidad de tabla.
Para facilitar la visualización, también puede ver todos los registros consultados al mismo tiempo en la página de exploración del formulario y puede configurar si desea mostrar este campo al navegar en la página de configuración del campo de exploración.
Ideas de diseño:
(1) Utilice operaciones de arrastrar y soltar para formar objetos de etiqueta.
(2) Etiquetar objetos y objetos de cuadro de texto.
(3) Iniciar una transacción mediante el comando BEGIN TRANSACTION,
(4) Finalizar la transacción mediante el comando ROLLBACK,
(5) y Varios cambios hechos a la mesa se almacenan.
(6) Agregue un nuevo registro para almacenar las condiciones de la consulta,
(7) y cree una nueva condición de análisis de proceso, que devuelve una expresión en forma de "el valor ingresado en el nombre del campo" ". Luego use una instrucción de bucle en el evento Click del botón de consulta para determinar en qué campo se ingresó el valor y conecte todas las piezas de repuesto de entrada con AND como expresión para filtrar registros usando el comando SET FILTER TO y el contenido de FOR Declaración para calcular el número de registros.
(8) El carácter de sustitución de macro "&" se utiliza tanto en la instrucción SET FILTER TO como en la instrucción COUNT para calcular el número de registros. La sustitución de macro es muy útil al escribir código. de una variable. Se utiliza en el procesamiento en tiempo real.
(9) Para mostrar los campos que seleccionó en el formulario de navegación de Wa (Grid), primero cree un marco de página (Pageframe) y coloque las etiquetas y cuadros de texto formados al arrastrar y soltar. operaciones anteriores En una página de "Examinar elemento por elemento", luego cree una casilla de verificación para cada nombre de campo y colóquela en la página "Examinar configuración de campo" del marco de la página. Una casilla de verificación significa que está seleccionada y no está marcada. casilla significa que no está seleccionado. El estado predeterminado es seleccionar todo (todo marcado). Después de hacer clic, elimine la marca para indicar que no hay selección. Para la reflexión dinámica,
(10) establece un almacenamiento de matriz de variables global. Y cuando la página "Exploración global" esté activada, simplemente asigne el encabezado1.Caption y Controlsouce de cada columna de la tabla a los valores de la matriz.
Programa fuente: desactivar la conversación
desactivar el delimitador
desactivar la seguridad y no solicitar sobrescritura al reconstruir el índice
use a: \ xj
inde en el número de estudiante a:\xh &&Crear archivo de índice xh.idx según el número de estudiante
inde en el número de estudiante+nombre a:\xhxm &&por número de estudiante Crear un archivo de índice xhxm.idx por nombre
inde en nombre a:\xm &&Crea un archivo de índice xm.idx por nombre
stor.t.to c
hacer mientras c
borrar
texto
Menú de búsqueda
0---Salir del sistema de búsqueda
1---Buscar por número de estudiante
2---Buscar por nombre
3---Buscar por número de estudiante y nombre
4- - -Buscar por ID de estudiante, nombre, género
endt
dd=1
@row()+1,17 diga "Ingrese el número de función" obtener dd pict "9" sonó 0,4
leer
hacer caso
caso dd=0
claro
hacer a:\main
retu
case dd=1
clear
n1=spac(2) p>
@4,20 diga "Por favor ingrese su número de estudiante" obtenga n1
leer
use a:\xj inde a:\xh &&abra el archivo de base de datos xj. dbf Y abra el archivo de índice xh.idx creado por el número de estudiante
busque &n1 &&busque la cadena n1, & es un reemplazo de macro
caso dd=2
Borrar
n2=spac(6)
@4,10 diga "Por favor ingrese su nombre" obtenga n2
lea
use un : \xj inde a:\xm
buscar &n2
caso dd=3
borrar
n1=spac(2)< / p>
n2=spac(6)
@4,10 diga "Ingrese su número de estudiante" obtenga n1
@5,10 diga "Ingrese su nombre " obtener n2
leer
usar a:\xj inde a:\xhxm
n4=n1+n2
buscar &n4
caso dd=4
claro
n1=spac(2)
n2=spac(6)
n3= spac(2)
@3,10 diga"Ingrese el número de estudiante:" obtenga n1
@4,10 diga"Nombre:" obtenga n2
@5,10 diga "Género:" obtenga n3
leer
ubicación para ID de estudiante=n1.and.Name=n2.and.Gender=n3 &&La condición de búsqueda es ID de estudiante Un registro de n1 con nombre n2 y género n3
other
retu
Endc
if eof() &&if to fin del archivo
cl
oído
espera'¡Lo siento! Extraviado. ¡Presione cualquier tecla para regresar! '
bucle
endif
cc=.t.
y=" "
hacer mientras cc
configurar devi en scre &&configurar caracteres de visualización de pantalla
clea
@row(),5 diga "ID de estudiante:"+ID de estudiante
@row(),40 say"Nombre:"+Nombre
@row()+1,5 say"Género:"+Género
@row()+ 1 ,5 decir "fecha de nacimiento:"+dtoc(fecha de nacimiento)
@row()+1,40 decir"si es miembro del grupo:"+si es miembro del grupo p>
@row()+1,5 say"Teléfono:"+Teléfono
@row(),40 say"Dirección de correspondencia:"+Dirección de correspondencia
@ fila()+1,5 dice"Código postal:"+Código postal
@fila()+1,5 dice"Puntuación total:"+Puntuación total
@fila()+ 1,5 dice"Observaciones: "+Observaciones
@20,20 dice "Presiona N si no quieres continuar buscando, de lo contrario presiona cualquier tecla" obtén y
leer
si y="N". or.y="n"
borrar
stor.f.to cc
bucle
else
Endif
if.not.eof()
bucle
Endif
stor.f.to cc
Enddo
stor.f.to c
Enddo
uso
do a:\main
8. Subrutina del módulo de estadísticas (A:\total.prg)
Función: Proporciona funciones para contar el número de personas, puntuaciones promedio y miembros del grupo. .
Programa fuente: desactiva la conversación
usa un:
dd=0
stor.t.to c
hacer mientras c
borrar
texto
Menú de estadísticas
0---Salir del sistema de estadísticas
1---Estadísticas sobre el número de personas
2---Estadísticas sobre puntuaciones medias
3---Estadísticas sobre el número de miembros del partido
endt
dd=1
@row()+1,17 dice "Ingrese el número de función" obtenga dd pict "9" sonó 0,3
leer
hacer caso
caso dd=0
borrar
hacer un:
case dd=1
borrar
contar a aa &&Calcular el número de registros y asignar el valor a aa
@4,20 decir "Número total de personas :" aa &&Mostrar el valor de la variable aa
a=' '
@7,20 dice "¡Presiona cualquier tecla para regresar!"
leer p>
if a=''
bucle
endi
caso dd=2
borrar
promediar el puntaje total a aa && promediar el puntaje total y combinar Asigne el promedio a las variables aa
@4,20 diga "Encontrar el puntaje promedio total:" aa
a =' '
@9,20 di "¡Presiona cualquier tecla para regresar!"
leer
if a=''
bucle
endi
caso dd=3
borrar
cuenta para determinar si los miembros="sí" aaa &&cuentan el número de participantes miembros y asigne el valor a aa
@4,20 diga "El número de miembros es: " aa
a=' '
@9,20 diga "¡Presione cualquier tecla para regresar!"
lea
if a=''
bucle
endi
endc
return
endd
9. Mostrar subrutina del módulo (A:\dp.prg)
Función: Proporcionar tarjeta -Función de registro de visualización de estilo.
Programa fuente: desactiva la conversación
configura devi en scre
usa a:\xj
kk=.t. p>
p>
hacer mientras kk
clea
hk=recn()
hk1=str(hk,3) p>
@row(),5 dice"Actualmente estás navegando por la tarjeta "+hk1+"
@row()+1,5 dice"ID de estudiante:"+ID de estudiante p>
@row()+1,5 dice"Nombre:"+Nombre
@row()+1,5 dice"Género:"+Género
@ fila() +1,5 dice "fecha de nacimiento:"+dtoc(fecha de nacimiento)
@row(),40 dice"si es miembro del grupo:"+si es miembro del grupo
@row( )+1,5 say"Teléfono:"+Teléfono
@row()+1,40 say"Dirección de correspondencia:"+Dirección de correspondencia
@row()+1, 5 dice"Código postal:"+Código postal
@row()+1,5 dice"Puntuación total:"+Puntuación total
@row()+1,5 say"Observaciones: "+Observaciones
espera 'Presiona la tecla n para explorar el siguiente registro, presiona la tecla l para explorar el registro anterior y presiona la tecla y para volver al programa principal! ' to k
do case
case k='n'
if eof() &&si se ha llegado al final del archivo
ir arriba &&Mover el puntero del registro del archivo al primer registro del registro del archivo
else
omitir &&De lo contrario, saltar al siguiente registro
endi p>
hk=hk+1
case k='l'
si bof() &&si ha llegado al principio del archivo
go bott &&graba el archivo Mueve el puntero al último registro del registro del archivo
else
skip -1 && De lo contrario, salta al registro anterior
endi
hk=hk-1
caso k='y'
borrar
hacer a:\main
kk=.f.
endc
endd
10. Eliminar subrutina del módulo (A:\del.prg)
Función: Proporcionar lógica y física. Funcionalidad eliminada.
Programa fuente: desactiva la conversación
configura devi en scre
usa a:\xj
yy=" "
yn=" "
de=spac(2)
clear
@4,20 say" Ingrese el número de estudiante para eliminar el registrar " get de
read
loca all for Student ID=de
if eof()
esperar" No se encontró dicha tarjeta ! Pulsa la tecla Enter para salir "
clear
do a:\xj
retu
endi
if.not.eof()
clea
hk=recn()
hk1=str(hk,3)
@ fila(),5 dice"Actualmente estás navegando por la tarjeta "+hk1+"
@row()+1,5 dice"ID de estudiante:"+ID de estudiante
@row()+1,5 say"Nombre:"+Nombre
@row()+1,5 say"Género:"+Género
@row()+ 1,5 decir "fecha de nacimiento:"+dtoc(fecha de nacimiento)
@row(),40 decir"si es miembro del grupo:"+si es miembro del grupo
@row() +1,5 say"Teléfono:"+Teléfono
@row(),40 say"Dirección de correspondencia:"+Dirección de correspondencia
@row ()+1,5 say" Código postal: "+Código postal
@row()+1,5 say"Puntuación total: "+Puntuación total
@row() +1,5 dice"Observaciones: "+ Comentarios
endif
@13,20 dice "¿Es este el registro? (Y/N)" obtiene yn
leer
si yn="n".or.yn="N"
clea
hacer a:\xj
retu
endi
if yn="y"
@14,20 di "¿Realmente quieres eliminarlo? (Y/N)" get yy
read
if yy="y".or.yy="Y"
eliminar &&Eliminar el registro actual (eliminación lógica, pero no real) eliminar el registro del archivo actual de VFP)
endif
endi
borrar
stor " " a y
@15,15 dice" registros eliminados del disco ¿Borrar completamente? (Y/N)" obtiene y
leer
si y="y".or.y="Y"
empaquetar &&realmente eliminar el registro actual (eliminación física)
endif
clea
do a:\xj