{
SqlConnection connection = openConnection();
List<string> effect = new List<string>();
List<string> effectId = new List<string>();
effect.AddRange(ExecuteQueryGetEffect(lineWhere,ref effect, ref effectId));
if (effect.Count == 0)
{
effect.AddRange(ExecuteQueryGetEffect("", ref effect, ref effectId));
}
if (effect.Count - 1 <= i)
{
i = 0;
}
label1.Text = effect[i];
//запрос на описание текущего эффекта
string query = "SELECT Описание FROM Геометрические_эффекты WHERE Id = " + effectId[i];
SqlDataReader myReader = sendQuery(query, connection);
myReader.Read();
textBox1.Text = myReader["Описание"].ToString();
myReader.Close();
//выборка патентов к текущему эффекту
query = "SELECT Патенты.Название " +
"FROM Патенты, Патенты_Геометрических_эффектов, Геометрические_эффекты " +
"WHERE Патенты.Id = Патенты_Геометрических_эффектов.Патенты_Id " +
"AND Патенты_Геометрических_эффектов.Геометрические_эффекты_Id = Геометрические_эффекты.Id " +
"AND Геометрические_эффекты.Id = " + effectId[i];
myReader = sendQuery(query, connection);
while (myReader.Read())
{
int c = dataGridView1.RowCount;
dataGridView1.Rows.Add(1);
dataGridView1.Rows[c].Cells[0].Value = myReader["Название"].ToString();
}
myReader.Close();
i++;
}
SqlDataReader sendQuery(string query, SqlConnection connection)
{
SqlDataReader myReader;
SqlCommand myCommand = new SqlCommand(query, connection);
//выполняем запрос
myReader = myCommand.ExecuteReader();
return myReader;
}
SqlConnection openConnection()
{
SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=PECHDB;Integrated Security=True");
connection.Open();
//this.Text = "Я открыт";
return connection;
}
void closeConnection(SqlConnection connection)
{
connection.Close();
//this.Text = "Я закрыт";
}
private void label1_Click(object sender, EventArgs e)
{
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
string where = " where Коэффициент >= " + comboBox2.SelectedItem.ToString() + " and Коэффициент<= " + comboBox3.SelectedItem.ToString();
GetEffect(where);
}
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
_actionInfoTextBox.Text = File.ReadAllText(ofd.FileName,Encoding.Default);
_headActionTextBox.Text = ofd.SafeFileName.Substring(0,ofd.SafeFileName.Length-4);
}
}
private void button4_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.FileName = _headActionTextBox.Text + ".txt";
if (sfd.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(sfd.FileName, _actionInfoTextBox.Text);
}
}
private void GetEffectReport(string whereLine)
{
SqlConnection connection = openConnection();
_effectdDataGridView.Rows.Clear();
string query = "SELECT Id, Название FROM Геометрические_эффекты "+whereLine;
SqlDataReader myReader = sendQuery(query, connection);
//List<string> effect = new List<string>();
//List<string> effectId = new List<string>();
while (myReader.Read())
{
int c = _effectdDataGridView.RowCount;
_effectdDataGridView.Rows.Add(1);
_effectdDataGridView.Rows[c].Cells[0].Value = myReader["Название"].ToString();
}
myReader.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
GetEffectReport("where коэффициент >= " + comboBox1.SelectedItem
+ " -0.5 and коэффициент <= 0.5+" + comboBox1.SelectedItem);
//SqlConnection connection = openConnection();
//_effectdDataGridView.Rows.Clear();
//string query = "SELECT Id, Название FROM Геометрические_эффекты where коэффициент >= " + comboBox1.SelectedItem
// + " -0.5 and коэффициент <= 0.5+" + comboBox1.SelectedItem;
//SqlDataReader myReader = sendQuery(query, connection);
////List<string> effect = new List<string>();
////List<string> effectId = new List<string>();
//while (myReader.Read())
//{
// int c = _effectdDataGridView.RowCount;
// _effectdDataGridView.Rows.Add(1);
// _effectdDataGridView.Rows[c - 1].Cells[0].Value = myReader["Название"].ToString();
//}
//myReader.Close();
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
GetEffectReport(" where коэффициент <= " + comboBox2.SelectedItem);
}
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
GetEffectReport(" where коэффициент >= " + comboBox3.SelectedItem);
}
private void testButton_Click(object sender, EventArgs e)
{
TestForm testForm = new TestForm();
testForm.ShowDialog();
}
}
}
Форма теста
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.SqlClient;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class TestForm : Form
{
private List<Question> questions;
private List<Ansver> ansvers;
private int counter = 0;
public TestForm()
{
InitializeComponent();
questions = ExecuteQuestins();
ansvers = new List<Ansver>();
UpdateForm();
}
SqlConnection openConnection()
{
SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=PECHDB;Integrated Security=True");
connection.Open();
//this.Text = "Я открыт";
return connection;
}
SqlDataReader sendQuery(string query, SqlConnection connection)
{
SqlDataReader myReader;
SqlCommand myCommand = new SqlCommand(query, connection);
//выполняем запрос
myReader = myCommand.ExecuteReader();
return myReader;
}
void closeConnection(SqlConnection connection)
{
connection.Close();
//this.Text = "Я закрыт";
}
private class Question
{
public int Id { get; set; }
public string Text {get;set;}
}
private class Ansver
{
public int Id { get; set; }
public int Value {get;set;}
}
private List<Question> ExecuteQuestins()
{
string query = "SELECT * FROM Вопросы";
SqlConnection connection = openConnection();
SqlDataReader myReader = sendQuery(query, connection);
List<Question> rezult = new List<Question>();
while (myReader.Read())
{
Question q = new Question();
q.Id = int.Parse(myReader["Id"].ToString());
q.Text = myReader["Текст"].ToString();
rezult.Add(q);
}
myReader.Close();
return rezult;
}
private void UpdateForm()
{
textBox2.Text = questions[counter].Text;
checkBox3.Checked = checkBox1.Checked = checkBox2.Checked = false;
if (ansvers.Count > counter)
{
if (ansvers[counter].Value == 0)
{
checkBox1.Checked = true;
}
else
if (ansvers[counter].Value == 2)
{
checkBox2.Checked = true;
}
else
if (ansvers[counter].Value == 5)
{
checkBox3.Checked = true;
}
}
if (counter == 0)
{
_prevButton.Enabled = false;
}
else
{
_prevButton.Enabled = true; ;
}
if (counter == questions.Count-1)
{
_nextButton.Text = "Завершить";
}
else
{
_nextButton.Text = "Далее";
}
}
private void _prevButton_Click(object sender, EventArgs e)
{
counter--;
UpdateForm();
}
private void _nextButton_Click(object sender, EventArgs e)
{
counter++;
if (counter > questions.Count-1)
{
EndTest();
return;
}
UpdateForm();
}
private void EndTest()
{
int tt = 0;
foreach (Ansver a in ansvers)
{
tt += a.Value;
}
label2.Text = string.Format(@"Тест завершен, средний бал {0}", tt/questions.Count);
panelRezult.Visible = true;
}
private void checkedListBox_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void fixedAnsver(int value)
{
if (ansvers.Count > counter )
{
ansvers[counter].Value = value;
}
else
{
Ansver ansver = new Ansver();
ansver.Id = questions[counter].Id;
ansver.Value = value;
ansvers.Add(ansver);
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
fixedAnsver(0);
checkBox2.Checked = checkBox3.Checked = false;
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
fixedAnsver(2);
checkBox1.Checked = checkBox3.Checked = false;
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (checkBox3.Checked)
{
fixedAnsver(5);
checkBox1.Checked = checkBox2.Checked = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
DateTime date = DateTime.Now;
foreach(var rr in ansvers)
{
string request = string.Format(@"INSERT INTO [dbo].[РезультатыТеста]
([имя]
,[дата]
,[id_вопроса]
,[ответ])
VALUES
('{0}'
,'{1}.{4}.{5} {6}:{7}:{8}'
,{2}
,{3})",textBox1.Text,date.Year,rr.Id,rr.Value,date.Month,date.Day, date.Hour, date.Minute, date.Second);
SqlConnection connection = openConnection();
sendQuery(request, connection);
connection.Close();
}
Close();
}
private void showRezultButton_Click(object sender, EventArgs e)
{
showRezultsPanel.Visible = true;
string query = @"select [имя], [дата], AVG([ответ]) [ответ]
from [dbo].[РезультатыТеста]
group by [имя], [дата]";
SqlConnection connection = openConnection();
SqlDataReader myReader = sendQuery(query, connection);
while (myReader.Read())
{
int c = dataGridView.RowCount;
dataGridView.Rows.Add(1);
dataGridView.Rows[c].Cells[0].Value = myReader["имя"];
dataGridView.Rows[c].Cells[1].Value = myReader["дата"].ToString();
dataGridView.Rows[c].Cells[2].Value = myReader["ответ"].ToString();
}
myReader.Close();
}
}