Автор: Пользователь скрыл имя, 25 Октября 2013 в 21:12, курсовая работа
При современном темпе жизни и объеме информации, которую всегда нужно держать под рукой, органайзер – одна из самых необходимых вещей любого современного человека. И неважно, кто он по профессии - главный директор крупной компании или обычный студент. А если учесть , что возрастает процент людей, занятых в сфере информационных технологий, классический органайзер оказывается не таким удобным, как электронный. Электронный органайзер – очень полезная утилита, которая должна включаться в набор стандартных программ операционной систему.
Введение 4
1. Предпроектное исследование предметной области 5
1.1 Анализ подсистемы _______________ информационной системы _________________ 5
1.2 Анализ информационной системы ________________ 6
1.3 Функциональные требования к автоматизированной информационной информационной системе 7
1.4 Эксплуатационные требования к автоматизированной информационной системе 7
2.1 ER-модель предметной области 8
2.2 Построение UML-диаграмм 9
3. Программная реализация подсистемы _______________ автоматизированной информационной системы ______________ 10
4. Тестирование 11
5. Инструкции по сопровождению и использованию системы 12
Заключение 13
Список использованных источников 14
Применительно к реализуемому проекту можно говорить не о тестировании, а об отладке, когда сам программист исправляет ошибки, обнаруженные на этапе компиляции. Приводить пример отладки не имеет смысла. То, что достойно внимания в этом проекте, – это пользовательское тестирование.
Пользовательское тестирование – процесс, при котором некий пользователь работает с готовым приложением, пытаясь найти ошибки. На рис. 4 изображен «Электронный органайзер» версии номер один.
Рис. 4. Пользовательское тестирование органайзера.
В заключение отметим, что пользовательское тестирование не выявило ошибок в логике и сбоев приложения.
5. Создание очередной версии приложения
Итогом первых четырех разделов стало вполне работоспособное приложение. Однако следуя современном концепции программирования, создадим еще одну версию электронного органайзера. В ней модифицируем калькулятор (добавив некоторые операции) и модуль записной книжки (в нем добавим возможность помечать записи).
На рис. 5. Изображена окончательная версия электронного органайзера.
Рис. 5. Окончательная версия приложения.
Заключение
В результате выполнения задания курсового проекта была написана программа «Электронный эквалайзер», состоящая из нескольких подсистем. Также были получены знания о технологии обработки событий и о технологии доступа к данным OLE DB. Полученные знания были применены на практике разработки программной системы.
Список использованных источников
Приложения
Приложение А
Диаграмма вариантов использования
Приложение Б
Диаграмма состояний
Подсистема «Записная книжка»
Приложение В
Код программной системы
double operand1;
double operand2;
double memory;
double result;
Operations flag;
bool first;
int addFlag;
int idEvent;
String^ tmp_id;
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
taskLoad();
eventLoad(monthCalendar1->
}
// Калькулятор
private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "7";
else
textBox1->Text = "7";
first = false;
}
private: System::Void button8_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "8";
else
textBox1->Text = "8";
first = false;
}
private: System::Void button9_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "9";
else
textBox1->Text = "9";
first = false;
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "4";
else
textBox1->Text = "4";
first = false;
}
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "5";
else
textBox1->Text = "5";
first = false;
}
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "6";
else
textBox1->Text = "6";
first = false;
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "1";
else
textBox1->Text = "1";
first = false;
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "2";
else
textBox1->Text = "2";
first = false;
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "3";
else
textBox1->Text = "3";
first = false;
}
private: System::Void button0_Click(System::Object^ sender, System::EventArgs^ e) {
if (textBox1->Text != "0" && first != true)
textBox1->Text += "0";
else
textBox1->Text = "0";
first = false;
}
private: System::Void button_sign_Click(System::
if (textBox1->Text->Substring(0,
textBox1->Text = "-" + textBox1->Text;
else
textBox1->Text = textBox1->Text->Substring(1, textBox1->Text->Length - 1);
}
private: System::Void button_mem_add_Click(System::
memory = Double::Parse(textBox1->Text);
label2->Text = textBox1->Text;
}
private: System::Void button_mem_sub_Click(System::
if (!Double::IsNaN(memory)) {
textBox1->Text = label2->Text;
memory = Double::NaN;
label2->Text = "";
}
}
private: System::Void button_back_Click(System::
int index = textBox1->Text->Length;
if (index == 1)
textBox1->Text = "0";
else if (index == 2 && textBox1->Text->Substring(0, 1) == "-")
textBox1->Text = "0";
else
textBox1->Text = textBox1->Text->Substring(0, index - 1);
}
private: System::Void button_point_Click(System::
if (!textBox1->Text->Contains(","
textBox1->Text += ",";
}
private: System::Void button_clear_Click(System::
textBox1->Text = "0";
operand1 = Double::NaN;
operand2 = Double::NaN;
memory = Double::NaN;
label2->Text = "";
}
private: double Calculate (Operations e, double x, double y){
double res = Double::NaN;
switch (e) {
case Operations::ADD:
res = x + y; break;
case Operations::SUB:
res = x - y; break;
case Operations::MUL:
res = x * y; break;
case Operations::DIV:
if (y != 0)
res = x / y;
else
res = Double::NaN;
break;
case Operations::POW:
res = pow(x, y); break;
}
return res;
}
private: System::Void button_add_Click(System::
first = true;
if (flag == Operations::NO) {
operand1 = Double::Parse(textBox1->Text);
flag = Operations::ADD;
}
else if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::ADD;
}
}
private: System::Void button_sub_Click(System::
first = true;
if (flag == Operations::NO) {
operand1 = Double::Parse(textBox1->Text);
flag = Operations::SUB;
}
else if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::SUB;
}
}
private: System::Void button_mul_Click(System::
first = true;
if (flag == Operations::NO){
operand1 = Double::Parse(textBox1->Text);
flag = Operations::MUL;
}
else if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::MUL;
}
}
private: System::Void button_deg_Click(System::
first = true;
if (flag == Operations::NO) {
operand1 = Double::Parse(textBox1->Text);
flag = Operations::POW;
}
else if (flag != Operations::NO){
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::POW;
}
}
private: System::Void button_equal_Click(System::
first = true;
if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::NO;
}
}
private: System::Void button_percent_Click(System::
first = true;
if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
switch (flag) {
case Operations::ADD:
operand1 += operand1*operand2/100; break;
case Operations::SUB:
operand1 -= operand1*operand2/100; break;
case Operations::MUL:
operand1 *= operand1*operand2/100; break;
case Operations::DIV:
if(operand2 != 0)
operand1 = 100/operand2;
else
operand1 = Double::NaN; break;
default:
break;
}
textBox1->Text = operand1.ToString();
flag = Operations::NO;
}
}
private: System::Void button_div_Click(System::
first = true;
if (flag == Operations::NO) {
operand1 = Double::Parse(textBox1->Text);
flag = Operations::DIV;
}
else if (flag != Operations::NO) {
operand2 = Double::Parse(textBox1->Text);
operand1 = Calculate(flag, operand1, operand2);
textBox1->Text = operand1.ToString();
flag = Operations::DIV;
}
}
// Записная книжка
private: System::Void b_new_task_Click(System::
dataGridView1->Rows->Add();
dataGridView1->Rows[
dataGridView1->Rows[
addFlag = 1;
dataGridView1->BeginEdit(true)
}
private: System::Void b_remove_task_Click(System::
if (dataGridView1->CurrentRow) {
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ DeleteQuery = "DELETE FROM Scheduler WHERE
id_task = " + dataGridView1->CurrentRow->
OleDbCommand^ Command = gcnew OleDbCommand(DeleteQuery, conn);
Command->ExecuteNonQuery();
conn->Close();
dataGridView1->Rows->Remove(
}
}
private: System::Void b_modify_task_Click(System::
if (dataGridView1->CurrentRow)
{
dataGridView1->CurrentRow->
addFlag = false;
tmp_id = dataGridView1->CurrentRow->
addFlag = 2;
dataGridView1->BeginEdit(true)
}
}
private: void taskLoad () {
String^ dbname = "dbOrganizer.mdb";
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ SelectQuery = "SELECT * FROM Scheduler";
OleDbCommand^ Command = gcnew OleDbCommand(SelectQuery, conn);
OleDbDataReader^ Reader = Command->ExecuteReader();
while (Reader->Read()){
dataGridView1->Rows->Add(
}
Reader->Close();
conn->Close();
}
private: System::Void dataGridView1_CellMouseClick(
if (dataGridView1->CurrentCell->
bool status = Boolean::Parse(dataGridView1->
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ UpdateQuery = "UPDATE Scheduler SET status_task
= " + (!status).ToString() + " WHERE id_task = " + dataGridView1->CurrentRow->
OleDbCommand^ Command = gcnew OleDbCommand(UpdateQuery, conn);
Command->ExecuteNonQuery();
conn->Close();
}
}
private: System::Void dataGridView1_CellEndEdit(
if (dataGridView1->CurrentCell) {
if (addFlag == 1) {
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ InsertQuery = "INSERT INTO Scheduler (text_task)
VALUES ('" + dataGridView1->CurrentRow->
OleDbCommand^ Command = gcnew OleDbCommand(InsertQuery, conn);
Command->ExecuteNonQuery();
conn->Close();
dataGridView1->Rows->Clear();
taskLoad();
}
else if (addFlag == 2) {
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ UpdateQuery = "UPDATE Scheduler SET text_task
= '" + dataGridView1->CurrentCell->
OleDbCommand^ Command = gcnew OleDbCommand(UpdateQuery, conn);
Command->ExecuteNonQuery();
conn->Close();
}
addFlag = 0;
}
}
// Календарь
private: void eventLoad(DateTime date) {
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ SelectQuery = "SELECT * FROM Calendar WHERE
date_event = '" + monthCalendar1->
OleDbCommand^ Command = gcnew OleDbCommand(SelectQuery, conn);
OleDbDataReader^ Reader = Command->ExecuteReader();
while (Reader->Read()) {
dataGridView2->Rows->Add();
dataGridView2->Rows[
dataGridView2->Rows[
dataGridView2->Rows[
}
conn->Close();
}
private: System::Void monthCalendar1_DateChanged(
dataGridView2->Rows->Clear();
eventLoad(monthCalendar1->
}
private: System::Void dataGridView2_CellClick(
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ SelectQuery = "SELECT text_event FROM Calendar
WHERE id_event = " + dataGridView2->CurrentRow->
OleDbCommand^ Command = gcnew OleDbCommand(SelectQuery, conn);
OleDbDataReader^ Reader = Command->ExecuteReader();
while (Reader->Read()) {
richTextBox1->Text = Reader->GetValue(0)->ToString(
}
conn->Close();
}
private: void deactivate () {
dataGridView2->Rows->Clear();
eventLoad(monthCalendar1->
dataGridView2->Visible = true;
label_name->Visible = false;
textBox_name->Visible = false;
button_save->Visible = false;
button_cancel->Visible = false;
monthCalendar1->Enabled = true;
but_add_event->Enabled = true;
but_modify_event->Enabled = true;
but_remove_event->Enabled = true;
richTextBox1->Clear();
richTextBox1->ReadOnly = true;
}
private: void activate () {
dataGridView2->Visible = false;
label_name->Visible = true;
textBox_name->Visible = true;
button_save->Visible = true;
button_cancel->Visible = true;
monthCalendar1->Enabled = false;
but_add_event->Enabled = false;
but_modify_event->Enabled = false;
but_remove_event->Enabled = false;
richTextBox1->Clear();
richTextBox1->ReadOnly = false;
textBox_name->Focus();
}
private: System::Void but_add_event_Click(System::
activate();
addFlag = 3;
}
private: System::Void button_cancel_Click(System::
private: System::Void button_save_Click(System::
if (textBox_name->Text != "")
{
OleDbConnection^ conn = gcnew OleDbConnection("Provider=
conn->Open();
String^ Query;
if (addFlag == 3) {
Query = "INSERT INTO Calendar (date_event,
name_event, text_event) VALUES ('" + monthCalendar1->
}
else if (addFlag == 4) {
Query = "UPDATE Calendar SET name_event = '" + textBox_name->Text + "', text_event = '" + richTextBox1->Text->ToString() + "' WHERE id_event = " + idEvent.ToString();
}
OleDbCommand^ Command = gcnew OleDbCommand(Query, conn);
Command->ExecuteNonQuery();
conn->Close();
deactivate();