close

Вход

Забыли?

вход по аккаунту

?

Курсовая Песегов

код для вставкиСкачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики и компьютерных наук
Кафедра программного обеспечения
КУРСОВАЯ РАБОТА
по курсу: "Языки программирования"
Электронная система тестирования
Выполнила:
Студент группы ИСиТ - 129
Кабардинский Евгений Олегович
Проверил:
Зорин Сергей Анатольевич
Тюмень, 2013
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ3
ОПИСАНИЕ АЛГОРИТМА3
ОПИСАНИЕ ПРАКТИЧЕСКОЙ ЗАДАЧИ5
ПРИЛОЖЕНИЕ (КОД ПРОГРАММЫ)8
ВВЕДЕНИЕ
В данном курсовом проекте представлено приложение для тестирования студентов.
ОПИСАНИЕ АЛГОРИТМА В данном приложении реализованы простейшие арифметические операции.
Интерфейс включает в себя ввод с клавиатуры первого и второго числа , ввод знака арифметической операции.
Алгоритм операции сложения:
1. Числа введенные пользователем инвертируются (записываются в обратном порядке).
2. Каждая цифра первого числа складывается с каждой цифой второго числа, сумма записывается в число в соответствующий разряд конечного числа.
3. Если сумма оказалась двуразрядной , то первый разряд записывается в конечное число в соответствующий разряд ,а второй сложится с следующим .
4. Полученное число инвертируем.
Алгоритм операции вычитания:
1. Числа введенные пользователем инвертируются (записываются в обратном порядке).
2. Каждая цифра второго числа отнимается от каждой цифры второго числа, разность записывается в число в соответствующий разряд конечного числа.
3. Если разность оказалась отрицательной , то отнимаем число от 10 ,полученное число записываем в конечное число в соответствующий разряд ,и отнимаем 1 у следующего .
4. Полученное число инвертируем
Алгоритм операции умножения:
1. Умножаем первое число на последнюю цифру второго , результат прибавим к ответу .
2. Перебираем все цифры второго числа и возвращаем ответ .
Алгоритм операции деления:
1. Умножаем число делитель на счетчик (в каждой итерации увеличиваем его на один ) до тех пор пока результат не станет равным делимому. Возвращаем значение счетчика.
ОПИСАНИЕ ПРАКТИЧЕСКОЙ ЗАДАЧИ
Цель:
Разработка программы для проведения тестирования студентов.
Задачи:
1. Составить алгоритмы, позволяющие совершать простейшие алгебраические операции на большими числи.
2. Реализовать алгоритмы с помощью языка программирования C#.
3. Провести тестирование программы.
4. Написать отчет о проделанной работе.
Программа должна:
1. Считывать числа введенные пользователем;
2. Производить выбранное действие.
Реализация алгоритма:
Алгоритм операции сложения:
5. Числа введенные пользователем инвертируются (записываются в обратном порядке).
6. Каждая цифра первого числа складывается с каждой цифой второго числа, сумма записывается в число в соответствующий разряд конечного числа.
7. Если сумма оказалась двуразрядной , то первый разряд записывается в конечное число в соответствующий разряд ,а второй сложится с следующим .
8. Полученное число инвертируем.
Алгоритм операции вычитания:
5. Числа введенные пользователем инвертируются (записываются в обратном порядке).
6. Каждая цифра второго числа отнимается от каждой цифры второго числа, разность записывается в число в соответствующий разряд конечного числа.
7. Если разность оказалась отрицательной , то отнимаем число от 10 ,полученное число записываем в конечное число в соответствующий разряд ,и отнимаем 1 у следующего .
8. Полученное число инвертируем
Алгоритм операции умножения:
3. Умножаем первое число на последнюю цифру второго , результат прибавим к ответу .
4. Перебираем все цифры второго числа и возвращаем ответ .
Алгоритм операции деления:
2. Умножаем число делитель на счетчик (в каждой итерации увеличиваем его на один ) до тех пор пока результат не станет равным делимому. Возвращаем значение счетчика.
ПРИЛОЖЕНИЕ (КОД ПРОГРАММЫ)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Ets
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new 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.Windows.Forms;
using System.IO;
namespace Ets
{
public partial class Main_form : Form
{
string patch;
string[] question;
string[] answer;
string[] uans;
bool[] uanswer;
int position = 0;
int length = 0;
bool err=true;
int [] rquest;
public Main_form()
{
InitializeComponent();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void load()
{
try
{
err = false;
FileStream fs = new FileStream(patch, FileMode.Open);
bool startload = true;
StreamReader sr = new StreamReader(fs);
string temp;
temp = sr.ReadLine();
if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'l')
{
temp = temp.Remove(0, 4);
length = Convert.ToInt32(temp);
question = new string[length];
answer = new string[length];
uanswer = new bool[length/2];
uans = new string[length/2];
rquest = new int[length / 2];
}
else { MessageBox.Show("При чтении файла произошла ошибка, попробуйте выбрать другой тест"); startload = false; err = true; }
int i = 0;
while (startload)
{
temp = sr.ReadLine();
if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'q') { temp = temp.Remove(0, 4); question[i] = temp; }
else if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'a') { temp = temp.Remove(0, 4); answer[i] = temp; i++; }
else if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'e') { break; }
else { MessageBox.Show("При чтении файла произошла ошибка, попробуйте выбрать другой тест"); err = true; break; }
}
редактироватьToolStripMenuItem.Enabled = true;
fs.Close();
sr.Close();
}
catch { MessageBox.Show("Файл не найден"); err = true; }
}
private void rqgen()
{
Random r = new Random();
for (int i = 0; i < rquest.Length; i++)
{
rquest[i] = r.Next(question.Length - 1);
for (int j = 0; j < i; j++)
{
if (rquest[i] == rquest[j]) { i--; }
}
}
}
private void show()
{
label4.Text = String.Format("{0} / {1}", position + 1, rquest.Length);
listBox1.Items.Clear();
listBox1.Items.Add(question[rquest[position]]);
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
patch = openFileDialog1.FileName;
if (patch != null)
{
load(); }
if (!err)
{
rqgen();
show();
}
}
private void button2_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
textBox1.Text = "";
if (position < rquest.Length-1)
{
position++;
}
if (position == rquest.Length - 1) { button3.Visible = true; }
show();
textBox1.Text = uans[position];
}
}
private void button1_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
textBox1.Text = "";
if (position > 0)
{
position--;
}
show();
textBox1.Text = uans[position];
}
}
private string info()
{
int p = 0;
string info = "Результаты тестирования : \n";
for (int i = 0; i < rquest.Length; i++)
{
string temp = "";
if (uanswer[i] == true) { temp = "верно"; p++; }
else { temp = "неверно"; }
info += String.Format("Вопрос №{0} - {4} \nРешено - {1} (Ваш ответ : {2} , Правильный ответ : {3})\n\n", i + 1, temp, uans[i], answer[rquest[i]], question[rquest[i]]);
}
info += String.Format("Итог : {0} правильных из {1}",p,rquest.Length);
return info;
}
private void button3_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
for (int i = 0; i < rquest.Length; i++)
{
if (uans[i].ToLower() == answer[rquest[i]].ToLower())
{
uanswer[i] = true;
}
else { uanswer[i] = false; }
}
MessageBox.Show(info());
}
}
private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e)
{
Editor f = new Editor();
f.inside(question, answer);
this.Hide();
f.ShowDialog();
this.Show();
}
private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
{
Editor f = new Editor();
this.Hide();
f.ShowDialog();
this.Show();
}
private void button4_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Программа для проведения тестирования студентов. \nПриложение поддерживает загрузку файлов с вопросами. \nЕсть возможность создавать и редактировать \nсущестующие файлы с вопросами.\nПо окончанию теста, на экран выводится отчет с вопросами,\nответами пользователя и правильными ответами.\nКабардинский Евгений ИСиТ 129-2");
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Ets
{
public partial class Editor : Form
{
public Editor()
{
InitializeComponent();
}
string[] quest = new string[1];
string[] answer = new string[1];
int position = 0;
public void inside(string []q , string [] a)
{
quest = q;
answer = a;
richTextBox1.Text = quest[0];
textBox1.Text = answer[0];
}
private void safe()
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
saveFileDialog1.ShowDialog();
string name = saveFileDialog1.FileName;
if (name[name.Length - 1] == 't' && name[name.Length - 2] == 's' && name[name.Length - 3] == 'e' && name[name.Length - 4] == '.') { }
else { name = name + ".est"; }
FileStream fs = new FileStream(name, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("<\\l " + quest.Length);
for (int i = 0; i < quest.Length; i++)
{
sw.WriteLine("<\\q " + quest[i]);
sw.WriteLine("<\\a " + answer[i]);
}
sw.WriteLine("<\\e");
sw.Close();
fs.Close();
MessageBox.Show("Файл сохранен");
}
private void button3_Click(object sender, EventArgs e)
{
safe();
}
private void button1_Click(object sender, EventArgs e)
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
if (position > 0)
{
position--;
}
label4.Text = String.Format("{0}",position+1);
richTextBox1.Text= quest[position];
textBox1.Text = answer[position];
}
private void button2_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != "" && textBox1.Text != "")
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
position++;
if (position == quest.Length)
{
Array.Resize(ref quest, quest.Length + 1);
Array.Resize(ref answer, answer.Length + 1);
}
richTextBox1.Text = quest[position];
textBox1.Text = answer[position];
label4.Text = String.Format("{0}", position + 1);
}
else { MessageBox.Show("Введите Вопрос и/или Ответ"); }
}
private void button4_Click(object sender, EventArgs e)
{
this.Close();
}
private void выйтиToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
safe();
}
}
}
1
11
Документ
Категория
Рефераты
Просмотров
14
Размер файла
40 Кб
Теги
курсовая, песегова
1/--страниц
Пожаловаться на содержимое документа