مرحبا يا هبر!
كل مبرمج يريد أن يضخ مهاراته وكل شركة تريد أن ترى متخصصين مؤهلين ، ولكن كيف تحقق ذلك؟ تأتي الألعاب الأولمبية لإنقاذ ، وسوف يكون هذا المقال حول المشاركة في واحد منهم.
تراجع
تحولت المقالة إلى أن تكون ضخمة ، لذلك كل رمز ومعظم الصور هي تحت المفسدين. لا يزال اختبار شكل تقديم المادة. إذا بدا هذا التنسيق غير مريح لك ، فيرجى الكتابة عنه. أيضا ، كل الصور قابلة للنقر.
عن المسابقة
WorldSkills هي مسابقة هدفها تحديد المهنيين في مجال معين. تأخذ المنافسة جذورها مع WorldSkills International (WSI) ، وهي جمعية دولية لا تبغي الربح.
المشاركة في المسابقة مجانية. عمر المشاركين من 18 إلى 28 سنة ، طلاب في الكليات أو الجامعات.
تستمر المنافسة في الجامعة 5 أيام: في اليوم الأول ، يتم فتح الوظائف والتحقق منها ، ثم ثلاثة أيام من المنافسة ، في اليوم الأخير - التلخيص والإغلاق.
حول اختيار الكفاءات والتدريب
لقد تعلمت عن الألعاب الأولمبية بالصدفة خلال إحدى الممارسات في الجامعة في السنة الثانية. دعيت للمشاركة في اختصاص "تطوير حلول البرمجيات للأعمال". لحل المشكلات ، يلزم توفر المعرفة في C # أو Java ، باستخدام قاعدة بيانات ، وكما اكتشفت خلال أوليمبياد Android الأولى. كان من المقرر افتتاح الأولمبياد في أوائل يونيو ، وكانت النافذة بالفعل في نهاية أبريل. في تلك اللحظة ، لم أكن أعرف شيئًا على الإطلاق.
لم تكن مفاجأتي تعرف أي حدود عندما تم جمع جميع المشاركين المحتملين للتدريب. كان هناك 7 أشخاص في الحضور ، 6 منهم بالفعل طلاب في السنة الثالثة ، وكنت السابعة. لماذا فوجئت بذلك؟ في السنة الثالثة ، يتم تعليم الطلاب دورة تدريبية حول قواعد البيانات ، والتي تستمر لمدة فصلين دراسيين ، مما يعني أن كل شخص كان لديه أكثر من عام من الممارسة. لم أكن أرغب في الرفض ، لذلك طلبت من المدرسين الكتب على قاعدة البيانات ، ووجدت
دورة C # على الإنترنت وبدأت الإعداد ، تظهر بشكل دوري في الفصول التحضيرية.
قبل أسبوعين من بدء الأولمبياد ، علمنا أنه لا يمكن لأكثر من ثلاثة أشخاص المشاركة من قسمنا. اجتاز جولة التصفيات. خلال 1.5 ساعة ، كان علينا إنشاء قاعدة بيانات في نظام إدارة قاعدة بيانات MSSQL باستخدام نموذج ER واستيراد البيانات من ملف Excel وإظهارها في التطبيق. باختصار ، سُمح لي بالمشاركة في الأولمبياد من قسمنا.
الآن عن المنافسة
في اليوم الأول من المسابقة أو "C -1"
الاكتشاف الذي طال انتظاره حدث في هذا اليوم. تم جمع جميع المشاركين في القاعة ، حيث تحدثوا عن تاريخ وورلد سكيلز والكفاءات وقدموا جميع الخبراء مع المشاركين.
بعد هذا الحفل ، ذهب الجميع إلى مواقعهم للتحقق من المعدات. تم عقد "طقوس التفاني" ، حيث اخترنا وظائفنا ووقعنا من أجل السلامة. في ذلك الوقت ، لم أكن أعرف ما يمكنني التحقق من البرنامج ، لذلك مباشرة بعد السحب تركته للتحضير لليوم التالي.
اليوم الثاني من المسابقة أو بداية المسابقة
ماذا كانت الأولمبياد؟
من أجل كفاءتنا ، خلال يومين (ثلاثة للكفاءات الأخرى) ، لمدة 6 ساعات ، مع فترات راحة ، طُلب منا كتابة تطبيق خادم عميل في C # / Java مع استفسارات إلى قاعدة البيانات. بتعبير أدق ، أن نقول "كل ما لدينا وقت للكتابة" ، لأن مبدأ الأولمبياد هو "افعل ما تستطيع وكيف يمكنك.
وفقا للخبراء ، كانت المعايير عدة عشرات من صفحات A4. يتم إصدار المعايير فقط بعد نهاية الجلسة وفقط للخبراء ، لذلك لا أستطيع أن أقول أي شيء عنها.
دعنا ننتقل إلى أحداث اليوم الثاني. في الجلسة الأولى ، كان مطلوبًا تنفيذ ما يلي:
- إنشاء قاعدة بيانات باستخدام مخطط ER معروف
- استيراد البيانات من ملفات Excel إلى قاعدة البيانات
- إنشاء 4 شاشات للتخطيطات في العرض التقديمي
وللثاني تشكل خمس شاشات أخرى للتخطيطات.
باختصار ، تم حل جميع المهام ، باستثناء عرض الصور من قاعدة البيانات وإنشاء قائمة مخصصة من العناصر.
بعض لقطات الشاشة:

تتيح لك الواجهة العثور على لاعبين بالاسم (حتى الحرف الأول) والموسم والفريق. بالنقر المزدوج فوق صورة لم يتم تنفيذها ، يتم فتح معلومات مفصلة عن المشغل. الآن أود أن تنفيذه من خلال DataGridViewImageColumn.

كيف حفظت الصورprivate void download_Click(object sender, EventArgs e) { SaveFileDialog saveFile = new SaveFileDialog(); saveFile.DefaultExt = ".jpg"; saveFile.AddExtension = true;
المزيد من لقطات الشاشة والنص والرمز
الواجهة هي الشاشة الرئيسية ، مما يتيح لك تحديد دور "المستخدم" أو "المسؤول" ، وكذلك مشاهدة أفضل لحظات من المباريات. كيفية وضع العناصر في المركز لا يمكن العثور عليها.
تنفيذ تحميل الصور 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; } }

واجهة لإذن المسؤولين التقنيين ومنظمي المطابقة ، مما يتيح لك تذكر آخر اسم مستخدم وكلمة مرور تم إدخالهما. في حالتي ، كتبت البيانات إلى ملف على القرص الصلب دون تشفير.
التحقق من وجود اسم المستخدم وكلمة المرور المدخلة في قاعدة البيانات private int checkData(string jobnumber, string password) {
إذا كنت تعرف أفضل طريقة للتحقق من البيانات ، يرجى كتابة التعليقات.

وهكذا تبدو الشاشة غير المكتملة ، وهنا ألقيت المكونات على النموذج وفقًا للتخطيط. هل يمكن أن تخبرني كيف أقوم بإنشاء قائمة مخصصة في C #؟

أصعب شاشة بالنسبة لي ، حيث كان هناك عمل مع المخططات التي لم أستعد لها.
اليوم الثالث من المسابقة أو لقاء غير متوقع مع Android
يمكن اعتبار اليوم السابق عملية احماء مقارنة باليوم الثالث. في 3 جلسات ، تم إضافة 8 شاشات أخرى. وفي الجلسة الأخيرة ، كان هناك تغيير في الخطط ، وبدلاً من عرض تقديمي حول المنتج المطور ، بدأنا في عمل نسخة مبسطة لنظام Android. وهي معرض مع الصور التي تم تحميلها من قاعدة البيانات. الآن يبدو الأمر سهلاً ، لكن في تلك اللحظة كنت سعيدًا لأن الجلسة مُنحت 15 دقيقة للوصول إلى الإنترنت. في 3 ساعات ، تم إنشاء GridView مع عناصر في شكل ImageView ، تم نقل مجموعة من صور المعرف إلى المحول ، وتمت إعادة تعريف واجهة OnItemClickListener لإنشاء نشاط جديد مع صورة.
بعض لقطات أكثر:

واجهة المسؤول ، مما يتيح لك عرض المعلومات على اللاعبين. الشاشة الأكثر فائدة ، في رأيي ، لأنه لا يمكنك إجراء تغييرات.
|

|

|
معرض "مثالي" الخاص بي خلال 3 ساعات باستخدام الإنترنت ودون مهارات البرمجة لنظام Android.
المزيد من الصور والنصوص والرمز.رمز لإنشاء معرض عندما لا تعرف كيفية العمل مع قاعدة البيانات class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar)

من خلال النقر على موسم (الجدول الأيمن) ، يتم فتح معلومات مفصلة عن جميع المباريات.

واجهة للمسؤولين تسمح لك بإجراء تغييرات على قائمة الأوامر وتصدير البيانات إلى Excel.
كيف قمت بتصدير البيانات إلى 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;
تلخيص
في الساعة 12 ، أقيم حفل ختامي ، حيث تم منح جميع المشاركين شهادات ، والميداليات التي حصلت على شهادات تنتظر الفائزين والفائزين بالجوائز. في اختصاصنا ، احتلت المركز الثاني. بين مكافأة الكفاءات ، قام الطلاب بأداء الأغاني والرقصات.
استنتاج
خلال شهر الإعداد ، أتقنت فرق DDL و DML SQL ، الأمر الذي سهّل إلى حد كبير العمل على أزواج DB في السنة الثالثة. المعرفة المكتسبة في C # و Windows Form يترك الكثير مما هو مرغوب فيه ، باستثناء العمل مع قواعد البيانات وواجهة المستخدم ، لم أكن مضطرًا للعمل مع أي شيء.
شاركت هذا العام أيضًا في أولمبياد WorldSkills وأخذت المركز الأول ، لكن عن هذا ، المهام المعقدة وعواقب قطع الاتصال بالإنترنت على المواقع في المقالة التالية.