
- •Утверждаю
- •Задание на курсовое проектирование
- •3. Исходные данные к проекту
- •4. Содержание расчетно-пояснительной записки (перечисление вопросов, которые подлежат рассмотрению)
- •5. Перечисление графического материала (с подробным описанием обязательных чертежей и графиков)
- •7. Календарный график работы над проектом на весь период проектирования
- •Реферат
- •«Железнодорожная касса»
- •Оглавление
- •Введение
- •1 Описание предметной области и определение требований к системе с точки зрения предметной области
- •2 Поставновка задачи и обзор медотов её решения
- •3 Модели представления системы и их описание
- •4 Информационная модель системы и её описание
- •5 Описание алгоритмов реализующих бизнес-логику серверной части проектируемой системы
- •6.4 Сообщения оператору
- •7 Результаты тестирования разработанной системы и оценка выполнения задач
- •Заключение
- •Список использованных источников
- •Приложение 1
- •Приложение 2 Листинг программНого кода
Заключение
При выполнении курсового проекта были пройдены все этапы разработки специализированного прикладного программного обеспечения:
формализация задачи;
сбор необходимых исходных данных;
разработка и отладка программного продукта.
Разработана программа «Железнодорожная касса», которая позволяет автоматизировать работу пользователя, в ней был спроектирован пользовательский интерфейс, который обеспечивает удобную работу пользователя с приложением. Интерфейс реализован в виде диалогового окна, в котором реализованы кнопки, поля ввода-вывода данных и другие элементы. Приложение обеспечивает лёгкую и быструю работу с базой данных. Программное обеспечение позволяет не только оперативно найти необходимую информацию, характерную для железнодорожной кассы, но и получить ее в электронном виде.
При разработке программного приложения «Железнодорожная касса» мною был глубже изучен язык С#, методы взаимодействия с MS SQL, вопросы разработки пользовательского интерфейса.
Список использованных источников
1. Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# -NET. Учебный курс MCAD MCSD / Официальное пособие Microsoft. – Москва: Русская редакция, 2003. – 478 с.
2. Разработка Windows-приложений на основе Visual C# / Intuit. – Москва: Electronic pub, 2005. – 424 с.
3. Шильд, Г. C# Учебный Курс. – Питер: Издательская группа BHV, 2003. – 512c.
Приложение 1
СХЕМА ОБОБЩЁННОГО АЛГОРИТМА РАБОТЫ ПРОГРАММЫ
Схема алгоритма работы программы:
Приложение 2 Листинг программНого кода
Форма 1
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.Data.SqlClient;
namespace KursovoyGrimanov
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public int id;
public void Loads()
{
cbMeg.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM SELLERS");
cbMeg.DisplayMember = "name";
cbMeg.ValueMember = "id";
cbTo.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
cbTo.DisplayMember = "namestation";
cbTo.ValueMember = "id";
cbFrom.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
cbFrom.DisplayMember = "namestation";
cbFrom.ValueMember = "id";
cbType.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM TypeTicket");
cbType.DisplayMember = "type";
cbType.ValueMember = "id";
comboBox2.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM SELLERS");
comboBox2.DisplayMember = "name";
comboBox2.ValueMember = "id";
comboBox4.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
comboBox4.DisplayMember = "namestation";
comboBox4.ValueMember = "id";
comboBox3.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
comboBox3.DisplayMember = "namestation";
comboBox3.ValueMember = "id";
comboBox1.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM TypeTicket");
comboBox1.DisplayMember = "type";
comboBox1.ValueMember = "id";
SqlDataReader myReader = SqlHelper.ExecuteReader("Select id,(select namestation from station where station.id = t.idfrom) as fromstation,(select namestation from station where station.id = t.idto) as tostation, price, date, (select name from sellers where sellers.id = t.idseller) as nameseller,(select type from typeticket where typeticket.id = t.idtype) as typeticket from invoice t");
string st;
int itemIndex = 0;
lw1.Items.Clear();
while (myReader.Read())
{
for (int i = 0; i < myReader.FieldCount; i++)
{
st = myReader.GetValue(i).ToString();
switch (i)
{
case 0:
lw1.Items.Add(st);
break;
case 1:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 2:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 3:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 4:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 5:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 6:
lw1.Items[itemIndex].SubItems.Add(st);
break;
}
}
itemIndex++;
}
}
private void btnAddStation_Click(object sender, EventArgs e)
{
if (txtStation.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into station (namestation) values ('{0}')", txtStation.Text));
MessageBox.Show(String.Format("Добавлена новая станция : {0}",txtStation.Text));
txtStation.Clear();
}
Loads();
}
private void btnAddType_Click(object sender, EventArgs e)
{
if (txtType.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into typeticket (type) values ('{0}')", txtType.Text));
MessageBox.Show(String.Format("Добавлен новый тип билета : {0}", txtType.Text));
txtType.Clear();
}
Loads();
}
private void btnAddSeller_Click(object sender, EventArgs e)
{
if (txtSeller.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into sellers (name) values ('{0}')", txtSeller.Text));
MessageBox.Show(String.Format("Добавлен новый кассир : {0}", txtSeller.Text));
txtSeller.Clear();
}
Loads();
}
private void btnRefresh_Click(object sender, EventArgs e)
{
Loads();
}
private void btnSell_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(cbMeg.SelectedValue) > 0 && Convert.ToInt32(cbFrom.SelectedValue) > 0 &&
Convert.ToInt32(cbTo.SelectedValue) > 0 && Convert.ToInt32(cbType.SelectedValue) > 0 &&
txtPrice.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("insert into invoice (idfrom,idto,price,date,idseller,idtype) values ({0},{1},'{2}',GETDATE(),{3},{4})", cbFrom.SelectedValue, cbTo.SelectedValue, txtPrice.Text, cbMeg.SelectedValue,cbType.SelectedValue));
MessageBox.Show(String.Format("Добавлена новая запись : {0}", DateTime.Now.ToShortTimeString()));
txtPrice.Clear();
}
Loads();
}
private void MainForm_Shown(object sender, EventArgs e)
{
Loads();
}
private bool nonNumberEntered = false;
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
nonNumberEntered = false;
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
if (e.KeyCode != Keys.Back)
{
nonNumberEntered = true;
MessageBox.Show("Вводить можно только цифры!");
}
}
}
if (Control.ModifierKeys == Keys.Shift)
{
nonNumberEntered = true;
MessageBox.Show("Вводить можно только цифры!");
}
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (nonNumberEntered == true)
{
e.Handled = true;
}
}
private void lw1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
id = Convert.ToInt32(lw1.Items[e.ItemIndex].Text);
for (int i = 1; i < lw1.Items[e.ItemIndex].SubItems.Count; i++)
{
switch (i)
{
case 1:
comboBox4.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 2:
comboBox3.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 3:
textBox1.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 4:
break;
case 5:
comboBox2.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 6:
comboBox1.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
}
}
groupBox1.Visible = true;
}
else groupBox1.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
txtPrice.Clear();
cbMeg.SelectedIndex = 0;
cbTo.SelectedIndex = 0;
cbFrom.SelectedIndex = 0;
cbType.SelectedIndex = 0;
}
private void button3_Click(object sender, EventArgs e)
{
if (id > 0)
{
SqlHelper.ExecuteNonQuery("Delete from invoice where id = {0}", id);
groupBox1.Visible = false;
Loads();
}
}
private void button4_Click(object sender, EventArgs e)
{
if (id > 0 && textBox1.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("update invoice set idfrom={0},idto={1},price='{2}',date=GETDATE(),idseller={3},idtype={4} where id = {5}", comboBox4.SelectedValue, comboBox3.SelectedValue, textBox1.Text, comboBox2.SelectedValue, comboBox1.SelectedValue, id));
Loads();
}
}
}
}
Класс SqlHelper
using System;
using System.Data;
using System.Data.SqlClient;
namespace KursovoyGrimanov
{
public static class SqlHelper
{
static string connection = "server=localhost; Trusted_Connection=yes; database=DK; Connection timeout=10";
#region получение таблицы данных
public static DataTable ExecuteDataTable(string query)
{
DataSet dataSet = null;
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
try
{
dataSet = new DataSet();
dataAdapter.Fill(dataSet);
}
catch
{ }
connect.Close();
if (dataSet != null)
return dataSet.Tables[0];
else return new DataTable();
}
public static DataTable ExecuteDataTable(string query, params object[] parameters)
{
return ExecuteDataTable(String.Format(query, parameters));
}
#endregion
#region выполнение запроса без возвращаемых значений
public static void ExecuteNonQuery(string query, params object[] parameters)
{
ExecuteNonQuery(string.Format(query, parameters));
}
public static void ExecuteNonQuery(string query)
{
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
command.ExecuteNonQuery();
connect.Close();
}
public static SqlDataReader ExecuteReader(string query)
{
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlDataReader myReader = null;
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
return myReader = command.ExecuteReader();
}
#endregion
}
}