Разработка электронного органайзера

Автор: Пользователь скрыл имя, 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

Файлы: 1 файл

Курсач.doc

— 651.50 Кб (Скачать)

Применительно к реализуемому проекту можно говорить не о тестировании, а об отладке, когда сам программист  исправляет ошибки, обнаруженные на этапе  компиляции. Приводить пример отладки не имеет смысла. То, что достойно внимания в этом проекте, – это пользовательское тестирование.

Пользовательское тестирование – процесс, при котором некий  пользователь работает с готовым  приложением, пытаясь найти ошибки. На рис. 4 изображен «Электронный органайзер» версии номер один.

Рис. 4. Пользовательское тестирование органайзера.

В заключение отметим, что пользовательское тестирование не выявило ошибок в  логике и сбоев приложения.

 

5. Создание очередной версии приложения

 

Итогом первых четырех разделов стало вполне работоспособное приложение. Однако следуя современном концепции программирования, создадим еще одну версию электронного органайзера. В ней модифицируем калькулятор (добавив некоторые операции) и модуль записной книжки (в нем добавим возможность помечать записи).

На рис. 5. Изображена окончательная  версия электронного органайзера.

Рис. 5.  Окончательная  версия приложения.

 

Заключение

 

В результате выполнения задания курсового проекта была написана программа «Электронный эквалайзер», состоящая из нескольких подсистем. Также были получены знания о технологии обработки событий и о технологии доступа к данным OLE DB. Полученные знания были применены на практике разработки программной системы. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованных источников

  1. Вендров А.М. Проектирование программного обеспечения экономических информационных систем: Учебник. – 2-е изд. – М.: Финансы и статистика, 2006. – 544 с.
  2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами на C++, 2-е изд.. – М.: «Издательство Бином», СПб.: «Невский проспект», 1998. – 560 с
  3. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользователя. – М.: ДМК, 2000. – 432 с.
  4. Павловская Т. C/C++. Программирование на языке высокого уровня: Уч. для вузов. – СПб.: Питер, 2003. – 464 с.
  5. C++. Объектно-ориентированное программирование: Практикум/ Павловская Т.А., Щупак Ю.А. – СПб.: Питер, 2004. – 265 с. – (Учеб. пособие).
  6. Арчер Т., Уайтчепел Э. Visual C++.NET. Библия пользователя. – М.: Издательский дом "Вильямс", 2005. – 1216 с.
  7. С/С++ и MS Visual C++ 2008 для начинающих. – СПб.: БХВ-Петербург, 2009. – 624 с.
  8. http://wikipedia.org – интернет-энциклопедия
  9. http://msdn.microsoft.com – официальный сайт Microsoft Developer Network

 

Приложения

 

Приложение А

 

Диаграмма вариантов  использования

 

 

 

 

 

 

 

Приложение  Б

 

Диаграмма состояний

 

Подсистема  «Записная книжка»

 

Приложение В

 

Код программной системы

 

 

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->SelectionStart.Date);

}

// Калькулятор

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::Object^  sender, System::EventArgs^  e) {

if (textBox1->Text->Substring(0,1) != "-")

  textBox1->Text = "-" + textBox1->Text;

else

  textBox1->Text = textBox1->Text->Substring(1, textBox1->Text->Length - 1);

}

private: System::Void button_mem_add_Click(System::Object^  sender, System::EventArgs^  e) {

memory = Double::Parse(textBox1->Text);

label2->Text = textBox1->Text;

}

private: System::Void button_mem_sub_Click(System::Object^  sender, System::EventArgs^  e) {

 if (!Double::IsNaN(memory)) {

textBox1->Text = label2->Text;

memory = Double::NaN;

label2->Text = "";

}

}

private: System::Void button_back_Click(System::Object^  sender, System::EventArgs^  e) {

 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::Object^  sender, System::EventArgs^  e) {

 if (!textBox1->Text->Contains(","))

textBox1->Text += ",";

}

private: System::Void button_clear_Click(System::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

  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::Object^  sender, System::EventArgs^  e) {

  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::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

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::Object^  sender, System::EventArgs^  e) {

dataGridView1->Rows->Add();

dataGridView1->Rows[dataGridView1->RowCount - 1]->Cells[1]->Value = "Введите задание...";

dataGridView1->Rows[dataGridView1->RowCount - 1]->Cells[1]->Selected = true;

addFlag = 1;

dataGridView1->BeginEdit(true);

}

private: System::Void b_remove_task_Click(System::Object^  sender, System::EventArgs^  e) {

if (dataGridView1->CurrentRow) {

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ DeleteQuery = "DELETE FROM Scheduler WHERE id_task = " + dataGridView1->CurrentRow->Cells[2]->Value;

OleDbCommand^ Command = gcnew OleDbCommand(DeleteQuery, conn);

Command->ExecuteNonQuery();

conn->Close();

dataGridView1->Rows->Remove(dataGridView1->CurrentRow);

}

}

private: System::Void b_modify_task_Click(System::Object^  sender, System::EventArgs^  e) {

if (dataGridView1->CurrentRow)

{

dataGridView1->CurrentRow->Cells[1]->Selected = true;

addFlag = false;

tmp_id = dataGridView1->CurrentRow->Cells[2]->Value->ToString();

addFlag = 2;

dataGridView1->BeginEdit(true);

}

}

private: void taskLoad () {

String^ dbname = "dbOrganizer.mdb";

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbname);

conn->Open();

String^ SelectQuery = "SELECT * FROM Scheduler";

OleDbCommand^ Command = gcnew OleDbCommand(SelectQuery, conn);

OleDbDataReader^ Reader = Command->ExecuteReader();

while (Reader->Read()){

dataGridView1->Rows->Add(Reader->GetBoolean(2), Reader->GetString(1), Reader->GetInt32(0));

}

Reader->Close();

conn->Close();

}

private: System::Void dataGridView1_CellMouseClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellMouseEventArgs^  e) {

if (dataGridView1->CurrentCell->OwningColumn == dataGridView1->Columns[0]) {

 bool status = Boolean::Parse(dataGridView1->CurrentCell->Value->ToString());

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ UpdateQuery = "UPDATE Scheduler SET status_task = " + (!status).ToString() + " WHERE id_task = " + dataGridView1->CurrentRow->Cells[2]->Value;

OleDbCommand^ Command = gcnew OleDbCommand(UpdateQuery, conn);

Command->ExecuteNonQuery();

conn->Close();

}

}

private: System::Void dataGridView1_CellEndEdit(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {

 if (dataGridView1->CurrentCell) {

 if (addFlag == 1) {

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ InsertQuery = "INSERT INTO Scheduler (text_task) VALUES ('" + dataGridView1->CurrentRow->Cells[1]->Value + "')";

OleDbCommand^ Command = gcnew OleDbCommand(InsertQuery, conn);

Command->ExecuteNonQuery();

conn->Close();

dataGridView1->Rows->Clear();

taskLoad();

}

 else if (addFlag == 2) {

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ UpdateQuery = "UPDATE Scheduler SET text_task = '" + dataGridView1->CurrentCell->Value + "' WHERE id_task = " + tmp_id;

OleDbCommand^ Command = gcnew OleDbCommand(UpdateQuery, conn);

Command->ExecuteNonQuery();

conn->Close();

}

 addFlag = 0;

}

}

// Календарь

private: void eventLoad(DateTime date) {

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ SelectQuery = "SELECT * FROM Calendar WHERE date_event = '" + monthCalendar1->SelectionStart.Date.ToShortDateString() + "'";

OleDbCommand^ Command = gcnew OleDbCommand(SelectQuery, conn);

OleDbDataReader^ Reader = Command->ExecuteReader();

 while (Reader->Read()) {

dataGridView2->Rows->Add();

dataGridView2->Rows[dataGridView2->RowCount - 1]->Cells[0]->Value = Reader->GetInt32(0);

dataGridView2->Rows[dataGridView2->RowCount - 1]->Cells[1]->Value = Reader->GetString(2);

dataGridView2->Rows[dataGridView2->RowCount - 1]->Selected = false;

}

conn->Close();

}

private: System::Void monthCalendar1_DateChanged(System::Object^  sender, System::Windows::Forms::DateRangeEventArgs^  e) {

dataGridView2->Rows->Clear();

eventLoad(monthCalendar1->SelectionStart.Date);

}

private: System::Void dataGridView2_CellClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ SelectQuery = "SELECT text_event FROM Calendar WHERE id_event = " + dataGridView2->CurrentRow->Cells[0]->Value;

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->SelectionStart.Date);

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::Object^  sender, System::EventArgs^  e) {

activate();

addFlag = 3;

}

private: System::Void button_cancel_Click(System::Object^  sender, System::EventArgs^  e) { deactivate(); }

private: System::Void button_save_Click(System::Object^  sender, System::EventArgs^  e) {

 if (textBox_name->Text != "")

{

OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbOrganizer.mdb");

conn->Open();

String^ Query;

 if (addFlag == 3) {

Query = "INSERT INTO Calendar (date_event, name_event, text_event) VALUES ('" + monthCalendar1->SelectionStart.Date.ToShortDateString() + "', '" + textBox_name->Text + "', '" + richTextBox1->Text->ToString() + "')";

}

 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();

Информация о работе Разработка электронного органайзера