Fizika-matematika fakulteti



Yüklə 232,18 Kb.
səhifə7/8
tarix22.03.2024
ölçüsü232,18 Kb.
#180498
1   2   3   4   5   6   7   8
Talabalar haqida ma’lumotlarini jamlovchi tizim

Komponent - bu tozalash va saqlash bilan mashg'ul bo'lgan sinf. Komponent konteynerda joylashtirilishi mumkin va uning konteyneridan so'rov va xizmatlarni olish qobiliyatiga ega. Saqlash mantiqan to'g'ri keladi va ingl. Ushbu komponentlar biznes komponentlari sifatida o'rta darajadagi konteynerga joylashtirilishi mumkin. O'rta qatlamda joylashtirilgan ma'lumotlar bazasining tarkibiy qismlari.
Komponentlar real “project”imizning eng kerakli qismlari desak bo’ladi. Komponentlar dasturda sinf ko’rinishida e’lon qilinadi. Microsoft Windows operatsion tizimida mavjud bo'lgan foydalanuvchi interfeysi xususiyatlaridan to'liq foydalanadigan Windows-ga asoslangan dasturlarni yaratish uchun mo’ljalllangan sinflarni o'z ichiga oladi
Bu sinflarga quyidagilarni misol qilish mumkin:

  • TrackBar - Oddiy Windows trek satrini aks ettiradi.

  • Button - Windows tugmachasini boshqarish vakili

  • TextBox - Windows matn qutisi boshqaruvini aks ettiradi.

TabControl - Tegishli yorliqlar to'plamini boshqaradi


RadioButton - Boshqa RadioButton boshqaruv elementlari bilan bog'langan holda foydalanuvchiga tanlov guruhidan bitta variantni tanlashga imkon beradi
PictureBox - Rasmni ko'rsatish uchun Windows rasm qutisi boshqaruvini ifodalaydi. Xar qanday rasmni joylashtirsh mumkin
Hodisalar (Events) - bu foydalanuvchini xatti-harakatlari, masalan, tugmachalarni bosish, sekin urish, sichqonchaning harakatlanishi yoki boshqalar yoki tizim tomonidan yaratilgan xabarnomalar . Ilovalar voqealar sodir bo'lganda ularga javob berishi kerak. Masalan, uzilishlar Hodisalar jarayonlararo aloqa uchun ishlatiladi.
Hidosalar haqida umumiy ma'lumot
Hodisalar quyidagi xususiyatlarga ega:

  • Nashriyot hodisa qachon ko'tarilishini aniqlaydi, abonentlar voqea munosabati bilan qanday choralar ko'rilishini aniqlaydilar.

  • Dasturda bir nechta obunachilar bo'lishi mumkin. Abonent bir nechta noshirlardan bir nechta tadbirlarni o'tkazishi mumkin.

  • Obunachisi bo'lmagan tadbirlar hech qachon ko'tarilmaydi.

  • Hodisalar odatda foydalanuvchi grafik harakatlaridagi tugmachalarni bosish yoki menyu tanlash kabi harakatlariga signal berish uchun ishlatiladi.

  • Voqea bir nechta obunachiga ega bo'lsa, voqea ko'tarilganda voqea ishlovchilari sinxron ravishda chaqiriladi. 

Voqealarni ko'taradigan sinf Publisher , bildirishnoma olgan sinf esa Abonent deb nomlanadi . Bitta tadbirning bir nechta obunachilari bo'lishi mumkin. Odatda, noshir ba'zi bir harakatlar sodir bo'lganda voqea ko'taradi. Harakat sodir bo'lganda xabarnoma olishni istagan abonentlar voqea bilan ro'yxatdan o'tishlari va uni boshqarishlari kerak.C # da voqea - bu kapsulalangan delegat . Bu delegatga bog'liq. Vakil abonent sinf voqea işleyicisi usul uchun imzo belgilaydi.
C # da voqea - bu kapsulalangan delegat . Bu delegatga bog'liq. Vakil abonent sinf voqea işleyicisi usul uchun imzo belgilaydi.
Voqealar shunchaki foydalanuvchining harakati emas. Masalan

  1. Sichqoncha bilan bosganingizda - Bu sichqonchani bosish hodisalari .

  2. Klaviaturada biron bir tugmani bosganingizda - bu KeyPress voqealari

  3. Veb-sahifangizni yangilaganingizda - bu sahifalarni yuklash hodisalari

  4. Sichqoncha kursorini harakatga keltirganda - bu sichqonchani olib tashlash hodisalari va boshqalar.

Shunday qilib, siz tugmachani bosish, sichqonchaning harakatlari, sekin urish va hokazo kabi biron bir harakatni amalga oshirganingizda, bu haqda dasturga signal beruvchi bu hodisadir.
Dasturni hodisalarsiz tasavvur qilish qiyin. Chunki biror bir tugmani bosganimizda ham hodisa ro’y berishi kerak. Biz ham kurs ishini dasturida birnechta “event” hodisalardan foydalandik. Har hodisaning o’z vasifa bor. Dasturda Click , Load, KeyDown, TextChenged kabi hodisalardan foydalanilgan. Dasturda eng ko’p foydalanilgan hodisalardan biri – Click hodisasidir.

  • Click hodisasi - kerakli qism bosilganda nima bo’lishi keraklini ifodalaydi .

  • DoubleClick hodisasi – Kerakli boshqaruv tugmasi ikki marta bosilganda ro’y beradigan hodisani ifodalaydi

  • Load hodisa – biror bir oyna ishga tushganda qanday ishlar bajarilishini ifodalaydi

  • KeyDawn hodisasi - Boshqarish fokusga ega bo'lganda tugmachani bosganda paydo bo'ladi ya’ni biror tugma bosilganda focus almashadi

  • TextChenged hodisasi – Text tarkibi o’rgarganda sodir bo’ladigan hodisalarni ifodalaydi

  • MouseLeave hodisasi – Sichqoncha boshqarish tugmachasi ustidan ketganda sodir bo’ladigan hodisalarni ifodalaydi

  • Button_click hodisasi - Ushbu hodisa tegishli funktsiyani chaqiradi va bajaradi 

Submit_Click hodisasi - Ushbu funktsiya sizning so'rovingizni ko'rib chiqadi va ma'lumotlar bazasiga sahifa ma'lumotlarini yuboradi
Talabalar haqida ma’lumot jamlovchi dastur kodi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.IO;
using Newtonsoft.Json;
namespace Infinity
{
///
/// Interaction logic for MainWindow.xaml
///

public partial class MainWindow : Window
{
List students = new List();
List sortStudentNames = new List();

string fileName = "StudentsJsonFile.txt";


public MainWindow()
{
InitializeComponent();
readJsonFromTxtFile();
/*
if (students != null)
{
var FIOs = students.Select(o => o.FIO).ToList();
Students_Combobox.ItemsSource = FIOs;
}
*/

}
public List readJsonFromTxtFile()


{
try
{
string fileDir = System.IO.Directory.GetCurrentDirectory() + "\\" + fileName;
if (File.Exists(fileDir))
{
String studentBuf = File.ReadAllText(fileDir);
if (studentBuf != string.Empty)
{
students = JsonConvert.DeserializeObject>(studentBuf);
return students;
}
}
else
{
MessageBox.Show("Ma'lumotlar fayli topilmadi");
}
//String path = Assembly.GetEntryAssembly().Location;
//MessageBox.Show(path + "\n" + currentDir);
}
catch (Exception ex)
{

throw;
}


return null;
}
public void writeJsonFromTxtFile(List students)
{
try
{
string fileDir = System.IO.Directory.GetCurrentDirectory() + "\\" + fileName;
File.WriteAllText(fileDir, JsonConvert.SerializeObject(students, Formatting.Indented).ToString());
}
catch (Exception ex)
{
throw;
}
}

private void Quit_Button_Click(object sender, RoutedEventArgs e)


{
this.Close();
}

private void Minimized_Button_Click(object sender, RoutedEventArgs e)


{
this.WindowState = WindowState.Minimized;
}

private void Maximized_Button_Click(object sender, RoutedEventArgs e)


{
if (this.WindowState != WindowState.Maximized)
{
this.WindowState = WindowState.Maximized;
}
else
{
this.WindowState = WindowState.Normal;
}
}
private void sortStudentFuct()
{
if (OTM_Combobox.SelectedItem != null
&& FormOfEducation_Combobox.SelectedItem != null
&& Faculty_Combobox.SelectedItem != null
&& EducationDirection_Combobox.SelectedItem != null
&& Group_Combobox.SelectedItem != null)
{
Student student = new Student();
student.Id = students.Count + 1;
student.OTM = ((ComboBoxItem)OTM_Combobox.SelectedItem).Content.ToString();
student.FormOfEducation = ((ComboBoxItem)FormOfEducation_Combobox.SelectedItem).Content.ToString();
student.Faculty = ((ComboBoxItem)Faculty_Combobox.SelectedItem).Content.ToString();
student.EducationDirection = ((ComboBoxItem)EducationDirection_Combobox.SelectedItem).Content.ToString();
student.Group = ((ComboBoxItem)Group_Combobox.SelectedItem).Content.ToString();

sortStudentNames = new List();


// LINQ request


sortStudentNames = students.Where(
obj => obj.OTM == student.OTM &
obj.FormOfEducation == student.FormOfEducation &
obj.EducationDirection == student.EducationDirection &
obj.Group == student.Group &
obj.EducationDirection == student.EducationDirection).ToList();
Students_Combobox.ItemsSource = sortStudentNames.Select(obj => obj.FIO).ToList();
}
}
private void ShowDocument_Button_Click(object sender, RoutedEventArgs e)
{
if (OTM_Combobox.SelectedItem != null
&& FormOfEducation_Combobox.SelectedItem != null
&& Faculty_Combobox.SelectedItem != null
&& EducationDirection_Combobox.SelectedItem != null
&& Group_Combobox.SelectedItem != null
&& Students_Combobox.SelectedItem != null)
{
int selectedId = Students_Combobox.SelectedIndex;
ShowId_Label.Content = sortStudentNames[selectedId].Id.ToString();
ShowFIO_Label.Content = sortStudentNames[selectedId].FIO.ToString();
ShowAddreass_Label.Content = sortStudentNames[selectedId].Address.ToString();
ShowPhoneNumber_Label.Content = sortStudentNames[selectedId].Phone.ToString();
ShowOTM_Label.Content = sortStudentNames[selectedId].OTM.ToString();
ShowFormOfEducation_Label.Content = sortStudentNames[selectedId].FormOfEducation.ToString();
ShowFaculty_Label.Content = sortStudentNames[selectedId].Faculty.ToString();
ShowEducationDirection_Label.Content = sortStudentNames[selectedId].EducationDirection.ToString();
ShowGroup_Label.Content = sortStudentNames[selectedId].Group.ToString();

ShowDataBorder.Visibility = Visibility.Visible;


}
else
{
MessageBox.Show("Maydonlarni belgilang!", "Ogohlantirish:");
}
}

private void MoveWindows_MouseDown(object sender, MouseButtonEventArgs e)


{
if (e.LeftButton == MouseButtonState.Pressed)
{
this.DragMove();
}
}

private void AddStudent_Click(object sender, RoutedEventArgs e)


{
if (OTM_Combobox.SelectedItem != null
&& FormOfEducation_Combobox.SelectedItem != null
&& Faculty_Combobox.SelectedItem != null
&& EducationDirection_Combobox.SelectedItem != null
&& Group_Combobox.SelectedItem != null
&& FIOTextBox.Text != "")
{
Student student = new Student();

try
{


student.Id = students.Count + 1;
student.OTM = ((ComboBoxItem)OTM_Combobox.SelectedItem).Content.ToString();
student.FormOfEducation = ((ComboBoxItem)FormOfEducation_Combobox.SelectedItem).Content.ToString();
student.Faculty = ((ComboBoxItem)Faculty_Combobox.SelectedItem).Content.ToString();
student.EducationDirection = ((ComboBoxItem)EducationDirection_Combobox.SelectedItem).Content.ToString();
student.Group = ((ComboBoxItem)Group_Combobox.SelectedItem).Content.ToString();
student.FIO = FIOTextBox.Text.ToString();
student.Address = AddressTextBox.Text.ToString();
student.Phone = PhoneNumberTextBox.Text.ToString();

students.Add(student);


writeJsonFromTxtFile(students);


MessageBox.Show("Muvaffaqiyatli saqlandi", "Message");
string bufJson = JsonConvert.SerializeObject(students);
Students_Combobox.Text = student.FIO;
List studentBuf = new List();
studentBuf = readJsonFromTxtFile();
if (studentBuf != null)
{
}
sortStudentFuct();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//throw;
}
}
else
{
MessageBox.Show("Maydonlarni belgilang!", "Ogohlantirish:");
}
}

private void AddStudentPanel_Click(object sender, RoutedEventArgs e)


{
if (AddStudentGrid.Visibility == Visibility.Collapsed)
{
AddStudentPanel.Content = "X";
AddStudentGrid.Visibility = Visibility.Visible;
StudentStackanel.Visibility = Visibility.Collapsed;
}
else
{
AddStudentPanel.Content = "Talaba qo'shish";
AddStudentGrid.Visibility = Visibility.Collapsed;
StudentStackanel.Visibility = Visibility.Visible;
}
}

private void HideShowDataBorder_Click(object sender, RoutedEventArgs e)


{
ShowDataBorder.Visibility = Visibility.Collapsed;
}

private void Combobox_SelectionChanged_Fuct(object sender, SelectionChangedEventArgs e)


{
sortStudentFuct();
}
}

public class Student


{
public int Id { get; set; }
public string FIO { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string OTM { get; set; }
public string Group { get; set; }
public string FormOfEducation { get; set; } // Ta'lim Shakli Master/Bachelor
public string Faculty { get; set; }
public string EducationDirection { get; set; }

}
}
WPF da dastur kodini yozamiz


List dan ma’lumotlar ombori sifatida foydalanamiz



Faqat shu sinfda ishlay olishi uchun private,keng ko’lamli foydalanish uchun internal sinifidan foydalanamiz.


Public modifikatorining ham classlarda ishlash chegarasi bir muncha keng
;





Avtomatik xossalardan foydalanamiz








WinExe
net5.0-windows
enable
true















Run qilgandan so’ng dastur kodi ishlaydi va shu korinish hosil bo‘ladi

Talaba qoshish ustiga bosib hamma ma’lumotlarni kiritmaginimizgacha saqlash oxirigacha yetmaydi

Button komponentasiga yozilgan OK tugmasini bosamiz





X belgini bosib chiqib ketgandan so‘ng hamma qatorlarni belgilab talaba haqidagi ma’lumotni korsak bo‘ladi.

XULOSA
Hozirgi kunda O`zbekistonda Informatsion Texnologiyalar va Axborot Texnologiyalarini rivojlantirish yo`lida bir qancha ishlar amalga oshirilmoqda. O‘zbekiston republikasida hukumatni avtomatlashtirish to‘g‘risida qabul qilingan qarorga muvofiq ishlar olib borilmoqda. Hukumatimiz ko‘plab ishlarni amalga oshirmoqda. Hususan,raqamli imzoning joriy etilishi va ko‘plab korxonalarni avtomatlashtirish, korxona ishchilarining ishini yengilashtirish yo‘lida ko‘plab yangiliklar amalga oshirmoqda.
C# dasturlash muhiti dastur tuzish uchun qulay bo`lgan dasturlash tillaridan biri bo’lib, kompyuterda dastur yaratish ishlarini avtomatlashtiradi, xatoliklarni kamaytiradi va dastur tuzuvchi mehnatini yengillashtiradi. C# dasturi zamonaviy vizual loyihalash texnologiyasi asosida ob`ektga yo`naltirilgan dasturlash nazariyasini hisobga olgan holda tuziladi.
C# sistemasi dasturni loyihalash va yaratish vaqtini kamaytiradi, hamda Windows muhitida ishlovchi dastur ilovalarini tuzish jarayonini osonlashtiradi.
Hozirgi kunda C# dasturlash tili yuqori bosqichli dasturlash tillari ichida eng samarali dasturlash tillaridan hisoblanadi. C# dasturlash tilida dastur tuzish uchun Visual Studio .NET muhitidan foydalanamiz. C# dasturlash tili obektga mo’ljallangan dasturlash tili hisoblanadi. Bu kurs ishida C# dasturlash tilida kataloglar bilan ishlovchi sinflar va ularning metodlari haqida ma’lumotlar keltirilgan. Kataloglarni yaratish va o’chirish hamda ularning ustida ko’chirish,nusxalash va yana turli xil amallarni bajarishni o’rgandik.Har bir metodning funksional imkoniyatlari tushuntirib berilgan.
Ushbu kurs ishi orqali C# yangi dasturlash tiliga bolgan talab va bu yangi dasturlash tiling C++ va Java dasturlar orasidagi bog’liqlik va farqli jihatlarini va ustun tomonlari bilan tanishdik. Bu ishimiz bilan Microsoft visual studio 2012 muxiti imkoniyatlarini kordik va komponentlar, xossalar hodilar va ko’plab elementlar bilan tanishdik va na’munalar ko’rdik.C# dasturlash tilida dastur
tuzish uchun Visual Studio 2012 muhitidan foydalanamiz. C# dasturlash tili obektga mo’ljallangan dasturlash tili hisoblanadi. BMIning birinchi bobida C# dasturlash tili va uning operatorlari haqida ma’lumotlar keltirilgan. Bu dastur orqali kerakli konikmalarga ega bo’ldim

Yüklə 232,18 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə