Konverter dari dbf ke xml. Membuka dan mengonversi file DBF ke EXCEL

Saat ini, XML adalah standar industri untuk pertukaran data yang cepat dan efisien di antara berbagai solusi. Namun, ada banyak tugas di mana pengguna perlu merepresentasikan data XML dalam bentuk yang berbeda. Dalam kasus ini, program konverter diperlukan. Mereka menjembatani kesenjangan antara XML dan format tabel populer. Jika Anda perlu mengonversi data XML secara teratur, maka Anda pasti perlu menggunakan Konverter XML Tingkat Lanjut! Dengan Konverter XML Tingkat Lanjut, Anda tidak perlu lagi menulis transformasi XML yang rumit dan lembar gaya XSL. Konversi XML ke HTML, CSV, DBF, XLS, SQL dalam sekejap! Advanced XML Converter akan membantu Anda mengonversi ke format lain seperti HTML, CSV, DBF, XLS, dan SQL. Segera setelah file XML dimuat dan Anda menekan tombol "Konversi", program akan menghasilkan output yang cepat dan berkualitas tinggi ke salah satu format tabel. Untuk memastikan keluaran yang benar, Konverter XML Lanjutan menggunakan struktur hierarki file XML asli. Anda dapat memilih data yang akan disajikan dalam file output. Anda juga dapat mengonversi lebih dari satu file menggunakan batch run. Dengan Konverter XML Lanjutan, Anda tidak perlu lagi menulis skrip konversi atau transformasi XSL yang rumit. Mengonversi XML ke HTML, CSV, DBF, XLS, SQL cepat dan intuitif!

Unduh Konverter XML Tingkat Lanjut

Anda dapat mengekstrak semua data XML atau hanya data dari tag tertentu dengan Advanced XML Converter. Saat melihat data yang diekstraksi, Anda dapat dengan cepat beralih di antara tampilan yang berbeda (tanpa analisis baru dan tanpa memuat ulang data). Anda dapat mengatur opsi ekspor untuk setiap format keluaran (seperti gaya tabel HTML dan pembatas CSV untuk bidang yang diekspor, dan opsi lainnya). Advanced XML Converter memungkinkan Anda untuk menyimpan semua tabel dalam satu file atau beberapa file secara terpisah, serta mengonfigurasi opsi pratinjau dan output secara fleksibel.

Perangkat lunak ini tidak memerlukan penginstalan driver atau komponen tambahan karena dibuat di pengurai Internet Explorer yang tersedia di sebagian besar sistem. Konverter XML Tingkat Lanjut tidak memerlukan .NET Framework atau Skema XML. Program ini tidak memerlukan pengetahuan mendalam tentang struktur file XML dan sangat memudahkan konversi data XML dalam jumlah besar. Sebagai pengguna, Anda akan dapat melihat dokumen XML paling kompleks dalam tabel tampilan berbeda yang mudah dibaca. Ini sangat nyaman untuk mentransfer informasi ke database atau sistem khusus yang memerlukan format yang mendekati teks biasa.

Jika Anda mencari sistem cepat untuk mengonversi data XML, Konverter XML Lanjutan adalah pilihan terbaik! Program yang terjangkau dan mudah digunakan melakukan transformasi data yang kompleks dalam hitungan menit!

Versi terbaru dari Advanced XML Converter menyediakan cara yang sederhana, cepat dan sangat efisien untuk mengekstrak data dari file XML dan menyimpannya dalam format HTML, DBF, CSV, Excel dan SQL yang populer.

Dengan Konverter XML Tingkat Lanjut Anda dapat:


  • ekstrak semua data XML atau data dari tag tertentu saja,
  • beralih di antara opsi presentasi data yang berbeda (penguraian ulang data tidak diperlukan),
  • mengonfigurasi opsi konverter khusus untuk setiap format keluaran (seperti lembar gaya HTML atau pembatas CSV, dan opsi lainnya),
  • simpan semua tabel yang diekstrak dari XML dalam satu file atau beberapa file output.

Mungkin Anda sering perlu mengonversi XML file atau folder dengan XML file menjadi satu atau beberapa DBF file. Masalahnya adalah XML struktur, hierarki, dan tingkat bersarangnya berbeda dari file ke file. Dalam artikel ini, kita akan melihat secara mendetail tentang cara mengimpor XML file struktur APAPUN ke flat DBF meja.

Fitur baru bernama Impor XML Khusus diimplementasikan di Komandan DBF Profesional versi 2.7 (build 40). Perintah ini tersedia melalui antarmuka baris perintah. Sintaksnya adalah sebagai berikut:

dbfcommander.exe -icx [<-attr>]

Seperti yang Anda lihat, ada empat parameter:

  • -icx- cara Impor XML Khusus.
  • – nama lengkap file (termasuk path), atau nama folder yang berisi XML file yang akan diimpor. Anda juga dapat memuat hanya file tertentu dengan menggunakan topeng, mis. " D:\xml\some_prefix_*.xml". Dalam hal ini, hanya file yang berekstensi XML dan yang namanya dimulai dengan" beberapa_prefix"akan diubah menjadi DBF. Jika Anda ingin mengonversi semua file dalam folder, gunakan topeng berikut: " D:\xml\*.xml".
  • – folder tujuan, mis. " D:\dbf\". Dalam hal ini, semua yang ada DBF file akan ditulis. Jika Anda ingin mengimpor sumbernya XML file menjadi satu DBF file, gunakan nama file yang tepat, mis. " D:\dbf\result.dbf". Namun dalam hal ini, file yang dihasilkan harus dibuat sebelum proses konversi dimulai, jika tidak akan terjadi kesalahan. Jika satu DBF file yang digunakan untuk data yang dihasilkan, tidak akan ditulis ulang, dan setiap record baru akan dimasukkan ke dalam file yang sama.
  • – nama lengkap yang disebut " berkas peta", yang sederhana DBF file yang berisi definisi sumber dan bidang file yang dihasilkan. Di bawah ini kami akan mempertimbangkan proses pembuatan file peta.
  • <-attr> - gunakan parameter ini jika Anda "ingin mengimpor tag dengan atribut tertentu.

Definisi bidang DBF, atau Cara membuat file peta

Itu selalu lebih baik untuk mempelajari sesuatu dengan menggunakan contoh. Dalam situasi kami, kami membutuhkan beberapa yang terkenal XML. Mari kita ambil RSS umpan berita XML berkas (tersedia):

Seperti yang Anda lihat, ada empat<barang> elemen bersarang di<saluran> elemen, yang bersarang di tingkat atas<rss> elemen. Ada juga elemen dengan level bersarang yang sama dengan<barang> elemen:<generator>, <judul>, <keterangan>, dll.

Misalkan setiap<barang> elemen harus direpresentasikan sebagai satu baris dalam hasil DBF mengajukan. Jadi file kita akan berisi empat record.

Untuk membuat file peta, pertama-tama buat hasilnya DBF mengajukan. Kami membutuhkannya karena kami "akan dapat membuat file peta dalam beberapa klik. Luncurkan Komandan DBF Profesional, klik Berkas -> Baru, dan buat DBF mengajukan. Dalam kasus RSS XML file, strukturnya adalah sebagai berikut:

Klik Oke. Itu DBF file akan dibuat, dan sekarang dapat digunakan sebagai file yang dihasilkan untuk impor kami dari XML proses. Anda dapat menggunakan jenis bidang yang tersedia: karakter, Bilangan bulat, numerik, Tanggal, dll.

Untuk membuat file peta berdasarkan file yang dihasilkan, klik tombol Struktur Ekspor tombol alat (lihat gambar di atas). Saat dialog Simpan terbuka, pilih jalur dan nama file, lalu simpan struktur sebagai DBF mengajukan.

Mencocokkan tag XML ke bidang DBF

Kita harus melakukan satu hal lagi: tentukan XML tag yang harus dimasukkan di bidang yang dihasilkan DBF mengajukan.

Buka DBF file yang baru saja Anda simpan. Klik File -> Struktur dan tambahkan bidang baru bernama" xmltagname"dari karakter Tipe. Anda dapat menambahkan lebih banyak bidang di file peta jika Anda mau. Misalnya, mari "s menambahkan bidang bernama" komentar".Klik Oke untuk menyimpan perubahan.

Sekarang isi setiap baris yang baru" xmltagname"lapangan dengan XML jalur node (dipisahkan oleh " -> ") yang harus dimasukkan ke dalam bidang yang sesuai di DBF mengajukan:

Artinya nilai XML simpul<judul> bersarang di<saluran> simpul yang bersarang di tingkat atas<rss>, akan dimasukkan ke dalam " judul"lapangan; XML menandai" rss -> saluran -> deskripsi"akan dimasukkan ke dalam" deskripsi"lapangan, dan lain-lain.

Dalam hal menggunakan" -attr" parameter, jalur file peta juga harus berisi atribut yang sesuai, mis.: " rss version="2.0" -> saluran -> judul".

Perhatikan " item_desc"lapangan XML menandai" rss -> saluran -> item -> deskripsi" berisi bagian CDATA dengan HTML markup Jadi jalur tagnya harus diakhiri dengan " #cdata-bagian"rangkaian.

Baris terakhir yang dapat Anda lihat pada gambar di atas adalah yang disebut " tag baris". Jalur tag ini memungkinkan Komandan DBF untuk mengetahui yang mana XML tag harus digunakan sebagai baris baru di hasil DBF mengajukan. Dalam kasus kami, itu adalah" rss -> saluran -> barang".

Perhatikan bahwa nilai " nama kolom " harus kosong untuk record yang berisi tag baris, sehingga program dapat mengenali tag baris.

Nah, itu saja. Sekarang kita bisa menjalankan impor dari XML ke DBF diri. Jalankan perintah berikut dari baris perintah, atau dari a KELELAWAR mengajukan:

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

Hasilnya, kami akan mendapatkan file baru D:\dbf\rss.dbf"yang berisi impor XML data:

Anda dapat mengunduh semua file yang digunakan dalam konversi ini dari .

Kirim karya bagus Anda di basis pengetahuan sederhana. Gunakan formulir di bawah ini

Mahasiswa, mahasiswa pascasarjana, ilmuwan muda yang menggunakan basis pengetahuan dalam studi dan pekerjaan mereka akan sangat berterima kasih kepada Anda.

Di-host di http://www.allbest.ru/

Universitas Negeri Pridnestrovian dinamai T.G. Shevchenko

Institut Teknik dan Teknologi

Departemen Teknologi Informasi dan Kontrol Otomatis Proses Produksi

KERJA KUALIFIKASI AKHIR

ke arah 230100 "Ilmu komputer dan teknologi komputer"

topik: "PROGRAM-CONVERTER DATABASES DARI FILE DBF KE FILE FORMAT XML"

Mahasiswa Maksimov Dmitry Olegovich

Tiraspol, 2013

PENGANTAR

1. PENELITIAN DAN ANALISIS WILAYAH SUBJEK

1.1 Deskripsi tugas

1.2 Pembenaran relevansi masalah yang diteliti

1.3 Ikhtisar metode untuk memecahkan masalah serupa

1.4 Pernyataan masalah, persyaratan sistem, persyaratan untuk data input dan formulir output

2. DESAIN STRUKTUR DAN ARSITEKTUR PRODUK PERANGKAT LUNAK

2.1 Pilihan metode dan sarana untuk implementasi, pembenarannya

2.2 Deskripsi algoritma yang diterapkan

2.3 Struktur, arsitektur produk perangkat lunak

2.4 Diagram fungsional, struktur fungsional produk perangkat lunak

3. IMPLEMENTASI DAN PENGUJIAN PRODUK PERANGKAT LUNAK

3.1 Deskripsi implementasi

3.2 Deskripsi antarmuka pengguna

3.3 Menguji dan mengevaluasi keandalan produk perangkat lunak

3.4 Perhitungan biaya

3.5 Perlindungan tenaga kerja

KESIMPULAN

DAFTAR KONVENSI, SIMBOL, UNIT DAN ISTILAH

DAFTAR PUSTAKA YANG DIGUNAKAN

LAMPIRAN

PENGANTAR

Selama keberadaan komputer, banyak sistem operasi telah dikembangkan. Sekarang jumlahnya diukur dalam lusinan dan di berbagai keluarga ada format file yang hanya digunakan di baris sistem operasi tertentu. Jika, misalnya, ada editor universal untuk gambar yang membuka format file apa pun yang berisi gambar yang didukung oleh sistem operasi, maka, misalnya, tidak ada editor seperti itu untuk database.

Untuk bekerja dengan masing-masing format database, ada sistem manajemen database individu. Ada sejumlah besar jenis database yang berbeda dalam berbagai kriteria:

1) Klasifikasi berdasarkan model data:

a) hierarkis;

b) jaringan;

c) relasional;

d) berorientasi objek dan objek;

e) objek-relasional, fungsional.

2) Klasifikasi berdasarkan lingkungan penyimpanan persisten:

a) dalam memori sekunder, atau tradisional;

b) dalam RAM;

c) dalam memori tersier.

3) Klasifikasi menurut derajat penyebarannya:

a) terpusat, atau terkonsentrasi;

b) didistribusikan.

4) Jenis database lainnya

a) spasial;

b) sementara;

c) ruang-waktu;

d) siklus.

Banyaknya basis data yang berbeda tidak memungkinkan Anda untuk secara langsung mentransfer konten basis data dari satu jenis ke jenis lainnya. Untuk mengatasi masalah ini, ada program konverter yang mengubah satu format basis data ke format basis data lainnya. Sebagai aturan, konverter hanya ada untuk format database yang paling umum, yang tidak memungkinkan Anda untuk secara langsung mengonversi beberapa format usang ke format modern. Menggunakan dua konverter tidak rasional, jadi solusi terbaik adalah menyimpan database dalam file XML sebagai langkah perantara.

File XML dan file ekstensi lain berdasarkan bahasa XML telah menjadi sangat luas, hampir semua sistem operasi modern mendukung format file ini. File XML menyimpan berbagai macam data, mulai dari pengaturan aplikasi hingga database. File berbasis XML digunakan untuk bertukar informasi di Internet dan antar program (untuk itulah bahasa markup ini awalnya dirancang). Karena file format XML berisi data teks, mereka dapat dengan mudah diedit di editor teks apa pun, serta mengatur pengkodean data yang mudah digunakan. Selain itu, ada banyak generator dokumen XML.

1 . PENELITIAN DAN ANALISIS WILAYAH SUBJEK

1.1 Deskripsi tugas

Dalam pekerjaan kualifikasi akhir, diperlukan untuk mengimplementasikan program konverter yang membuat, berdasarkan konten file dbf yang ditransfer, file XML sesuai dengan templat yang ditentukan pengguna. Jumlah dan struktur file dbf dapat berubah-ubah, file XML keluaran harus selalu sama. Setiap file dbf memiliki templatnya sendiri, yang menjadi dasar program menulis informasi ke file XML. Penting untuk menerapkan kemampuan membuat templat dengan dua cara: menggunakan kode dan menggunakan konstruktor. Template yang dibuat dengan kode harus memilih data mana yang akan ditulis ke file output. Kemungkinan ini dilakukan dengan bantuan perintah kode khusus yang dikembangkan khusus untuk program ini. Dalam templat yang dibuat menggunakan konstruktor, diperlukan untuk mengimplementasikan antarmuka yang sederhana dan nyaman yang memungkinkan Anda membuat templat khusus, berdasarkan mana program menulis informasi ke file XML.

1.2 Alasan relevansi masalah yang sedang dipelajari

XML adalah bahasa markup yang direkomendasikan oleh World Wide Web Consortium, yang sebenarnya merupakan seperangkat aturan sintaks umum. XML adalah format teks yang dirancang untuk menyimpan data terstruktur (bukan file database yang ada), untuk bertukar informasi antar program, dan untuk membuat bahasa markup yang lebih khusus (misalnya, XHTML) atas dasar itu.

Dokumen XML adalah database hanya dalam arti kata yang paling umum, yaitu kumpulan data. Dalam hal ini tidak berbeda dengan banyak file lain - pada akhirnya, semua file terdiri dari beberapa jenis data. Sebagai format "database", XML memiliki beberapa keunggulan, seperti self-describing (markup mendeskripsikan data). Sangat mudah untuk membuatnya ditangani oleh perangkat lunak yang berbeda karena data disimpan dalam Unicode, ia menyimpan data dalam struktur seperti pohon atau grafik. Tetapi juga memiliki beberapa kekurangan, misalnya terlalu bertele-tele dan relatif lambat dalam mengakses data karena kebutuhan untuk mengurai dan mengonversi teks.

Sisi positifnya, XML memungkinkan Anda untuk mengimplementasikan banyak hal yang dapat ditemukan di database konvensional: penyimpanan (dokumen XML), skema (DTD, XML Schema Language), bahasa kueri (XQuery, XPath, XQL, XML - QL, QUILT, dll.), API (SAX, DOM, JDOM), dll. Kerugiannya termasuk kurangnya banyak fitur yang tersedia di database modern: ekonomi penyimpanan, indeks, keamanan, transaksi dan integritas data, akses multi-pengguna, pemicu, kueri pada banyak dokumen, dll.

Jadi, meskipun dimungkinkan untuk menggunakan dokumen XML sebagai database di lingkungan dengan sedikit data, sedikit pengguna, dan persyaratan kinerja rendah, itu tidak dapat dilakukan di sebagian besar lingkungan bisnis dengan banyak pengguna dan persyaratan integrasi yang kuat, persyaratan data dan kinerja tinggi.

Contoh "database" yang cocok untuk dokumen XML adalah file .ini - yaitu, file yang berisi informasi konfigurasi aplikasi. Jauh lebih mudah untuk membuat bahasa pemrograman dengan sekumpulan kecil fitur berbasis XML dan menulis aplikasi SAX untuk menafsirkannya daripada menulis parser untuk file yang dipisahkan koma. Selain itu, XML memungkinkan Anda untuk menyarangkan elemen data - ini cukup sulit dilakukan saat memisahkan data dengan koma. Namun, file seperti itu hampir tidak dapat disebut database dalam arti kata yang sebenarnya, karena mereka dibaca dan ditulis secara linier dan hanya ketika aplikasi dibuka atau ditutup.

Contoh paling menarik dari kumpulan data di mana nyaman untuk menggunakan dokumen XML sebagai database adalah daftar kontak pribadi (nama, nomor telepon, alamat, dll.). Namun, karena biaya rendah dan kemudahan penggunaan database seperti dBASE dan Access, bahkan dalam kasus ini ada sedikit alasan untuk menggunakan dokumen XML sebagai database. Satu-satunya keuntungan nyata dari XML adalah bahwa data dapat dengan mudah ditransfer dari satu aplikasi ke aplikasi lain, tetapi keuntungan ini tidak begitu penting, karena alat untuk membuat serial database ke dalam format XML sudah tersebar luas.

Pengembangan perangkat lunak relevan karena alasan berikut:

Format basis data dbf sudah usang dan tidak memenuhi persyaratan modern;

Format XML tidak memiliki persyaratan ketat untuk konten, pengguna dapat menyimpan data dalam urutan apa pun dan membuat tag dengan nama apa pun;

Tidak ada program konverter yang memungkinkan Anda membuat struktur file XML Anda sendiri dan menulis data dari beberapa file berformat dbf.

1.3 Ikhtisar metode untuk memecahkan masalah serupa

"Kota Putih" memungkinkan untuk mengonversi file dbf ke format XML. Program ini dapat mengkonversi file dbf dBase III, dBase IV, FoxPro, VFP dan dBase Level 7. Program ini mendukung antarmuka baris perintah. Dengan demikian, ini dapat diluncurkan dari file .BAT atau .LNK setelah menentukan parameter yang diperlukan atau sesuai dengan jadwal dari penjadwal Windows. Kerugian dari produk perangkat lunak ini adalah ketidakmampuan untuk menyesuaikan format file output. Jendela aplikasi utama ditunjukkan pada Gambar 1.1.

Gambar 1.1 - Jendela utama program "Kota Putih"

"DBF Converter" adalah program konversi yang serbaguna namun mudah digunakan. Program ini memiliki antarmuka seperti wizard, tetapi juga dapat digunakan sebagai utilitas baris perintah untuk memproses sekelompok file. "DBF Converter" mendukung semua format pertukaran data modern seperti XML, CSV, TXT, HTML, RTF, PRG dan lainnya. Menerapkan kemampuan untuk mengubah tabel DBF menjadi skrip SQL, yang dapat diimpor ke database SQL apa pun.

Selain transformasi sederhana, "DBF Converter" memungkinkan Anda untuk memanipulasi data dengan hanya memilih kolom tertentu dan menerapkan filter. Tidak seperti aturan penyaringan sederhana yang biasa ditemukan di aplikasi DBF lain, DBF Converter secara dinamis menghasilkan formulir entri database sederhana. Kemampuan untuk mengatur topeng dan aturan lanjutan pada bidang apa pun dari catatan sederhana adalah salah satu fitur paling berharga yang tersedia di DBF Converter. Kerugian utama dari perangkat lunak ini adalah biayanya $29,95.

Jendela aplikasi utama ditunjukkan pada Gambar 1.2.

Gambar 1.2 - Jendela utama program "DBF Converter"

"DBF View" adalah program gratis, ringkas, dan nyaman untuk bekerja dengan file DBF. Tidak memerlukan instalasi, berfungsi tanpa driver dan pustaka tambahan.

Keuntungan utama adalah universalitas, pencarian linier cepat dan fleksibel, yang melampaui banyak SQL dalam kecepatan.

Fitur tambahan:

Cari berdasarkan topeng (pola);

Mengedit, mengganti, menghapus, membuat, menambahkan data;

menyortir bidang;

Multilingualisme dan pembuatan kamus baru;

Impor dan ekspor DBF, TXT, CSV, SQL, XML;

Pengodean ulang ke DOS, Windows, translit, dan lainnya;

Luncurkan kata sandi;

Rekaman sejarah.

Kerugian utama dari perangkat lunak ini adalah ketidakmampuan untuk membuat template saat mengonversi. Jendela utama program ditunjukkan pada Gambar 1.3.

Gambar 1.3 - Jendela utama program "DBF View"

1.4 Pernyataan masalah, persyaratan sistem, persyaratan untuk data keluaran dan formulir keluaran

Setelah mempelajari tugas, memeriksa relevansinya dan menganalisis program konverter yang ada, daftar persyaratan yang diperlukan untuk perangkat lunak yang dikembangkan disusun.

Fungsi berikut harus diimplementasikan dalam produk perangkat lunak:

Membaca isi file dbf;

Membuat template di salah satu dari dua editor;

Pengeditan templat;

Memilih urutan konversi file dbf;

Eksekusi template;

Pencatatan kesalahan;

Menyimpan hasil program dalam file XML.

Perangkat lunak ini ditulis dalam Microsoft Visual Studio 2008 dan harus dijalankan:

Sistem operasi keluarga Windows dari salah satu versi: Windows Vista, Windows 7 atau Windows 8;

Microsoft .NET Framework 4;

Driver ODBC Visual FoxPro.

Persyaratan sistem minimum untuk produk perangkat lunak sesuai dengan persyaratan minimum untuk sistem operasi.

Data input dapat berupa file dbf versi dBase II, dBase III atau dBase IV.

File output harus berupa file format XML dengan bahasa versi 1.x dan dukungan untuk browser apa pun.

Jalur ke file input dan output dapat berubah-ubah.

2 . DESAIN STRUKTUR DAN ARSITEKTUR PRODUK PERANGKAT LUNAK

2.1 Pilihan metode dan sarana untuk implementasi, pembenarannya

Lingkungan pengembangan terintegrasi Microsoft Visual Studio 2008 dipilih untuk pengembangan produk perangkat lunak.

Visual Studio 2008 - Dirilis 19 November 2007, bersama .NET Framework 3.5. Ini ditujukan untuk membuat aplikasi untuk sistem operasi Windows Vista (tetapi juga mendukung XP), Office 2007 dan aplikasi web. Termasuk LINQ, versi baru C#, dan Visual Basic. Studio tidak menyertakan Visual J#. Salah satu kelebihannya adalah antarmuka yang sepenuhnya Rusia.

Visual Studio menyertakan editor kode sumber dengan dukungan untuk teknologi IntelliSense dan kemampuan untuk memfaktorkan ulang kode dengan mudah. Debugger bawaan dapat berfungsi sebagai debugger tingkat sumber dan debugger tingkat mesin. Alat yang dapat disematkan lainnya termasuk editor formulir untuk menyederhanakan pembuatan GUI aplikasi, editor web, perancang kelas, dan perancang skema basis data. Visual Studio memungkinkan Anda membuat dan menghubungkan add-on (plugin) pihak ketiga untuk memperluas fungsionalitas di hampir setiap level, termasuk menambahkan dukungan untuk sistem kontrol versi kode sumber (seperti Subversion dan Visual SourceSafe), menambahkan toolkit baru (misalnya, untuk pengeditan dan desain kode visual dalam bahasa pemrograman khusus domain atau alat untuk aspek lain dari proses pengembangan perangkat lunak (misalnya, klien Team Explorer untuk bekerja dengan Team Foundation Server).

Semua fitur meja kerja berbasis Visual Studio 2008 C# meliputi:

Kemampuan merumuskan tugas dalam bahasa interaksi objek;

Modularitas tinggi dari kode program;

Kemampuan beradaptasi dengan keinginan pengguna;

Tingkat penggunaan kembali program yang tinggi;

Sejumlah besar perpustakaan yang terhubung.

2. 2 Deskripsi algoritma yang diterapkan

Dalam pengembangan perangkat lunak ini, dua kesulitan utama dapat dibedakan: membangun pengenal untuk templat yang dapat diprogram dan membuat model pemrograman yang akan digunakan dalam templat yang dibuat menggunakan konstruktor.

1. Pola yang dapat diprogram. Karena kode yang digunakan dalam template agak mirip dengan kode yang digunakan dalam bahasa pemrograman, maka perlu bahwa pengenal ini mengambil alih beberapa fungsi kompiler kode, atau lebih tepatnya fungsi penguraiannya. Dalam struktur compiler, bagian parsing terdiri dari analisis leksikal, sintaksis dan semantik. Penganalisis leksikal membaca karakter program dalam bahasa sumber dan membangun leksem bahasa sumber darinya. Hasil karyanya adalah tabel pengenal. Parser melakukan ekstraksi konstruksi sintaksis dalam teks program sumber, diproses oleh penganalisis leksikal. Membawa aturan sintaksis program sesuai dengan tata bahasa bahasa. Parser adalah pengenal teks dari bahasa input. Penganalisis semantik memeriksa kebenaran teks program sumber dalam artian bahasa input.

Dengan bantuan kode, fitur-fitur berikut harus diterapkan: membuat loop, mendapatkan dan menampilkan data jumlah baris dan kolom, mendapatkan tipe data dan nama kolom, serta mendapatkan isi sel database. Untuk melakukan ini, pertama-tama, perlu membuat daftar semua kemungkinan status otomat. Kemungkinan keadaan pengenal disajikan pada Tabel 2.1.

Tabel 2.1 - Daftar kemungkinan status pengenal

Indeks Status

Negara

Keterangan

Variabel

Penghitung siklus

Kata layanan yang menunjukkan awal dari sebuah siklus

Kata layanan yang menunjukkan kondisi keluar dari loop

Kata fungsional yang menunjukkan bahwa referensi lebih lanjut adalah ke kolom dasar

Kata fungsional yang menunjukkan bahwa referensi lebih lanjut adalah ke string dasar

Kuantitas

Kata fungsional yang menunjukkan jumlah baris atau kolom, tergantung pada apa panggilan sebelumnya

Kata fungsional yang menunjukkan output dari tipe data kolom yang akan diakses

Nama

Kata fungsional yang menunjukkan keluaran dari nama kolom yang diikuti oleh seruan

Karakter khusus yang memisahkan kata-kata layanan

= (tanda sama dengan)

Karakter khusus yang menunjukkan nilai apa yang akan diberikan ke variabel saat loop dimulai.

[ (kurung terbuka)

] (tutup kurung)

Karakter khusus yang menunjukkan bahwa kolom atau baris tertentu telah diakses

bilangan bulat apa saja

Berdasarkan tabel yang dikompilasi, dimungkinkan untuk membangun mesin keadaan terbatas dari kemungkinan transisi keadaan. Gambar 2.1 menunjukkan mesin negara.

Gambar 2.1 - Mesin keadaan terbatas dari kemungkinan transisi

Berdasarkan otomat yang dibangun, dimungkinkan untuk membangun pengenal menurun dengan pengembalian (dengan pemilihan alternatif). Sebuah pengenal mundur mundur digunakan untuk menentukan apakah string milik tata bahasa. Ini menganalisis keadaan saat ini, mencari aturan transisi dari keadaan saat ini ke keadaan berikutnya, jika keadaan berikutnya cocok, maka prosedur ini diulang untuk yang berikutnya. Jika pengenal tidak dapat menemukan aturan transisi dari keadaan saat ini ke keadaan berikutnya, maka rantai ini bukan milik tata bahasa ini, yaitu, baris kode ditulis dengan kesalahan logis. Jika ada beberapa opsi transisi, maka pengenal mengingat keadaan di mana alternatif muncul dan kembali ke sana jika rantai bukan milik tata bahasa. Gambar 2.2 menunjukkan resolver yang menghadap ke bawah dengan backtrack.

Gambar 2.2 - Downward Resolver dengan Backtracking

Selama analisis template, log kesalahan disimpan yang berisi informasi tentang template mana yang memiliki kesalahan, di mana baris kode tertentu dan jenis kesalahannya. Kesalahan dapat berupa jenis berikut: pengidentifikasi yang tidak dikenal (upaya menggunakan kata layanan atau karakter khusus yang tidak disediakan oleh kode yang diberikan), pelanggaran makna logis (baris kode tidak melewati pengenal), upaya untuk mengakses variabel yang tidak ada (mengakses variabel ke variabel yang tidak dibuat atau mengakses variabel di luar loop), awal loop tidak ditentukan (awal dan akhir loop harus ditentukan dalam bentuk pembukaan dan penutupan kurung keriting).

2. Template dibuat menggunakan konstruktor. Salah satu solusinya adalah struktur yang digunakan dalam bahasa pemrograman logis: terapkan filter kondisi ke informasi input umum, yang dalam hal ini adalah isi tabel database. Gambar 2.3 menunjukkan struktur umum tabel database.

Gambar 2.3 - Struktur umum tabel database

3. Sebagai implementasi, dipilih solusi dengan menggunakan “Truth Table”. Tabel ini merupakan tabel dengan n+1 kolom dan m+1 baris, dimana n dan m adalah jumlah kolom dan baris pada tabel input. Setiap sel tabel menyimpan nilai benar atau salah. Gambar 2.4 menunjukkan "Tabel Kebenaran".

Gambar 2.4 - "Tabel kebenaran"

Saat filter diterapkan, nilai true diganti dengan false, tergantung pada filter apa yang diterapkan. Jika filter diterapkan pada isi sel, maka nilainya akan berubah untuk setiap sel secara khusus, dan jika untuk baris atau kolom, maka hanya di baris atau kolom tambahan.

Saat bekerja dengan database, entitas berikut dapat dibedakan: indeks baris, indeks kolom, jumlah baris, jumlah kolom, jenis kolom, nama kolom, isi sel.

Ketentuan juga ditetapkan:<», «>”, “=”, “berisi”, “cocok”.

4. Entitas dan kondisi yang dipilih cukup untuk menampilkan semua data yang mungkin atau memaksakan semua jenis kondisi. Gambar 2.5 menunjukkan "Tabel Kebenaran" dengan filter yang diterapkan.

Gambar 2.5 - "Tabel kebenaran" dengan filter yang diterapkan

Saat mengeluarkan informasi ke file XML, program menentukan apa yang perlu dikeluarkan, dan kemudian, menggunakan "Tabel Kebenaran", hanya mengeluarkan nilai-nilai yang sesuai dengan nilai sebenarnya.

Untuk membuat tata letak template, jenis tag berikut dibuat: main, simple, global, block. Yang utama adalah tag, hanya ada satu jenis ini dalam dokumen dan itu diperlukan, itu berisi informasi tentang dokumen XML. Sederhana - tag jenis ini adalah satu-satunya cara untuk menampilkan data dan menerapkan kondisi pada "Tabel Kebenaran". Mereka terdiri dari bagian-bagian berikut: judul, sumber, dan kondisi. Entitas yang dipilih sebelumnya digunakan sebagai sumber dan kondisi. Jika tag memiliki nama kosong, kontennya tidak akan ditampilkan, tetapi kondisi "Tabel Kebenaran" akan diterapkan.

Global - tag jenis ini tidak membawa beban logis, mereka hanya diperlukan untuk keluaran.

Blok - tag jenis ini diperlukan untuk menggabungkan logika tag sederhana, dan semua yang tertulis di tag blok akan ditampilkan untuk setiap sel yang memenuhi "Tabel Kebenaran". Tag blok itu sendiri tidak ditampilkan dalam dokumen XML.

2.3 Struktur, arsitektur produk perangkat lunak

Inti dari pemrograman berorientasi objek adalah pengembangan model logis dari suatu sistem dalam bentuk diagram kelas. Diagram kelas (class diagram) berfungsi untuk merepresentasikan struktur statis model sistem dalam terminologi kelas pemrograman berorientasi objek. Diagram kelas dapat mencerminkan, khususnya, berbagai hubungan antara entitas individu dari area subjek, seperti objek dan subsistem, serta menggambarkan struktur internal dan jenis hubungan mereka.

Kelas (class) dalam diagram ini digunakan untuk menyatakan sekumpulan objek yang memiliki struktur, perilaku dan hubungan yang sama dengan objek dari kelas lain. Secara grafis, kelas digambarkan sebagai persegi panjang, yang juga dapat dibagi dengan garis horizontal menjadi beberapa bagian. Bagian ini dapat berisi nama kelas, atribut (variabel), dan operasi (metode).

Selain struktur internal atau struktur kelas, diagram yang sesuai menunjukkan hubungan antar kelas:

Untuk aplikasi ini, kelas yang dijelaskan pada Tabel 2.2 telah dialokasikan.

Tabel 2.2 - Deskripsi kelas yang digunakan dalam produk perangkat lunak

Diagram kelas dari aplikasi konverter ditunjukkan pada Gambar 2.6. Dari diagram, Anda dapat melihat bahwa kelas MyCode adalah variabel dari kelas Template. Kelas Template berisi bidang-bidang berikut: dt, lv, thisTemplate, mycode, fs, sr, sw, correct, masCode, masPerem, masPeremCount, masSost, masCodeLength. dt adalah variabel tipe DataTable yang berisi informasi yang disimpan dalam database; lv - variabel tipe ListView, objek antarmuka tempat pesan kesalahan dalam templat ditulis; thisTemplate - variabel tipe string, yang berarti nama templat yang sedang diproses; mycode - larik kelas MyCode yang menyimpan informasi tentang semua fragmen kode yang ditemukan dalam template ini; fs - variabel tipe FileStream, yang menentukan file mana yang akan digunakan oleh program; sr - variabel tipe StreamReader, yang menentukan dari file mana informasi akan dibaca; sw adalah variabel tipe StreamWriter yang menentukan informasi file mana yang akan ditulis; benar - variabel tipe bool yang menunjukkan apakah fragmen kode saat ini diproses dengan benar; masCode - array tipe string yang berisi semua baris kode yang ditemukan dalam template; masCodeLength - variabel int yang menunjukkan berapa banyak baris kode yang ditemukan dalam template; masPerem - array dua dimensi dari tipe string yang berisi nama dan nilai dari variabel yang dibuat; masPeremCount - variabel bertipe int yang menunjukkan berapa banyak variabel yang telah dibuat saat ini; masSost adalah larik bertipe int yang berisi daftar status mesin untuk baris kode saat ini.

Kelas juga berisi metode berikut: Connect, Search, Analize, Check, ExecuteCode. Metode Connect terhubung ke template di jalur yang diberikan. Metode Pencarian menemukan potongan kode dalam template. Metode Analisis menentukan status untuk baris kode. Metode Periksa bersifat rekursif, ini menentukan validitas logis dari sebuah string. Metode ExecuteCode mengeksekusi template saat ini. Untuk kelas yang dijelaskan, Anda dapat membuat diagram kelas. Gambar 2.6 adalah diagram kelas.

Gambar 2.6 - Diagram kelas

2.4 Diagram fungsional, tujuan fungsional produk perangkat lunak

Produk perangkat lunak telah mengembangkan dua opsi yang memungkinkan untuk memproses informasi dengan algoritme unik.

Jika pengguna menggunakan template kode, ia harus terlebih dahulu menentukan file input, lalu buat template baru atau pilih yang sudah ada. Selanjutnya, pengguna menentukan direktori dan nama file output dan memulai proses konversi. Selama proses ini, bagian-bagian kode dalam templat awalnya dipilih, kemudian leksem dialokasikan di setiap bagian, setelah itu makna logisnya ditentukan dan templat dieksekusi. Jika kesalahan terjadi pada salah satu tahap ini, informasi tentang kesalahan tersebut dicatat dalam log kesalahan. Setelah menjalankan semua template, pengguna dapat menggunakan file output.

Jika Anda menggunakan template yang dibuat menggunakan konstruktor, maka pengguna perlu menentukan database yang perlu dikonversi, kemudian menentukan direktori file output, membuat template dan memulai proses konversi. Konversi itu sendiri terdiri dari dua bagian: membuat tabel kebenaran berdasarkan template dan mengeksekusi konversi sesuai dengan tabel kebenaran. File output kemudian dapat digunakan oleh pengguna sebagaimana dimaksud.

Pada bab kedua pekerjaan kualifikasi akhir, alat pengembangan dipilih, yaitu Microsoft Visual Studio 2008, metode utama untuk mengimplementasikan produk perangkat lunak dijelaskan, dan strukturnya juga dijelaskan. Diagram fungsional produk perangkat lunak juga dijelaskan.

Pokok-pokok pertimbangan dalam bab kedua adalah:

Pilihan metode dan sarana untuk implementasi, pembenarannya;

Deskripsi algoritma yang diterapkan;

Struktur, arsitektur produk perangkat lunak;

Diagram fungsional, tujuan fungsional dari produk perangkat lunak.

3 . PENERAPANDAN PENGUJIANPRODUK PERANGKAT LUNAK

3.1 Deskripsi Implementasi

Salah satu kesulitan dalam mengimplementasikan produk perangkat lunak ini adalah penulisan algoritma pengenal. Seluruh algoritma dijelaskan dengan metode: Search, Analize, Check, ExecuteCode.

Metode Pencarian membaca pola dan menemukan fragmen kode yang ditandai dengan karakter "*" di kedua sisi dan menulisnya ke file .

pencarian void publik()

boolsign=salah;

sementara (!sr.EndOfStream)

if ((c != "*") && (tanda == benar))

( s += c.ToString(); )

if ((c == "*") && (tanda == salah))

if ((c == "*") && (tanda == benar))

kode mas = s;

masCodeLength++; )

s += c.ToString(); ))

kode saya = Kode Saya baru ;)

Metode Analize membagi baris kode menjadi token terpisah dan menentukan status untuk masing-masing token, jika simbol atau kata yang tidak disediakan oleh bahasa digunakan, atau nama variabel yang salah digunakan, pesan kesalahan yang sesuai ditambahkan ke catatan eror. Daftar lengkap leksem yang digunakan disajikan pada Tabel 2.1.

analisis kekosongan publik ()

( string masIdent = string baru;

int masIdentLength = 0;

tanda bool = benar;

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

(benar=salah;

masIdentLength = 0;

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

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

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

( c = masCode[a][b];

masIdentLength++; )

masIdent = ".";

masIdentLength++;

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

( masIdent = s;

masIdentLength++;

( masIdent = s;

masIdentLength++; )

kodesaya[a] = kodesaya baru("", null);

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

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

masSost = int baru;

Di bagian metode sebelumnya, semua token yang ditemukan ditulis ke array masIdent, kemudian loop diinisialisasi di mana status ditentukan untuk semua token yang ditemukan dan ditulis ke array masSost.

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

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

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

lain jika (masIdent[b] == "kolom")

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

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

(bool f = benar;

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

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

if (f == true) masSost[b] = 1; lain

Menambahkan entri kesalahan ke log kesalahan jika ID yang ditemukan tidak ada.

lv.Items.SubItems.Add("Pengidentifikasi tidak dikenal " + masIdent[b]); )) lain

lv.Items.SubItems.Add(kodesaya[a].kode);

lv.Items.SubItems.Add("Pengidentifikasi tidak dikenal " + masIdent[b]);))

mycode[a] = new MyCode(kodesaya[a].kode, masSost);

Centang(0, masSost, a); )

Metode Periksa didasarkan pada pekerjaan resolver turun dengan pengembalian: status saat ini ditentukan, jika memungkinkan, maka transisi dibuat ke yang berikutnya. Jika tidak memungkinkan, maka status beralih ke alternatif, jika tidak ada, maka pesan kesalahan ditambahkan ke log kesalahan.

Cek kekosongan publik (int a, int s, int indc)

( jika (masSost[a] == s)

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

benar = benar; ) lain

jika ((s == 2) && (a == 0)) s = 1; lain

if (((s == 4) || (s == 5)) && (a == 0)) s = 8; lain

if ((s == 1) && (a == 1)) s = 9; lain

if ((s == 8) && (a == 1)) s = 6; lain

if ((s == 10) && (a == 1)) s = 1; lain

jika ((s == 9) && (a == 2)) s = 12; lain

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

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

benar = benar; ) lain

if (((s == 1) || (s == 12)) && (a == 2)) s = 11; lain

jika ((s == 12) && (a == 3)) s = 3; lain

if ((s == 11) && (a == 3)) s = 8; lain

jika ((s == 3) && (a == 4)) s = 12; lain

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

( jika (masSost == 4)

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

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

benar = benar; )

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

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

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

benar = benar; )

Jika larik status input melewati pemeriksaan oleh resolver dan semua status cocok, variabel yang benar disetel ke true, dan jika ada ketidakcocokan di suatu tempat, maka pengembalian dibuat dan diperiksa untuk status alternatif.

jika (benar == salah)

Periksa (a, s, indc); ) )

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

Periksa (a, s, indc); )

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

Periksa (a, s, indc);)

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

Periksa (a, s, indc); )

Jika transisi yang dibuat tidak dikenali, maka baris kode yang diproses dianggap tidak valid secara logis dan entri kesalahan yang sesuai ditambahkan ke log kesalahan.

jika (benar == salah)

lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(masCode);

lv.Items.SubItems.Add("Arti logis dari baris yang dilanggar");

kode saya.koreksi = salah;

Metode ExecuteCode menulis konten template ke file output dengan mengeksekusi baris program. Jika siklus ditemui, maka file sementara dibuat, di mana isi siklus ditulis, dan sampai siklus selesai, isi file ini dijalankan. Ini diperlukan untuk menjalankan loop bersarang.

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

sementara (!sr.EndOfStream)

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

Algoritma membaca file input karakter demi karakter, jika ada kurung kurawal penutup, yang berarti akhir dari loop, dan variabel cikcle adalah benar, maka ini berarti metode itu bersarang dan mengakhirinya.

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

Jika karakter yang dibaca bukan "*", maka ini berarti karakter tersebut tidak termasuk dalam perintah kode dan harus berupa output.

Jika karakter yang dibaca adalah "*", algoritma membaca karakter berikutnya, jika "*", maka ini berarti pengguna ingin menampilkan karakter ini ke file output.

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

Jika karakter berikutnya bukan "*", maka ini berarti semua karakter berikutnya sebelum "*" merujuk ke perintah kode.

jika (kodesaya.koreksi == benar)

jika (mycode.masSost == 1)

( bool buat = salah;

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

( jika (masPerem == kode saya.kode)

sw.Tulis(masPerem);

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

Jika, dalam kode, pengguna mencoba menampilkan variabel yang belum dideklarasikan sebelumnya, maka entri kesalahan ditulis ke log kesalahan dan kode jauh tidak lagi dieksekusi.

jika (buat == salah)

( lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add("Mencoba menampilkan variabel yang tidak ada");

kodesaya.kode = ""; )

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

jika (mycode.masSost == 4)

(jika (mycode.masSost == 6)

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

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

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

(jika (mycode.masSost == 7)

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

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

Jika pengguna mencoba mengakses kolom atau baris yang tidak ada, maka entri kesalahan yang sesuai akan ditambahkan ke log kesalahan.

lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

kodesaya.kode = ""; )

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

( bool buat = salah;

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

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

(jika (mycode.masSost == 13)

sw.Tulis(dt.Kolom)].NamaKolom);

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

lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

lv.Items.SubItems.Add("Indeks di luar cakupan");

kodesaya.kode = ""; )

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

jika (buat == salah) (

Jika pengguna menentukan variabel yang tidak ada sebagai indeks kolom atau baris, entri kesalahan yang sesuai akan ditambahkan ke log kesalahan.

lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

lv.Items.SubItems.Add("Mencoba mengakses variabel yang tidak ada");

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

jika (mycode.masSost == 5)

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

jika (mycode.masSost == 6)

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

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

(jika (mycode.masSost == 12)

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

jika (kodesaya.massost == 12)

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

( bool buat = salah;

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

if (masPerem == mycode.masValue)

n2 = Convert.ToInt32(masPerem);

Jika variabel digunakan sebagai indeks kolom atau baris dan nilainya masing-masing melebihi jumlah kolom atau baris dalam tabel, maka entri tentang kesalahan ini ditambahkan ke log kesalahan.

Lain ( jika (n1 >= dt.Rows.Count)

( jika (kodesaya.kode != "")

(lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

lv.Items.SubItems.Add("Indeks " + n1 + " berada di luar jangkauan");))

if (n2 >= dt.Columns.Count)

( jika (kodesaya.kode != "")

( lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

lv.Items.SubItems.Add("Indeks " + n2 + " berada di luar jangkauan"); ))

kodesaya.kode = ""; )

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

jika (mycode.masSost == 2)

masPerem = kode saya.masValue;

masPerem = kode saya.masValue;

nk = masPeremCount;

masPeremCount++;

jika (kodesaya.massost == 12)

k = Convert.ToInt32(mycode.masValue); lain

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

lain k = dt.Rows.Count;

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

Jika pengguna mendeklarasikan siklus dan setelah itu tidak menunjukkan permulaannya tanpa meletakkan "(", ini dianggap sebagai kesalahan dan entri tentang ini ditambahkan ke log kesalahan.

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

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

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

( lv.Items.Add(Templat ini, Templat ini);

lv.Items.SubItems.Add(kodesaya.kode);

lv.Items.SubItems.Add("Siklus mulai tidak ditentukan");

kode saya.koreksi = salah;

Nkode++; ) lain (

Jika awal loop ditentukan dengan benar, maka variabel yang bertanggung jawab atas kedalaman loop bersarang bertambah satu, isi loop, hingga tanda ")", ditulis ke file sementara, duplikat dari array yang berisi nilai variabel dibuat, dan metode rekursif ini sudah diluncurkan untuk file sementara ini.

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;

sementara (c != ")")

jika (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 Kode Cickle = 0;

tanda bool2 = salah;

sementara (!sr1.EndOfStream)

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

if ((c != "*") && (tanda2 == benar))

( s1 += c.ToString(); )

if ((c == "*") && (tanda2 == salah))

if ((c == "*") && (tanda2 == benar))

( tanda2 = salah;

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

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

( masPerem = a.ToString();

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

Setelah loop berakhir, file sementara dihapus, dan kedalaman loop dikurangi satu.

masPerem = "";

masPerem = "";

NCode = CickleCode + 1;

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

Algoritme untuk bekerja dengan template yang dibuat menggunakan konstruktor dijelaskan dengan metode berikut: Execute, GetTruthTable, ExecuteTag.

Metode Execute dipanggil sekali saat pemrosesan template dimulai. Metode ini bersifat eksternal dan metode lain dipanggil darinya. Awalnya, metode ini membuat file keluaran dan "Tabel Kebenaran".

DataTable kebenarandt=dataTable baru();

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

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

kebenarandt.Kolom.Tambah("",typeof(bool));

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

( DataRow dr = kebenarandt.NewRow();

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

kebenarandt.Rows.Add(dr); )

Setelah itu, loop mulai dijalankan, menyorot setiap tag yang menentukan jenisnya, dan bergantung pada ini, jalankan.

sementara (! lengkap)

( tagind = GetTagIndex(Item);

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

if (mastag.type == types.block)

if (Item >= jumlah item)

lengkap = benar; )

Jika jenis tag bersifat global atau utama, konten tag hanya ditulis ke file.

if (mastag.name != "")

sw.WriteLine(item);

Jika jenis tag adalah blok, maka daftar semua tag yang termasuk dalam fragmen ini ditulis ke larik terpisah, dan juga ditentukan apakah ada tag dalam daftar ini yang memerlukan pengindeksan string untuk menampilkan nilai.

bool haveRow = salah;

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

for (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 == "indeks baris" || blocktag[b].source == "konten sel")

haveRow = benar ;)

Setelah itu, "tabel kebenaran" dibuat dan semua kondisi tag sederhana yang ditemukan dalam daftar diterapkan padanya.

kebenarandt=Buat Tabel(kebenaran,dt);

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

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

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

Selanjutnya, tergantung pada apakah tag yang menggunakan pengindeksan string ditemukan, baik hanya siklus kolom yang dibuat, atau siklus sepanjang kolom dan baris, di mana semua tag yang muncul dieksekusi, kecuali yang blok.

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

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

bool wasEx = salah;

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

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

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

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

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

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

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

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

sw.Write(sr.ReadToEnd());

File.Delete("temp.txt");

( untuk (int a=0;a

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

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

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

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

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

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

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

Jika jenis tag sederhana, maka "Tabel Kebenaran" baru dibuat untuknya dan tag dijalankan.

if (mastag.type == types.simple)

( kebenarandt=Buat Tabel(kebenaran,dt);

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

jika(mastag.nama!="")

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

Metode GetTruthTable menerapkan ketentuan pada "Tabel Kebenaran". Sebagai argumen, dibutuhkan tabel dengan nilai dari database, "Tabel Kebenaran" yang sudah dibuat dan tag, yang kondisinya perlu diproses.

Metode ExecutTag mengeksekusi tag sederhana. Dibutuhkan sebagai argumen tabel data, "tabel kebenaran", tag, indeks baris, indeks kolom, dan aliran penulisan file.

3.2 Deskripsi antarmuka pengguna

Jendela utama program ini dibagi menjadi beberapa bagian: ".dbf", "Template", ".xml" dan log kesalahan. Di semua bagian, kecuali log, ada elemen yang bertanggung jawab untuk memilih direktori yang berisi file atau di mana file harus disimpan. Log kesalahan disajikan sebagai daftar tiga kolom: "pola", "string", "kesalahan". Kolom pertama berisi nama templat tempat kesalahan ditemukan. Di baris kedua, baris tempat kesalahan terjadi. Ketiga, jenis kesalahan.

Juga pada formulir ada elemen yang bukan milik salah satu grup. Beberapa dari mereka mencerminkan kemajuan pekerjaan, sementara yang lain memulai proses itu sendiri.

Gambar 3.1 menunjukkan form utama – jendela utama program.

Gambar 3.1 - Jendela utama program

Saat bekerja dengan template, jendela program tambahan akan terbuka, terdiri dari bidang untuk nama template, elemen yang berisi kode template, dan tombol untuk menyimpan template dan menutup jendela.

Gambar 3.2 menunjukkan tampilan jendela program tambahan (editor template).

Gambar 3.2 - Jendela editor template

Juga pada formulir utama ada kontrol yang membuka formulir untuk membuat templat menggunakan konstruktor.

Formulir konstruktor berisi kontrol berikut: daftar tag yang sudah dibuat, bidang untuk memasukkan nama tag baru, daftar drop-down untuk memilih jenis tag, daftar drop-down untuk memilih sumber tag, panel dengan elemen untuk membuat kondisi tag, bidang untuk mendefinisikan file database, bidang untuk menentukan lokasi file keluaran, tombol untuk menambah dan menghapus tag, tombol untuk memulai pemrosesan. Gambar 3.3 menunjukkan jendela desainer template.

Gambar 3.3 - Jendela konstruktor template

Sebagai hasil dari kerja perangkat lunak, file XML dari berbagai versi bahasa XML diperoleh. Database format dbf versi dBase II, dBase III dan dBase IV digunakan sebagai data input. File yang dikonversi dibuka dengan benar dengan browser berikut: Internet Explorer 10, Mozilla Firefox 19, Google Chrome versi 27.0.1453.93, Opera 12.15. Selain browser, file dapat dilihat dan diedit dengan editor teks apa pun. Berdasarkan hasil yang diperoleh, dapat disimpulkan bahwa file XML yang diperoleh selama pengoperasian program memenuhi persyaratan pelanggan.

3. 3 Pengujian dan evaluasi keandalan produk perangkat lunak

Saat menguji produk perangkat lunak, kesalahan berikut diidentifikasi:

Kesalahan pengindeksan ke sel tabel database;

Kesalahan keluaran variabel loop;

Kesalahan yang terjadi saat indeks baris atau kolom melebihi jumlah mereka.

1. Kesalahan pengindeksan ke sel tabel database. Terjadi ketika template berisi kode bentuk "*row[x].column[y]*", di mana x dan y adalah angka atau variabel. Masalahnya diselesaikan dengan menambahkan kondisi tambahan dalam kode program saat memproses string serupa di templat.

2. Kesalahan keluaran variabel loop. Terjadi ketika kode bentuk "*x*" ditentukan dalam template, di mana x adalah variabel. Masalah ini diselesaikan dengan mengubah kompilasi tabel pengenal.

3. Kesalahan yang terjadi jika indeks baris atau kolom melebihi jumlahnya. Terjadi ketika template berisi kode seperti "*column[x].name*", di mana x adalah angka atau variabel yang nilainya melebihi jumlah kolom. Masalah diselesaikan dengan membandingkan nilai indeks dan jumlah baris atau kolom, jika indeks melebihi, maka entri tentang ini ditambahkan ke log kesalahan dan program terus berjalan.

3. 4 Perhitungan biaya

Bisnis yang terus-menerus bekerja dengan format basis data yang berbeda perlu mengotomatiskan proses konversi dari satu format basis data ke format basis data lainnya. Ini akan meningkatkan produktivitas pekerja, serta mengurangi persyaratan untuk pendidikan mereka.

Produk perangkat lunak, selain bagian perangkat lunak, juga terdiri dari dokumentasi yang menyertainya, yang merupakan hasil kegiatan intelektual pengembang.

Dalam struktur investasi modal yang terkait dengan otomatisasi kontrol, ada investasi modal untuk pengembangan proyek otomasi (biaya pra-produksi) dan investasi modal untuk implementasi proyek (biaya implementasi):

di mana K p - investasi modal untuk desain; - investasi modal untuk pelaksanaan proyek.

Perhitungan investasi modal untuk desain. Investasi modal untuk desain perangkat lunak ditentukan dengan menyusun perkiraan biaya dan ditentukan oleh rumus:

di mana K m - biaya bahan; K pr - upah dasar dan tambahan dengan pemotongan asuransi sosial untuk tenaga teknik dan teknis yang terlibat langsung dalam pengembangan proyek; K mash - biaya yang terkait dengan penggunaan waktu mesin untuk men-debug program; K c - pembayaran untuk layanan kepada pihak ketiga, jika desain dilakukan dengan melibatkan pihak ketiga; K n - biaya overhead departemen desain. Semua perhitungan akan dilakukan dalam satuan konvensional (c.u.), yang sesuai dengan biaya satu dolar AS di Pridnestrovian Republican Bank pada saat pengembangan perangkat lunak.

Biaya bahan. Mari kita tentukan perkiraan biaya dan hitung biaya bahan K m, yang digunakan untuk pengembangan perangkat lunak. Daftar bahan ditentukan oleh tema tesis. Mereka termasuk yang berikut: pembawa informasi (kertas, cakram magnetik) dan benda kerja yang dapat dikenakan (pena, pensil, karet gelang). Estimasi biaya bahan disajikan pada tabel 3.1.

Tabel 3.1 - Perkiraan biaya bahan

Dokumen serupa

    Implementasi program konverter untuk membuat file format XML berdasarkan file dbf yang ditransfer (sesuai dengan templat yang ditentukan pengguna). Buat template menggunakan kode dan menggunakan konstruktor. Desain arsitektur produk perangkat lunak.

    tesis, ditambahkan 27/06/2013

    Pengembangan program konverter yang, berdasarkan konten file dbf yang ditransfer, membuat file XML sesuai dengan templat yang ditentukan pengguna. Pertimbangkan untuk membuat template dengan dua cara: menggunakan kode dan menggunakan konstruktor.

    makalah, ditambahkan 24/06/2013

    Merancang antarmuka pengguna dari program yang mengenkripsi dan mendekripsi file. Pilihan format penyajian data. Daftar prosedur, makro dan tujuannya. Deskripsi fungsi yang digunakan dalam program, pengujian dan debugging.

    makalah, ditambahkan 17/05/2013

    Fitur "mesin pencari" file duplikat pada disk. Pilihan lingkungan pemrograman. Pengembangan produk perangkat lunak. Persyaratan dasar untuk program yang mencari file duplikat pada disk. Tampilkan file tersembunyi.

    makalah, ditambahkan 28/03/2015

    Karakteristik pekerjaan pengarsip - program komputer yang memampatkan data menjadi satu file arsip untuk transmisi yang lebih mudah, penyimpanan yang ringkas. Fitur proses pengarsipan - menulis file dan membuka ritsleting - membuka file.

    abstrak, ditambahkan 26/03/2010

    Pengembangan produk perangkat lunak untuk mengekspor spesifikasi dari aplikasi PartList. Pilihan metode mentransfer informasi ke file, format presentasi. Pengembangan konverter, implementasi antarmuka pengguna. Alasan relevansi pengembangan.

    tesis, ditambahkan 25/09/2014

    Desain perangkat lunak. Skema pembentukan awal direktori file, menampilkan direktori file, menghapus file, mengurutkan file berdasarkan nama, tanggal pembuatan dan ukuran menggunakan metode pemilihan langsung. Manajemen direktori dalam sistem file.

    makalah, ditambahkan 01/08/2014

    Karakteristik format file wav dan mp3. Membangun diagram use case, mengembangkan antarmuka grafis dan arsitektur aplikasi. Pengembangan algoritma operasi program: metode TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.

    makalah, ditambahkan 20/12/2013

    Ikhtisar fitur bekerja dengan program Total Commander. Buat folder, salin file ke flash drive. Memanggil menu konteks. Definisi struktur file. Mengganti nama sekelompok file. Menempatkan file dalam arsip. Memisahkan arsip menjadi beberapa bagian.

    pekerjaan laboratorium, ditambahkan 04/08/2014

    Pembuatan dan verifikasi model untuk penempatan file yang optimal dalam jaringan komputer dengan topologi berbentuk bintang, cincin, dan arbitrer. Jumlah data yang diperlukan untuk mentransfer file. Distribusi file yang optimal melalui node jaringan komputer.

DBF adalah file database, kemampuan untuk bekerja dengan yang sebelumnya terintegrasi ke dalam lingkungan Microsoft Office. Aplikasi Access dan Excel bekerja dengan format, kemudian Access dihapus dari paket dan menjadi program terpisah, dan di Excel sejak 2007 dukungan DataBaseFile sangat terbatas.

Jika Anda tidak dapat membuka file DBF secara langsung di Excel, Anda harus mengonversinya terlebih dahulu.

Namun, meskipun DBF dianggap oleh banyak orang sebagai format usang, masih banyak digunakan dalam program khusus dalam bisnis, desain, dan teknik. Di mana pun Anda perlu bekerja dengan sejumlah besar informasi, penataan dan pemrosesannya, eksekusi kueri. Misalnya, paket perangkat lunak 1C Enterprise sepenuhnya didasarkan pada manajemen basis data. Dan mengingat banyak dokumentasi dan data kantor masuk ke Excel, masalah pekerjaan terintegrasi dengan format ini relevan dan diminati.

Masalah Excel saat bekerja dengan DBF

Di Excel 2003, dimungkinkan untuk membuka dan mengedit DBF, serta menyimpan dokumen XLS dalam format ini:

  1. Pilih "File" dari bilah menu.
  2. Selanjutnya, klik "Simpan Sebagai".
  3. Pilih "*.dbf" dari daftar drop-down.

PENTING. Sejak 2007, Anda dapat membuka dan menampilkan format database di Excel, tetapi Anda tidak dapat membuat perubahan atau menyimpan dokumen .xls di dalamnya. Alat program standar tidak lagi menyediakan kemungkinan ini.

Namun, ada add-on khusus untuk aplikasi yang menambahkan fungsi seperti itu. Di jaringan di berbagai forum, programmer memposting perkembangan mereka, Anda dapat menemukan opsi yang berbeda. Pengaya paling populer yang disebut XslToDBF dapat diunduh dari situs pengembang http://basile-m.narod.ru/xlstodbf/download.html. Unduhan gratis, tetapi jika Anda mau, Anda dapat mendukung proyek dengan mentransfer jumlah berapa pun ke dompet atau kartu Anda.

Instalasi dan penggunaan:

  1. Unduh arsip dari situs di atas.
  2. Ekstrak XlsToDBF.xla darinya dan simpan di komputer Anda.
  3. Di Excel, buka menu dengan tombol ikon Microsoft di sebelah kiri, Opsi.
  4. Di bawah Opsi Excel, pilih Add-In.
  5. Di baris "Kelola / Excel Add-in", klik "Go".
  6. Klik Browse dan arahkan ke XlsToDBF.xla yang disimpan.
  7. Dalam daftar add-on, entri "XLS -> DBF" akan muncul dengan kotak centang yang dicentang. Catatan jika tidak ada.
  8. Sekarang Anda dapat menyimpan .xls ke format .dbf. Dari situs yang sama Anda dapat mengunduh instruksi terperinci untuk digunakan. Hal utama adalah menyiapkan data tabular dengan benar.
  9. Setelah tabel siap, pilih sel yang terisi dan tekan Alt dan F
  10. Di jendela makro yang terbuka, ketik XlsToDBF di bidang, kasus tidak penting.
  11. Klik Jalankan.
  12. Jika Anda telah menyiapkan dan memformat data dengan benar, maka file database akan disimpan di folder tempat XLS asli berada.

Jika Anda tidak ingin mengubah apa pun di Office, tidak mempercayai add-in dan aplikasi pihak ketiga, maka Anda dapat menawarkan cara yang lebih memakan waktu untuk mengonversi file XLS ke DBF:

  1. Beli dan instal Microsoft Access.
  2. Di Excel, siapkan dan simpan dokumen.
  3. Klik tombol "Buka" di MS Access dan pilih file.
  4. Sekarang Anda perlu mengonfigurasi impor dengan benar.
  5. Pilih lembar untuk memulai. Jika ada beberapa, Anda masih harus melakukannya satu per satu.
  6. Jika tabel memiliki baris header, centang kotak yang sesuai.
  7. Selanjutnya, Anda dapat mengubah nama tabel.
  8. Sekarang klik "Data Eksternal".
  9. Klik tombol "Ekspor", "Lanjutan".
  10. Pilih File dBase.
  11. Tentukan nama dan simpan lokasi.

Cara ini tidak selalu berhasil, sering terjadi kesalahan dalam pengolahan data dan penyimpanan selanjutnya. Dan itu sangat panjang dan tidak nyaman.

Konversi

Agar tidak menderita dengan program perkantoran, banyak aplikasi telah dibuat yang memungkinkan Anda untuk mentransfer data dari satu format ke format lainnya. Pertama, hampir semua program DBMS yang kuat menawarkan kemampuan untuk mengekspor ke dan memuat dari XLS. Kedua, ada utilitas kecil yang mengkhususkan diri dalam konversi. Berikut adalah beberapa di antaranya:


Di semua program ini, konversi bermuara pada fakta bahwa Anda perlu membuka file sumber, dan kemudian menjalankan perintah "Konversi" atau "Ekspor".

Ada juga layanan konversi online gratis. Di situs tersebut, diusulkan untuk mengirim (mengunggah) file sumber, klik "Konversi", setelah itu tautan ke dokumen yang dikonversi akan muncul. Seberapa besar Anda dapat mempercayai layanan semacam itu, keputusannya bersifat individual, atas risiko dan risiko Anda sendiri.

Dengan demikian, Anda dapat membuka DBF di Excel, tetapi jika versinya 2007 dan yang lebih baru, maka tidak ada lagi yang bisa dilakukan dengannya, lihat saja. Untuk mengedit, menyimpan di XLS, ada add-on atau program khusus, serta untuk mengonversi ke arah yang berlawanan. Jika Anda memiliki pengalaman mengonversi dan bekerja dengan DBF di berbagai aplikasi, silakan bagikan kiat Anda di komentar.