Converter mula dbf sa xml. Pagbubukas at pag-convert ng DBF file sa EXCEL

Ngayon, ang XML ay ang pamantayan sa industriya para sa mabilis at mahusay na pagpapalitan ng data sa pagitan ng iba't ibang solusyon. Gayunpaman, maraming mga gawain kung saan kailangan ng mga user na kumatawan sa XML data sa ibang anyo. Sa mga kasong ito, kailangan ang mga converter program. Tinutulay nila ang agwat sa pagitan ng XML at mga sikat na format ng talahanayan. Kung kailangan mong mag-convert ng XML data sa isang regular na batayan, tiyak na kailangan mong gumamit ng Advanced XML Converter! Sa Advanced XML Converter hindi mo na kailangang magsulat ng mga kumplikadong pagbabagong XML at XSL stylesheet. I-convert ang XML sa HTML, CSV, DBF, XLS, SQL sa isang iglap! Tutulungan ka ng Advanced na XML Converter na mag-convert sa iba pang mga format tulad ng HTML, CSV, DBF, XLS at SQL. Sa sandaling ma-load ang XML file at pinindot mo ang "Convert" na buton, gagawa ang program ng mabilis at mataas na kalidad na output sa isa sa mga tabular na format. Upang matiyak ang tamang output, ginagamit ng Advanced XML Converter ang hierarchical na istraktura ng orihinal na XML file. Maaari mong piliin ang data na ipapakita sa output file. Maaari ka ring mag-convert ng higit sa isang file gamit ang batch run. Sa Advanced XML Converter hindi mo na kailangang magsulat ng kumplikadong conversion o XSL transformation script. Ang pag-convert ng XML sa HTML, CSV, DBF, XLS, SQL ay mabilis at madaling maunawaan!

I-download ang Advanced XML Converter

Maaari mong i-extract ang lahat ng XML data o data lamang mula sa mga partikular na tag na may Advanced XML Converter. Kapag tinitingnan ang na-extract na data, maaari kang mabilis na lumipat sa pagitan ng iba't ibang view (nang walang bagong pagsusuri at hindi nire-reload ang data). Maaari kang magtakda ng mga opsyon sa pag-export para sa bawat format ng output (gaya ng mga istilo ng HTML na talahanayan at mga delimiter ng CSV para sa mga na-export na field, at iba pang mga opsyon). Binibigyang-daan ka ng Advanced XML Converter na i-save ang lahat ng mga talahanayan sa isang file o ilang mga file nang hiwalay, pati na rin ang kakayahang umangkop na i-configure ang mga pagpipilian sa preview at output.

Ang software ay hindi nangangailangan ng pag-install ng mga driver o karagdagang mga bahagi dahil ito ay binuo sa Internet Explorer parser na magagamit sa karamihan ng mga system. Ang Advanced XML Converter ay hindi nangangailangan ng .NET Framework o XML Schemas. Ang programa ay hindi nangangailangan ng malalim na kaalaman sa XML file structure at lubos na pinapadali ang conversion ng malaking halaga ng XML data. Bilang isang user, makikita mo ang mga pinakakumplikadong XML na dokumento sa iba't ibang view table na madaling basahin. Ito ay napaka-maginhawa para sa paglilipat ng impormasyon sa mga database o mga espesyal na sistema na nangangailangan ng isang format na malapit sa plain text.

Kung naghahanap ka ng mabilis na sistema para sa pag-convert ng XML data, ang Advanced XML Converter ay ang pinakamahusay na pagpipilian! Ang abot-kayang at madaling gamitin na programa ay nagsasagawa ng mga kumplikadong pagbabago ng data sa ilang minuto!

Ang pinakabagong bersyon ng Advanced XML Converter ay nagbibigay ng simple, mabilis at napakahusay na paraan upang kunin ang data mula sa mga XML file at i-save ito sa mga sikat na HTML, DBF, CSV, Excel at SQL na mga format.

Sa Advanced XML Converter maaari kang:


  • i-extract ang lahat ng XML data o data mula sa mga partikular na tag lamang,
  • lumipat sa pagitan ng iba't ibang mga opsyon sa presentasyon ng data (hindi kinakailangan ang muling pag-parse ng data),
  • i-configure ang mga custom na opsyon sa converter para sa bawat format ng output (gaya ng mga HTML stylesheet o CSV delimiter, at iba pang mga opsyon),
  • i-save ang lahat ng mga talahanayan na nakuha mula sa XML sa isang file o sa ilang mga output file.

Marahil ay madalas mong kailangang i-convert ang isang XML file o isang folder na may XML mga file sa isa o ilang DBF mga file. Ang problema ay iyon XML istraktura, ang hierarchy nito at mga antas ng nesting ay naiiba sa bawat file. Sa artikulong ito, titingnan namin ang isang detalyadong pagtingin sa kung paano mag-import ng isang XML file ng ANUMANG istraktura sa isang patag DBF mesa.

Isang bagong feature na tinatawag Mag-import ng Custom na XML ay ipinatupad sa DBF Commander Professional bersyon 2.7 (build 40). Ang command na ito ay magagamit sa pamamagitan ng command line interface. Ang syntax ay ang mga sumusunod:

dbfcommander.exe -icx [<-attr>]

Tulad ng nakikita mo, mayroong apat na mga parameter:

  • -icx– ibig sabihin Mag-import ng Custom na XML.
  • – ang buong pangalan ng file (kabilang ang path), o ang pangalan ng folder na naglalaman ng XML mga file na i-import. Maaari ka ring mag-load ng ilang partikular na file lamang sa pamamagitan ng paggamit ng mask, hal. " D:\xml\some_prefix_*.xml". Sa kasong ito, ang mga file lamang na ang extension ay XML at kaninong pangalan nagsisimula sa" some_prefix"ay mako-convert sa DBF. Kung gusto mong i-convert ang lahat ng mga file sa folder, gamitin ang sumusunod na mask: " D:\xml\*.xml".
  • – ang destination folder, hal. " D:\dbf\". Sa kasong ito, lahat ng umiiral DBF isusulat ang mga file. Kung gusto mong i-import ang pinagmulan XML mga file sa isa DBF file, gamitin ang eksaktong filename, hal. " D:\dbf\result.dbf". Ngunit sa kasong ito, ang resultang file ay dapat gawin bago magsimula ang proseso ng conversion, kung hindi, magkakaroon ng error. Kung ang isang solong DBF Ang file ay ginagamit para sa resultang data, hindi ito muling isusulat, at ang bawat bagong tala ay ilalagay sa parehong file.
  • – ang buong pangalan ng tinatawag na " file ng mapa", na isang simple DBF file na naglalaman ng kahulugan ng pinagmulan at nagresultang mga field ng file. Sa ibaba ay isasaalang-alang namin ang proseso ng paglikha ng isang map-file.
  • <-attr> - gamitin ang parameter na ito kung gusto mong mag-import ng mga tag na may ilang partikular na katangian.

Depinisyon ng mga field ng DBF, o Paano gumawa ng file ng mapa

Laging mas mahusay na matuto ng isang bagay sa pamamagitan ng paggamit ng isang halimbawa. Sa ating sitwasyon, kailangan natin ng kilalang kilala XML. Kunin natin ang isang RSS feed ng balita XML file (magagamit):

Tulad ng nakikita mo, mayroong apat<aytem> mga elementong nakapugad sa<channel> elemento, na mismong naka-nest sa pinakamataas na antas<rss> elemento. Mayroon ding mga elemento ng parehong antas ng nesting gaya ng<aytem> elemento:<generator>, <pamagat>, <paglalarawan>, atbp.

Ipagpalagay na ang bawat isa<aytem> elemento ay dapat na kinakatawan bilang isang hilera sa resulta DBF file. Kaya ang aming file ay maglalaman ng apat na talaan.

Para gumawa ng map-file, gawin muna natin ang resulta DBF file. Kailangan namin ito dahil makakagawa kami ng isang map-file sa ilang mga pag-click. Ilunsad DBF Commander Professional, i-click File -> Bago, at lumikha ng a DBF file. Sa kaso ng RSS XML file, ang istraktura ay ang mga sumusunod:

I-click OK. Ang DBF file ay malilikha, at ngayon ay magagamit na ito bilang resultang file para sa aming pag-import mula sa XML proseso. Maaari mong gamitin ang anumang magagamit na mga uri ng field: karakter, Integer, Numeric, Petsa, atbp.

Upang lumikha ng isang map-file batay sa resultang file, i-click ang I-export ang Istraktura tool button (tingnan ang larawan sa itaas). Kapag bumukas ang dialog na I-save, piliin ang path at filename, at pagkatapos ay i-save ang istraktura bilang a DBF file.

Pagtutugma ng mga XML tag sa mga field ng DBF

Kailangan nating gawin ang isa pang bagay: tukuyin ang XML mga tag na dapat ipasok sa mga patlang ng resulta DBF file.

Buksan ang DBF file na kaka-save mo lang. I-click File -> Istraktura at magdagdag ng bagong field na pinangalanang" xmltagname"ng karakter uri. Maaari kang magdagdag ng higit pang mga field sa map-file kung gusto mo. Halimbawa, hayaan ang "magdagdag tayo ng field na pinangalanan" komento".I-click OK upang i-save ang mga pagbabago.

Ngayon punan ang bawat hilera ng bago" xmltagname"patlang kasama ang XML landas ng mga node (na pinaghihiwalay ng " -> ") na dapat ipasok sa kaukulang field sa DBF file:

Nangangahulugan ito na ang halaga ng XML node<pamagat> nakapugad sa<channel> node na naka-nest sa pinakamataas na antas<rss>, ay ipapasok sa " pamagat"patlang; ang XML tag" rss -> channel -> paglalarawan"ay ipapasok sa" desc"field, at iba pa.

Kung sakaling gamitin" -attr" parameter, ang mga path ng map-file ay dapat na naglalaman din ng mga kaukulang katangian, hal.: " rss version="2.0" -> channel -> pamagat".

Bigyang-pansin ang" item_desc"field. Ang XML tag" rss -> channel -> item -> paglalarawan"naglalaman ng Seksyon ng CDATA kasama HTML markup. Kaya dapat tapusin ang tag path nito sa " #cdata-section"tali.

Ang huling hilera na makikita mo sa larawan sa itaas ay ang tinatawag na " row-tag". Ang tag path na ito ay nagbibigay-daan Kumander ng DBF para malaman kung alin XML dapat gamitin ang tag bilang bagong row sa resulta DBF file. Sa aming kaso, ito ay" rss -> channel -> item".

Tandaan na ang halaga ng " pangalan" dapat na walang laman ang field para sa talaan na naglalaman ng row-tag, upang makilala ng program ang row-tag.

Well, iyon lang. Ngayon ay maaari na nating patakbuhin ang pag-import mula sa XML sa DBF mismo. Isagawa ang sumusunod na command mula sa command line, o mula sa a BAT file:

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

Bilang resulta, makukuha namin ang bagong file" D:\dbf\rss.dbf"na naglalaman ng imported XML data:

Maaari mong i-download ang lahat ng mga file na ginamit sa conversion na ito mula sa .

Ipadala ang iyong mabuting gawa sa base ng kaalaman ay simple. Gamitin ang form sa ibaba

Ang mga mag-aaral, nagtapos na mga mag-aaral, mga batang siyentipiko na gumagamit ng base ng kaalaman sa kanilang pag-aaral at trabaho ay lubos na magpapasalamat sa iyo.

Naka-host sa http://www.allbest.ru/

Pridnestrovian State University na pinangalanan T.G. Shevchenko

Institute of Engineering and Technology

Kagawaran ng Teknolohiya ng Impormasyon at Automated Control ng Mga Proseso ng Produksyon

PANGHULING GAWAING KUALIFIKASYON

sa direksyon 230100 "Computer science at computer technology"

paksa: "PROGRAM-CONVERTER NG MGA DATABASE MULA DBF FILES TO XML FORMAT FILE"

Mag-aaral na si Maksimov Dmitry Olegovich

Tiraspol, 2013

PANIMULA

1. PANANALIKSIK AT PAGSUSURI NG PAKSANG LUGAR

1.1 Paglalarawan ng gawain

1.2 Pagbibigay-katwiran sa kaugnayan ng problemang pinag-aaralan

1.3 Pangkalahatang-ideya ng mga pamamaraan para sa paglutas ng mga katulad na problema

1.4 Pahayag ng problema, mga kinakailangan ng system, mga kinakailangan para sa data ng input at mga form ng output

2. DISENYO NG STRUCTURE AT ARCHITECTURE NG SOFTWARE PRODUCT

2.1 Pagpili ng mga pamamaraan at paraan para sa pagpapatupad, ang pagbibigay-katwiran nito

2.2 Paglalarawan ng mga inilapat na algorithm

2.3 Istraktura, arkitektura ng produkto ng software

2.4 Functional diagram, functional na istraktura ng produkto ng software

3. IMPLEMENTASYON AT PAGSUSULIT NG SOFTWARE PRODUCT

3.1 Paglalarawan ng pagpapatupad

3.2 Paglalarawan ng user interface

3.3 Pagsubok at pagsusuri sa pagiging maaasahan ng produkto ng software

3.4 Pagkalkula ng gastos

3.5 Proteksyon sa paggawa

KONGKLUSYON

LISTAHAN NG MGA KONVENSYON, SIMBOLO, UNIT AT TERMINO

LISTAHAN NG GINAMIT NA LITERATURA

APENDIKS

PANIMULA

Sa panahon ng pagkakaroon ng mga computer, maraming mga operating system ang nabuo. Ngayon ang kanilang bilang ay sinusukat sa dose-dosenang at sa iba't ibang mga pamilya mayroong mga format ng file na ginagamit lamang sa isang tiyak na linya ng mga operating system. Kung, halimbawa, may mga unibersal na editor para sa mga larawan na nagbubukas ng anumang format ng file na naglalaman ng mga larawang sinusuportahan ng mga operating system, kung gayon, halimbawa, walang ganoong mga editor para sa mga database.

Upang gumana sa bawat isa sa mga format ng database, mayroong isang indibidwal na sistema ng pamamahala ng database. Mayroong isang malaking bilang ng mga uri ng mga database na naiiba sa iba't ibang pamantayan:

1) Pag-uuri ayon sa modelo ng data:

a) hierarchical;

b) network;

c) relasyon;

d) object at object-oriented;

e) object-relational, functional.

2) Pag-uuri ayon sa patuloy na kapaligiran ng imbakan:

a) sa pangalawang memorya, o tradisyonal;

b) sa RAM;

c) sa tertiary memory.

3) Pag-uuri ayon sa antas ng pamamahagi:

a) sentralisado, o puro;

b) ipinamahagi.

4) Iba pang mga uri ng database

a) spatial;

b) pansamantala;

c) espasyo-oras;

d) paikot.

Ang isang malaking kasaganaan ng iba't ibang mga database ay hindi nagpapahintulot sa iyo na direktang ilipat ang mga nilalaman ng database mula sa isang uri patungo sa isa pa. Upang malutas ang problemang ito, may mga converter program na nagko-convert ng isang format ng database sa isa pa. Bilang isang patakaran, ang mga nagko-convert ay umiiral lamang para sa pinakakaraniwang mga format ng database, na hindi nagpapahintulot sa iyo na direktang i-convert ang ilang hindi na ginagamit na format sa isang moderno. Ang paggamit ng dalawang converter ay hindi makatwiran, kaya ang pinakamahusay na solusyon ay ang pag-imbak ng mga database sa mga XML file bilang isang intermediate na hakbang.

Ang mga XML file at iba pang mga extension ng file batay sa wikang XML ay naging napakalawak, at halos lahat ng modernong operating system ay sumusuporta sa format ng file na ito. Ang mga XML file ay nag-iimbak ng maraming uri ng data, mula sa mga setting ng application hanggang sa mga database. Ang mga file na nakabatay sa XML ay ginagamit upang makipagpalitan ng impormasyon sa Internet at sa pagitan ng mga programa (na kung saan ang markup language na ito ay orihinal na ipinaglihi). Dahil ang mga XML format na file ay naglalaman ng data ng text, madali silang ma-edit sa anumang text editor, pati na rin magtakda ng anumang user-friendly na pag-encode ng data. Bilang karagdagan, mayroong isang malaking bilang ng mga generator ng XML na dokumento.

1 . PANANALIKSIK AT PAGSUSURI NG PAKSANG LUGAR

1.1 Paglalarawan ng gawain

Sa panghuling gawaing kwalipikado, kinakailangan na magpatupad ng isang converter program na lumilikha, batay sa mga nilalaman ng mga inilipat na dbf file, ng isang XML format na file ayon sa isang template na tinukoy ng user. Ang bilang at istraktura ng mga dbf file ay maaaring arbitrary, ang output XML file ay dapat palaging pareho. Ang bawat dbf file ay may sariling template, kung saan ang programa ay nagsusulat ng impormasyon sa XML file. Kinakailangang ipatupad ang kakayahang lumikha ng mga template sa dalawang paraan: gamit ang code at paggamit ng constructor. Dapat piliin ng mga template na ginawa gamit ang code kung aling data ang isusulat sa output file. Ang posibilidad na ito ay isinasagawa sa tulong ng mga espesyal na utos ng code na partikular na binuo para sa program na ito. Sa mga template na nilikha gamit ang constructor, kinakailangan na ipatupad ang isang simple at maginhawang interface na magpapahintulot sa iyo na lumikha ng mga custom na template, batay sa kung saan ang programa ay nagsusulat ng impormasyon sa isang XML file.

1.2 Rationale para sa kaugnayan problemang pinag-aaralan

Ang XML ay isang markup language na inirerekomenda ng World Wide Web Consortium, na talagang isang hanay ng mga pangkalahatang tuntunin ng syntax. Ang XML ay isang format ng teksto na idinisenyo para sa pag-iimbak ng nakabalangkas na data (sa halip na mga umiiral na mga file ng database), para sa pagpapalitan ng impormasyon sa pagitan ng mga programa, at para sa paglikha ng mas espesyal na mga markup language (halimbawa, XHTML) batay dito.

Ang isang XML na dokumento ay isang database lamang sa pinaka-pangkalahatang kahulugan ng salita, iyon ay, ito ay isang koleksyon ng data. Dito, hindi ito naiiba sa maraming iba pang mga file - sa huli, ang lahat ng mga file ay binubuo ng ilang uri ng data. Bilang isang "database" na format, ang XML ay may ilang mga pakinabang, tulad ng pagiging naglalarawan sa sarili (naglalarawan ang markup sa data). Madaling gawin itong pangasiwaan ng iba't ibang software dahil ang data ay nakaimbak sa Unicode, nag-iimbak ito ng data sa isang puno o graph tulad ng istraktura. Ngunit mayroon din itong ilang mga disbentaha, halimbawa, ito ay masyadong verbose at medyo mabagal sa pag-access ng data dahil sa pangangailangang i-parse at i-convert ang teksto.

Sa positibong panig, pinapayagan ka ng XML na ipatupad ang marami sa mga bagay na maaaring matagpuan sa mga kumbensyonal na database: imbakan (mga dokumento ng XML), mga schema (DTD, XML Schema Language), mga wika ng query (XQuery, XPath, XQL, XML - QL, QUILT, atbp.), Mga API (SAX, DOM, JDOM), atbp. Kabilang sa mga disadvantage ang kakulangan ng maraming feature na available sa mga modernong database: storage economy, index, seguridad, transaksyon at pagsasama ng data, multi-user access, trigger, query sa maraming dokumento, atbp.

Kaya, habang posibleng gamitin ang mga XML na dokumento bilang database sa mga kapaligirang may kaunting data, kakaunting user, at mababang mga kinakailangan sa pagganap, hindi ito maaaring gawin sa karamihan ng mga kapaligiran ng negosyo na maraming user at malakas na kinakailangan sa pagsasama, data at mga kinakailangan sa mataas na pagganap.

Ang isang halimbawa ng "database" kung saan angkop ang isang XML na dokumento ay isang .ini file - iyon ay, isang file na naglalaman ng impormasyon sa configuration ng application. Mas madaling makabuo ng isang programming language na may maliit na hanay ng mga feature na nakabatay sa XML at magsulat ng SAX application upang bigyang-kahulugan ito kaysa sa pagsulat ng parser para sa mga file na pinaghihiwalay ng kuwit. Bilang karagdagan, pinapayagan ka ng XML na mag-nest ng mga elemento ng data - ito ay medyo mahirap gawin kapag pinaghihiwalay ang data gamit ang mga kuwit. Gayunpaman, ang mga naturang file ay halos hindi matatawag na mga database sa buong kahulugan ng salita, dahil ang mga ito ay binabasa at nakasulat nang linearly at kapag ang application ay binuksan o isinara.

Ang pinaka-kagiliw-giliw na mga halimbawa ng mga dataset kung saan maginhawang gumamit ng XML na dokumento bilang database ay isang personal na listahan ng mga contact (mga pangalan, numero ng telepono, address, atbp.). Gayunpaman, dahil sa mababang gastos at kadalian ng paggamit ng mga database tulad ng dBASE at Access, kahit na sa mga kasong ito ay may maliit na dahilan upang gumamit ng XML na dokumento bilang database. Ang tanging tunay na bentahe ng XML ay ang data ay madaling mailipat mula sa isang application patungo sa isa pa, ngunit ang kalamangan na ito ay hindi gaanong mahalaga, dahil ang mga tool para sa serializing database sa XML format ay laganap na.

Ang pagbuo ng software ay may kaugnayan para sa mga sumusunod na dahilan:

Ang dbf database format ay luma na at hindi nakakatugon sa mga modernong kinakailangan;

Ang XML format ay walang mahigpit na mga kinakailangan para sa nilalaman, ang gumagamit ay maaaring mag-imbak ng data sa anumang pagkakasunud-sunod at lumikha ng mga tag na may anumang pangalan;

Walang converter program ang nagpapahintulot sa iyo na lumikha ng sarili mong istraktura ng XML file at magsulat ng data mula sa ilang mga dbf format na file.

1.3 Pangkalahatang-ideya ng mga pamamaraan para sa paglutas ng mga katulad na problema

Ginagawang posible ng "White Town" na i-convert ang mga dbf file sa XML na format. Maaaring i-convert ng program ang dBase III, dBase IV, FoxPro, VFP at dBase Level 7 dbf file. Sinusuportahan ng program ang interface ng command line. Kaya, maaari itong ilunsad mula sa isang .BAT o .LNK na file pagkatapos tukuyin ang mga kinakailangang parameter o ayon sa isang iskedyul mula sa Windows scheduler. Ang kawalan ng produktong ito ng software ay ang kawalan ng kakayahang i-customize ang format ng output file. Ang pangunahing window ng application ay ipinapakita sa Figure 1.1.

Figure 1.1 - Ang pangunahing window ng programa na "White Town"

Ang "DBF Converter" ay isang maraming nalalaman ngunit madaling gamitin na programa ng conversion. Ang program na ito ay may mala-wizard na interface, ngunit maaari ding gamitin bilang isang command line utility upang iproseso ang isang pangkat ng mga file. Sinusuportahan ng "DBF Converter" ang lahat ng modernong format ng palitan ng data gaya ng XML, CSV, TXT, HTML, RTF, PRG at iba pa. Ipinatupad ang kakayahang i-convert ang mga talahanayan ng DBF sa SQL script, na maaaring ma-import sa anumang database ng SQL.

Bilang karagdagan sa mga simpleng pagbabago, pinapayagan ka ng "DBF Converter" na manipulahin ang data sa pamamagitan ng pagpili lamang ng ilang mga column at paglalapat ng mga filter. Hindi tulad ng pinasimpleng mga panuntunan sa pag-filter na karaniwang makikita sa ibang mga DBF application, ang DBF Converter ay dynamic na bumubuo ng mga simpleng database entry form. Ang kakayahang magtakda ng mga advanced na maskara at mga panuntunan sa anumang larangan ng isang simpleng talaan ay isa sa mga pinakamahalagang tampok na magagamit sa DBF Converter. Ang pangunahing kawalan ng software na ito ay ang halaga nito na $29.95.

Ang pangunahing window ng application ay ipinapakita sa Figure 1.2.

Figure 1.2 - Ang pangunahing window ng program na "DBF Converter"

Ang "DBF View" ay isang libre, compact at maginhawang programa para sa pagtatrabaho sa mga DBF file. Hindi nangangailangan ng pag-install, gumagana nang walang karagdagang mga driver at library.

Ang pangunahing bentahe ay ang pagiging pangkalahatan, mabilis at nababaluktot na linear na paghahanap, na lumalampas sa maraming SQL sa bilis.

Mga karagdagang tampok:

Maghanap sa pamamagitan ng maskara (pattern);

Pag-edit, pagpapalit, pagtanggal, paglikha, pagdaragdag ng data;

Pag-uuri ng mga patlang;

Multilingualism at paglikha ng mga bagong diksyunaryo;

Mag-import at mag-export ng DBF, TXT, CSV, SQL, XML;

Recoding sa DOS, Windows, translit at iba pa;

Ilunsad ang password;

Pagre-record ng kasaysayan.

Ang pangunahing kawalan ng software na ito ay ang kawalan ng kakayahang lumikha ng mga template kapag nagko-convert. Ang pangunahing window ng programa ay ipinapakita sa Figure 1.3.

Figure 1.3 - Ang pangunahing window ng programa na "DBF View"

1.4 Pahayag ng problema, mga kinakailangan ng system, mga kinakailangan para sa data ng output at mga form ng output

Matapos pag-aralan ang gawain, suriin ang kaugnayan nito at pag-aralan ang umiiral na mga programa ng converter, isang listahan ng mga kinakailangang kinakailangan para sa binuo na software ay pinagsama-sama.

Ang mga sumusunod na function ay dapat ipatupad sa produkto ng software:

Pagbabasa ng mga nilalaman ng dbf file;

Paglikha ng mga template sa isa sa dalawang editor;

Pag-edit ng template;

Pagpili ng pagkakasunud-sunod ng pag-convert ng mga dbf file;

Pagpapatupad ng mga template;

Error sa pag-log;

Sine-save ang mga resulta ng programa sa isang XML file.

Ang software ay nakasulat sa Microsoft Visual Studio 2008 at nangangailangan na tumakbo:

Operating system ng Windows family ng isa sa mga bersyon: Windows Vista, Windows 7 o Windows 8;

Microsoft .NET Framework 4;

Visual FoxPro ODBC Driver.

Ang pinakamababang kinakailangan ng system para sa produkto ng software ay tumutugma sa pinakamababang kinakailangan para sa operating system.

Ang input data ay maaaring dBase II, dBase III o dBase IV na bersyon ng dbf file.

Ang mga output file ay dapat na isang XML format na file na may wikang bersyon 1.x at suporta para sa anumang browser.

Ang landas sa input at output na mga file ay maaaring maging arbitrary.

2 . STRUCTURE AT ARCHITECTURE DESIGN NG SOFTWARE PRODUCT

2.1 Pagpili ng mga pamamaraan at paraan para sa pagpapatupad, ang pagbibigay-katwiran nito

Ang pinagsama-samang kapaligiran sa pag-unlad na Microsoft Visual Studio 2008 ay pinili para sa pagbuo ng produkto ng software.

Visual Studio 2008 - Inilabas noong Nobyembre 19, 2007, kasama ng .NET Framework 3.5. Ito ay naglalayong lumikha ng mga application para sa Windows Vista operating system (ngunit sinusuportahan din ang XP), Office 2007 at mga web application. Kasama ang LINQ, mga bagong bersyon ng C#, at Visual Basic. Hindi kasama sa studio ang Visual J#. Ang isa sa mga pakinabang nito ay isang ganap na interface ng Ruso.

Kasama sa Visual Studio ang isang source code editor na may IntelliSense na teknolohiya at madaling code refactoring. Ang built-in na debugger ay maaaring gumana bilang parehong source-level debugger at machine-level debugger. Kasama sa iba pang mga na-embed na tool ang isang form editor upang gawing simple ang paggawa ng GUI ng isang application, isang web editor, isang class designer, at isang database schema designer. Binibigyang-daan ka ng Visual Studio na gumawa at magkonekta ng mga third-party na add-on (plugin) upang palawigin ang functionality sa halos bawat antas, kabilang ang pagdaragdag ng suporta para sa mga source code version control system (gaya ng Subversion at Visual SourceSafe), pagdaragdag ng mga bagong toolkit (halimbawa, para sa pag-edit at disenyo ng visual code sa mga programming language na tukoy sa domain o mga tool para sa iba pang aspeto ng proseso ng pag-develop ng software (halimbawa, ang kliyente ng Team Explorer para sa pagtatrabaho sa Team Foundation Server).

Lahat ng Visual Studio 2008 C#-based na mga feature ng workbench ay kinabibilangan ng:

Ang kakayahang magbalangkas ng mga gawain sa wika ng pakikipag-ugnayan ng bagay;

Mataas na modularity ng program code;

Kakayahang umangkop sa pagnanais ng mga gumagamit;

Isang mataas na antas ng muling paggamit ng programa;

Isang malaking bilang ng mga naka-link na aklatan.

2. 2 Paglalarawan ng mga inilapat na algorithm

Sa pagbuo ng software na ito, dalawang pangunahing paghihirap ang maaaring makilala: pagbuo ng isang kinikilala para sa mga programmable na template at paglikha ng isang programming model na gagamitin sa mga template na ginawa gamit ang constructor.

1. Programmable na mga pattern. Dahil ang code na ginamit sa mga template ay medyo katulad ng code na ginagamit sa mga programming language, kinakailangan na ang recogniter na ito ay pumalit sa ilang mga function ng code compiler, o sa halip ang mga function ng pag-parse nito. Sa istruktura ng compiler, ang bahagi ng parsing ay binubuo ng lexical, syntactic at semantic analysis. Binabasa ng lexical analyzer ang mga character ng programa sa source language at bumubuo ng source language lexemes mula sa kanila. Ang resulta ng kanyang trabaho ay isang talahanayan ng mga pagkakakilanlan. Ginagawa ng parser ang pagkuha ng mga syntactic constructions sa teksto ng source program, na pinoproseso ng lexical analyzer. Dinadala ang syntactic na mga panuntunan ng programa sa linya sa grammar ng wika. Ang parser ay isang text recognitor ng input language. Sinusuri ng semantic analyzer ang kawastuhan ng text ng source program sa mga tuntunin ng kahulugan ng input language.

Sa tulong ng code, ang mga sumusunod na tampok ay dapat ipatupad: paglikha ng isang loop, pagkuha at pagpapakita ng data sa bilang ng mga hilera at haligi, pagkuha ng uri ng data at mga pangalan ng haligi, pati na rin ang pagkuha ng mga nilalaman ng mga cell ng database. Upang gawin ito, una sa lahat, kinakailangan na gumawa ng isang listahan ng lahat ng posibleng estado ng automat. Ang mga posibleng estado ng kinikilala ay ipinakita sa Talahanayan 2.1.

Talahanayan 2.1 - Listahan ng mga posibleng kinikilalang estado

Index ng Katayuan

Estado

Paglalarawan

Variable

Cycle counter

Serbisyong salita na nagsasaad ng simula ng isang cycle

Serbisyong salita na nagsasaad ng exit condition ng loop

Functional na salita na nagsasaad na ang karagdagang sanggunian ay sa mga base column

Functional na salita na nagsasaad na ang karagdagang sanggunian ay sa mga base string

Dami

Functional na salita na nagsasaad ng bilang ng mga row o column, depende sa kung ano ang dating tawag

Functional na salita na nagsasaad ng output ng uri ng data ng column na ia-access

Pangalan

Functional na salita na nagsasaad ng output ng pangalan ng column kung saan sinusundan ng apela

Espesyal na karakter na naghihiwalay sa mga salita ng serbisyo

= (equal sign)

Isang espesyal na character na nagsasaad kung anong value ang itatalaga sa variable kapag nagsimula ang loop.

[ (bukas na bracket)

] (close bracket)

Isang espesyal na character na nagsasaad na ang isang partikular na column o row ay na-access

Anumang integer

Batay sa pinagsama-samang talahanayan, posible na bumuo ng isang may hangganan na makina ng estado ng mga posibleng paglipat ng estado. Ipinapakita ng Figure 2.1 ang isang state machine.

Figure 2.1 - Finite state machine ng mga posibleng transition

Sa batayan ng itinayong automat, posible na bumuo ng isang pababang pagkilala na may pagbabalik (na may pagpili ng mga alternatibo). Ang isang pababang backtracking recognitor ay ginagamit upang matukoy kung ang isang string ay kabilang sa isang grammar. Sinusuri nito ang kasalukuyang estado, naghahanap ng panuntunan sa paglipat mula sa kasalukuyang estado patungo sa susunod, kung tumutugma ang susunod na estado, pagkatapos ay uulitin ang pamamaraan para sa susunod. Kung ang kinikilala ay hindi makahanap ng isang panuntunan sa paglipat mula sa kasalukuyang estado patungo sa susunod, kung gayon ang chain na ito ay hindi kabilang sa grammar na ito, iyon ay, ang linya ng code ay nakasulat na may isang lohikal na error. Kung mayroong maraming mga pagpipilian sa paglipat, naaalala ng kinikilala ang estado kung saan lumitaw ang kahalili at bumalik dito kung ang kadena ay hindi kabilang sa gramatika. Ipinapakita ng Figure 2.2 ang isang solver na nakaharap pababa na may backtrack.

Figure 2.2 - Pababang Resolver na may Backtracking

Sa panahon ng pagsusuri ng template, pinapanatili ang isang log ng error na naglalaman ng impormasyon tungkol sa kung aling template ang may error, kung saan partikular na linya ng code at ang uri ng error. Ang mga error ay maaaring sa mga sumusunod na uri: hindi nakikilalang identifier (isang pagtatangka na gumamit ng mga salita ng serbisyo o mga espesyal na character na hindi ibinigay para sa ibinigay na code), paglabag sa lohikal na kahulugan (ang linya ng code ay hindi pumasa sa kinikilala), isang pagtatangka upang ma-access ang isang hindi umiiral na variable (pag-access sa isang variable sa isang hindi nilikha na variable o pag-access sa isang variable sa labas ng loop), ang simula ng loop ay hindi tinukoy (ang simula at dulo ng loop ay dapat na tinukoy sa anyo ng pagbubukas at pagsasara mga kulot na bracket).

2. Mga template na ginawa gamit ang constructor. Ang isang solusyon ay ang istraktura na ginagamit sa mga lohikal na programming language: ilapat ang mga filter ng kondisyon sa karaniwang impormasyon sa pag-input, na sa kasong ito ay ang mga nilalaman ng isang talahanayan ng database. Ipinapakita ng Figure 2.3 ang pangkalahatang istruktura ng isang talahanayan ng database.

Figure 2.3 - Pangkalahatang istraktura ng talahanayan ng database

3. Bilang pagpapatupad, isang solusyon ang pinili gamit ang "Truth Table". Ang table na ito ay isang table na may n+1 column at m+1 row, kung saan ang n at m ay ang bilang ng column at row sa input table. Ang bawat table cell ay nag-iimbak ng true o false value. Ipinapakita ng Figure 2.4 ang "Truth Table".

Figure 2.4 - "Truth table"

Kapag inilapat ang isang filter, ang mga tunay na halaga ay papalitan ng false, depende sa kung saan inilapat ang filter. Kung ang filter ay inilapat sa mga nilalaman ng mga cell, ang mga halaga ay partikular na magbabago para sa bawat cell, at kung sa mga hilera o haligi, pagkatapos ay sa isang karagdagang hilera o haligi lamang.

Kapag nagtatrabaho sa isang database, ang mga sumusunod na entity ay maaaring makilala: row index, column index, bilang ng mga row, bilang ng mga column, uri ng column, pangalan ng column, mga nilalaman ng cell.

Ang mga kundisyon ay itinakda din:<», «>”, “=", "naglalaman", "mga tugma".

4. Ang mga napiling entity at kundisyon ay sapat na upang ipakita ang lahat ng posibleng data o magpataw ng lahat ng uri ng kundisyon. Ipinapakita ng Figure 2.5 ang "Truth Table" na may mga filter na inilapat.

Figure 2.5 - "Truth table" na may mga filter na inilapat

Kapag nag-output ng impormasyon sa isang XML file, tinutukoy ng program kung ano ang kailangang i-output, at pagkatapos, gamit ang "Truth Table", ang mga value na iyon na tumutugma sa totoong halaga lang ang ilalabas.

Upang lumikha ng layout ng template, ginawa ang mga sumusunod na uri ng mga tag: pangunahin, simple, pandaigdigan, block. Ang pangunahing isa ay isang tag, maaaring mayroong isa lamang sa ganitong uri sa isang dokumento at ito ay kinakailangan, naglalaman ito ng impormasyon tungkol sa XML na dokumento. Simple - ang mga tag ng ganitong uri ay ang tanging paraan upang magpakita ng data at magpataw ng mga kundisyon sa "Truth Table". Binubuo ang mga ito ng mga sumusunod na bahagi: pamagat, pinagmulan, at kundisyon. Ginagamit ang mga dating napiling entity bilang pinagmulan at kundisyon. Kung ang tag ay may walang laman na pangalan, ang mga nilalaman nito ay hindi ipapakita, ngunit ang kundisyon para sa "Truth Table" ay ilalapat.

Global - ang mga tag ng ganitong uri ay hindi nagdadala ng isang lohikal na pagkarga, kailangan lamang sila para sa output.

Block - ang mga tag ng ganitong uri ay kinakailangan upang pagsamahin ang logic ng mga simpleng tag, at lahat ng nakasulat sa block tag ay ipapakita para sa bawat cell na nakakatugon sa "Truth Table". Ang block tag mismo ay hindi ipinapakita sa XML na dokumento.

2.3 Istraktura, arkitektura ng produkto ng software

Ang sentro sa object-oriented na programming ay ang pagbuo ng isang lohikal na modelo ng isang sistema sa anyo ng isang class diagram. Ang class diagram (class diagram) ay nagsisilbing kumakatawan sa static na istraktura ng system model sa terminolohiya ng object-oriented programming classes. Maaaring ipakita ng isang class diagram, sa partikular, ang iba't ibang mga ugnayan sa pagitan ng mga indibidwal na entidad ng paksa, tulad ng mga bagay at subsystem, pati na rin ilarawan ang kanilang panloob na istraktura at mga uri ng mga relasyon.

Ang klase (klase) sa diagram na ito ay ginagamit upang tukuyin ang isang hanay ng mga bagay na may parehong istraktura, pag-uugali at mga relasyon sa mga bagay ng iba pang mga klase. Sa graphically, ang klase ay inilalarawan bilang isang parihaba, na maaari ding hatiin ng mga pahalang na linya sa mga seksyon o mga seksyon. Ang mga seksyong ito ay maaaring maglaman ng pangalan ng klase, mga katangian (mga variable), at mga operasyon (mga pamamaraan).

Bilang karagdagan sa panloob na istraktura o istraktura ng mga klase, ang kaukulang diagram ay nagpapahiwatig ng ugnayan sa pagitan ng mga klase:

Para sa aplikasyong ito, ang mga klase na inilarawan sa Talahanayan 2.2 ay inilaan.

Talahanayan 2.2 - Paglalarawan ng mga klase na ginamit sa produkto ng software

Ang class diagram ng converter application ay ipinapakita sa Figure 2.6. Mula sa diagram, makikita mo na ang klase ng MyCode ay isang variable ng klase ng Template. Ang klase ng Template ay naglalaman ng mga sumusunod na field: dt, lv, thisTemplate, mycode, fs, sr, sw, correct, masCode, masPerem, masPeremCount, masSost, masCodeLength. Ang dt ay isang variable ng uri ng DataTable na naglalaman ng impormasyong nakaimbak sa database; lv - isang variable ng uri ng ListView, isang interface object kung saan nakasulat ang mga mensahe ng error sa mga template; thisTemplate - isang variable ng uri ng string, ibig sabihin ang pangalan ng template na kasalukuyang pinoproseso; mycode - isang hanay ng klase ng MyCode na nag-iimbak ng impormasyon tungkol sa lahat ng mga fragment ng code na makikita sa template na ito; fs - isang variable ng uri ng FileStream, na tumutukoy kung aling file ang gagana sa programa; sr - isang variable ng uri ng StreamReader, na tumutukoy kung saang file babasahin ang impormasyon; Ang sw ay isang variable na uri ng StreamWriter na tumutukoy kung aling impormasyon ng file ang isusulat; tama - isang variable ng uri ng bool na nagpapahiwatig kung ang kasalukuyang fragment ng code ay naproseso nang tama; masCode - isang hanay ng uri ng string na naglalaman ng lahat ng nahanap na linya ng code sa template; masCodeLength - isang int variable na nagsasaad kung ilang linya ng code ang nakita sa template; masPerem - dalawang-dimensional na hanay ng uri ng string na naglalaman ng pangalan at halaga ng mga nilikhang variable; masPeremCount - isang variable ng uri int na nagpapahiwatig kung gaano karaming mga variable ang nalikha sa sandaling ito; Ang masSost ay isang hanay ng uri ng int na naglalaman ng isang listahan ng mga estado ng makina para sa kasalukuyang linya ng code.

Naglalaman din ang klase ng mga sumusunod na pamamaraan: Connect, Search, Analize, Check, ExecuteCode. Ang paraan ng Connect ay kumokonekta sa template sa ibinigay na landas. Ang paraan ng Paghahanap ay nakakahanap ng mga snippet ng code sa isang template. Tinutukoy ng paraan ng Pagsusuri ang mga estado para sa isang linya ng code. Ang pamamaraan ng Check ay recursive, tinutukoy nito ang lohikal na bisa ng isang string. Ang paraan ng ExecuteCode ay nagpapatupad ng kasalukuyang template. Para sa mga inilarawang klase, maaari kang gumawa ng class diagram. Ang Figure 2.6 ay isang class diagram.

Larawan 2.6 - Class diagram

2.4 Functional diagram, functional na layunin ng produkto ng software

Ang produkto ng software ay nakabuo ng dalawang posibleng opsyon para sa pagproseso ng impormasyon gamit ang mga natatanging algorithm.

Kung gumagamit ang user ng mga template ng code, kailangan muna niyang tukuyin ang mga input file, pagkatapos ay lumikha ng bagong template o pumili ng umiiral na. Susunod, tinukoy ng user ang direktoryo at pangalan ng output file at sinimulan ang proseso ng conversion. Sa prosesong ito, ang mga seksyon ng code sa template ay unang pinili, pagkatapos ay ilalaan ang mga lexeme sa bawat isa sa mga seksyon, pagkatapos ay ang kanilang lohikal na kahulugan ay tinutukoy at ang template ay naisakatuparan. Kung ang mga error ay nangyari sa alinman sa mga yugtong ito, ang impormasyon tungkol sa mga ito ay naitala sa log ng error. Pagkatapos maisagawa ang lahat ng mga template, magagamit ng user ang output file.

Kung gumagamit ka ng mga template na ginawa gamit ang constructor, kailangan ng user na tukuyin ang database na kailangang i-convert, pagkatapos ay tukuyin ang direktoryo ng output file, lumikha ng isang template at simulan ang proseso ng conversion. Ang conversion mismo ay binubuo ng dalawang bahagi: paggawa ng talahanayan ng katotohanan batay sa template at pagsasagawa ng conversion ayon sa talahanayan ng katotohanan. Ang output file ay maaaring gamitin ng user ayon sa nilalayon.

Sa ikalawang kabanata ng panghuling gawain sa kwalipikasyon, napili ang mga tool sa pag-unlad, katulad ng Microsoft Visual Studio 2008, ang mga pangunahing pamamaraan para sa pagpapatupad ng isang produkto ng software ay inilarawan, at ang istraktura nito ay inilarawan din. Ang functional diagram ng produkto ng software ay inilarawan din.

Ang mga pangunahing punto ng pagsasaalang-alang sa ikalawang kabanata ay:

Ang pagpili ng mga pamamaraan at paraan para sa pagpapatupad, ang pagbibigay-katwiran nito;

Paglalarawan ng mga inilapat na algorithm;

Istraktura, arkitektura ng produkto ng software;

Functional diagram, functional na layunin ng produkto ng software.

3 . IMPLEMENTASYONAT PAGSUBOKPRODUKTO NG SOFTWARE

3.1 Paglalarawan ng Pagpapatupad

Isa sa mga kahirapan sa pagpapatupad ng produktong ito ng software ay ang pagsulat ng isang algorithm ng pagkilala. Ang buong algorithm ay inilalarawan ng mga pamamaraan: Search, Analize, Check, ExecuteCode.

Binabasa ng paraan ng Paghahanap ang pattern at hinahanap ang mga fragment ng code na may markang "*" na mga character sa magkabilang panig at isinusulat ang mga ito sa .

pampublikong voidSearch()

boolsign=false;

habang (!sr.EndOfStream)

kung ((c != "*") && (sign == true))

( s += c.ToString(); )

kung ((c == "*") && (sign == false))

kung ((c == "*") && (sign == true))

masCode = s;

masCodeLength++; )

s += c.ToString(); ))

mycode = bagong MyCode ;)

Hinahati ng paraan ng Analize ang isang linya ng code sa magkakahiwalay na mga token at tinutukoy ang estado para sa bawat isa sa kanila, kung ang mga simbolo o salita na hindi ibinigay ng wika ay ginamit, o ginamit ang mga maling variable na pangalan, isang naaangkop na mensahe ng error ay idaragdag sa log ng error. Ang kumpletong listahan ng mga ginamit na lexemes ay ipinakita sa Talahanayan 2.1.

public void Analyze()

( string masIdent = bagong string;

int masIdentLength = 0;

bool sign = totoo;

para sa (int a = 0; a< masCodeLength; a++)

(tama=mali;

masIdentLength = 0;

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

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

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

( c = masCode[a][b];

masIdentLength++; )

masIdent = ".";

masIdentLength++;

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

( masIdent = s;

masIdentLength++;

( masIdent = s;

masIdentLength++; )

mycode[a] = bagong MyCode("", null);

para sa (int z = 0; z< masIdentLength; z++)

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

masSost = bagong int;

Sa nakaraang bahagi ng pamamaraan, ang lahat ng nahanap na token ay isinulat sa masIdent array, pagkatapos ay ang isang loop ay sinisimulan kung saan ang estado ay tinutukoy para sa lahat ng nahanap na mga token at nakasulat sa masSost array.

para sa (int b = 0; b< masIdentLength; b++)

kung (masIdent[b] == "para")

else if (masIdent[b] == "before")

else if (masIdent[b] == "column")

else if (masIdent[b] == "string")

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

( bool f = totoo;

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

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

kung (f == true) masSost[b] = 1; iba pa

Pagdaragdag ng entry ng error sa log ng error kung wala ang nakitang ID.

lv.Items.SubItems.Add("Unrecognized identifier " + masIdent[b]); )) iba pa

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

lv.Items.SubItems.Add("Unrecognized identifier " + masIdent[b]);))

mycode[a] = bagong MyCode(mycode[a].code, masSost);

Lagyan ng tsek(0, masSost, a); )

Ang pamamaraan ng Check ay batay sa gawain ng isang pababang solver na may pagbabalik: ang kasalukuyang estado ay tinutukoy, kung posible, pagkatapos ay isang paglipat sa susunod. Kung hindi posible, pagkatapos ay lumipat ang estado sa isang alternatibo, kung wala, pagkatapos ay isang mensahe ng error ay idinagdag sa log ng error.

pampublikong void Check(int a, int s, int indc)

( kung (masSost[a] == s)

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

tama=totoo; ) iba pa

kung ((s == 2) && (a == 0)) s = 1; iba pa

kung (((s == 4) || (s == 5)) && (a == 0)) s = 8; iba pa

kung ((s == 1) && (a == 1)) s = 9; iba pa

kung ((s == 8) && (a == 1)) s = 6; iba pa

kung ((s == 10) && (a == 1)) s = 1; iba pa

kung ((s == 9) && (a == 2)) s = 12; iba pa

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

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

tama=totoo; ) iba pa

kung (((s == 1) || (s == 12)) && (a == 2)) s = 11; iba pa

kung ((s == 12) && (a == 3)) s = 3; iba pa

kung ((s == 11) && (a == 3)) s = 8; iba pa

kung ((s == 3) && (a == 4)) s = 12; iba pa

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

( kung (masSost == 4)

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

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

tama=totoo; )

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

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

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

tama=totoo; )

Kung ang hanay ng mga estado ng pag-input ay pumasa sa tseke ng solver at ang lahat ng mga estado ay tumugma, ang tamang variable ay itatakda sa true, at kung mayroong hindi pagkakatugma sa isang lugar, ang pagbabalik ay ginawa at sinusuri para sa isang alternatibong estado.

kung (tama == mali)

Lagyan ng tsek(a, s, indc); ) )

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

Lagyan ng tsek(a, s, indc); )

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

Lagyan ng tsek(a, s, indc);)

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

Lagyan ng tsek(a, s, indc); )

Kung ang paglipat na ginawa ay hindi nakilala, ang linya ng code na pinoproseso ay itinuturing na lohikal na hindi wasto at isang naaangkop na error entry ay idinagdag sa error log.

kung (tama == mali)

lv.Items.Add(thisTemplate, thisTemplate);

lv.Items.SubItems.Add(masCode);

lv.Items.SubItems.Add("Ang lohikal na kahulugan ng linya ay nilabag");

mycode.correct = false;

Ang paraan ng ExecuteCode ay nagsusulat ng mga nilalaman ng template sa output file sa pamamagitan ng pagpapatupad ng mga linya ng programa. Kung ang isang cycle ay nakatagpo, pagkatapos ay isang pansamantalang file ay nilikha, kung saan ang mga nilalaman ng cycle ay nakasulat, at hanggang sa ang cycle ay nakumpleto, ang mga nilalaman ng file na ito ay executed. Ito ay kinakailangan upang maisagawa ang mga nested na loop.

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

habang (!sr.EndOfStream)

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

Ang algorithm ay nagbabasa ng input file na character sa pamamagitan ng character, kung mayroong isang pagsasara ng curly brace, na nangangahulugang ang dulo ng loop, at ang variable na cikcle ay totoo, kung gayon nangangahulugan ito na ang pamamaraan ay nakapugad at nagtatapos dito.

kung ((c == ")") && (cikcle == totoo))

Kung ang nabasang karakter ay hindi "*", nangangahulugan ito na ang karakter ay hindi kabilang sa mga utos ng code at ito ay dapat lamang na output.

Kung ang binasa ng character ay "*", binabasa ng algorithm ang susunod na character, kung ito ay "*", nangangahulugan ito na nais ng user na i-output ang character na ito sa output file.

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

Kung ang susunod na karakter ay hindi "*", nangangahulugan ito na ang lahat ng kasunod na mga character bago ang "*" ay tumutukoy sa mga utos ng code.

kung (mycode.correct == true)

kung (mycode.masSost == 1)

( bool lumikha = false;

para sa (int a = 0; a< masPeremCount; a++)

( kung (masPerem == mycode.code)

sw.Write(masPerem);

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

Kung, sa code, ang user ay sumusubok na magpakita ng variable na hindi pa naideklara dati, ang isang error entry ay isusulat sa error log at ang malayong code ay hindi na naisakatuparan.

kung (lumikha == false)

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

lv.Items.SubItems.Add("Trying to display a non-existent variable");

mycode.code = ""; )

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

kung (mycode.masSost == 4)

(kung (mycode.masSost == 6)

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

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

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

(kung (mycode.masSost == 7)

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

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

Kung sinubukan ng user na i-access ang isang column o row na hindi umiiral, ang katumbas na entry ng error ay idaragdag sa error log.

lv.Items.Add(thisTemplate, thisTemplate);

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

mycode.code = ""; )

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

( bool lumikha = false;

para sa (int a = 0; a< masPeremCount; a++)

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

(kung (mycode.masSost == 13)

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

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

lv.Items.Add(thisTemplate, thisTemplate);

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

lv.Items.SubItems.Add("Wala sa saklaw ang index");

mycode.code = ""; )

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

kung (lumikha == false) (

Kung ang user ay tumukoy ng isang hindi umiiral na variable bilang isang column o row index, isang katumbas na error entry ay idaragdag sa error log.

lv.Items.Add(thisTemplate, thisTemplate);

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

lv.Items.SubItems.Add("Trying to access a non-existent variable");

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

kung (mycode.masSost == 5)

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

kung (mycode.masSost == 6)

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

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

(kung (mycode.masSost == 12)

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

kung (mycode.masSost == 12)

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

( bool lumikha = false;

para sa (int a = 0; a< masPeremCount; a++)

kung (masPerem == mycode.masValue)

n2 = Convert.ToInt32(masPerem);

Kung ang isang variable ay ginamit bilang isang column o row index at ang halaga nito ay lumampas sa bilang ng mga column o row sa talahanayan, ayon sa pagkakabanggit, pagkatapos ay isang entry tungkol sa error na ito ay idaragdag sa log ng error.

Iba pa ( kung (n1 >= dt.Rows.Count)

( kung (mycode.code ! = "")

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

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

lv.Items.SubItems.Add("Index " + n1 + " ay wala sa saklaw");))

kung (n2 >= dt.Columns.Count)

( kung (mycode.code ! = "")

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

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

lv.Items.SubItems.Add("Index " + n2 + " ay wala sa saklaw"); ))

mycode.code = ""; )

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

kung (mycode.masSost == 2)

masPerem = mycode.masValue;

masPerem = mycode.masValue;

nk = masPeremCount;

masPeremCount++;

kung (mycode.masSost == 12)

k = Convert.ToInt32(mycode.masValue); iba pa

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

iba k = dt.Rows.Count;

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

Kung ang gumagamit ay nagdeklara ng isang cycle at pagkatapos nito ay hindi nagpahiwatig ng simula nito nang hindi naglalagay ng "(", ito ay itinuturing na isang error at isang entry tungkol dito ay idinagdag sa log ng error.

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

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

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

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

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

lv.Items.SubItems.Add("Hindi tinukoy ang pagsisimula ng ikot");

mycode.correct = false;

NCode++; ) iba pa (

Kung ang simula ng loop ay tinukoy nang tama, kung gayon ang variable na responsable para sa lalim ng nesting ng mga loop ay nadagdagan ng isa, ang mga nilalaman ng loop, hanggang sa sign ")", ay nakasulat sa isang pansamantalang file, isang duplicate Ang mga array na naglalaman ng mga halaga ng mga variable ay nilikha, at ang recursive na pamamaraan na ito ay inilunsad na para sa pansamantalang file na ito.

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 cycleCount = 0;

habang (c !=")")

kung (sr.EndOfStream)

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

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

( cickleCount--;

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

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

int CickleCode = 0;

bool sign2 = false;

habang (!sr1.EndOfStream)

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

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

( s1 += c.ToString(); )

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

kung ((c == "*") && (sign2 == totoo))

( sign2 = mali;

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

para sa (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);)

Matapos matapos ang loop, ang pansamantalang file ay tatanggalin, at ang nesting depth ng mga loop ay nabawasan ng isa.

masPerem = "";

masPerem = "";

NCode = CickleCode + 1;

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

Ang algorithm para sa pagtatrabaho sa mga template na ginawa gamit ang constructor ay inilalarawan ng mga sumusunod na pamamaraan: Ipatupad, GetTruthTable, ExecuteTag.

Ang Execute method ay tinatawag nang isang beses kapag nagsimula ang pagpoproseso ng template. Ang pamamaraang ito ay panlabas at iba pang mga pamamaraan ay tinatawag mula dito. Sa una, ang pamamaraan ay lumilikha ng isang output file at isang "Truth Table".

DataTable truthdt=new DataTable();

StreamWriter sw=bagong StreamWriter(textBox4.Text+"Output file.xml",false,Encoding.UTF8);

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

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

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

( DataRow dr = truthdt.NewRow();

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

truthdt.Rows.Add(dr); )

Pagkatapos nito, magsisimulang mag-execute ang loop, na i-highlight ang bawat tag na tumutukoy sa uri nito, at depende dito, isagawa ito.

habang (!kumpleto)

( tagind = GetTagIndex(Items);

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

kung (mastag.type == types.block)

kung (Mga item >= bilang ng mga item)

kumpleto=totoo; )

Kung pandaigdigan o pangunahin ang uri ng tag, isusulat lang sa file ang mga nilalaman ng tag.

kung (mastag.name !="")

sw.WriteLine(mga item);

Kung ang uri ng tag ay naka-block, ang listahan ng lahat ng mga tag na kabilang sa fragment na ito ay isusulat sa isang hiwalay na array, at ito ay tinutukoy din kung may mga tag sa listahang ito na nangangailangan ng pag-index ng string upang magpakita ng mga halaga.

bool haveRow = false;

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

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

( blocktag[b] = matag;

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

if (blocktag[b].source == "index ng hilera" || blocktag[b]. source == "nilalaman ng cell")

haveRow = totoo;)

Pagkatapos nito, ang isang "talahanayan ng katotohanan" ay nilikha at ang lahat ng mga kundisyon ng mga simpleng tag na makikita sa listahan ay inilalapat dito.

truthdt=CreateTable(truthdt,dt);

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

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

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

Dagdag pa, depende sa kung may nakitang mga tag na gumagamit ng string indexing, isang column cycle lang ang ginawa, o mga cycle sa mga column at linya, kung saan ang lahat ng mga tag na nangyayari ay isinasagawa, maliban sa mga block.

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

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

bool wasEx = false;

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

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

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

kung (blocktag[c].pangalan !="")

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

kung (blocktag[c].pangalan !="")

wasEx=ExecuteTag(dt, truthdt, blocktag[c], a, b, swt); )

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

sw.Write(sr.ReadToEnd());

File.Delete("temp.txt");

( para sa (int a=0;a

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

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

kung (blocktag[c].pangalan !="")

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

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

kung (blocktag[c].pangalan !="")

ExecuteTag(dt, truthdt, blocktag[c], 0, a, sw);

Kung simple ang uri ng tag, may gagawing bagong "Truth Table" para dito at isasagawa ang tag.

kung (mastag.type == types.simple)

( truthdt=CreateTable(truthdt,dt);

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

if(mastag.name!="")

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

Ang pamamaraang GetTruthTable ay naglalapat ng mga kundisyon sa "Truth Table". Bilang mga argumento, kinakailangan ang isang talahanayan na may mga halaga mula sa database, ang nilikha na "Truth Table" at isang tag, ang kundisyon kung saan kailangang iproseso.

Ang paraan ng ExecutTag ay nagpapatupad ng isang simpleng tag. Ito ay tumatagal bilang mga argumento ng isang talahanayan ng data, isang "talahanayan ng katotohanan", isang tag, isang row index, isang column index, at isang file write stream.

3.2 Paglalarawan ng user interface

Ang pangunahing window ng programa ay nahahati sa ilang bahagi: ".dbf", "Templates", ".xml" at ang error log. Sa lahat ng bahagi, maliban sa log, may mga elementong responsable para sa pagpili ng mga direktoryo na naglalaman ng mga file o kung saan dapat i-save ang mga file. Ang log ng error ay ipinakita bilang isang listahan ng tatlong column: "pattern", "string", "error". Ang unang column ay naglalaman ng pangalan ng template kung saan natagpuan ang error. Sa pangalawa, ang linya kung saan nangyari ang error. Pangatlo, ang uri ng pagkakamali.

Gayundin sa form mayroong mga elemento na hindi nabibilang sa alinman sa mga grupo. Ang ilan sa mga ito ay sumasalamin sa pag-unlad ng trabaho, habang ang iba ay nagsisimula sa proseso mismo.

Ipinapakita ng Figure 3.1 ang pangunahing form - ang pangunahing window ng programa.

Figure 3.1 - Pangunahing window ng programa

Kapag nagtatrabaho sa mga template, magbubukas ang isang karagdagang window ng programa, na binubuo ng isang field para sa pangalan ng template, isang elemento na naglalaman ng template code, at mga pindutan para sa pag-save ng template at pagsasara ng window.

Ang Figure 3.2 ay nagpapakita ng view ng karagdagang window ng programa (template editor).

Figure 3.2 - window ng editor ng template

Gayundin sa pangunahing form mayroong isang kontrol na nagbubukas ng form para sa paglikha ng mga template gamit ang constructor.

Ang form ng constructor ay naglalaman ng mga sumusunod na kontrol: isang listahan ng mga nagawa nang tag, isang field para sa paglalagay ng pangalan ng isang bagong tag, isang drop-down na listahan para sa pagpili ng isang uri ng tag, isang drop-down na listahan para sa pagpili ng isang tag source, isang panel na may mga elemento para sa paglikha ng kundisyon ng tag, isang field para sa pagtukoy ng isang database file, isang field para sa pagtukoy ng lokasyon ng output file, mga pindutan para sa pagdaragdag at pagtanggal ng isang tag, isang pindutan para sa pagsisimula ng pagproseso. Ipinapakita ng Figure 3.3 ang window ng taga-disenyo ng template.

Figure 3.3 - window ng tagabuo ng template

Bilang resulta ng gawain ng software, nakuha ang mga XML file ng iba't ibang bersyon ng wikang XML. Ang mga database ng dbf format ng mga bersyon na dBase II, dBase III at dBase IV ay ginamit bilang input data. Nabuksan nang tama ang mga na-convert na file gamit ang mga sumusunod na browser: Internet Explorer 10, Mozilla Firefox 19, bersyon 27.0.1453.93 ng Google Chrome, Opera 12.15. Bilang karagdagan sa mga browser, maaaring tingnan at i-edit ang mga file gamit ang anumang text editor. Batay sa mga resulta na nakuha, maaari itong tapusin na ang mga XML file na nakuha sa panahon ng pagpapatakbo ng programa ay nakakatugon sa mga kinakailangan ng customer.

3. 3 Pagsubok at pagsusuri ng pagiging maaasahan ng produkto ng software

Kapag sinusubukan ang produkto ng software, natukoy ang mga sumusunod na error:

Error sa pag-index sa isang cell ng talahanayan ng database;

Error sa output ng variable na loop;

Isang error na nangyayari kapag ang index ng isang row o column ay lumampas sa kanilang numero.

1. Error sa pag-index sa isang cell ng talahanayan ng database. Nagaganap kapag ang template ay naglalaman ng isang code ng form na "*row[x].column[y]*", kung saan ang x at y ay mga numero o variable. Nalutas ang problema sa pamamagitan ng pagdaragdag ng karagdagang kundisyon sa program code kapag nagpoproseso ng mga katulad na string sa template.

2. Error sa output ng variable na loop. Nagaganap kapag ang isang code ng form na "*x*" ay tinukoy sa template, kung saan ang x ay isang variable. Nalutas ang isyu sa pamamagitan ng pagbabago sa compilation ng identifier table.

3. Isang error na nangyayari kung ang index ng isang row o column ay lumampas sa kanilang numero. Nagaganap kapag ang template ay naglalaman ng isang code tulad ng "*column[x].name*", kung saan ang x ay isang numero o isang variable na ang halaga ay lumampas sa bilang ng mga column. Ang problema ay nalutas sa pamamagitan ng paghahambing ng halaga ng index at ang bilang ng mga hilera o haligi, kung lumampas ang index, pagkatapos ay isang entry tungkol dito ay idinagdag sa log ng error at ang programa ay patuloy na tatakbo.

3. 4 Pagkalkula ng gastos

Ang mga negosyo na patuloy na gumagana sa iba't ibang mga format ng database ay kailangang i-automate ang proseso ng pag-convert mula sa isang format ng database patungo sa isa pa. Tataas nito ang produktibidad ng mga manggagawa, gayundin ang pagbabawas ng mga kinakailangan para sa kanilang edukasyon.

Ang produkto ng software, bilang karagdagan sa bahagi ng software, ay binubuo din ng kasamang dokumentasyon, na resulta ng intelektwal na aktibidad ng mga developer.

Sa istraktura ng mga pamumuhunan sa kapital na nauugnay sa automation ng kontrol, ang mga pamumuhunan sa kapital ay inilalaan para sa pagbuo ng isang proyekto ng automation (mga gastos sa pre-production) at mga pamumuhunan sa kapital para sa pagpapatupad ng proyekto (mga gastos sa pagpapatupad):

kung saan K p - pamumuhunan sa kapital para sa disenyo; К р - pamumuhunan sa kapital para sa pagpapatupad ng proyekto.

Pagkalkula ng mga pamumuhunan sa kapital para sa disenyo. Ang mga pamumuhunan sa kapital para sa disenyo ng software ay tinutukoy sa pamamagitan ng pagguhit ng mga pagtatantya ng gastos at tinutukoy ng formula:

kung saan K m - ang halaga ng mga materyales; K pr - sahod ng pangunahing at karagdagang may mga pagbabawas sa social insurance ng mga tauhan ng engineering at teknikal na direktang kasangkot sa pagbuo ng proyekto; K mash - ang mga gastos na nauugnay sa paggamit ng oras ng makina para sa pag-debug ng programa; K c - pagbabayad para sa mga serbisyo sa mga ikatlong partido, kung ang disenyo ay isinasagawa kasama ang paglahok ng mga ikatlong partido; K n - mga gastos sa overhead ng departamento ng disenyo. Ang lahat ng mga kalkulasyon ay gagawin sa mga conventional units (c.u.), na tumutugma sa halaga ng isang US dollar sa Pridnestrovian Republican Bank sa panahon ng software development.

Mga gastos sa materyal. Tukuyin natin ang pagtatantya ng gastos at kalkulahin ang halaga ng mga materyales K m, na napunta sa pagbuo ng software. Ang listahan ng mga materyales ay tinutukoy ng tema ng thesis. Kabilang sa mga ito ang mga sumusunod: mga carrier ng impormasyon (papel, magnetic disk) at mga bagay na maaaring isuot ng paggawa (panulat, lapis, rubber band). Ang pagtatantya ng gastos para sa mga materyales ay ipinakita sa talahanayan 3.1.

Talahanayan 3.1 - Tinantyang halaga ng mga materyales

Mga Katulad na Dokumento

    Pagpapatupad ng converter program para sa paglikha ng XML format na file batay sa mga inilipat na dbf file (ayon sa template na tinukoy ng user). Gumawa ng mga template gamit ang code at gamit ang constructor. Disenyo ng arkitektura ng produkto ng software.

    thesis, idinagdag noong 06/27/2013

    Pagbuo ng isang converter program na, batay sa mga nilalaman ng mga inilipat na dbf file, ay lumilikha ng isang XML file ayon sa isang template na tinukoy ng user. Isaalang-alang ang paggawa ng mga template sa dalawang paraan: paggamit ng code at paggamit ng constructor.

    term paper, idinagdag noong 06/24/2013

    Pagdidisenyo ng user interface ng isang program na nag-e-encrypt at nagde-decrypt ng mga file. Pagpili ng format ng presentasyon ng data. Listahan ng mga pamamaraan, mga macro at ang kanilang layunin. Paglalarawan ng mga function na ginamit sa programa, ang pagsubok at pag-debug nito.

    term paper, idinagdag noong 05/17/2013

    Mga tampok ng "search engine" ng mga duplicate na file sa disk. Pagpili ng kapaligiran ng programming. Pagbuo ng isang produkto ng software. Mga pangunahing kinakailangan para sa isang program na naghahanap ng mga duplicate na file sa isang disk. Ipakita ang nakatagong dokumento.

    term paper, idinagdag 03/28/2015

    Mga katangian ng gawain ng archiver - isang computer program na nag-compress ng data sa isang solong archive file para sa mas madaling paghahatid, compact na imbakan. Mga tampok ng proseso ng pag-archive - pagsusulat ng mga file at pag-unzip - pagbubukas ng mga file.

    abstract, idinagdag 03/26/2010

    Pagbuo ng isang software na produkto para sa pag-export ng mga detalye mula sa PartList application. Ang pagpili ng paraan ng paglilipat ng impormasyon sa isang file, ang format para sa pagtatanghal. Pag-unlad ng converter, pagpapatupad ng interface ng gumagamit. Rationale para sa kaugnayan ng pag-unlad.

    thesis, idinagdag noong 09/25/2014

    Disenyo ng software. Ang scheme ng paunang pagbuo ng direktoryo ng file, pagpapakita ng direktoryo ng file, pagtanggal ng mga file, pag-uuri ng mga file ayon sa pangalan, petsa ng paglikha at laki gamit ang direktang paraan ng pagpili. Pamamahala ng direktoryo sa file system.

    term paper, idinagdag noong 01/08/2014

    Mga katangian ng wav at mp3 file format. Pagbuo ng mga diagram ng use case, pagbuo ng isang graphical na interface at arkitektura ng application. Pagbuo ng mga algorithm ng pagpapatakbo ng programa: TrimWavFile method, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.

    term paper, idinagdag noong 12/20/2013

    Isang pangkalahatang-ideya ng mga tampok ng pagtatrabaho sa programang Total Commander. Lumikha ng mga folder, kopyahin ang mga file sa isang flash drive. Pagtawag sa menu ng konteksto. Kahulugan ng istraktura ng file. Pagpapalit ng pangalan ng isang pangkat ng mga file. Paglalagay ng mga file sa isang archive. Paghahati ng archive sa ilang bahagi.

    gawaing laboratoryo, idinagdag noong 04/08/2014

    Paglikha at pag-verify ng isang modelo para sa pinakamainam na paglalagay ng mga file sa isang computer network na may hugis-bituin, singsing at arbitrary na topology. Ang dami ng data na kailangan para maglipat ng mga file. Pinakamainam na pamamahagi ng mga file sa mga node ng network ng computer.

Ang DBF ay isang database file, ang kakayahang magtrabaho na dati nang isinama sa kapaligiran ng Microsoft Office. Ang mga application ng Access at Excel ay gumana sa format, kalaunan ay tinanggal ang Access mula sa package at naging isang hiwalay na programa, at sa Excel mula noong 2007 ang suporta sa DataBaseFile ay lubos na limitado.

Kung hindi ka makapagbukas ng DBF file nang direkta sa Excel, kailangan mo muna itong i-convert.

Gayunpaman, bagama't ang DBF ay itinuturing ng marami bilang isang hindi na ginagamit na format, malawak pa rin itong ginagamit sa mga espesyal na programa sa larangan ng negosyo, disenyo, at engineering. Saanman kailangan mong magtrabaho kasama ang malaking halaga ng impormasyon, ang kanilang pagbubuo at pagproseso, ang pagpapatupad ng query. Halimbawa, ang 1C Enterprise software package ay ganap na nakabatay sa pamamahala ng database. At dahil maraming dokumentasyon ng opisina at data ang napupunta sa Excel, ang isyu ng pinagsamang trabaho sa mga format na ito ay may kaugnayan at hinihiling.

Mga problema sa Excel kapag nagtatrabaho sa DBF

Sa Excel 2003, posible na buksan at i-edit ang DBF, pati na rin ang pag-save ng mga dokumento ng XLS sa format na ito:

  1. Piliin ang "File" mula sa menu bar.
  2. Susunod, i-click ang "I-save Bilang".
  3. Piliin ang "*.dbf" mula sa drop-down na listahan.

MAHALAGA. Mula noong 2007, maaari mong buksan at tingnan ang format ng database sa Excel, ngunit hindi ka makakagawa ng mga pagbabago o makakapag-save ng mga .xls na dokumento dito. Ang mga tool sa karaniwang programa ay hindi na nagbibigay para sa posibilidad na ito.

Gayunpaman, may mga espesyal na add-on para sa application na nagdaragdag ng ganoong function dito. Sa network sa iba't ibang mga forum, ang mga programmer ay nagpo-post ng kanilang mga pag-unlad, maaari kang makahanap ng iba't ibang mga pagpipilian. Ang pinakasikat na add-on na tinatawag na XslToDBF ay maaaring ma-download mula sa site ng developer na http://basile-m.narod.ru/xlstodbf/download.html. Ang pag-download ay libre, ngunit kung nais mo, maaari mong suportahan ang proyekto sa pamamagitan ng paglilipat ng anumang halaga sa iyong wallet o card.

Pag-install at paggamit:

  1. I-download ang archive mula sa site sa itaas.
  2. I-extract ang XlsToDBF.xla mula dito at i-save ito sa iyong computer.
  3. Sa Excel, pumunta sa menu na may button ng Microsoft icon sa kaliwa, Options.
  4. Sa ilalim ng Excel Options, piliin ang Add-Ins.
  5. Sa linyang "Pamahalaan / Excel Add-in", i-click ang "Go".
  6. I-click ang Mag-browse at ituro ang naka-save na XlsToDBF.xla.
  7. Sa listahan ng mga add-on, dapat na lumabas ang entry na “XLS -> DBF” na may checkbox. Tandaan kung wala ito.
  8. Maaari mo na ngayong i-save ang .xls sa .dbf na format. Mula sa parehong site maaari kang mag-download ng mga detalyadong tagubilin para sa paggamit. Ang pangunahing bagay ay ang maayos na paghahanda ng data ng tabular.
  9. Kapag handa na ang talahanayan, pumili ng anumang cell na napuno at pindutin ang Alt at F
  10. Sa macro window na bubukas, i-type ang XlsToDBF sa field, hindi mahalaga ang case.
  11. I-click ang Run.
  12. Kung inihanda at na-format mo nang tama ang data, ang database file ay mase-save sa folder kung saan matatagpuan ang orihinal na XLS.

Kung ayaw mong baguhin ang anuman sa Opisina, huwag magtiwala sa mga add-in at third-party na application, pagkatapos ay maaari kang mag-alok ng mas matagal na paraan upang i-convert ang XLS file sa DBF:

  1. Bumili at mag-install ng Microsoft Access.
  2. Sa Excel, ihanda at i-save ang dokumento.
  3. I-click ang "Buksan" na buton sa MS Access at piliin ang file.
  4. Ngayon ay kailangan mong i-configure nang tama ang pag-import.
  5. Pumili ng sheet na sisimulan. Kung marami, kailangan mo pa ring gawin nang paisa-isa.
  6. Kung ang talahanayan ay may row ng header, lagyan ng tsek ang kaukulang kahon.
  7. Susunod, maaari mong baguhin ang pangalan ng talahanayan.
  8. Ngayon mag-click sa "External Data".
  9. I-click ang pindutang "I-export", "Advanced".
  10. Piliin ang dBase File.
  11. Tumukoy ng pangalan at i-save ang lokasyon.

Ang pamamaraang ito ay hindi palaging matagumpay na gumagana, ang mga error ay madalas na nangyayari sa pagproseso ng data at kasunod na pag-save. At ito ay napakahaba at hindi komportable.

Pagbabalik-loob

Upang hindi magdusa ang iyong sarili sa mga programa sa opisina, maraming mga application ang nilikha na nagbibigay-daan sa iyo upang maglipat ng data mula sa isang format patungo sa isa pa. Una, halos lahat ng makapangyarihang programa ng DBMS ay nag-aalok ng kakayahang mag-export at mag-load mula sa XLS. Pangalawa, may mga maliliit na utility na dalubhasa sa pag-convert. Narito ang ilan sa mga ito:


Sa lahat ng mga program na ito, ang conversion ay bumaba sa katotohanan na kailangan mong buksan ang source file, at pagkatapos ay isagawa ang "Convert" o "Export" na utos.

Mayroon ding mga libreng online na serbisyo sa conversion. Sa naturang mga site, iminungkahi na ipadala (i-upload) ang source file, i-click ang "Convert", pagkatapos ay lilitaw ang isang link sa na-convert na dokumento. Kung gaano mo mapagkakatiwalaan ang mga naturang serbisyo, ang desisyon ay indibidwal, sa iyong sariling panganib at panganib.

Kaya, maaari mong buksan ang DBF sa Excel, ngunit kung ang bersyon nito ay 2007 at mas bago, kung gayon wala nang magagawa dito, tingnan lamang. Para sa pag-edit, pag-save sa XLS, mayroong mga espesyal na add-on o programa, pati na rin para sa pag-convert sa kabaligtaran na direksyon. Kung mayroon kang karanasan sa pag-convert at pagtatrabaho sa DBF sa iba't ibang mga application, mangyaring ibahagi ang iyong mga tip sa mga komento.