Convertissez le fichier dbf en XML. Ouverture et conversion d'un fichier DBF en EXCEL

Vous aurez probablement souvent besoin de convertir un XML fichier ou un dossier avec XML fichiers en un ou plusieurs DBF fichiers. Le problème est que le XML Sa structure, sa hiérarchie et ses niveaux d'imbrication diffèrent d'un fichier à l'autre. Dans cet article, nous examinerons en détail comment importer un XML fichier de TOUTE structure dans un appartement DBF tableau.

Une nouvelle fonctionnalité appelée Importer du XML personnalisé a été mis en œuvre dans Commandant DBF Professionnel version 2.7 (version 40). Cette commande est disponible via l'interface de ligne de commande. La syntaxe est la suivante :

dbfcommander.exe -icx [<-attr>]

Comme vous pouvez le voir, il y a quatre paramètres :

  • -icx- moyens Importer du XML personnalisé.
  • – le nom complet du fichier (y compris le chemin), ou le nom du dossier contenant le XML fichiers à importer. Vous pouvez également charger certains fichiers uniquement en utilisant un masque, par ex. " D:\xml\some_prefix_*.xml". Dans ce cas, seuls les fichiers dont l'extension est XML et dont le nom commence par " un préfixe_un"sera converti en DBF. Si vous souhaitez convertir tous les fichiers du dossier, utilisez le masque suivant : " D:\xml\*.xml".
  • – le dossier de destination, par ex. " D:\dbf\". Dans ce cas, tous existants DBF les fichiers seront réécrits. Si vous souhaitez importer la source XML fichiers en un seul DBF fichier, utilisez le nom exact du fichier, par ex. " D:\dbf\result.dbf". Mais dans ce cas, le fichier résultant doit être créé avant le début du processus de conversion, sinon une erreur se produira. Si un seul DBF Le fichier est utilisé pour les données résultantes, il ne sera pas réécrit et chaque nouvel enregistrement sera inséré dans le même déposer.
  • – le nom complet du soi-disant " fichier de carte", ce qui est simple DBF fichier contenant la définition des champs du fichier source et résultant. Ci-dessous, nous examinerons le processus de création d'un fichier map.
  • <-attr> - utilisez ce paramètre si vous souhaitez importer des balises avec certains attributs.

Définition des champs DBF, ou Comment créer un fichier map

Il est toujours préférable d'apprendre quelque chose en utilisant un exemple. Dans notre situation, nous avons besoin de connaissances bien connues XML. Prenons un Flux d'actualités RSS XML fichier (disponible):

Comme vous pouvez le constater, il y en a quatre<article> éléments imbriqués dans le<canal> élément, lui-même imbriqué dans le niveau supérieur<rss> élément. Il y aégalement des éléments du même niveau d'imbrication que le<article>éléments :<générateur>, <titre>, <description>, etc.

Supposons que chacun<article> l'élément doit être représenté sous la forme d'une seule ligne dans le résultat DBF déposer. Notre fichier contiendra donc quatre enregistrements.

Pour créer un fichier map, créons d'abord le résultat DBF déposer. Nous en avons besoin car nous pourrons alors créer un fichier map en quelques clics. Commandant DBF Professionnel, cliquez Fichier -> Nouveau, et créez un DBF déposer. Dans le cas du RSS-XML fichier, la structure est la suivante :

Cliquez D'ACCORD. Le DBF sera créé, et il pourra désormais être utilisé comme fichier résultant pour notre importation à partir du XML processus. Vous pouvez utiliser tous les types de champs disponibles : Personnage, Entier, Numérique, Date, etc.

Pour créer un fichier map basé sur le fichier résultant, cliquez sur le bouton Structure des exportations bouton outil (voir l’image ci-dessus). Lorsque la boîte de dialogue Enregistrer s'ouvre, choisissez le chemin et le nom du fichier, puis enregistrez la structure en tant que fichier. DBF déposer.

Faire correspondre les balises XML aux champs DBF

Il nous reste encore une chose à faire : définir le XML balises qui doivent être insérées dans les champs du résultat DBF déposer.

Ouvrez le DBF fichier que vous venez de sauvegarder. Cliquez sur Fichier -> Structure et ajoutez un nouveau champ nommé " nom de balise xml"de la Personnage taper. Vous pouvez ajouter plus de champs dans le fichier map si vous le souhaitez. Par exemple, ajoutons un champ nommé " commentaire". Cliquez D'ACCORD pour enregistrer les modifications.

Maintenant, remplissez chaque ligne de le nouveau "nom de balise xml" champ avec le XML chemin des nœuds (séparés par " -> ") qui doit être inséré dans le champ correspondant dans le DBF déposer:

Cela signifie que la valeur du XML nœud<titre> imbriqué dans le<canal> nœud, qui est imbriqué dans le niveau supérieur<rss>, sera inséré dans le " titre" champ ; le XMLétiqueter " rss -> chaîne -> description"sera inséré dans le" desc" champ, et ainsi de suite.

En cas d'utilisation de " -attr", les chemins du fichier map doivent également contenir les attributs correspondants, par exemple : " rss version="2.0" -> chaîne -> titre".

Faites attention au " article_desc" champ. Le XMLétiqueter " rss -> canal -> article -> description" contient le Section CDATA avec HTML balisage. Son chemin de balise doit donc se terminer par le " #section-cdata" chaîne.

La dernière ligne que vous pouvez voir sur l'image ci-dessus est ce qu'on appelle " balise de ligne". Ce chemin de balise permet Commandant de la DBF savoir lequel XML la balise doit être utilisée comme nouvelle ligne dans le résultat DBF déposer. Dans notre cas, c'est " rss -> canal -> élément".

Notez que la valeur du " nom" doit être vide pour l'enregistrement contenant la balise de ligne, afin que le programme puisse reconnaître la balise de ligne.

Eh bien, c'est tout. Nous pouvons maintenant exécuter l'importation depuis. XMLà DBF lui-même. Exécutez la commande suivante depuis la ligne de commande ou depuis un BATTE déposer:

dbfcommander.exe -icx "D:\xml\rss.xml" "D:\dbf\" "D:\map-file.dbf"

En conséquence, nous "obtiendrons le nouveau fichier" D:\dbf\rss.dbf" qui contient le fichier importé XML données:

Vous pouvez télécharger tous les fichiers utilisés dans cette conversion à partir de .

DBF est un fichier de base de données dont la possibilité de travailler était auparavant intégrée à l'environnement Microsoft Office. Les applications Access et Excel fonctionnaient avec le format, plus tard Access a été supprimé du package et est devenu un programme distinct, et dans Excel, depuis 2007, la prise en charge de DataBaseFile a été considérablement limitée.

S'il n'est pas possible d'ouvrir un fichier DBF directement dans Excel, vous devez d'abord le convertir.

Cependant, DBF, bien que considéré par beaucoup comme un format obsolète, est encore largement utilisé dans les programmes spécialisés en commerce, en conception et en ingénierie. Partout où il est nécessaire de travailler avec de grandes quantités d’informations, de les structurer, de les traiter et d’exécuter des requêtes. Par exemple, le progiciel 1C Enterprise est entièrement basé sur la gestion de bases de données. Et étant donné qu'une grande partie de la documentation et des données bureautiques sont traitées dans Excel, la question du travail intégré avec ces formats est pertinente et demandée.

Problèmes Excel lorsque vous travaillez avec DBF

Excel 2003 avait la possibilité d'ouvrir et de modifier DBF, ainsi que d'enregistrer des documents XLS dans ce format :

  1. Sélectionnez "Fichier" dans la barre de menu.
  2. Ensuite, cliquez sur « Enregistrer sous ».
  3. Sélectionnez « *.dbf » dans la liste déroulante.

IMPORTANT. Depuis 2007, vous pouvez ouvrir et afficher le format de la base de données dans Excel, mais vous ne pouvez pas y apporter de modifications ni y enregistrer de documents .xls. Les outils du programme standard ne proposent plus cette option.

Cependant, il existe des modules complémentaires spéciaux pour l'application qui lui ajoutent une telle fonction. Les programmeurs publient leurs développements en ligne sur divers forums et vous pouvez trouver différentes options. Le module complémentaire le plus populaire, appelé XslToDBF, peut être téléchargé sur le site Web du développeur http://basile-m.narod.ru/xlstodbf/download.html. Le téléchargement est gratuit, mais si vous le souhaitez, vous pouvez soutenir le projet en transférant n'importe quel montant sur votre portefeuille ou votre carte.

Installation et utilisation :

  1. Téléchargez l'archive sur le site ci-dessus.
  2. Extrayez-en XlsToDBF.xla et enregistrez-le sur votre ordinateur.
  3. Dans Excel, allez dans le menu avec l'icône Microsoft à gauche, « Options ».
  4. Sous Options Excel, sélectionnez Compléments.
  5. Dans la ligne Gérer/Compléments Excel, cliquez sur Aller.
  6. Cliquez sur Parcourir et localisez le fichier XlsToDBF.xla enregistré.
  7. L'entrée « XLS -> DBF » doit apparaître dans la liste des modules complémentaires avec la case cochée. Vérifiez s'il n'y est pas.
  8. Vous pouvez maintenant enregistrer le fichier .xls au format .dbf. Vous pouvez télécharger depuis le même site instructions détaillées par l'usage. L'essentiel est de préparer correctement les données tabulaires.
  9. Une fois le tableau prêt, sélectionnez n'importe quelle cellule remplie et appuyez sur Alt et F
  10. Dans la fenêtre de macro qui s'ouvre, tapez XlsToDBF dans le champ, la casse n'a pas d'importance.
  11. Cliquez sur Exécuter.
  12. Si vous avez préparé et formaté correctement les données, le fichier de base de données sera également enregistré dans le dossier où se trouve le XLS source.

Si vous ne souhaitez rien changer dans Office, ne faites pas confiance aux compléments et applications tierces, nous pouvons alors suggérer une méthode plus longue pour convertir le fichier XLS en DBF :

  1. Achetez et installez Microsoft Access.
  2. Dans Excel, préparez et enregistrez le document.
  3. Cliquez sur le bouton "Ouvrir" dans MS Access et sélectionnez le fichier.
  4. Vous devez maintenant configurer correctement l'importation.
  5. Sélectionnez la feuille avec laquelle commencer. S’il y en a plusieurs, il faut quand même en faire un à la fois.
  6. Si le tableau comporte une ligne d'en-tête, cochez la case appropriée.
  7. Ensuite, vous pouvez modifier le nom de la table.
  8. Cliquez maintenant sur "Données externes".
  9. Cliquez sur le bouton « Exporter », « Avancé ».
  10. Sélectionnez le fichier dBase.
  11. Fournissez un nom et enregistrez l’emplacement.

Cette méthode ne fonctionne pas toujours avec succès ; des erreurs se produisent souvent lors du traitement des données et de leur sauvegarde ultérieure. Et c'est très long et peu pratique.

Conversion

Afin de ne pas souffrir vous-même des programmes bureautiques, de nombreuses applications ont été créées pour vous permettre de convertir des données d'un format à un autre. Premièrement, presque tous les programmes SGBD puissants offrent la possibilité d'exporter vers XLS et de charger à partir de celui-ci. Deuxièmement, il existe de petits services publics spécialisés dans la conversion. En voici quelques-uns :


Dans tous ces programmes, la conversion se résume à ouvrir le fichier source puis à exécuter la commande « Convertir » ou « Exporter ».

Il existe également des services de conversion en ligne gratuits. Sur ces sites, il vous est demandé d'envoyer (télécharger) le fichier source, de cliquer sur « Convertir », après quoi un lien vers le document converti apparaîtra. Dans quelle mesure vous pouvez faire confiance à ces services, la décision est individuelle, à vos risques et périls.

Ainsi, vous pouvez ouvrir le DBF dans Excel, mais si sa version est 2007 ou plus récente, vous ne pourrez plus rien faire avec, il suffit de regarder. Il existe des modules complémentaires ou des programmes spéciaux pour l'édition et l'enregistrement dans XLS, ainsi que pour la conversion dans le sens opposé. Si vous avez de l'expérience dans la conversion et l'utilisation de DBF vers différentes applications, partagez vos astuces dans les commentaires.

Soumettre votre bon travail à la base de connaissances est facile. Utilisez le formulaire ci-dessous

Les étudiants, étudiants diplômés, jeunes scientifiques qui utilisent la base de connaissances dans leurs études et leur travail vous en seront très reconnaissants.

Publié sur http://www.allbest.ru/

Transnistrie université d'état eux. T.G. Chevtchenko

Institut d'ingénierie et technique

Département des technologies de l'information et du contrôle automatisé des processus de production

TRAVAIL QUALIFIANT POUR DIPLÔMÉS

dans la direction 230100 « Informatique et Informatique »

Sujet : « PROGRAMME DE CONVERTISSEUR DE BASE DE DONNÉES DE FICHIERS DBF EN FICHIER AU FORMAT XML »

Étudiant Maksimov Dmitri Olegovich

Tiraspol, 2013

INTRODUCTION

1. RECHERCHE ET ANALYSE DU DOMAINE

1.1 Description de la tâche

1.2 Justification de la pertinence de la problématique étudiée

1.3 Revue des méthodes de résolution de problèmes similaires

1.4 Énoncé du problème, exigences du système, exigences relatives aux données d'entrée et aux formulaires de sortie

2. CONCEPTION DE LA STRUCTURE ET DE L'ARCHETECTURE D'UN PRODUIT LOGICIEL

2.1 Sélection des méthodes et moyens de mise en œuvre, sa justification

2.2 Description des algorithmes utilisés

2.3 Structure, architecture produit logiciel

2.4 Schéma fonctionnel, structure fonctionnelle du produit logiciel

3. MISE EN ŒUVRE ET TEST DU PRODUIT LOGICIEL

3.1 Description de la mise en œuvre

3.2 Description de l'interface utilisateur

3.3 Tester et évaluer la fiabilité d'un produit logiciel

3.4 Calcul des coûts

3.5 Sécurité au travail

CONCLUSION

LISTE DES CONVENTIONS, SYMBOLES, UNITÉS ET TERMES

LISTE DES RÉFÉRENCES UTILISÉES

APPLICATION

INTRODUCTION

Tout au long de l’existence des ordinateurs, de nombreux systèmes d’exploitation ont été développés. Aujourd'hui, leur nombre se mesure par dizaines et dans diverses familles, il existe des formats de fichiers utilisés uniquement dans une certaine ligne de systèmes d'exploitation. Si, par exemple, pour les images, il existe des programmes d'édition universels qui ouvrent n'importe quel format de fichier contenant des images pris en charge par les systèmes d'exploitation, alors, par exemple, il n'existe pas de tels éditeurs pour les bases de données.

Pour travailler avec chaque format de base de données, il existe un système de gestion de base de données individuel. Il existe un très grand nombre de types de bases de données, se différenciant selon différents critères :

1) Classification par modèle de données :

a) hiérarchique ;

b) réseau ;

c) relationnel ;

d) objet et orienté objet ;

e) objet-relationnel, fonctionnel.

2) Classification par environnement de stockage permanent :

a) en mémoire secondaire, ou traditionnelle ;

b) en RAM ;

c) en mémoire tertiaire.

3) Classement selon le degré de distribution :

a) centralisé ou concentré ;

b) distribué.

4) Autres types de bases de données

a) spatial ;

b) temporaire ;

c) spatio-temporel ;

d) cyclique.

Le grand nombre de bases de données différentes ne permet pas de transférer directement le contenu de la base de données d'un type à un autre. Pour résoudre ce problème, il existe des programmes de conversion qui convertissent un format de base de données en un autre. En règle générale, les convertisseurs n'existent que pour les formats de bases de données les plus courants, ce qui ne vous permet pas de convertir directement un format obsolète en un format moderne. Il n'est pas rationnel d'utiliser deux convertisseurs, la solution optimale consiste donc à stocker les bases de données dans des fichiers XML comme étape intermédiaire.

Les fichiers XML et les fichiers d'autres extensions basées sur le langage XML sont devenus très répandus ; presque tous les systèmes d'exploitation modernes prennent en charge ce format de fichier. Les fichiers XML stockent diverses données, des paramètres d'application aux bases de données. Les fichiers XML sont utilisés pour échanger des informations sur Internet et entre programmes (ce pour quoi le langage de balisage a été conçu à l'origine). Étant donné que les fichiers au format XML contiennent des données texte, ils peuvent être facilement modifiés dans n'importe quel éditeur de texte, ainsi que définir n'importe quel codage de données convivial. De plus, il existe un grand nombre de générateurs de documents XML.

1 . RECHERCHE ET ANALYSE DU DOMAINE

1.1 Description de la tâche

Dans le travail de qualification final, il est nécessaire de mettre en œuvre un programme de conversion qui crée, sur la base du contenu des fichiers dbf transférés, un fichier XML selon un modèle spécifié par l'utilisateur. Le nombre et la structure des fichiers dbf peuvent être quelconques ; le fichier XML de sortie doit toujours être le même. Chaque fichier dbf possède son propre modèle, sur la base duquel le programme écrit les informations dans un fichier XML. Il est nécessaire de mettre en œuvre la possibilité de créer des modèles de deux manières : en utilisant du code et en utilisant un constructeur. Dans les modèles créés à l'aide de code, vous devez sélectionner exactement les données qui doivent être écrites dans le fichier de sortie. Cette fonctionnalité est obtenue à l'aide de commandes de code spéciales développées spécifiquement pour ce programme. Dans les modèles créés à l'aide du concepteur, vous devez implémenter une interface simple et pratique qui vous permettra de créer des modèles personnalisés, sur la base desquels le programme écrit des informations dans un fichier XML.

1.2 Justification de la pertinence problème à l'étude

XML - recommandé par le Consortium World Wide Web Un langage de balisage qui est en réalité un ensemble de règles syntaxiques générales. XML est un format de texte conçu pour stocker des données structurées (au lieu de fichiers de base de données existants), pour échanger des informations entre programmes, ainsi que pour créer des langages de balisage plus spécialisés basés sur ceux-ci (par exemple, XHTML).

Un document XML est une base de données uniquement au sens le plus général du terme, c'est-à-dire un ensemble de données. Ce n'est pas différent de nombreux autres fichiers : en fin de compte, tous les fichiers sont constitués de données d'un certain type. En tant que format de « base de données », XML présente certains avantages, comme celui d'être auto-descriptif (le balisage décrit les données). Il est facile de garantir qu'elles peuvent être traitées par divers logiciels car les données sont stockées en Unicode, elles sont stockées dans une structure arborescente ou graphique. Mais il présente également certains inconvénients, par exemple, il est trop verbeux et relativement lent pour accéder aux données en raison de la nécessité d'analyser et de convertir le texte.

À aspects positifs Cela peut être attribué au fait que XML permet d'implémenter une grande partie de ce que l'on peut trouver dans les bases de données classiques : stockage (documents XML), schémas (DTD, XML Schema Language), langages de requête (XQuery, XPath, XQL, XML -QL, QUILT, etc.), interfaces de programmation (SAX, DOM, JDOM), etc. Les inconvénients incluent le manque de nombreuses opportunités disponibles dans bases modernes données : efficacité du stockage, index, sécurité, transactions et intégration de données, accès multi-utilisateurs, déclencheurs, requêtes sur plusieurs documents, etc.

Ainsi, bien qu'il soit possible d'utiliser des documents XML comme base de données dans des environnements avec une petite quantité données, un petit nombre d'utilisateurs et de faibles exigences de performances, cela ne peut pas être fait dans la plupart des environnements commerciaux où il y a de nombreux utilisateurs, des exigences strictes d'intégration de données et des exigences de performances élevées.

Un exemple de « base de données » pour laquelle un document XML convient est un fichier .ini, c'est-à-dire un fichier contenant des informations de configuration d'application. Il est beaucoup plus facile de créer un langage de programmation avec un petit ensemble de fonctionnalités basées sur XML et d'écrire une application SAX pour l'interpréter que de créer un analyseur pour des fichiers séparés par des virgules. XML permet également aux éléments de données d'être imbriqués les uns dans les autres, ce qui est assez difficile à faire lorsqu'on sépare des données par des virgules. Cependant, de tels fichiers peuvent difficilement être appelés bases de données au sens plein du terme, car ils sont lus et écrits de manière linéaire et uniquement lors de l'ouverture ou de la fermeture de l'application.

L'exemple le plus intéressant d'ensembles de données où il est pratique d'utiliser un document XML comme base de données est une liste personnelle de contacts (noms, numéros de téléphone, adresses, etc.). Cependant, en raison du faible coût et de la facilité d'utilisation des bases de données telles que dBASE et Access, même dans ces cas, il y a peu de raisons d'utiliser un document XML comme base de données. Le seul véritable avantage du XML est que les données sont facilement transférables d'une application à une autre, mais cet avantage n'est pas si important puisque les outils de sérialisation des bases de données au format XML sont déjà très répandus.

Le développement de logiciels est pertinent pour les raisons suivantes :

Le format de la base de données dbf est obsolète et ne répond pas aux exigences modernes ;

Le format XML n'a pas d'exigences strictes en matière de contenu ; l'utilisateur peut stocker les données dans n'importe quel ordre et créer des balises avec n'importe quel nom ;

Aucun programme de conversion ne vous permet de créer votre propre structure de fichiers XML et d'écrire des données à partir de plusieurs fichiers au format dbf.

1.3 Examen des méthodes pour résoudre des problèmes similaires

"White Town" permet de convertir des fichiers dbf au format XML. Le programme peut convertir des fichiers dbf aux formats dBase III, dBase IV, FoxPro, VFP et dBase Level 7. Le programme prend en charge une interface de ligne de commande. Ainsi, il peut être lancé à partir d'un fichier .BAT ou .LNK en précisant au préalable les paramètres nécessaires ou selon un planning depuis le planificateur Windows. L'inconvénient de ce logiciel est l'impossibilité de personnaliser le format du fichier de sortie. La fenêtre principale de l'application est illustrée à la figure 1.1.

Figure 1.1 - Fenêtre principale du programme « White Town »

DBF Converter est un programme de conversion polyvalent mais facile à utiliser. Ce programme possède une interface de type assistant, mais peut également être utilisé comme utilitaire de ligne de commande pour traiter un groupe de fichiers. "DBF Converter" prend en charge tous les formats d'échange de données modernes, tels que XML, CSV, TXT, HTML, RTF, PRG et autres. Implémentation de la possibilité de convertir les tables DBF en scripts SQL pouvant être importés dans n'importe quelle base de données SQL.

En plus des conversions simples, DBF Converter vous permet de manipuler des données en sélectionnant uniquement certaines colonnes et en appliquant des filtres. Contrairement aux règles de filtrage simplifiées que l'on trouve habituellement dans d'autres applications DBF, DBF Converter compose dynamiquement formes simples enregistrements de base de données. La possibilité de définir un masque et des règles avancées pour n'importe quel champ d'un enregistrement simple est l'une des fonctionnalités les plus précieuses disponibles dans DBF Converter. Le principal inconvénient de ce logiciel est son coût de 29,95 USD.

La fenêtre principale de l'application est illustrée à la figure 1.2.

Figure 1.2 - Fenêtre principale du programme « DBF Converter »

"DBF View" est un programme gratuit, compact et pratique pour travailler avec des fichiers DBF. Ne nécessite pas d'installation, fonctionne sans pilotes ni bibliothèques supplémentaires.

Le principal avantage est sa polyvalence, sa recherche linéaire rapide et flexible, qui surpasse de nombreux SQL en vitesse.

Fonctionnalités supplémentaires :

Recherche par masque (motif) ;

Modifier, remplacer, supprimer, créer, ajouter des données ;

Trier les champs ;

Multilinguisme et création de nouveaux dictionnaires ;

Importer et exporter DBF, TXT, CSV, SQL, XML ;

Conversion vers DOS, Windows, translittération et autres ;

Mot de passe de démarrage ;

Historique d'enregistrement.

Le principal inconvénient de ce logiciel est l'impossibilité de créer des modèles lors de la conversion. La fenêtre principale du programme est illustrée à la figure 1.3.

Figure 1.3 - Fenêtre principale du programme « DBF View »

1.4 Énoncé du problème, configuration système requise, exigences relatives aux données de sortie et aux formulaires de sortie

Après avoir étudié la tâche, recherché sa pertinence et analysé les programmes de conversion existants, une liste a été dressée exigences nécessaires pour le logiciel en cours de développement.

Les fonctions suivantes doivent être implémentées dans le produit logiciel :

Lecture du contenu des fichiers dbf ;

Création de modèles dans l'un des deux éditeurs ;

Modification des modèles ;

Sélection de l'ordre de conversion des fichiers dbf ;

Exécution de modèles ;

Journalisation des erreurs ;

Sauvegarde des résultats du programme dans un fichier XML.

Le logiciel est écrit en Microsoft Visual Studio 2008 et nécessite :

Système d'exploitation de la famille Windows d'une des versions : Windows Vista, Windows 7 ou Windows 8 ;

Microsoft.NET Framework 4 ;

Pilotes ODBC Visual FoxPro.

La configuration minimale requise pour le produit logiciel correspond à la configuration minimale requise pour le système d'exploitation.

Les données d'entrée peuvent être des fichiers au format dbf de dBase II, dBase III ou dBase IV.

Les fichiers de sortie doivent être un fichier XML avec la version de langage 1.x et prendre en charge n'importe quel navigateur.

Le chemin d'accès aux fichiers d'entrée et de sortie peut être arbitraire.

2 . CONCEPTION DE LA STRUCTURE ET DE L'ARCHITECTURE D'UN PRODUIT LOGICIEL

2.1 Sélection des méthodes et moyens de mise en œuvre, sa justification

Pour développer le produit logiciel, l'environnement de développement intégré Microsoft Visual Studio 2008 a été choisi.

Visual Studio 2008 - publié le 19 novembre 2007 avec .NET Framework 3.5. Destiné à créer des applications pour le système d'exploitation Windows Vista (mais prend également en charge XP), Office 2007 et les applications Web. Inclut LINQ, les nouvelles versions de C# et Visual Basic. Visual J# n'était pas inclus dans le studio. L'un de ses avantages est l'interface entièrement russe.

Visual Studio comprend un éditeur de code source prenant en charge la technologie IntelliSense et la possibilité de refactoriser facilement le code. Le débogueur intégré peut fonctionner comme débogueur au niveau source ou comme débogueur au niveau machine. D'autres outils intégrés incluent un éditeur de formulaire pour simplifier la création de l'interface graphique de l'application, un éditeur Web, un concepteur de classes et un concepteur de schéma de base de données. Visual Studio vous permet de créer et de connecter des modules complémentaires (plugins) tiers pour étendre les fonctionnalités à presque tous les niveaux, notamment en ajoutant la prise en charge des systèmes de contrôle de version de code source (tels que Subversion et Visual SourceSafe), en ajoutant de nouvelles boîtes à outils (par exemple, pour l'édition et la conception visuelle de code dans des langages de programmation spécifiques à un domaine ou des outils pour d'autres aspects du processus de développement logiciel (par exemple, le client Team Explorer pour travailler avec Team Foundation Server).

Tous les systèmes d'atelier Visual Studio 2008 basés sur C# présentent les fonctionnalités suivantes :

La capacité de formuler des tâches dans le langage de l'interaction objet ;

Haute modularité du code du programme ;

Adaptabilité aux désirs des utilisateurs ;

Degré élevé de réutilisation des programmes ;

Un grand nombre de bibliothèques de plug-ins.

2. 2 Description des algorithmes utilisés

Dans le développement de ce logiciel, deux difficultés principales peuvent être identifiées : construire un outil de reconnaissance pour les modèles programmables et créer un modèle logiciel qui serait utilisé dans les modèles créés à l'aide du concepteur.

1. Modèles programmables. Puisque le code utilisé dans les modèles est quelque peu similaire à celui utilisé dans les langages de programmation, il est nécessaire que ce résolveur adopte certaines fonctions du compilateur de code, ou plutôt ses fonctions d'analyse. Dans la structure du compilateur, la partie analyse consiste en une analyse lexicale, syntaxique et sémantique. Un analyseur lexical lit les caractères du programme dans la langue source et construit à partir d'eux des jetons de langue source. Le résultat de ses travaux est un tableau d'identifiants. L'analyseur effectue la sélection constructions syntaxiques dans le texte du programme source, traité par un analyseur lexical. Met les règles syntaxiques du programme en conformité avec la grammaire du langage. L'analyseur est un outil de reconnaissance de texte langue de saisie. Un analyseur sémantique vérifie l'exactitude du texte du programme source en termes de signification de la langue d'entrée.

Le code doit implémenter les capacités suivantes : créer une boucle, obtenir et afficher des données sur le nombre de lignes et de colonnes, obtenir le type de données et les noms de colonnes, ainsi que obtenir le contenu des cellules de la base de données. Pour ce faire, il faut tout d’abord dresser une liste de tous les états possibles de la machine. Les états possibles du module de reconnaissance sont présentés dans le tableau 2.1.

Tableau 2.1 - Liste des états de reconnaissance possibles

Indice de condition

État

Description

Variable

Compteur de cycles

Un mot de service indiquant le début d'un cycle

Un mot de service désignant la condition de sortie de boucle

Un mot auxiliaire indiquant qu'une référence ultérieure sera faite aux colonnes de la base de données

Un mot auxiliaire indiquant qu'une référence ultérieure sera faite aux lignes de la base de données

Quantité

Un mot de service indiquant le nombre de lignes ou de colonnes, en fonction de l'appel précédent.

Un mot de service désignant la sortie du type de données de la colonne à laquelle accéder

Nom

Un mot auxiliaire désignant la sortie du nom de la colonne à laquelle accéder

Séparation de caractères spéciaux mots de fonction

= (signe égal)

Un caractère spécial indiquant quelle valeur sera attribuée à la variable au démarrage de la boucle

[ (support rectangulaire ouvrant)

] (crochet rectangulaire fermant)

Un caractère spécial indiquant qu'une colonne ou une ligne spécifique a été accédée

N'importe quel entier

Sur la base du tableau compilé, vous pouvez construire un automate fini de transitions d'état possibles. La figure 2.1 montre une machine à états finis.

Figure 2.1 - Machine finie de transitions possibles

Sur la base de l'automate construit, vous pouvez créer un outil de reconnaissance descendant avec retour (avec sélection d'alternatives). Un résolveur de retour en arrière descendant est utilisé pour déterminer si une chaîne appartient à une grammaire. Il analyse état actuel, recherche une règle de transition de l'état actuel au suivant, si l'état suivant correspond, alors la procédure est répétée pour le suivant. Si le module de reconnaissance ne peut pas trouver de règle pour passer de l'état actuel au suivant, alors cette chaîne n'appartient pas à cette grammaire, c'est-à-dire que la ligne de code est écrite avec une erreur logique. S'il existe plusieurs options de transition, alors le module de reconnaissance se souvient de l'état dans lequel l'alternative est apparue et y revient si la chaîne n'appartient pas à la grammaire. La figure 2.2 montre un résolveur descendant avec retour en arrière.

Figure 2.2 - Résolveur descendant avec retour

Lors de l'analyse du modèle, un journal des erreurs est conservé, contenant des informations sur le modèle contenant l'erreur, la ligne de code spécifique et le type d'erreur. Les erreurs peuvent être des types suivants : identifiant non reconnu (tentative d'utilisation de mots de fonction ou de caractères spéciaux non prévus par ce code), violation du sens logique (la ligne de code n'a pas passé le contrôle du module de reconnaissance), tentative d'accès à un variable inexistante (renvoi d'une variable à une variable non créée ou accès à une variable extérieure à la boucle), le début de la boucle n'est pas précisé (le début et la fin de la boucle doivent être indiqués sous forme d'accolades ouvrantes et fermantes) .

2. Modèles créés à l'aide du concepteur. Une solution est une structure utilisée dans les langages de programmation logique : appliquer des filtres de condition aux informations d'entrée communes, ce qui dans ce cas est le contenu de la table de la base de données. La figure 2.3 montre la structure générale d'une table de base de données.

Figure 2.3 - Structure générale de la table de la base de données

3. Une solution utilisant la « Table de vérité » a été choisie comme implémentation. Ce tableau est un tableau avec n+1 colonnes et m+1 lignes, où n et m sont le nombre de colonnes et de lignes dans la table d'entrée. Chaque cellule du tableau stocke la valeur vrai ou faux. La figure 2.4 montre la « Table de vérité ».

Figure 2.4 - « Table de vérité »

Lorsqu'un filtre est appliqué, les valeurs vraies sont remplacées par fausses en fonction de l'objet auquel le filtre a été appliqué. Si le filtre a été appliqué au contenu des cellules, les valeurs changeront spécifiquement pour chaque cellule, et s'il s'agit de lignes ou de colonnes, alors uniquement dans des lignes ou des colonnes supplémentaires.

Lorsque vous travaillez avec une base de données, les entités suivantes peuvent être distinguées : index de ligne, index de colonne, nombre de lignes, nombre de colonnes, type de colonne, nom de colonne, contenu de cellule.

Les conditions suivantes ont également été soulignées : «<», «>", "=", "contient", "correspond à".

4. Les entités et conditions sélectionnées sont suffisantes pour afficher toutes les données possibles ou imposer toutes les conditions possibles. La figure 2.5 montre une « table de vérité » utilisant des filtres.

Figure 2.5 - « Table de vérité » utilisant des filtres

Lors de la sortie d'informations dans un fichier XML, le programme détermine ce qui doit être sorti, puis, à l'aide de la « Table de vérité », génère uniquement les valeurs qui correspondent à la valeur vraie.

Pour créer la mise en page du modèle, nous avons créé types suivants tags : principal, simple, global, bloc. La principale est une balise ; il ne peut y en avoir qu'une seule de ce type dans un document et elle est obligatoire ; elle contient des informations sur le document XML. Simple - Les balises de ce type sont le seul moyen de générer des données et d'imposer des conditions sur la « Table de vérité ». Ils se composent des parties suivantes : titre, source et condition. Les entités précédemment sélectionnées sont utilisées comme source et condition. Si l'étiquette a nom vide, son contenu ne sera pas affiché, mais la condition à la « Table de Vérité » sera appliquée.

Global - les balises de ce type ne supportent aucune charge logique, elles sont simplement nécessaires à la sortie.

Bloc - les balises de ce type sont nécessaires pour combiner la logique des balises simples, et tout ce qui est écrit dans une balise de bloc sera également affiché pour chaque cellule qui satisfait à la « Table de vérité ». La balise block elle-même n'est pas affichée dans le document XML.

2.3 Structure, architecture du produit logiciel

Au cœur de la programmation orientée objet se trouve le développement d’un modèle logique du système sous la forme d’un diagramme de classes. Un diagramme de classes est utilisé pour représenter la structure statique d'un modèle de système dans la terminologie des classes de programmation orientée objet. Un diagramme de classes peut refléter, en particulier, diverses relations entre des entités de domaine individuelles, telles que des objets et des sous-systèmes, ainsi que décrire leur structure interne et leurs types de relations.

Une classe dans ce diagramme est utilisée pour désigner un ensemble d'objets qui partagent la même structure, le même comportement et les mêmes relations avec les objets d'autres classes. Graphiquement, la classe est représentée par un rectangle qui peut en outre être divisé lignes horizontales en sections ou sections. Ces sections peuvent inclure le nom de la classe, les attributs (variables) et les opérations (méthodes).

En plus de la structure interne ou structure des classes, le schéma correspondant indique les relations entre les classes :

Pour cette application, les classes décrites dans le tableau 2.2 ont été identifiées.

Tableau 2.2 - Description des classes utilisées dans le produit logiciel

Le diagramme de classes de l'application de conversion est illustré à la figure 2.6. Sur le diagramme, vous pouvez voir que la classe MyCode est une variable de la classe Template. La classe Template contient les champs suivants : dt, lv, thisTemplate, mycode, fs, sr, sw, correct, masCode, masPerem, masPeremCount, masSost, masCodeLength. dt est une variable de type DataTable contenant des informations stockées dans la base de données ; lv - une variable de type ListView, un objet d'interface dans lequel sont écrits les messages d'erreur dans les modèles ; ceModèle - variable tapez une chaîne, indiquant le nom du modèle en cours de traitement ; mycode - un tableau de la classe MyCode qui stocke des informations sur tous les fragments de code trouvés dans ce modèle ; fs est une variable de type FileStream qui détermine avec quel fichier le programme fonctionnera ; sr est une variable de type StreamReader qui détermine à partir de quel fichier les informations seront lues ; sw - une variable de type StreamWriter qui détermine dans quel fichier les informations seront écrites ; correct - une variable booléenne indiquant si le fragment de code actuel a été traité correctement ; masCode - un tableau de type chaîne contenant toutes les lignes de code trouvées dans le modèle ; masCodeLength - une variable int indiquant le nombre de lignes de code trouvées dans le modèle ; masPerem est un tableau bidimensionnel de type chaîne contenant le nom et la valeur des variables créées ; masPeremCount - une variable int indiquant le nombre de variables actuellement créées ; masSost est un tableau int contenant une liste d'états de la machine pour la ligne de code actuelle.

La classe contient également méthodes suivantes: Connecter, Rechercher, Analyser, Vérifier, ExecuteCode. La méthode Connect se connecte au modèle le long du chemin spécifié. La méthode Search recherche des extraits de code dans le modèle. La méthode Analyse détermine les états d’une ligne de code. La méthode Check est récursive ; elle détermine si une chaîne est logiquement correcte. La méthode ExecuteCode exécute le modèle actuel. Vous pouvez créer un diagramme de classes pour les classes décrites. La figure 2.6 montre un diagramme de classes.

Figure 2.6 - Diagramme de classes

2.4 Schéma fonctionnel, objectif fonctionnel du produit logiciel

Le produit logiciel propose deux options possibles pour traiter les informations avec des algorithmes uniques.

Si l'utilisateur utilise des modèles de code, il doit d'abord spécifier les fichiers d'entrée, puis soit créer un nouveau modèle, soit en sélectionner un existant. Ensuite, l'utilisateur spécifie le répertoire et le nom du fichier de sortie et démarre le processus de conversion. Au cours de ce processus, les sections de code du modèle sont initialement sélectionnées, puis des jetons sont alloués dans chaque section, après quoi leur signification logique est déterminée et le modèle est exécuté. Si des erreurs se produisent à l'une de ces étapes, les informations les concernant sont enregistrées dans le journal des erreurs. Une fois tous les modèles exécutés, l'utilisateur peut utiliser le fichier de sortie.

Si vous utilisez des modèles créés à l'aide du concepteur, l'utilisateur doit spécifier la base de données à convertir, puis spécifier le répertoire du fichier de sortie, créer un modèle et démarrer le processus de conversion. La conversion elle-même se compose de deux parties : créer une table de vérité basée sur le modèle et exécuter la conversion selon la table de vérité. Le fichier de sortie peut ensuite être utilisé par l'utilisateur aux fins prévues.

Dans le deuxième chapitre, l'obtention du diplôme travail qualifiant des outils de développement ont été sélectionnés, à savoir Microsoft Visual Studio 2008, les principales méthodes de mise en œuvre du produit logiciel ont été décrites et sa structure a également été décrite. Il a également été décrit schéma fonctionnel produit logiciel.

Les principaux points à considérer dans le deuxième chapitre étaient :

Le choix des méthodes et moyens de mise en œuvre, sa justification ;

Description des algorithmes utilisés ;

Structure, architecture du produit logiciel ;

Schéma fonctionnel, objectif fonctionnel du produit logiciel.

3 . MISE EN ŒUVREET TESTSPRODUIT LOGICIEL

3.1 Description de l'implémentation

L'une des difficultés liées à la mise en œuvre de ce produit logiciel est l'écriture d'un algorithme de reconnaissance. L'ensemble de l'algorithme est décrit par les méthodes suivantes : Rechercher, Analyser, Vérifier, ExecuteCode.

La méthode Search lit le modèle et trouve les fragments de code marqués de caractères « * » des deux côtés et les écrit dans le tableau.

Recherche vide publique ()

signe booléen = faux ;

tandis que (!sr.EndOfStream)

if ((c != "*") && (signe == vrai))

( s += c.ToString(); )

if ((c == "*") && (signe == faux))

if ((c == "*") && (signe == vrai))

masCode = s;

masCodeLength++; )

s += c.ToString(); ))

moncode = nouveau MonCode ;)

La méthode Analyse divise une ligne de code en jetons individuels et détermine l'état de chacun d'eux ; si des symboles ou des mots non prévus par le langage sont utilisés, ou si des noms de variables incorrects sont utilisés, un message d'erreur correspondant est ajouté au journal des erreurs. . Liste complète Les lexèmes utilisés sont présentés dans le tableau 2.1.

public void Analyser()

( chaîne masIdent = nouvelle chaîne ;

int masIdentLength = 0;

signe booléen = vrai ;

pour (int a = 0; a< masCodeLength; a++)

( correct = faux ;

masIdentLength = 0;

masCode[a] = masCode[a].Trim();

masCode[a] = masCode[a].ToLower();

pour (int b = 0; b< masCode[a].Length; b++)

( c = masCode[a][b];

masIdentLength++; )

masIdent = ".";

masIdentLength++;

si ((c == " ") && (s != ""))

( masIdent = s;

masIdentLength++;

( masIdent = s;

masIdentLength++; )

moncode[a] = new MonCode("", null);

pour (int z = 0; z< masIdentLength; z++)

moncode[a].code += masIdent[z] + " ";

masSost = nouveau int ;

Dans la partie précédente de la méthode, tous les lexèmes trouvés ont été écrits dans le tableau masIdent, puis un cycle est initialisé dans lequel l'état est déterminé pour tous les lexèmes trouvés et écrit dans le tableau masSost.

pour (int b = 0; b< masIdentLength; b++)

if (masIdent[b] == "pour")

sinon si (masIdent[b] == "avant")

sinon if (masIdent[b] == "colonne")

sinon si (masIdent[b] == "string")

if (Char.IsLetter(masIdent[b]))

( bool f = vrai ;

pour (int d = 1; d< masIdent[b].Length; d++)

si (!Char.IsLetterOrDigit(masIdent[b][d]))

si (f == vrai) masSost[b] = 1; autre

Ajout d'une entrée d'erreur au journal des erreurs si l'identifiant trouvé n'existe pas.

lv.Items.SubItems.Add("Identifiant non identifié " + masIdent[b]); )) autre

lv.Items.SubItems.Add(moncode[a].code);

lv.Items.SubItems.Add("Identifiant non identifié " + masIdent[b]);))

moncode[a] = nouveau MonCode(moncode[a].code, masSost);

Vérifiez (0, masSost, a); )

La méthode Check est basée sur le fonctionnement d'un module de reconnaissance descendant avec retour : l'état actuel est déterminé, si cela est possible, puis une transition est effectuée vers le suivant. Si cela n'est pas possible, l'état passe à un état alternatif ; si ce n'est pas le cas, un message d'erreur est ajouté au journal des erreurs.

Chèque public void (int a, int s, int indc)

( si (masSost[a] == s)

( si ((s == 1) && (a == 0))

correct = vrai ; ) autre

si ((s == 2) && (a == 0)) s = 1; autre

si (((s == 4) || (s == 5)) && (a == 0)) s = 8; autre

si ((s == 1) && (a == 1)) s = 9; autre

si ((s == 8) && (a == 1)) s = 6; autre

si ((s == 10) && (a == 1)) s = 1; autre

si ((s == 9) && (a == 2)) s = 12; autre

si ((s == 6) && (a == 2))

( si (a == masSost.Length - 1)

correct = vrai ; ) autre

si (((s == 1) || (s == 12)) && (a == 2)) s = 11; autre

si ((s == 12) && (a == 3)) s = 3; autre

si ((s == 11) && (a == 3)) s = 8; autre

si ((s == 3) && (a == 4)) s = 12; autre

si ((s == 8) && (a == 4))

( si (masSost == 4)

si ((s == 6) && (a == 7))

( si (a == masSost.Length - 1)

correct = vrai ; )

si (((s == 12) || (s == 1)) && (a == 7))

si ((s == 11) && (a == 8))

( si (a == masSost.Length - 1)

correct = vrai ; )

Si le tableau d'états d'entrée a été vérifié par le module de reconnaissance et que tous les états correspondent, la variable correcte reçoit la valeur true, et si une incohérence est trouvée quelque part, elle est renvoyée et vérifiée pour un état alternatif.

si (correct == faux)

Vérifier (a, s, indc); ) )

si ((s == 8) && (a == 1))

Vérifier (a, s, indc); )

si ((s == 1) && (a == 2))

Vérifiez (a, s, indc);)

si ((s == 1) && (a == 7))

Vérifier (a, s, indc); )

Si la transition en cours n'a pas été reconnue, la ligne de code en cours de traitement est considérée comme logiquement incorrecte et une entrée d'erreur correspondante est ajoutée au journal des erreurs.

si (correct == faux)

lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(masCode);

lv.Items.SubItems.Add("Le sens logique de la ligne n'est pas respecté");

moncode.correct = false;

La méthode ExecuteCode écrit le contenu du modèle dans un fichier de sortie en exécutant des lignes de programme. Si une boucle est rencontrée, un fichier temporaire est créé dans lequel le contenu de la boucle est écrit, et jusqu'à la fin de la boucle, le contenu de ce fichier est exécuté. Ceci est nécessaire pour effectuer des boucles imbriquées.

public void ExecuteCode (int NCode, bool cikcle, StreamReader sr, StreamWriter sw, int tempF)

tandis que (!sr.EndOfStream)

c = Convert.ToChar(sr.Read());

L'algorithme lit le fichier d'entrée caractère par caractère s'il rencontre un message de fermeture. entretoise, signifiant la fin de la boucle, et que la variable cikcle est vraie, cela signifie que la méthode a été imbriquée et la termine.

if ((c == ")") && (cikcle == true))

Si le caractère lu n'était pas « * », cela signifie que le caractère n'appartient pas aux commandes de code et doit simplement être affiché.

Si le caractère lu était « * », l'algorithme lit le caractère suivant, s'il s'agit également de « * », cela signifie que l'utilisateur souhaitait afficher ce caractère dans le fichier de sortie.

( c = Convert.ToChar(sr.Read());

Si le caractère suivant n'était pas « * », cela signifie que tous les caractères suivants avant « * » font référence à des commandes de code.

si (moncode.correct == vrai)

si (moncode.masSost == 1)

( bool créer = faux ;

pour (int a = 0; a< masPeremCount; a++)

(if (masPerem == moncode.code)

sw.Write(masPerem);

while (sr.Read() != "*")

Si, dans le code, l'utilisateur tente d'afficher une variable qui n'a pas été déclarée auparavant, alors une erreur est enregistrée dans le journal des erreurs et le code distant n'est plus exécuté.

si (créer == faux)

( lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add("Tentative d'affichage d'une variable inexistante");

moncode.code = ""; )

while (sr.Read() != "*")

si (moncode.masSost == 4)

( si (moncode.masSost == 6)

sw.Write(dt.Columns.Count.ToString());

while (sr.Read() != "*")

si (Convert.ToInt32(mycode.masValue)< dt.Columns.Count)

( si (moncode.masSost == 7)

sw.Write(dt.Columns.masValue)].DataType.Name);

sw.Write(dt.Columns.masValue)].ColumnName);)

Si l'utilisateur tente d'accéder à une colonne ou une ligne qui n'existe pas, une entrée d'erreur correspondante est ajoutée au journal des erreurs.

lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

moncode.code = ""; )

while (sr.Read() != "*")

( bool créer = faux ;

pour (int a = 0; a< masPeremCount; a++)

si (Convert.ToInt32(masPerem)< dt.Columns.Count)

( si (moncode.masSost == 13)

sw.Write(dt.Columns)].ColumnName);

sw.Write(dt.Columns)].DataType.Name);

lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

lv.Items.SubItems.Add("L'index est en dehors de la portée du tableau");

moncode.code = ""; )

while (sr.Read() != "*")

si (créer == faux) (

Si l'utilisateur spécifie une variable inexistante comme index de colonne ou de ligne, une entrée d'erreur correspondante est ajoutée au journal des erreurs.

lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

lv.Items.SubItems.Add("Tentative d'accès à une variable inexistante");

while (sr.Read() != "*")

si (moncode.masSost == 5)

(int n1 = 0, n2 = 0, nn = 0;

si (moncode.masSost == 6)

( sw.Write(dt.Rows.Count.ToString());

while (sr.Read() != "*")

( si (moncode.masSost == 12)

( ( n1 = Convert.ToInt32(moncode.masValue);

si (moncode.masSost == 12)

( n2 = Convert.ToInt32(moncode.masValue);

( bool créer = faux ;

pour (int a = 0; a< masPeremCount; a++)

si (masPerem == moncode.masValue)

n2 = Convert.ToInt32(masPerem);

Si une variable a été utilisée comme index de colonne ou de ligne et que sa valeur dépasse respectivement le nombre de colonnes ou de lignes du tableau, une entrée concernant cette erreur est ajoutée au journal des erreurs.

Sinon (if (n1 >= dt.Rows.Count)

(if (moncode.code != "")

(lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

lv.Items.SubItems.Add("Index " + n1 + " est en dehors de la portée du tableau");))

si (n2 >= dt.Columns.Count)

(if (moncode.code != "")

( lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

lv.Items.SubItems.Add("Index " + n2 + " est en dehors de la portée du tableau"); ))

moncode.code = ""; )

while ((sr.Read() != "*") && (!sr.EndOfStream))

si (moncode.masSost == 2)

masPerem = moncode.masValue;

masPerem = moncode.masValue;

nk = masPeremCount ;

masPeremCount++;

si (moncode.masSost == 12)

k = Convert.ToInt32(moncode.masValue); autre

if (mycode.masSost == 4) k = dt.Columns.Count;

sinon k = dt.Rows.Count ;

while (sr.Read() != "*") ( )

Si l'utilisateur a déclaré une boucle puis n'a pas indiqué son début en ne mettant pas « ( », cela est considéré comme une erreur et une entrée à ce sujet est ajoutée au journal des erreurs.

c = Convert.ToChar(sr.Read());

c = Convert.ToChar(sr.Read());

c = Convert.ToChar(sr.Read());

( lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(moncode.code);

lv.Items.SubItems.Add("Début de boucle non spécifié");

moncode.correct = false;

NCode++ ; ) autre (

Si le début de la boucle est spécifié correctement, alors la variable responsable de la profondeur d'imbrication des boucles est augmentée de un, le contenu de la boucle, jusqu'au signe ")", est écrit dans un fichier temporaire, un tableau dupliqué contenant les valeurs des variables est créé, et cette méthode récursive est lancée pour ce fichier temporaire.

Directory.CreateDirectory("Temp");

StreamWriter sw1=new StreamWriter("Temp\\Temp"+tempF.ToString()+".txt", false, Encoding.UTF8);

c = Convert.ToChar(sr.Read());

c = Convert.ToChar(sr.Read()); )

int cickleCount = 0;

tandis que (c != ")")

si (sr.EndOfStream)

c = Convert.ToChar(sr.Read());

if ((c == ")") && (cickleCount != 0))

(cickleCount--;

c = Convert.ToChar(sr.Read()); ) )

StreamReader sr1 = new StreamReader("Temp\\Temp" + tempF.ToString() + ".txt", Encoding.UTF8);

int CodeCickle = 0;

booléen signe2 = faux ;

tandis que (!sr1.EndOfStream)

( c = Convert.ToChar(sr1.Read());

if ((c != "*") && (sign2 == true))

( s1 += c.ToString(); )

si ((c == "*") && (sign2 == false))

si ((c == "*") && (sign2 == true))

( signe2 = faux ;

sinon s1 += c.ToString(); ) )

pour (int a = Convert.ToInt32(mycode.masValue); a< k; a++)

( masPerem = a.ToString();

ExecuteCode(NCode + 1, true, new StreamReader("Temp\\Temp" + tempF.ToString() + ".txt", Encoding.UTF8), sw, tempF);)

Une fois la boucle terminée, le fichier temporaire est supprimé et la profondeur d'imbrication des boucles est réduite de un.

masPerem = "";

masPerem = "";

NCode = CickleCode + 1 ;

File.Delete("Temp\\Temp" + tempF.ToString() + ".txt");

L'algorithme permettant de travailler avec des modèles créés à l'aide du constructeur est décrit par les méthodes suivantes : Execute, GetTruthTable, ExecuteTag.

La méthode Execute est appelée une fois lorsque le traitement du modèle démarre. Cette méthode est externe et d’autres méthodes sont appelées à partir d’elle. Initialement, la méthode produit un fichier de sortie et une « Table de vérité ».

DataTable véritédt=new DataTable();

StreamWriter sw=new StreamWriter(textBox4.Text+"Fichier de sortie.xml",false,Encoding.UTF8);

pour (int a = 0; a<= dt.Columns.Count;a++)

Truthdt.Columns.Add("",typeof(bool));

pour (int a = 0; a<= dt.Rows.Count; a++)

( DataRow dr = véritédt.NewRow();

pour (int b = 0; b< dr.ItemArray.Length; b++)

Truthdt.Rows.Add(dr); )

Après cela, une boucle commence à s'exécuter, sélectionnant chaque balise qui détermine son type et, en fonction de cela, l'exécute.

pendant que (!complete)

( tagind = GetTagIndex(Iitems);

if (mastag.type == types.global || mastag.type == types.main)

si (mastag.type == types.block)

si (Articles >= nombre d'articles)

complet = vrai ; )

Si le type de balise est global ou primaire, le contenu de la balise est simplement écrit dans un fichier.

si (mastag.name != "")

sw.WriteLine(articles);

Si le type de balise est block, alors la liste de toutes les balises appartenant à ce fragment est écrite dans un tableau séparé et il est également déterminé si cette liste contient des balises qui nécessitent une indexation de chaîne pour afficher les valeurs.

bool haveRow = faux ;

tag blocktag = nouveau tag.indF - mastag.indS - 1];

pour (int a = matag.indS + 1, b = 0; a< mastag.indF; a++, b++)

( blocktag[b] = mastag;

si (blocktag[b].type == types.simple)

if (blocktag[b].source == "index de ligne" || blocktag[b].source == "contenu de la cellule")

haveRow = vrai ;)

Après cela, une « table de vérité » est créée et toutes les conditions des balises simples trouvées dans la liste lui sont appliquées.

Truthdt=CreateTable(truthdt,dt);

pour (int a = 0; a< blocktag.Length; a++)

if (blocktag[a].type == types.simple)

Truthdt = GetTruthTable(dt, Truthdt, blocktag[a]);

De plus, selon que des balises utilisant l'indexation de chaîne ont été trouvées, soit seul un cycle de colonnes, soit un cycle de colonnes et de lignes, dans lesquelles toutes les balises rencontrées sont exécutées, à l'exception de celles de bloc, sont créées.

pour (int a = 0; a< dt.Rows.Count; a++)

pour (int b = 0; b< dt.Columns.Count; b++)

bool wasEx = faux ;

StreamWriter swt = new StreamWriter("temp.txt", false, Encoding.UTF8);

pour (int c = 0; c< blocktag.Length; c++)

si (blocktag[c].type == types.global)

si (blocktag[c].name != "")

swt.WriteLine(items.indS + c + 1]);

si (blocktag[c].name != "")

wasEx=ExecuteTag(dt, véritédt, blocktag[c], a, b, swt); )

( StreamReader sr = new StreamReader("temp.txt", Encoding.UTF8);

sw.Write(sr.ReadToEnd());

Fichier.Delete("temp.txt");

( pour (int a=0;a

pour (int c = 0; c< blocktag.Length; c++)

(if (blocktag[c].type == types.global)

si (blocktag[c].name != "")

sw.WriteLine(items.indS + c + 1]);

si (blocktag[c].type == types.simple)

si (blocktag[c].name != "")

ExecuteTag(dt, véritédt, blocktag[c], 0, a, sw);

Si le type de balise est simple, alors une nouvelle « Table de vérité » est créée pour celui-ci et la balise est exécutée.

si (mastag.type == types.simple)

( véritédt=CreateTable(truthdt,dt);

DataTable tempdt = GetTruthTable(dt, truedt, mastag);

si(mastag.name!="")

ExecuteTag(dt, tempdt, matag, 0, 0, sw);

La méthode GetTruthTable applique des conditions à la table de vérité. Il prend comme arguments une table avec les valeurs de la base de données, une « Table de vérité » déjà créée et une balise dont la condition doit être traitée.

La méthode ExecutTag exécute une balise simple. Il prend comme arguments une table de données, une table de vérité, une balise, un index de ligne, un index de colonne et un flux d'écriture de fichier.

3.2 Description de l'interface utilisateur

La fenêtre principale du programme est divisée en plusieurs parties : « .dbf », « Modèles », « .xml » et journal des erreurs. Dans toutes les parties, à l'exception du journal, il existe des éléments chargés de sélectionner les répertoires contenant des fichiers ou dans lesquels les fichiers doivent être enregistrés. Le journal des erreurs se présente sous la forme d'une liste de trois colonnes : "modèle", "ligne", "erreur". La première colonne contient le nom du modèle dans lequel l'erreur a été trouvée. Dans la seconde, la ligne où l'erreur s'est produite. Troisièmement, le type d’erreur.

Le formulaire contient également des éléments qui n'appartiennent à aucun des groupes. Certains d'entre eux reflètent l'avancement des travaux, tandis que d'autres démarrent le processus lui-même.

La figure 3.1 montre le formulaire principal - la fenêtre principale du programme.

Figure 3.1 - Fenêtre principale du programme

Lorsque vous travaillez avec des modèles, une fenêtre de programme supplémentaire s'ouvre, composée d'un champ pour le nom du modèle, d'un élément contenant le code du modèle et de boutons pour enregistrer le modèle et fermer la fenêtre.

La figure 3.2 montre la vue de la fenêtre du programme supplémentaire (éditeur de modèles).

Figure 3.2 - Fenêtre de l'éditeur de modèles

Sur le formulaire principal se trouve également un élément de contrôle qui ouvre le formulaire pour créer des modèles à l'aide du concepteur.

Le formulaire constructeur contient les champs suivants : une liste de balises déjà créées, un champ pour saisir le nom d'une nouvelle balise, une liste déroulante pour sélectionner un type de balise, une liste déroulante pour sélectionner une source de balise, un panneau avec des éléments pour créer une condition de balise, un champ pour définir un fichier de base de données, un champ pour définir l'emplacement du fichier de sortie, des boutons pour ajouter et supprimer une balise, un bouton pour démarrer le traitement. La figure 3.3 montre la fenêtre du concepteur de modèles.

Figure 3.3 - Fenêtre du concepteur de modèles

Grâce au logiciel, des fichiers XML de différentes versions du langage XML ont été obtenus. Les données d'entrée étaient des bases de données au format dbf des versions dBase II, dBase III et dBase IV. Les fichiers convertis ont été ouverts correctement à l'aide des navigateurs suivants : Internet Explorer 10, Mozilla Firefox 19, Google Chrome version 27.0.1453.93, Opera 12.15. En plus des navigateurs, les fichiers peuvent être visualisés et modifiés avec n'importe quel éditeur de texte. Sur la base des résultats obtenus, nous pouvons conclure que les fichiers XML obtenus lors du fonctionnement du programme répondent aux exigences du client.

3. 3 Tester et évaluer la fiabilité d'un produit logiciel

Lors du test du produit logiciel, les erreurs suivantes ont été identifiées :

Erreur d'indexation pour la cellule du tableau de base de données ;

Erreur de sortie de variable de boucle ;

Erreur qui se produit lorsque l'index d'une ligne ou d'une colonne dépasse son numéro.

1. Erreur d'indexation pour une cellule de tableau de base de données. Se produit lorsque vous spécifiez un code de la forme « *row[x].column[y]* » dans le modèle, où x et y sont des nombres ou des variables. Le problème a été résolu en ajoutant une condition supplémentaire dans le code du programme lors du traitement de chaînes similaires dans le modèle.

2. Erreur de sortie de variable de boucle. Se produit lorsqu'un code de la forme « *x* » est spécifié dans le modèle, où x est une variable. Le problème a été résolu en modifiant la composition de la table des identifiants.

3. Une erreur qui se produit lorsque l'index d'une ligne ou d'une colonne dépasse son numéro. Se produit lorsque vous spécifiez un code au format « *column[x].name* » dans le modèle, où x est un nombre ou une variable dont la valeur dépasse le nombre de colonnes. Le problème a été résolu en comparant la valeur de l'index et le nombre de lignes ou de colonnes ; si l'index dépasse, une entrée à ce sujet est ajoutée au journal des erreurs et le programme continue de s'exécuter.

3. 4 Calcul des coûts

Les entreprises qui travaillent constamment avec différents formats de bases de données doivent automatiser le processus de conversion d'un format de base de données à un autre. Cela augmentera la productivité des travailleurs et réduira les exigences liées à leur éducation.

Outre la partie logicielle, un produit logiciel comprend également une documentation d'accompagnement, qui est le résultat de l'activité intellectuelle des développeurs.

La structure des investissements en capital liés à l'automatisation du contrôle comprend les investissements en capital pour le développement d'un projet d'automatisation (coûts de pré-production) et les investissements en capital pour la mise en œuvre du projet (coûts de mise en œuvre) :

où K p - investissements en capital pour la conception ; Kr - investissements en capital pour la mise en œuvre du projet.

Calcul des investissements en capital pour la conception. Les investissements en capital pour la conception de logiciels sont déterminés par l'établissement d'estimations de coûts et sont déterminés par la formule :

où K m est le coût des matériaux ; Vers les salaires de base et complémentaires avec cotisations sociales pour le personnel d'ingénierie et technique directement impliqué dans le développement du projet ; Kmash - coûts associés à l'utilisation du temps informatique pour déboguer le programme ; K s - paiement de services à des tiers, si la conception est réalisée avec la participation de tiers ; Kn - frais généraux du service d'études. Tous les calculs seront effectués en unités conventionnelles (cu), ce qui correspond au coût d'un dollar américain à la Banque Républicaine Pridnestrovienne au moment du développement du logiciel.

Coûts matériels. Nous déterminerons l'estimation des coûts et calculerons le coût des matériaux K m utilisés pour le développement du logiciel. La liste des matériaux est déterminée par le sujet de la thèse. Ils comprennent les éléments suivants : les supports de stockage (papier, disques magnétiques) et les objets portables (stylo, crayon, gomme). L'estimation des coûts des matériaux est présentée dans le tableau 3.1.

Tableau 3.1 - Estimation des coûts des matériaux

Documents similaires

    Implémentation d'un programme de conversion pour créer un fichier au format XML basé sur les fichiers dbf transférés (selon un modèle spécifié par l'utilisateur). Création de modèles à l'aide de code et à l'aide du concepteur. Conception d'architecture de produits logiciels.

    thèse, ajoutée le 27/06/2013

    Développement d'un programme de conversion qui crée, sur la base du contenu des fichiers dbf transférés, un fichier XML selon un modèle spécifié par l'utilisateur. Considérez la possibilité de créer des modèles de deux manières : en utilisant du code et en utilisant le concepteur.

    travail de cours, ajouté le 24/06/2013

    Conception de l'interface utilisateur d'un programme qui crypte et déchiffre des fichiers. Sélection d'un format de présentation des données. Liste des procédures, des macros et de leur objectif. Description des fonctions utilisées dans le programme, ses tests et son débogage.

    travail de cours, ajouté le 17/05/2013

    Fonctionnalités du « moteur de recherche » pour les fichiers en double sur le disque. Choisir un environnement de programmation. Développement de produits logiciels. Exigences de base pour un programme qui recherche les fichiers en double sur le disque. Afficher les fichiers cachés.

    travail de cours, ajouté le 28/03/2015

    Caractéristiques du travail d'un archiveur - un programme informatique qui compresse les données en un seul fichier d'archive pour un transfert plus facile et un stockage compact. Caractéristiques du processus d'archivage - écriture de fichiers et décompression - ouverture de fichiers.

    résumé, ajouté le 26/03/2010

    Développement d'un produit logiciel d'export de spécifications depuis l'application PartList. Sélection d'une méthode de transfert d'informations vers un fichier et d'un format de présentation. Développement de convertisseurs, implémentation d'interface utilisateur. Justification de la pertinence du développement.

    thèse, ajoutée le 25/09/2014

    Conception de logiciels. Schéma de formation initiale d'un répertoire de fichiers, affichage d'un répertoire de fichiers, suppression de fichiers, tri des fichiers par nom, date de création et taille à l'aide de la méthode de sélection directe. Gestion d'un répertoire dans un système de fichiers.

    travail de cours, ajouté le 08/01/2014

    Caractéristiques des formats de fichiers wav et mp3. Dessiner des diagrammes de cas d'utilisation, développer une interface graphique et une architecture d'application. Développement d'algorithmes de fonctionnement du programme : méthode TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.

    travail de cours, ajouté le 20/12/2013

    Examen des fonctionnalités de travail avec le programme Total Commander. Création de dossiers, copie de fichiers sur une carte flash. Appelez le menu contextuel. Définition de la structure des fichiers. Renommez un groupe de fichiers. Placer des fichiers dans une archive. Diviser l'archive en plusieurs parties.

    travaux de laboratoire, ajouté le 08/04/2014

    Création et test d'un modèle de placement optimal de fichiers dans un réseau informatique avec des topologies en étoile, en anneau et aléatoire. La quantité de données requise pour transférer des fichiers. Répartition optimale des fichiers sur les nœuds du réseau informatique.

Aujourd'hui, XML est la norme industrielle pour l'échange rapide et efficace de données entre différentes solutions. Cependant, il existe de nombreuses tâches dans lesquelles les utilisateurs doivent représenter les données XML sous une forme différente. Dans ces cas, des programmes de conversion sont nécessaires. Ils comblent le fossé entre XML et les formats de tableaux populaires. Si vous avez besoin de convertir régulièrement des données XML, vous devez absolument utiliser Advanced XML Converter !

Avec Advanced XML Converter, vous n'avez plus besoin d'écrire des transformations XML complexes ni des feuilles de style XSL.

Convertissez XML en HTML, CSV, DBF, XLS, SQL en un instant !

Le logiciel ne nécessite pas l'installation de pilotes ou de composants supplémentaires, car il est construit sur l'analyseur Internet Explorer, disponible sur la plupart des systèmes. Advanced XML Converter ne nécessite ni le .NET Framework ni les schémas XML. Le programme ne nécessite pas de connaissances approfondies de la structure des fichiers XML et facilite grandement la conversion de grandes quantités de données XML. En tant qu'utilisateur, vous pourrez voir les documents XML les plus complexes dans différentes vues tabulaires faciles à lire. Ceci est très pratique pour transférer des informations vers des bases de données ou des systèmes spécialisés qui nécessitent un format proche du texte brut.

Si vous recherchez un système rapide pour convertir des données XML, Advanced XML Converter est le meilleur choix ! Abordable et facile à utiliser, le programme effectue des transformations de données complexes en quelques minutes !

La dernière version d'Advanced XML Converter offre un moyen simple, rapide et très efficace d'extraire des données de fichiers XML et de les enregistrer aux formats HTML, DBF, CSV, Excel et SQL populaires.

Avec Advanced XML Converter, vous pouvez :


  • extraire toutes les données XML ou uniquement les données de balises spécifiques,
  • basculer entre différentes options de présentation des données (pas besoin de réanalyser les données),
  • configurer des paramètres de convertisseur personnalisés pour chaque format de sortie (par exemple, des feuilles de style HTML ou des délimiteurs CSV, ainsi que d'autres paramètres),
  • enregistrez toutes les tables extraites de XML dans un seul fichier ou dans plusieurs fichiers de sortie.

Attention aux habitants de la région de Tcheliabinsk !

TFOMS de la région de Tcheliabinsk rappelle que si vous modifiez les détails de votre pièce d'identité, ainsi que lors de la réception d'un nouveau passeport, vous devez contacter votre organisme d'assurance maladie (ses coordonnées sont indiquées dans la police d'assurance maladie obligatoire) dans un délai d'un mois. à partir du jour où ces changements se sont produits.


ATTENTION!!! Si la période de déclaration du fichier converti est à partir de janvier 2019 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter7. Si la période de déclaration du fichier converti va de novembre à décembre 2018 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter6. Si la période de déclaration du fichier converti va de juillet à octobre 2018 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter5. Si la période de déclaration du fichier converti va de juin 2017 à juin 2018 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter4. Si la période de déclaration du fichier converti va de janvier 2015 à mai 2017 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter3. Si la période de déclaration du fichier converti va d'avril 2014 à décembre 2014 (inclus), vous devez alors utiliser le programme XDConverter2 pour la conversion. Si la période de déclaration du fichier converti va jusqu'en mars 2014 (inclus), vous devez alors effectuer la conversion dans le programme XDConverter. XDConvert utilise un package de référence nommé usl_pack_*.rar. Pour XDConvert2, un package de référence nommé usl_pack2_*.rar est utilisé. XDConvert3 utilise un package de référence nommé usl_pack3_*.zip. XDConvert4 utilise un package de référence appelé usl_pack4_*.zip. XDConvert5 utilise un package de référence nommé usl_pack5_*.zip. XDConvert6 utilise un package de référence nommé usl_pack6_*.zip.

Un package d'ouvrages de référence pour le fonctionnement du convertisseur peut être téléchargé sur le site Web, section "Support technique - Répertoires - Package de référence USL_PACK pour le programme XDConverter".

Dans le programme XDConverter, vous devez aller dans le menu "Télécharger les répertoires", puis sélectionner le fichier téléchargé sous la forme usl_pack_aammjj.rar (aammjj - année\mois\jour) et cliquer sur le bouton "Ouvrir". Les répertoires seront téléchargés.

Conversion manuelle de XML->DBF

  1. Allez dans le menu Outils-Paramètres, vérifiez que le chemin d'accès au fichier de données est correct et cliquez sur OK.
  2. Dans le menu, sélectionnez Convertir - XML ​​en natif.
  3. Dans la fenêtre qui s'ouvre, dans la section Fichier d'entrée, précisez le chemin d'accès au fichier de données (archive zip).
  4. Dans la section Fichier de sortie, vérifiez le Nom et, si nécessaire, précisez le chemin.
  5. Cliquez sur le bouton Traiter. Ci-dessous, dans la fenêtre du journal, la progression de la conversion est affichée.

Conversion manuelle de DBF en XML

Pour le mode de conversion manuelle, vous devez vous rendre dans le menu "Convertir - Natif en XML". Ensuite, sélectionnez le fichier natif requis et cliquez sur le bouton "Ouvrir". La fenêtre de sélection source/récepteur apparaît. Vous devez indiquer d’où et vers où le fichier est envoyé. D'un établissement de santé à la Caisse d'assurance maladie obligatoire ou à un organisme de santé (ou d'un établissement de santé à un établissement de santé, si le programme est installé dans l'établissement de santé). Ensuite, cliquez sur le bouton « OK ». La conversion commencera et une fois terminée, un rapport sur le résultat sera publié.

Options de lancement en ligne de commande

"XDConverter.exe 1 2 3 4", où

1 - Nom du fichier converti (indiquant le chemin)

2 - Répertoire du fichier créé

3 - Origine (M,T,S)

4 - Récepteur (M,T,S)

3, 4 - uniquement pour la conversion DBF->XML\

Démarreur convertisseur (pour installation et démarrage simples)

1. Installez et exécutez StartConvert.
2. Dans le menu, sélectionnez la période de déclaration du dossier personnel. comptabilité.
3. Le programme lancera automatiquement le convertisseur souhaité (XDConverter, XDConverter2, XDConverter3).
4. Ensuite, convertissez comme d'habitude.

XDConvertisseur7

XDConvertisseur6

XDConvertisseur5

XDConvertisseur4



Avez-vous aimé l'article? Partagez avec vos amis !