Автор работы: Пользователь скрыл имя, 12 Января 2015 в 22:34, курсовая работа
С ростом количества информации, необходимой для жизнедеятельности человека, возникает острая потребность в автоматизации ее обработки и решения вопроса об организации хранения необходимых данных. За все время существования данной проблемы было предложено множество различных решений. Одним из современных и наиболее востребованным способом является использование баз данных (БД). Современные системы управления базами данных (СУБД) предоставляют обширный перечень возможностей, как разработчикам, так и рядовым пользователя.
FROM [Основные средства]
INNER JOIN Отдел
ON [Основные средства].Код_отдела = Отдел.Код_отдела
INNER JOIN Предприятие
ON Отдел.Код_предприятия = Предприятие.Код_предприятия
INNER JOIN [Типы средств]
ON [Основные средства].Код_типа = [Типы средств].Код_типа
INNER JOIN [Документы о закреплении]
ON [Основные средства].Номер_документа_з = [Документы о закреплении].Номер_документа_з
LEFT OUTER JOIN [Причины списания]
ON [Основные средства].Код_причины = [Причины списания].Код_причины OR [Основные средства].Код_причины = NULL
LEFT OUTER JOIN [Документы о списании]
ON [Основные средства].Номер_документа_с = [Документы о списании].Номер_документа_с OR [Основные средства].Номер_документа_с = NULL
Запрос на подсчёт количества одноимённых средств, списанных в течении заданного периода:
SELECT COUNT (Наименование) AS 'Количество'
FROM [Основные средства]
INNER JOIN [Документы о списании]
ON [Основные средства].Номер_
WHERE [Наименование] = @name AND [Документы о списании].Дата > @date1 AND [Документы о списании].Дата < @date2
Запрос на выборку списка участников комиссии, по дате проведения комиссии:
SELECT [Комиссия].[Номер_документа_с]
FROM [Комиссия]
INNER JOIN [Документы о списании]
ON [Комиссия].[Номер_документа_с]
= [Документы о списании].[Номер_
ON [Комиссия].[Код_сотрудника] = [Сотрудники].[Код_сотрудника]
INNER JOIN [Должности]
ON [Сотрудники].[Код_должности] = [Должности].[Код_должности]
INNER JOIN [Отдел]
ON [Сотрудники].[Код_отдела] = [Отдел].[Код_отдела]
INNER JOIN [Предприятие]
ON [Отдел].[Код_предприятия]
= [Предприятие].[Код_предприятия
WHERE ([Документы о списании].[Дата] = @date)
Запрос на выборку списка основных средств, числящихся в указанном отделе, в указанную дату:
SELECT [Инвентарный_номер], [Наименование], [Типы средств].[Название], [Списание_до], [Стоимость]
FROM [Основные средства]
INNER JOIN [Типы средств]
ON [Основные средства].[Код_типа] = [Типы средств].[Код_типа]
INNER JOIN [Документы о закреплении]
ON [Основные средства].[Номер_
LEFT JOIN [Документы о списании]
ON (([Основные средства].[Номер_документа_с] = [Документы о списании].[Номер_документа_с]) AND ([Документы о списании].[Дата] > @date)) WHERE ([Код_отдела] = @id) AND ([Документы о закреплении].[Дата] < @date)
Разработанная программа относительно нетребовательна к аппаратным ресурсам компьютера. У пользователя должны быть установлен MS .Net Framework версии 3.5 и выше. Также желательно использовать операционную систему Windows XP SP3 и выше.
При запуске программы появляется главное окно, на котором размещены управляющие кнопки. Для большего удобства кнопки разделены по категориям (рисунок 8).
Рисунок 8 – Главная форма
Кнопки в поле «Редактирование базы данных» отвечают за вывод на экран таблицы с возможностью редактирования данных. Для удобства пользования поля, соответствующие аналогичным полям в таблицах, связанных по ключу, редактируются кликом мыши и непосредственным выбором необходимого значения из появившейся формы (рисунок 9)
Рисунок 9 – Редактирование данных
Кнопки в поле «Выборка данных» открывают формы с независимыми таблицами и средствами выбора входных параметров для запроса. Отображение запрошенной информации осуществляется по нажатию кнопки.
Рисунок 10 – Список средств на заданную дату
для заданного отдела
Рисунок 11 – Количество одноимённых средств, списанных
за заданный промежуток времени
Рисунок 12 – Состав комиссии на заданную дату
В ходе работы удалось убедиться в богатых возможностях MS SQL Server 2008 и удобства его использования в разных сферах, в частности для автоматизации документооборота предприятия какой-либо предметной области.
Все цели и задачи, поставленные перед работой, были выполнены практически в полной мере. Разработанная база данных полностью отражает предметную область, а клиентское приложение обладает достаточным минимумом функций по работе с подключенной базой и удобным пользовательским интерфейсом.
Листинг кода программ
//Наиболее сложная форма – Основные средства
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;
namespace SpisanieSredstv
{
public partial class FormOSr : Form
{
public bool select;
public FormOSr()
{
InitializeComponent();
}
private void основные_
{
this.Validate();
this.основные_
this.tableAdapterManager.
}
private void FormOSr_Load(object sender, EventArgs e)
{
// TODO: данная строка
кода позволяет загрузить данные в таблицу
"автоматизация_
this.основные_
}
private void основные_средстваDataGridView_
{
if (e.ColumnIndex == 2)
{
FormOtdel fp = new FormOtdel(true);
fp.Owner = this;
if (fp.ShowDialog() == System.Windows.Forms.DialogRes
{
string[] buf = ((string)this.Tag).Split('+');
основные_средстваDataGridView.
основные_средстваDataGridView.
основные_средстваDataGridView.
}
}
if (e.ColumnIndex == 5)
{
FormTip fp = new FormTip(true);
fp.Owner = this;
if (fp.ShowDialog() == System.Windows.Forms.DialogRes
{
string[] buf = ((string)this.Tag).Split('+');
основные_средстваDataGridView.
основные_средстваDataGridView.
}
}
if (e.ColumnIndex == 7)
{
FormDocZ fp = new FormDocZ(true);
fp.Owner = this;
if (fp.ShowDialog() == System.Windows.Forms.DialogRes
{
string[] buf = ((string)this.Tag).Split('+');
основные_средстваDataGridView.
основные_средстваDataGridView.
}
}
if (e.ColumnIndex == 11)
{
FormDocS fp = new FormDocS(true);
fp.Owner = this;
if (fp.ShowDialog() == System.Windows.Forms.DialogRes
{
string[] buf = ((string)this.Tag).Split('+');
основные_средстваDataGridView.
основные_средстваDataGridView.
}
}
if (e.ColumnIndex == 14)
{
FormPrich fp = new FormPrich(true);
fp.Owner = this;
if (fp.ShowDialog() == System.Windows.Forms.DialogRes
{
string[] buf = ((string)this.Tag).Split('+');
основные_средстваDataGridView.
основные_средстваDataGridView.
}
}
}
}
}
//запрос на выборку средств
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 SpisanieSredstv
{
public partial class FormSpisokZ : Form
{
public string conStr = "Data Source=PC\\SQLEXPRESS;Initial Catalog=\"Автоматизация документооборота по списанию основных средств предприятия\";Integrated Security=True";
public SqlConnection conn;
public List<int> OfficeID;
public List<int> ServiceID;
public FormSpisokZ()
{
InitializeComponent();
dataGridView1.
OfficeID = new List<int>();
ServiceID = new List<int>();
conn = new SqlConnection(conStr);
SqlCommand myCom = conn.CreateCommand();
myCom.CommandText = "SELECT [Код_предприятия], [Название] FROM [Предприятие]";
conn.Open();
var reader = myCom.ExecuteReader();
while (reader.Read())
{
comboBox1.Items.Add(reader.
OfficeID.Add(reader.GetInt32(
}
reader.Close();
conn.Close();
comboBox1.SelectedIndex = 0;
}
private void comboBox1_
{
comboBox2.Items.Clear();
//dataGridView1.Rows.Clear();
comboBox2.Text = null;
ServiceID.Clear();
SqlCommand myCom = conn.CreateCommand();
myCom.CommandText = "SELECT [Код_отдела], [Название] FROM [Отдел] WHERE [Код_предприятия] = @id";
myCom.Parameters.Add("@id", SqlDbType.Int);
myCom.Parameters["@id"].Value = OfficeID[comboBox1.
conn.Open();
var reader = myCom.ExecuteReader();
while (reader.Read())
{
comboBox2.Items.Add(reader.
ServiceID.Add(reader.GetInt32(
}
reader.Close();
conn.Close();
if(ServiceID.Count > 0)
comboBox2.SelectedIndex = 0;
}
private void button1_Click(object sender, EventArgs e)
{
if (ServiceID.Count == 0) return;
SqlCommand myCom = conn.CreateCommand();
myCom.CommandText = "SELECT [Инвентарный_номер],
[Наименование], [Типы средств].[Название],
[Списание_до], [Стоимость] FROM [Основные
средства] INNER JOIN [Типы средств] ON [Основные
средства].[Код_типа] = [Типы средств].[Код_типа]
INNER JOIN [Документы о закреплении] ON [Основные
средства].[Номер_документа_з] = [Документы
о закреплении].[Номер_документа_
myCom.Parameters.Add("@id", SqlDbType.Int);
myCom.Parameters["@id"].Value = ServiceID[comboBox2.
myCom.Parameters.Add("@date", SqlDbType.DateTime);
myCom.Parameters["@date"].
SqlDataAdapter dataAdapter = new SqlDataAdapter(myCom);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
conn.Close();
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
}
}
//Запрос на подсчёт однотипных средств
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 SpisanieSredstv
{
public partial class FormDinamikaZ : Form
{
public string conStr = "Data Source=PC\\SQLEXPRESS;Initial Catalog=\"Автоматизация документооборота по списанию основных средств предприятия\";Integrated Security=True";
public SqlConnection conn;
public FormDinamikaZ()
{
InitializeComponent();
dataGridView1.
dataGridView1.
dateTimePicker2.MinDate = dateTimePicker1.Value;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == null) return;
conn = new SqlConnection(conStr);
SqlCommand myCom = conn.CreateCommand();
myCom.CommandText = "SELECT COUNT (Наименование) AS 'Количество' FROM [Основные средства] INNER JOIN [Документы о списании] ON [Основные средства].Номер_документа_с = [Документы о списании].Номер_документа_с WHERE [Наименование] = @name AND [Документы о списании].Дата > @date1 AND [Документы о списании].Дата < @date2";
Информация о работе Проектирование и создание базы данных предметной области