Halo, Habr!
Setiap programmer ingin memompa keterampilannya dan setiap perusahaan ingin melihat spesialis yang berkualitas, tetapi bagaimana cara mencapainya? Olimpiade datang untuk menyelamatkan, artikel ini akan membahas tentang partisipasi di salah satunya.
Mundur
Artikel itu ternyata sangat produktif, sehingga semua kode dan sebagian besar gambar berada di bawah spoiler. Masih menguji format pengiriman artikel. Jika format ini terasa tidak nyaman bagi Anda, silakan tulis tentang itu. Juga, semua gambar dapat diklik.
Tentang kontes
WorldSkills adalah kompetisi yang tujuannya untuk mengidentifikasi para profesional di bidang tertentu. Persaingan berakar dengan WorldSkills International (WSI), asosiasi nirlaba internasional.
Partisipasi dalam kompetisi ini gratis. Usia peserta adalah 18 hingga 28 tahun, pelajar di perguruan tinggi atau universitas.
Kompetisi di universitas berlangsung selama 5 hari: pada hari pertama, pembukaan dan verifikasi pekerjaan, kemudian tiga hari kompetisi, pada hari terakhir - menyimpulkan dan menutup.
Tentang pemilihan kompetensi dan pelatihan
Saya belajar tentang Olimpiade secara kebetulan selama salah satu praktik di universitas pada tahun ke-2. Saya diundang untuk berpartisipasi dalam kompetensi “Pengembangan solusi perangkat lunak untuk bisnis”. Untuk memecahkan masalah, diperlukan pengetahuan dalam C # atau Java, bekerja dengan basis data, dan seperti yang saya ketahui selama Olimpiade Android pertama, diperlukan. Pembukaan Olimpiade dijadwalkan awal Juni, dan jendelanya sudah akhir April. Pada saat itu saya sama sekali tidak tahu apa-apa yang diperlukan.
Kejutan saya tidak mengenal batas ketika semua calon peserta dikumpulkan untuk pelatihan. Ada 7 orang di antara hadirin, 6 di antaranya sudah siswa tahun ketiga, dan saya adalah yang ketujuh. Kenapa aku begitu terkejut? Pada tahun ketiga, siswa diajarkan kursus tentang Database, yang berlangsung selama 2 semester, yang berarti bahwa setiap orang memiliki lebih dari satu tahun latihan. Saya tidak ingin menolak, jadi saya meminta para guru untuk buku di database, menemukan
kursus C # di Internet dan mulai mempersiapkan, secara berkala muncul di kelas persiapan.
Dua minggu sebelum dimulainya Olimpiade, kami mengetahui bahwa tidak lebih dari tiga orang dapat berpartisipasi dari departemen kami. Melewati babak kualifikasi. Dalam 1,5 jam kami harus membuat database dalam sistem manajemen basis data MSSQL menggunakan model ER, mengimpor data dari file Excel dan menunjukkannya di aplikasi. Singkatnya, saya diizinkan untuk berpartisipasi dalam Olimpiade dari departemen kami.
Sekarang tentang kompetisi
Hari pertama kompetisi atau "C -1"
Penemuan yang ditunggu-tunggu itu berlangsung pada hari ini. Semua peserta dikumpulkan di auditorium, di mana mereka bercerita tentang sejarah WorldSkills, kompetensi dan memperkenalkan semua ahli dengan para peserta.
Setelah upacara ini, semua orang pergi ke situs mereka untuk memeriksa peralatan. Sebuah "ritual pengabdian" diadakan, di mana kami memilih pekerjaan kami dan menandatangani untuk keselamatan. Pada saat itu, saya tidak tahu apa yang bisa saya periksa di perangkat lunak, jadi segera setelah undian saya pergi untuk mempersiapkan hari berikutnya.
Hari kedua kompetisi atau awal kompetisi
Apa itu Olimpiade?
Untuk kompetensi kami, dalam 2 hari (tiga untuk kompetensi lainnya), selama 6 jam, dengan istirahat, kami diminta untuk menulis aplikasi client-server di C # / Java dengan pertanyaan ke database. Lebih tepatnya, untuk mengatakan "semua yang kita punya waktu untuk menulis," karena prinsip Olimpiade adalah "lakukan apa yang kamu bisa dan bagaimana kamu bisa."
Menurut para ahli, kriterianya adalah beberapa puluh halaman A4. Kriteria dikeluarkan hanya setelah akhir sesi dan hanya untuk para ahli, jadi saya tidak bisa mengatakan apa-apa tentang mereka.
Mari kita beralih ke acara hari kedua. Untuk sesi pertama diperlukan untuk menerapkan hal berikut:
- Buat database menggunakan diagram ER yang terkenal
- Impor data dari file Excel ke database
- Buat 4 layar untuk tata letak dalam presentasi
Dan untuk yang kedua buat lima layar lagi untuk tata letak.
Singkatnya, semua tugas diselesaikan, kecuali untuk menampilkan gambar dari database dan membuat daftar elemen kustom.
Beberapa tangkapan layar:

Antarmuka memungkinkan Anda menemukan pemain berdasarkan nama (bahkan huruf pertama), musim, dan tim. Dengan mengklik dua kali pada gambar yang belum diimplementasikan, informasi terperinci tentang pemain dibuka. Sekarang saya akan mengimplementasikannya melalui DataGridViewImageColumn.

Bagaimana saya menyimpan gambarprivate void download_Click(object sender, EventArgs e) { SaveFileDialog saveFile = new SaveFileDialog(); saveFile.DefaultExt = ".jpg"; saveFile.AddExtension = true;
Tangkapan layar lebih banyak, teks dan kode
Antarmuka adalah layar utama, yang memungkinkan Anda untuk memilih peran "Pengguna" atau "Administrator", serta menonton momen terbaik dari pertandingan. Bagaimana menempatkan elemen di tengah tidak dapat menemukan.
Implementasi unggahan gambar private int countImages() { sqlConnection = new SqlConnection(connectionString); using (sqlConnection) { sqlConnection.Open(); String sqlcomm = "SELECT Count(*) FROM [Pictures$]"; SqlCommand command = new SqlCommand(sqlcomm, sqlConnection); int result = (int)command.ExecuteScalar(); return result; } } private void loadPage() { sqlConnection = new SqlConnection(connectionString); using (sqlConnection) { sqlConnection.Open(); String sqlcomm = "SELECT [Img] , [CreateTime] FROM [Pictures] P" + " Order By P.CreateTime Desc" + " Offset @click Rows FETCH NEXT @svm ROWS ONLY"; SqlCommand cmd = new SqlCommand(sqlcomm, sqlConnection); cmd.Parameters.AddWithValue("@click", click); cmd.Parameters.AddWithValue("@svm", svm); dataAdapter.SelectCommand = cmd; DataSet data = new DataSet(); dataAdapter.Fill(data); imageList1.Images.Clear(); listView1.Clear(); for (int i = 0; i < data.Tables[0].Rows.Count; i++) { imageList1.Images.Add(Image.FromFile("..\\Pictures\\" + data.Tables[0].Rows[i].ItemArray[0].ToString())); } listView1.LargeImageList = imageList1; for (int i = 0; i < imageList1.Images.Count; i++) listView1.Items.Add("").ImageIndex = i; } } private void left_Click(object sender, EventArgs e) { if (click > 0) { if (!right.Enabled) { right.Enabled = true; } click -= svm; loadPage(); } else { left.Enabled = false; } } private void right_Click(object sender, EventArgs e) { if (click + svm < totalPhotos) { if (!left.Enabled) { left.Enabled = true; } click += svm; loadPage(); } else { right.Enabled = false; } }

Antarmuka untuk otorisasi administrator teknis dan penyelenggara pertandingan, memungkinkan Anda untuk mengingat nama pengguna dan kata sandi yang dimasukkan terakhir. Dalam kasus saya, saya menulis data ke file di hard drive tanpa enkripsi.
Memeriksa keberadaan nama pengguna dan kata sandi yang dimasukkan dalam database private int checkData(string jobnumber, string password) {
Jika Anda tahu cara terbaik untuk memverifikasi data, silakan tulis di komentar.

Dan ini adalah tampilan layar yang belum selesai, di sini saya hanya melemparkan komponen pada formulir sesuai dengan tata letak. Bisakah Anda memberi tahu saya cara membuat daftar khusus di C #?

Layar yang paling sulit bagi saya, karena ada pekerjaan dengan grafik yang saya tidak siapkan.
Hari ketiga kompetisi atau pertemuan tak terduga dengan Android
Hari sebelumnya bisa dianggap sebagai pemanasan dibandingkan dengan yang ketiga. Pada 3 sesi, 8 layar lainnya akan dikreditkan. Dan pada sesi terakhir, ada perubahan rencana, dan alih-alih presentasi tentang produk yang dikembangkan, kami mulai membuat versi yang disederhanakan untuk Android. Yaitu, galeri dengan gambar yang diunggah dari database. Sekarang kedengarannya mudah, tetapi pada saat itu saya senang bahwa sesi diberikan 15 menit untuk mengakses Internet. Dalam 3 jam, GridView dibuat dengan elemen dalam bentuk ImageView, array gambar id ditransfer ke Adaptor, dan antarmuka OnItemClickListener didefinisikan ulang untuk membuat Kegiatan baru dengan gambar.
Beberapa tangkapan layar lainnya:

Antarmuka untuk administrator, memungkinkan Anda untuk melihat informasi tentang pemain. Layar yang paling tidak berguna, menurut saya, karena Anda tidak dapat melakukan perubahan.
|

|

|
Galeri "sempurna" saya dalam 3 jam menggunakan Internet dan tanpa keterampilan pemrograman untuk Android.
Lebih banyak gambar, teks, dan kode.Kode untuk membuat galeri saat Anda tidak tahu cara bekerja dengan database class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar)

Dengan mengklik pada musim (tabel kanan), informasi terperinci tentang semua pertandingan terbuka.

Antarmuka untuk administrator yang memungkinkan Anda untuk membuat perubahan pada daftar perintah dan mengekspor data ke Excel.
Bagaimana saya mengekspor data ke Excel private void exportExcel_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel (*.xls)|*.xls|All files (*.*)|*.*"; saveFileDialog.DefaultExt = ".xls"; if (saveFileDialog.ShowDialog() != DialogResult.OK) return; if (saveFileDialog.FileName.Equals("")) return; DataTable dt = (DataTable)dataGridView2.DataSource;
Ringkasan
Pada pukul 12 siang, upacara penutupan berlangsung, di mana semua peserta diberikan sertifikat, dan medali dengan diploma menunggu pemenang dan pemenang hadiah. Dalam kompetensi kami, saya mengambil tempat kedua. Di antara penghargaan kompetensi, siswa tampil dengan lagu dan tarian.
Kesimpulan
Selama bulan persiapan, saya menguasai tim DDL dan DML SQL, yang sangat menyederhanakan pekerjaan pada pasangan DB di tahun ketiga. Pengetahuan yang diperoleh dalam C # dan Windows Form menyisakan banyak yang diinginkan, kecuali untuk bekerja dengan database dan antarmuka pengguna, saya tidak harus bekerja dengan apa pun.
Tahun ini saya juga mengambil bagian dalam Olimpiade WorldSkills dan menempati posisi pertama, tetapi tentang ini, tugas-tugas rumit dan konsekuensi dari memutuskan koneksi Internet di situs-situs pada artikel berikutnya.