Допустить к защите



страница13/15
Дата12.11.2016
Размер0.71 Mb.
Просмотров4253
Скачиваний0
ТипНаучная работа
1   ...   7   8   9   10   11   12   13   14   15

ПРИЛОЖЕНИЕ А


Декомпозиция блока «Создание теста»


ПРИЛОЖЕНИЕ Б


Декомпозиция блока «Редактирование теста»



ПРИЛОЖЕНИЕ В


Декомпозиция блока «Тестирование студентов»


ПРИЛОЖЕНИЕ Г


Декомпозиция блока «Просмотр результатов»


ПРИЛОЖЕНИЕ Д


Схема базы данныхc:\users\dill\yandexdisk\скриншоты\2016-06-13_21-03-04.png

ПРИЛОЖЕНИЕ Е


Скриншот окна ввода данных студента перед тестированием

c:\users\dill\yandexdisk\скриншоты\2016-06-13_21-18-35.png

ПРИЛОЖЕНИЕ Ж


Скриншот окна создания тестаc:\users\dill\yandexdisk\скриншоты\2016-06-13_21-19-10.png


ПРИЛОЖЕНИЕ З


Листинг программы

Main Form.



using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Data.OleDb;

using System.Security.Cryptography;
namespace TestRed

{

public partial class MainForm : Form

{
OleDbConnection conn;

OleDbDataReader rd;

int[] student_id = new int[999];

string[] student_login = new string[999];

string[] student_pass = new string[999];

int[] teacher_id = new int[999];

string[] teacher_login = new string[999];

string[] teacher_pass = new string[999];
public MainForm()

{

conn = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;" + "Data Source= Database.accdb;" + "Persist Security Info=False;");

DBTable();

InitializeComponent();
Продолжение приложения Ж

}

void DBTable()

{

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT Login, Parol, KodStudenta FROM Student",conn); //login:13100234 pass: 7512244551

rd = cmd.ExecuteReader();

int i = 0;

while (rd.Read())

{

student_login[i] = rd[0].ToString();

student_pass[i] = rd[1].ToString();

student_id[i] = (int)rd[2];

i++;

}

rd.Close();
cmd.CommandText = "SELECT Login, Parol, KodPrepodavatelya FROM Prepodavatel"; //login:LebedevaTN pass:12345678

rd = cmd.ExecuteReader();

i = 0;

while (rd.Read())

{

teacher_login[i] = rd[0].ToString();

teacher_pass[i] = rd[1].ToString();

teacher_id[i] = (int)rd[2];

i++;

}
rd.Close();

conn.Close();

}
//string a, b;
private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text == String.Empty)//Проверка на пустоту текстбокса

MessageBox.Show("Введите логин");

else

{

Продолжение приложения Ж
if (textBox1.Text == Array.Find(student_login, str => str == textBox1.Text))

{

if (CalculateMD5Hash(textBox2.Text) == Array.Find(student_pass, str => str == CalculateMD5Hash(textBox2.Text)))

{

Student newForm = new Student(student_id[Array.IndexOf(student_login, textBox1.Text)]);

newForm.Show();

this.Hide();

}

else

{

MessageBox.Show("Пароли не совпадают.");

}

}

else

{

if (textBox1.Text == Array.Find(teacher_login, str => str == textBox1.Text))

{

if (CalculateMD5Hash(textBox2.Text) == Array.Find(teacher_pass, str => str == CalculateMD5Hash(textBox2.Text)))

{

TestEditor newForm = new TestEditor();

newForm.Show();

this.Hide();

}

else

{

MessageBox.Show("Пароли не совпадают.");

}

}

else

{

MessageBox.Show("Логин не найден.");

}

}

}
}

public string CalculateMD5Hash(string input)
{

Продолжение приложения Ж
// step 1, calculate MD5 hash from input
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
// step 2, convert byte array to hex string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("x2"));
}

return sb.ToString();
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)

{

Application.Exit();

}

}

}
Test.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

Продолжение приложения Ж
using System.Windows.Forms;

using System.Data.OleDb;

using System.IO;
namespace TestRed

{

public partial class Test : Form

{

int test_id;

int student_id;

int tek_vopr = 0;

int otv_et = 0;

int kol_vern_otv = 0;

int kol_nevern_otv = 0;

int[] last_vopr = new int[100];

OleDbConnection conn;

OleDbDataReader rd;

List<int> vopr_id = new List<int>();

string[] vopr_tekst = new string[100];

string[] vopr_img = new string[100];

List<int> true_otv = new List<int>();

Dictionary<string, int> etalon = new Dictionary<string, int>();

Random rnd = new Random();
public Test(int id_test, int id_st)

{

test_id = id_test;

student_id = id_st;

conn = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;" + "Data Source= Database.accdb;" + "Persist Security Info=False;");

InitializeComponent();
}
private void Test_Load(object sender, EventArgs e)

{

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT KodVoprosa, TekstVoprosa, Izobrajenie FROM Voprosi WHERE KodTesta = " + test_id, conn);

rd = cmd.ExecuteReader();

int i = 0;

while(rd.Read())

Продолжение приложения Ж



{

vopr_id.Add((int)rd[0]);

vopr_tekst[i] = rd[1].ToString();

vopr_img[i] = rd[2].ToString();

i++;

}

rd.Close();

conn.Close();
i = tek_vopr;

tek_vopr++;

label1.Text = vopr_tekst[i];

label2.Text = "Вопрос " + tek_vopr + " из " + vopr_id.Count + ".";

pictureBox1.ImageLocation = vopr_img[i];

otv(vopr_id[i]);
progressBar1.Maximum = vopr_id.Count;

progressBar1.Step = 1;
}
private void otv(int id_vopr)

{

flowLayoutPanel2.Controls.Clear();

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT TekstOtveta, EtalonOtveta FROM SpisokOtvetov WHERE KodVoprosa = " + id_vopr, conn);

rd = cmd.ExecuteReader();

int i = 0;

while (rd.Read())

{

RadioButton rb = new RadioButton();

rb.Text = "";

rb.Size = new Size(14, 13);

rb.Tag = i;

TextBox tb = new TextBox();

tb.Size = new Size(600, 20);

tb.Text = rd[0].ToString();

tb.ReadOnly = true;

tb.Tag = i;

tb.Click += textBox_Click;

etalon.Add(rd[0].ToString(),Convert.ToInt32(rd[1]));

Продолжение приложения Ж
flowLayoutPanel2.Controls.Add(rb);

flowLayoutPanel2.Controls.Add(tb);

i++;

}
rd.Close();

conn.Close();

}

private void seachEtalonOtv()

{

int i = 0;

foreach (var item in flowLayoutPanel2.Controls.OfType<RadioButton>())

{

if (item.Checked)

{

i = (int)item.Tag;

}

}

foreach (var item in flowLayoutPanel2.Controls.OfType<TextBox>())

{

if ((int)item.Tag == i)

{

otv_et += etalon[item.Text];

if (etalon[item.Text] == 0)

kol_nevern_otv++;

else

kol_vern_otv++;

}



}

}
private void button1_Click(object sender, EventArgs e)

{

true_otv.Add(tek_vopr);

seachEtalonOtv();

if (vopr_id.Count != true_otv.Count)

{

int i = tek_vopr;

tek_vopr++;

Продолжение приложения Ж
label1.Text = vopr_tekst[i];

label2.Text = "Вопрос " + tek_vopr + " из " + vopr_id.Count + ".";

pictureBox1.ImageLocation = vopr_img[i];

otv(vopr_id[i]);

progressBar1.PerformStep();



}

else

{

Finish();

}

}
private void Finish()

{

progressBar1.Value = progressBar1.Maximum;

flowLayoutPanel2.Controls.Clear();

pictureBox1.ImageLocation = "";

label1.Text = "Вы закончили тестирование. Нажмите 'Закончить тестирование' снизу окна.";

label2.Text = "";

Label lb = new Label();

lb.Dock = DockStyle.Fill;

lb.Font = label1.Font;

lb.AutoSize = true;

lb.Text = "Вы получили " + otv_et + " баллов из " + vopr_id.Count * 3;

lb.Text += "\nВаша оценка: " + Ocenka();

flowLayoutPanel2.Controls.Add(lb);

button1.Enabled = false;

pictureBox1.Enabled = false;

}
private void button2_Click(object sender, EventArgs e)

{

if (progressBar1.Value != progressBar1.Maximum)

{

if (MessageBox.Show("Вы действительно хотите закончить тестирование? \nВ случае продолжения вы не получите баллы за не пройденные вопросы.", "Внимание", MessageBoxButtons.OKCancel) == DialogResult.OK)

{

Finish();

kol_nevern_otv += vopr_id.Count - kol_vern_otv;

Продолжение приложения Ж



}

}

else

{

conn.Open();

OleDbCommand cmd = new OleDbCommand("INSERT INTO Rezultat (KodStudenta, KodTesta, KolichestvoVernihOtvetov, KolichestvoNevernihOtvetov, Ball, Ocenka) VALUES ('" + student_id + "', '" + test_id + "', '" + kol_vern_otv + "', '" + kol_nevern_otv + "', '" + otv_et + "', '" + Ocenka() + "')", conn);

rd = cmd.ExecuteReader();

rd.Close();

conn.Close();

this.Close();

}

}
private int Ocenka()
Каталог: files -> main -> documents -> 2016
2016 -> И. Ю. Коробейникова
2016 -> Методические рекомендации по выполнению внеаудиторной самостоятельной работы студентов по программе дисциплины
2016 -> Методическая разработка практического занятия по теме «Создание и воспроизведение видеороликов в программе Movie Maker»
2016 -> «Разработка информационного сайта для проекта «Живая история». В работе раскрывается актуальность темы, сформулированы цели и задачи исследования
documents -> Методические указания для студентов очной формы обучения по выполнению
documents -> Методическое пособие по дисциплине «информационная безопасность»
2016 -> Методические рекомендации по выполнению практических работ по дисциплине «Деловой русский язык»
documents -> Комплект оценочных средств Учебная дисциплина ен. 03 Информатика
2016 -> Аварии и катастрофы. Причины, виды, примеры


Поделитесь с Вашими друзьями:
1   ...   7   8   9   10   11   12   13   14   15


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал