листинг. Талаба билимини тест қилиш дастури
bet 33/52 Sana 24.02.2022 Hajmi 0,91 Mb. #215341
Bog'liq
C# windows app form
4.5 листинг . Талаба билимини тест қилиш дастури
// Дастур талабани бирор фандан тест назоратидан утказади
using System;
using System.Windows.Forms;
namespace Тестирование
{
public partial class Form1 : Form
{
// Ташки узгарувчилар:
int SavolSoni; // Саволлар
int TJavob; // Тугри жавоблар сони
int NJavob; // Нотугри жавоблар сони
// нотугри жавоб берилган саволлар массиви:
String[] NotJavob; // Ушбу массив улчови кейинрок келтирилади
int TJRaqam; // Тугри жавоб тартиб раками
int TanJavob; // Талаба танлаган жавоб варианти
System.IO.StreamReader Reader;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
button1.Text = "Кейинги савол";
button2.Text = "Чикиш";
// RadioButton учун ходисани кушиб куйиш:
radioButton1.CheckedChanged += new EventHandler(SostPerek);
radioButton2.CheckedChanged += new EventHandler(SostPerek);
radioButton3.CheckedChanged += new EventHandler(SostPerek);
GoTest();
}
void GoTest()
{
var Kodirovka = System.Text.Encoding.GetEncoding(1251);
try
{
// Файлдан маълумотларни укиб олиш учун StreamReader объекти
Reader = new System.IO.StreamReader(
System.IO.Directory.GetCurrentDirectory() +
@"\test.txt", Kodirovka);
this.Text = Reader.ReadLine(); // Фан номи
// Барча счётчикларни нолга айлантириш:
SavolSoni = 0;
TJavob = 0;
NJavob = 0;
// NotJavob учун массив улчовини белгилаш:
NotJavob = new String[100];
}
catch (Exception Xatolik)
{ // Бошка турдаги хатолик:
MessageBox.Show(Xatolik.Message, "Хатолик",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
NSavol();
}
void NSavol()
{
label1.Text = Reader.ReadLine();
// Жавоб вариантларини аниклаш:
radioButton1.Text = Reader.ReadLine();
radioButton2.Text = Reader.ReadLine();
radioButton3.Text = Reader.ReadLine();
// Тугри жавобни аниклаш:
TJRaqam = int.Parse(Reader.ReadLine());
radioButton1.Checked = false;
radioButton2.Checked = false;
radioButton3.Checked = false;
// Жавоб вариантлари
button1.Enabled = false;
SavolSoni = SavolSoni + 1;
// Файл тугагунча:
if (Reader.EndOfStream == true) button1.Text = "Якунлаш";
}
void SostPerek(Object sender, EventArgs e)
{
// "Кейинга савол" тугмасини активлаштириш
button1.Enabled = true;
button1.Focus();
RadioButton Perek = (RadioButton)sender;
var tmp = Perek.Name;
// Талаба танлаган савол тартиб раками:
TanJavob = int.Parse(tmp.Substring(11));
}
private void button1_Click(object sender, EventArgs e)
{
// Тугма босилганда
// "Кейинги савол/Якунлаш/Кайтадан тестни бошлаш"
// Тугри жавоблар сони:
if (TanJavob == TJRaqam) TJavob++;
if (TanJavob != TJRaqam)
{
// Нотугри жавоблар сони:
NJavob++;
// Нотугри тест саволи тартиб ракамини саклаб куйиш:
NotJavob[NJavob] = label1.Text;
}
if (button1.Text == "Тестни кайтадан бошлаш")
{
button1.Text = "Кейинги савол";
// Переключателларни холатини узгартириш:
radioButton1.Visible = true;
radioButton2.Visible = true;
radioButton3.Visible = true;
// Файл бошига кайтиш:
GoTest();
return;
}
if (button1.Text == "Якунлаш")
{
// Тест файлини ёпиш:
Reader.Close();
// Переключателларни куринмайдиган килиш:
radioButton1.Visible = false;
radioButton2.Visible = false;
radioButton3.Visible = false;
// Тест натижасини хисоблаш:
label1.Text = String.Format("Тестлаштириш якунланди.\n" +
"Тугри жавоблар: {0} из {1}.\n" +
"Бахо: {2:F2}.", TJavob,
SavolSoni, (TJavob * 5.0F) / SavolSoni);
// 5F - Максимал бахо
button1.Text = "Тестни кайтадан бошлаш";
// Нотугри жавоб берилган тест саволлари:
var Str = "НОТУГРИ ЖАВОБ БЕРИЛГАН ТЕСТ САВОЛЛАРИ " +
"ТАРТИБ РАКАМЛАРИ:\n\n";
for (int i = 1; i <= NJavob; i++)
Str = Str + NotJavob[i] + "\n";
// Агар нотугри жавоблар мавжуд булса
// уни MessageBox оркали чикариш:
if (NJavob != 0) MessageBox.Show(
Str, "Тестлаштириш якунланди");
} // if (button1.Text == "Якунлаш") шарти якуни
if (button1.Text == "Кейинги савол") NSavol();
}
private void button2_Click(object sender, EventArgs e)
{
// "Чикиш" тугмаси босилди
this.Close();
}
}
}
Дастурда бир нечта параметрлар мавжуд бўлиб, уларнинг бошланғич қийматлари дастур биринчи маротаба ишга туширилган вақтда ўрнатилади. Шунингдек, дастурда RadioButton ларнинг босилиши SostPerek методи қайта ишланади. GoTest() методи орқали аввало тест саволлари жойлашган test.txt файли очилади. Сўнгра файлнинг биринчи сатридан фан номи ўқиб олинади:
Do'stlaringiz bilan baham: