¿Cuál es la mejor manera de que debería ir sobre la creación de un programa para almacenar información en un archivo, editar la información de ese archivo y añadir nueva información

StackOverflow https://stackoverflow.com/questions/704892

Pregunta

Estoy a punto de comenzar en un pequeño proyecto que estoy tratando de hacer, donde se crea un programa en C ++ para almacenar los datos de inventario en un archivo de C (supongo que un .txt hará)

  • • Descripción de artículo • Cantidad en Mano • Comercio al por mayor al por menor costo • Costo • Fecha Añadido al Inventario

Tengo que ser capaz de:

• Añadir nuevos registros en el fichero • mostrar el archivo en el archivo • Cambie cualquier registro en el archivo

¿Hay algo que debería saber antes de empezar de esto que podría hacer esto mucho más fácil y eficiente ...

Como por ejemplo, debería tratar de utilizar XML o lo que sea demasiado difícil de trabajar a través de C ++?

nunca he entendido la manera más eficiente de hacerlo.

Al igual que habría que buscar a través del archivo y buscar cosas en soportes o algo?

editar

El datasize no debe ser demasiado grande. Es para hacer la tarea Creo que se puede decir. Quiero escribir el contenido de la struct en la ruta de un archivo, ¿cómo voy a ir haciendo eso?

¿Fue útil?

Solución

Hay muchos enfoques. ¿Es esto para hacer la tarea o para el uso real? Si es para la tarea, es probable que haya algunas restricciones en lo que puede usar.

De lo contrario, sugerir algunas DBMS incrustado son idénticas SQLite . Hay otros también, pero esto va a ser la solución más potente, y también tendrán la aplicación más fácil.

XML también es aceptable, y tiene muchas implementaciones reutilizables disponibles, pero va a empezar a perder rendimiento una vez que entra en miles de registros. Lo mismo ocurre con JSON. Y uno podría todavía Debat cuál es más simple -. JSON o XML

Otra posibilidad es crear un struct y escribir su contenido directamente en el archivo. Obtendrá difícil sin embargo, si el tamaño del registro no es constante. Y, si el formato de registro cambia, tendrá que ser reconstruido el archivo. De lo contrario, esta solución podría ser uno de los mejores en cuanto al rendimiento -. Si se aplican cuidadosamente

Otros consejos

¿Nos podría aclarar por qué no desea utilizar un motor de base de datos para que?

Si es sólo para aprender entonces .... por favor, nos dan un tamaño estimado de los datos almacenados en el archivo y el patrón de acceso (el número de usuarios, la frecuencia con que lo hacen, etc.)?

El reto será crear un eficiente código de búsqueda y modificación.

Para la búsqueda, se trata de estructuras y organización de datos. Para la modificación, es ¿cómo escribir actualizaciones en el archivo sin leerlo por completo en la memoria, la actualización de allí y luego escribir de nuevo completamente nuevo al archivo.

Si se trata de un proyecto que se utilicen efectivamente, con el potencial de tener características añadidas con el tiempo, ir a dar una solución de base de datos desde el principio, incluso si parece un exceso. He estado en este camino antes, se añaden pequeñas características con el tiempo, y antes de darse cuenta que se han puesto en práctica una base de datos. Mal. Morder la bala y utilizar una base de datos.

Si se trata de un ejercicio de aprendizaje, que depende de la cantidad de datos que desea almacenar. Si es pequeño, lo más fácil de hacer es leer el archivo en la memoria y operar en él allí. Cuando se realizan cambios, escribir todo el archivo de vuelta al disco. Si los datos son demasiado grandes como para hacer eso, la segunda mejor opción es la de haber fijado los registros de tamaño. Crear un struct POD que contiene todos los datos (es decir, no hay punteros, contenedores STL, etc). A continuación, puede volver a escribir los registros individuales, sin que sea necesario volver a escribir el archivo completo. Si ninguno de estos va a funcionar, la mejor opción es una solución de base de datos.

Si usted insiste que hacerlo manualmente, sugiero JSON en lugar de XML.

Además, considere SQLite.

Esto suena como un trabajo perfecto para SQLite . Pequeño, rápido, flexible y fácil de usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top