Проектирование и создание базы данных предметной области

Автор работы: Пользователь скрыл имя, 12 Января 2015 в 22:34, курсовая работа

Описание работы

С ростом количества информации, необходимой для жизнедеятельности человека, возникает острая потребность в автоматизации ее обработки и решения вопроса об организации хранения необходимых данных. За все время существования данной проблемы было предложено множество различных решений. Одним из современных и наиболее востребованным способом является использование баз данных (БД). Современные системы управления базами данных (СУБД) предоставляют обширный перечень возможностей, как разработчикам, так и рядовым пользователя.

Файлы: 1 файл

Отчет__КР.doc

— 620.50 Кб (Скачать файл)

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 [Комиссия].[Номер_документа_с] = [Документы о списании].[Номер_документа_с] INNER JOIN [Сотрудники]

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)

 

 

 

    1. Руководство пользователя

      1. Системные требования

Разработанная программа относительно нетребовательна к аппаратным ресурсам компьютера. У пользователя должны быть установлен MS .Net Framework версии 3.5 и выше. Также желательно использовать операционную систему Windows XP SP3 и выше.

 

      1. Работа с приложением

При запуске программы появляется главное окно, на котором размещены управляющие кнопки. Для большего удобства кнопки разделены по категориям (рисунок 8).

 

 

Рисунок 8 – Главная форма

 

Кнопки в поле «Редактирование базы данных» отвечают за вывод на экран таблицы с возможностью редактирования данных. Для удобства пользования поля, соответствующие аналогичным полям в таблицах, связанных по ключу, редактируются кликом мыши и непосредственным выбором необходимого значения из появившейся формы (рисунок 9)

 

 

Рисунок 9 – Редактирование данных

 

Кнопки в поле «Выборка данных» открывают формы с независимыми таблицами и средствами выбора входных параметров для запроса. Отображение запрошенной информации осуществляется по нажатию кнопки.

 

Рисунок 10 – Список средств на заданную дату

для заданного отдела

 

Рисунок 11 – Количество одноимённых средств, списанных

за заданный промежуток времени

 

 

 

Рисунок 12 – Состав комиссии на заданную дату

 

Заключение

В ходе работы удалось убедиться в богатых возможностях MS SQL Server 2008 и удобства его использования в разных сферах, в частности для автоматизации документооборота предприятия какой-либо предметной области.

Все цели и задачи, поставленные перед работой, были выполнены практически в полной мере. Разработанная база данных полностью отражает предметную область, а клиентское приложение обладает достаточным минимумом функций по работе с подключенной базой и удобным пользовательским интерфейсом.

 

 

Список использованной литературы

  1. Пирогов, В.Ю. MS SQL Server 2005. Программирование клиент-серверных приложений. – СПб.: БХВ-Петербург, 2006. – 336 с.: ил.
  2. Клайн, Кевин. Справочник по SQL. – М.: КУДИЦ-Образ, 2006 – 832с.
  3. Эндрю, Троелсен. Язык программирования C# 2010 и платформа .NET 4.0, 5-е изд.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2011. – 1392с.
  4. Пушников А.Ю. Введение в системы управления базами данных. Часть 1. Реляционная модель данных: Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999. - 108 с. - ISBN 5-7477-0350-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;

 

namespace SpisanieSredstv

{

    public partial class FormOSr : Form

    {

        public bool select;

        public FormOSr()

        {

            InitializeComponent();

 

        }

 

        private void основные_средстваBindingNavigatorSaveItem_Click(object sender, EventArgs e)

        {

            this.Validate();

            this.основные_средстваBindingSource.EndEdit();

            this.tableAdapterManager.UpdateAll(this.автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet);

 

        }

 

        private void FormOSr_Load(object sender, EventArgs e)

        {

            // TODO: данная строка кода позволяет загрузить данные в таблицу "автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet.Основные_средства". При необходимости она может быть перемещена или удалена.

            this.основные_средстваTableAdapter.Fill(this.автоматизация_документооборота_по_списанию_основных_средств_предприятияDataSet.Основные_средства);

 

        }

 

        private void основные_средстваDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)

        {

            if (e.ColumnIndex == 2)

            {

                FormOtdel fp = new FormOtdel(true);

                fp.Owner = this;

                if (fp.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                {

                    string[] buf = ((string)this.Tag).Split('+');

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumn2"].Value = Convert.ToInt32(buf[0]);

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Название"].Value = buf[1];

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Expr1"].Value = buf[2];

                }

            }

            if (e.ColumnIndex == 5)

            {

                FormTip fp = new FormTip(true);

                fp.Owner = this;

                if (fp.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                {

                    string[] buf = ((string)this.Tag).Split('+');

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumn3"].Value = Convert.ToInt32(buf[0]);

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Название_типа"].Value = buf[1];

                }

            }

            if (e.ColumnIndex == 7)

            {

                FormDocZ fp = new FormDocZ(true);

                fp.Owner = this;

                if (fp.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                {

                    string[] buf = ((string)this.Tag).Split('+');

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumn5"].Value = Convert.ToInt32(buf[0]);

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Дата"].Value = buf[1];

                }

            }

            if (e.ColumnIndex == 11)

            {

                FormDocS fp = new FormDocS(true);

                fp.Owner = this;

                if (fp.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                {

                    string[] buf = ((string)this.Tag).Split('+');

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumn8"].Value = Convert.ToInt32(buf[0]);

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Дата_списания"].Value = buf[1];

                }

            }

            if (e.ColumnIndex == 14)

            {

                FormPrich fp = new FormPrich(true);

                fp.Owner = this;

                if (fp.ShowDialog() == System.Windows.Forms.DialogResult.OK)

                {

                    string[] buf = ((string)this.Tag).Split('+');

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["dataGridViewTextBoxColumn9"].Value = Convert.ToInt32(buf[0]);

                    основные_средстваDataGridView.Rows[e.RowIndex].Cells["Формулировка"].Value = buf[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 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.RowHeadersVisible = false;

            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.GetString(1));

                OfficeID.Add(reader.GetInt32(0));

            }

            reader.Close();

            conn.Close();

            comboBox1.SelectedIndex = 0;

        }

 

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

            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.SelectedIndex];

            conn.Open();

            var reader = myCom.ExecuteReader();

            while (reader.Read())

            {

                comboBox2.Items.Add(reader.GetString(1));

                ServiceID.Add(reader.GetInt32(0));

            }

            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 [Основные средства].[Номер_документа_з] = [Документы о закреплении].[Номер_документа_з] LEFT JOIN [Документы о списании] ON (([Основные средства].[Номер_документа_с] = [Документы о списании].[Номер_документа_с]) AND ([Документы о списании].[Дата] > @date)) WHERE ([Код_отдела] = @id) AND ([Документы о закреплении].[Дата] < @date)";

            myCom.Parameters.Add("@id", SqlDbType.Int);

            myCom.Parameters["@id"].Value = ServiceID[comboBox2.SelectedIndex];

            myCom.Parameters.Add("@date", SqlDbType.DateTime);

            myCom.Parameters["@date"].Value = dateTimePicker1.Value.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.RowHeadersVisible = false;

            dataGridView1.ColumnHeadersVisible = false;

            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";

Информация о работе Проектирование и создание базы данных предметной области