Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Buscamos urgentemente diseño de programa VF! ¡Sistema de gestión!

¡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

Género C carácter tipo 2

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

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

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

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.

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)

@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

@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

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>

hacer mientras kk

clea

hk=recn()

hk1=str(hk,3)

@row(),5 dice"Actualmente estás navegando por la tarjeta "+hk1+"

@row()+1,5 dice"ID de estudiante:"+ID de estudiante

@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

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