Мақсаты: Қарапайым тестілеу программасын құру.
Негізгі ұғымдар. Қосымшада бірнеше формаларды қолдану, массивтермен және файлдармен жұмыс.
Бекіту мысалдары.
Мысал1. Қарапайым тестілеу программасының қосымшасын құру. Жаңа қосымша test1 жобасын құрамыз. Solition Explorer терезесінде Add--> New Item командаларын орындай отырып жобаға жаңа тексттік файл қосамыз.(32 сурет) Файл аты- test.txt . Тест мазмұнын осы файлда құрамыз.
сурет. Жобаға тексттік файл қосу
Тест мазмұнының жазу үлгісі мынадай:
тест сұрағы
жауаптың 1 варианты
жауаптың 2 варианты
жауаптың 3 варианты
жауаптың 4 варианты
жауаптың 5 варианты
Бес жауаптың біреуі дұрыс және оны бірінші жолға қоямыз.
Қосымша негізгі 4 формадан тұрады: 1 –титульдық бет, 2- тіркеу формасы, 3 – тестілеу формасы, 4- нәтиже. Формалар арасында байланыс орнатамыз.
Бірінші форманы жүктейміз. Формаға timer1, progressBar1, label1 компоненттерін қоямыз. Форма үлгісі 33 суретте кӛрсетілген.
Программа коды:
сурет. Қосымшаның орындалуы
public partial class Form1 : Form
{
Form2 f2 = new Form2(); int n = 0;
public Form1()
{ InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{ // форманың Load оқиғасы timer1.Enabled = true;
this.Opacity = 0; }
private void timer1_Tick(object sender, EventArgs e)
{ if (this.Opacity < 1)
{this.Opacity = this.Opacity + 0.01; n++; }
else
{ if (progressBar1.Value <= 98)
{ progressBar1.Value+=2; } else
{ timer1.Enabled = false; f2.Show(this); this.Hide(); }
Қосымшаға екінші форманы қосамыз. Бұл тіркелу формасы, тест тапсырушының жеке мәліметтері енгізіледі. Форма үлгісі 34 суретте кӛрсетілген.
сурет. Тіркелу формасы
Программа коды:
public partial class Form2 : Form
{ Form3 f3 = new Form3(); public Form2()
{ InitializeComponent(); }
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{ Application.Exit(); }
public string GetLastName()
{ return txtLastName.Text; } public string GetFirstName()
{ return txtFirstName.Text;
}
public string GetSecondName()
{ return txtSecondName.Text; } public string GetGroup()
{ return txtGroup.Text;
}
public string GetSpec()
{ return txtSpec.Text; }
private void btnNext_Click(object sender, EventArgs e)
{
if (txtFirstName.Text == "" || txtLastName.Text == "" || txtSecondName.Text == "" ||
txtGroup.Text == "" || txtSpec.Text == "")
{ MessageBox.Show("Бір немесе бірнеше ӛріс толтырылмаған!", "Кате!"); } else
{ /*FirstName = txtFirstName.Text; LastName = txtLastName.Text; SecondName = txtSecondName.Text; Groupe = txtGroup.Text;
Spec = txtSpec.Text;*/ f3.Show(this); this.Hide(); } }
Қосымшаға үшінші форманы қосамыз. Бұл тестілеу формасы. Форма үлгісі 35 суретте кӛрсетілген.
сурет. Тестілеу формасы
Программа коды:
public partial class Form3 : Form
{ Form4 f4 = new Form4(); int q = 0;
// дұрыс жауаптар санын сақтауға арналған айнымалы public int ta = 0;
// Барлық сұрақтарға арналған массив ы string[,] BaseTest = new string[100, 6];
// Кездейсоқ қайталанбайтын жауап номерлерін сақтайтын массив int[] ListNum = new int[25];
// Дұрыс жауаптарға арналған массив string[] TrueAnswer = new string[25]; string[] AnswerS = new string[25]; string[] mass = new string[25];
int count = 0; int a;
public string FirstName = ""; public string LastName = ""; public string SecondName = ""; public string Group = "";
public string Spec = "";
public Form3()
{ InitializeComponent(); } private void Del(int z)
{// Сұрақтағы цифр мен нүктені жою int k = 0;
//1. Word редакторы:
while (BaseTest[z, 0][k] != ' ')
{ k++; } k++;
BaseTest[z, 0] = BaseTest[z, 0].Remove(0, k);
// Жауаптағы бастапқы екі символды жою for (int x = 1; x <= 5; x++)
{BaseTest[z, x] = BaseTest[z, x].Remove(0, 2);
} }
// Файлдан тестті жүктеу private void LoadTest()
{ int i = 0;
FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs);
while (sr.Peek() > 0)
{ for (int j = 0; j <= 5; j++)
{ BaseTest[i, j] = sr.ReadLine();
}
// функцияға массив жолдарының номерін береміз Del(i); i++; }
sr.Close(); count = i;
Form2 f2 = (Form2)this.Owner; LastName = f2.GetLastName(); FirstName = f2.GetFirstName(); SecondName = f2.GetSecondName(); Group = f2.GetGroup();
Spec = f2.GetSpec(); }
// ListNum массивінде бұрын қайталанбаған кездейсоқ санды анықтаймыз private bool Way(int n, int k)
{ bool f; f = true;
for (int z = 0; z <= n; z++)
{ if (ListNum[z] == k) f = false; }
if (f==true)
{ return true;
}
else
{ return false; } }
// 25 кездейсоқ санды анықтап бұл сандармен ListNum массивін толтырамыз private void SortQuestion()
{ int l = 0;
Random r = new Random(); for (int i = 0; i <= 24; i++)
{ do
{ l = r.Next(0, count);}
while (!Way(i, l)); ListNum[i] = l; }
l = 0; }
// Сұрақ жауаптарын кездейсоқ араластырып экранға шығару private void ViewAnswer(int z, int h)
{lblQuestion.Text = BaseTest[ListNum[h], 0]; switch (z.ToString())
{ case "1":
rbtA1.Text = BaseTest[ListNum[h], 3]; rbtA2.Text = BaseTest[ListNum[h], 4]; rbtA3.Text = BaseTest[ListNum[h], 1]; rbtA4.Text = BaseTest[ListNum[h], 2]; rbtA5.Text = BaseTest[ListNum[h], 5];
break; case "2":
rbtA1.Text = BaseTest[ListNum[h], 3]; rbtA2.Text = BaseTest[ListNum[h], 1]; rbtA3.Text = BaseTest[ListNum[h], 4]; rbtA4.Text = BaseTest[ListNum[h], 2]; rbtA5.Text = BaseTest[ListNum[h], 5];
break; case "3":
rbtA1.Text = BaseTest[ListNum[h], 1]; rbtA2.Text = BaseTest[ListNum[h], 3]; rbtA3.Text = BaseTest[ListNum[h], 5]; rbtA4.Text = BaseTest[ListNum[h], 4]; rbtA5.Text = BaseTest[ListNum[h], 2];
break; case "4":
rbtA1.Text = BaseTest[ListNum[h], 1]; rbtA2.Text = BaseTest[ListNum[h], 2]; rbtA3.Text = BaseTest[ListNum[h], 3]; rbtA4.Text = BaseTest[ListNum[h], 4]; rbtA5.Text = BaseTest[ListNum[h], 5];
break; case "5":
rbtA1.Text = BaseTest[ListNum[h], 5]; rbtA2.Text = BaseTest[ListNum[h], 3]; rbtA3.Text = BaseTest[ListNum[h], 2]; rbtA4.Text = BaseTest[ListNum[h], 4]; rbtA5.Text = BaseTest[ListNum[h], 1];
break; } }
// TrueAnswer массивін дұрыс жауаптармен толтырамыз private void SortAnswer(int i)
{ Random r = new Random(); int l = r.Next(1, 5);
TrueAnswer[i] = BaseTest[ListNum[i], 1]; ViewAnswer(l,i);}
public string GetLastName()
{ return LastName;
}
public string GetFirstName()
{ return FirstName;
}
public string GetSecondName()
{ return SecondName;
}
public string GetGroup()
{ return Group;
}
public string GetSpec()
{ return Spec;
}
public int GetTA()
{ return ta;}
private void Form3_Load(object sender, EventArgs e)
{ // форманың Load оқиғасы LoadTest(); SortQuestion(); SortAnswer(q);
for (int i = 0; i <= 24; i++)
{ mass[i] = "";
} }
private void Form3_FormClosed(object sender, FormClosedEventArgs e)
{ Application.Exit();
}
// Қолданушы жауабын тексеру private void CheekTrue(){
if (rbtA1.Checked & rbtA1.Text == TrueAnswer[q])
{ ta++; }
if (rbtA2.Checked & rbtA2.Text == TrueAnswer[q])
{ ta++;}
if (rbtA3.Checked & rbtA3.Text == TrueAnswer[q])
{ta++; }
if (rbtA4.Checked & rbtA4.Text == TrueAnswer[q])
{ta++; }
if (rbtA5.Checked & rbtA5.Text == TrueAnswer[q])
{ta++; }}
//Келесі сұраққа кӛшу
private void btnNext_Click(object sender, EventArgs e)
{ if (q == 25)
{ Validation(); f4.Show(this); this.Hide(); }
else
{
if (rbtA1.Checked) AnswerS[q] = rbtA1.Text; if (rbtA2.Checked)
AnswerS[q] = rbtA2.Text; if (rbtA3.Checked)
AnswerS[q] = rbtA3.Text; if (rbtA4.Checked)
AnswerS[q] = rbtA4.Text; if (rbtA5.Checked)
AnswerS[q] = rbtA5.Text; if (mass[q] == "")
{ if (rbtA1.Checked)
{ mass[q] = rbtA1.Text; } if (rbtA2.Checked)
{ mass[q] = rbtA2.Text; } if (rbtA3.Checked)
{ mass[q] = rbtA3.Text; } if (rbtA4.Checked)
{ mass[q] = rbtA4.Text;} if (rbtA5.Checked)
{ mass[q] = rbtA5.Text;} }
if (q <= 24 & q >= 0) q++; if (q >= 0 & q <= 24)
{lblCount.Text = (q + 1).ToString() + "."; SortAnswer(q); } a++;
if (q == 24)
{ btnNext.Text = "Тестті аяқтау";}
//----------------------------rbtA1.Checked = false; rbtA2.Checked = false;
rbtA3.Checked = false; rbtA4.Checked = false;
rbtA5.Checked = false; if (q <= 24)
{ if (mass[q] != "")
{ if (rbtA1.Text == mass[q])
{rbtA1.Checked = true;} if (rbtA2.Text == mass[q])
{ rbtA2.Checked = true;} if (rbtA3.Text == mass[q])
{rbtA3.Checked = true;} if (rbtA4.Text == mass[q])
{rbtA4.Checked = true; } if (rbtA5.Text == mass[q])
{ rbtA5.Checked = true; } } } } }
// Алдыңғы сұраққа қайта оралу
private void btnPred_Click(object sender, EventArgs e)
{ if (q <= 24)
{if (rbtA1.Checked) AnswerS[q] = rbtA1.Text;
if (rbtA2.Checked)
AnswerS[q] = rbtA2.Text; if (rbtA3.Checked)
AnswerS[q] = rbtA3.Text; if (rbtA4.Checked)
AnswerS[q] = rbtA4.Text; if (rbtA5.Checked)
AnswerS[q] = rbtA5.Text; if (mass[q] == "")
{ if (rbtA1.Checked)
{ mass[q] = rbtA1.Text; } if (rbtA2.Checked)
{ mass[q] = rbtA2.Text;} if (rbtA3.Checked)
{ mass[q] = rbtA3.Text;} if (rbtA4.Checked)
{ mass[q] = rbtA4.Text;} if (rbtA5.Checked)
{ mass[q] = rbtA5.Text; } }} if (q <= 24 & q >= 0)
//CheekTrue();
q--;
if (q >= 0 & q <= 24)
{lblCount.Text = (q + 1).ToString() + "."; SortAnswer(q); } a--;
if (q == 24)
btnNext.Text = "Тестті аяқтау";
//------------------------------
if (q == 25)
{ f4.Show(this);
this.Hide();} rbtA1.Checked = false; rbtA2.Checked = false; rbtA3.Checked = false;
rbtA4.Checked = false; rbtA5.Checked = false;
if (q <= 24)
{ if (mass[q] != "")
{ if (rbtA1.Text == mass[q])
{rbtA1.Checked = true;} if (rbtA2.Text == mass[q])
{ rbtA2.Checked = true;} if (rbtA3.Text == mass[q])
{rbtA3.Checked = true; }
if (rbtA4.Text == mass[q])
{ rbtA4.Checked = true;} if (rbtA5.Text == mass[q])
{rbtA5.Checked = true;} } } }
private void Validation()
{ for (int i = 0; i <= 24; i++)
{ if (AnswerS[i] == TrueAnswer[i]) ta++; }}
private void Form3_Shown(object sender, EventArgs e)
{ rbtA1.Checked = false; rbtA2.Checked = false; rbtA3.Checked = false; rbtA4.Checked = false; rbtA5.Checked = false; }
Бұл формада «тестті аяқтау» кнопкасын таңдасақ тестілеу жүйесі аяқталып тӛртінші форма, яғни нәтижелер бейнеленген форма жүктеледі. Форма үлгісі 36 суретте кӛрсетілген.
сурет. Тестілеу нәтижесі
Программа коды:
private void Form4_Load(object sender, EventArgs e)
{
Form3 f3 = (Form3)this.Owner; lblLastName.Text = "Тегі: " + f3.GetLastName(); lblFirstName.Text = "Аты: " + f3.GetFirstName();
lblSecondName.Text = "Әкесінің аты: " + f3.GetSecondName(); lblGroup.Text = "Тобы: " + f3.GetGroup();
lblSpec.Text = "Мамандығы: " + f3.GetSpec();
lblScope.Text = "Балл саны"+f3.GetTA().ToString();
}
private void btnExit_Click(object sender, EventArgs e)
{ Application.Exit(); }
private void Form4_FormClosed(object sender, FormClosedEventArgs e)
{ Application.Exit(); } } }
Достарыңызбен бөлісу: |