Система «Отдел кадров»

Министерство образования и  науки Российской Федерации

Федеральное агентство по образованию

 

 

 

КУРСОВОЙ ПРОЕКТ

 

по дисциплине «Языки программирования»

Система «Отдел кадров»

 

 

 

 

Руководитель  проекта 

.

"_____"__________________2011г.

Исполнитель

студент гр.

"_____"__________________2011г.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оренбург 2011

Оглавление

Введение 3

1. Необходимость проекта 4

1.1. Обоснование необходимости 4

1.2. Видение проекта 4

1.3. Анализ выгод 4

2. Концепция решения 5

2.1. Цели и Задачи 5

2.2. Анализ использования 5

2.3.1. Пользователи 5

2.3.2. Сценарии использования 5

2.4. Требования 6

2.4.1.  Требования  пользователей 6

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

3. Рамки 6

3.1. Функциональность решения 6

3.2. Критерии одобрения  решения 6

4. Стратегии дизайна решения 7

4.1. Стратегия архитектурного дизайна 7

4.2. Стратегия технологического  дизайна 8

5. Разработка программы 9

5.1. Формы 9

5.2. Классы 12

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

6.1. Сотрудник отдела кадров 12

6.2. Начальник поста 13

Заключение 14

Приложение 15

 

 

 

 

 

 

 

 

 

 

Введение

 

В данной курсовой работе необходимо спроектировать информационную систему «Отдел кадров».

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

Актуальность

 

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

 

Разработать систему, упрощающую работу отдела кадров. 

Задачи

 
1. Изучить литературу по языку программирования  С#. 
2. Создать функциональную схему будущей системы.

3. Согласовать проделанную работу с заказчиками. 
4. Написать систему «Отдел кадров». 
5. Протестировать работу системы. 

 

  1. Необходимость проекта

    1. Обоснование необходимости

В нашем городе открывают таможенный пост  «Илецк 1». Сотрудники поста решили заказать у нашей фирмы информационную  систему «Отдел кадров». При заказе был поставлен ряд требований, которые должны быть выполнены.  Информационная система должна быть разделена на две части. Первая часть приложения - для работы сотрудников отдела кадров, вторая - для работы начальника поста. Интерфейс должен быть удобен и прост.

    1. Видение проекта

Благодаря вводу новой  системы значительно упростится работа отдела кадров.

    1. Анализ выгод

Заказчик  получает программный продукт, в котором будут реализованы:

  • Для отдела кадров:
    • Система, отражающая информацию о сотрудниках
    • Возможность редактирования информации о сотруднике

 

  • Для начальника поста:
  • Возможность просмотра информации о сотруднике

 

  • Наша фирма:
  • Опыт в разработке программного продукта

 

 

 

 

 

 

 

 

 

 

  1. Концепция решения

    1. Цели и Задачи

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

    • Сотрудник
    • Родственники
    • Должность
    • Подразделение

Атрибуты  Меню:

    • Ф.И.О сотрудника
    • Должность
    • Подразделение
    • Номер паспорта
    • ИНН
    • Оклад
    • Стаж
    1. Анализ использования

   2.3.1. Пользователи

       В системе будут  2 группы пользователей:

    • Начальник поста
    • Сотрудники отдела кадров

  2.3.2. Сценарии использования

 

Диаграмма использования (прецедентов)

2.4. Требования

  2.4.1.  Требования пользователей

 

С точки зрения сотрудников  отдела кадров:

  • Понятный и удобный интерфейс
  • Просмотр данных об определенном  сотруднике
  • Возможность редактирования информации о сотрудниках

 

С точки зрения начальника поста:

 

  •  Понятный и удобный интерфейс
  • Информация о сотруднике
  • Фотография сотрудника

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

 

  • P4 3000 MHz или аналогичный
  • RAM 256 Mb
  • ОС MS Windows XP и выше
  1. Рамки

    1. Функциональность решения

  • Выбор нужного сотрудника
  • Проверка на уже записанный номер паспорта и ИНН
  • Добавление нового сотрудника
  • Удаление сотрудника
  • Редактирование информации о сотруднике

3.2. Критерии одобрения решения

Наличие 85% функций, описанных в пункте 3.1.

 

 

 

  1. Стратегии дизайна решения

    1. Стратегия архитектурного дизайна

     

 

 

 

      Диаграмма классов

4.2. Стратегия технологического  дизайна

  • Объектно-ориентированный дизайн и проектирование.
  • С# для визуализации и обработки данных
    • Поддерживает объектно-ориентированные технологии
    • Упрошенное создание визуального представления
  • VS2008
    • Наиболее удобное средство для разработки кода на C#

 

 

 

 

 

 

 

 

  1. Разработка программы

Приложение  разрабатывалось в среде Microsoft Visual Studio 2010 на  языке программирования С#.

    1. Формы

Приложение  состоит из 7 форм.

    1. Главная

Главная форма программы, содержит таблицу которая служит для просмотра данных об интересующем вас сотруднике, также справа от таблицы расположено поле на котором размещается фотография просматриваемого сотрудника. Еще на форме расположено меню редактирования информации данной таблицы.

  1. Должность

      

Форма, служит для ввода новых и удаления старых должностей.

 

 

 

 

  1. Редактировать сотрудника

Форма, используется для редактирования старой, и ввода новой информации о сотруднике.

  1. Подразделение

 

Данная форма используется для ввода и удаления названия подразделений и количества штата в каждом из них.

 

 

 

 

  1. Родственники

Форма, в которой содержится информация о родственниках интересующего сотрудника.

  1. Сотрудник

 

Форма служащая для удаления сотрудника из базы.

 

  1. Справка

Форма для вывода справочного  материала по программе.

    1. Классы

 

  1.  Sotrudnic – имеет свойства для отображения сотрудника
  2. Podraz - имеет свойства для отображения подразделения
  3. Dolgnost - имеет свойства для отображения должности
  4. Rodstv – имеет свойства для отображения родствеников
  1. Руководство пользователя

    1. Сотрудник отдела кадров

    Для просмотра  информации о сотруднике достаточно  просто запустить программу, если нужно просмотреть родственников нажмите два раза на строке интересующего вас сотрудника. Для просмотра фотографии нужно просто нажать левой кнопкой мышки на строку сотрудника.

Для редактирования информации нажните на кнопке «редактировать».

Для того что бы получить доступ к редактированию информации нужно ввести определенный код, после  того как доступ получен следует повторно нажать на кнопку «редактировать», у вас появится меню в котором нужно нажать на интересующий вас пункт.

При выборе пункта «сотрудник»  появится еще два пункта «редактировать»  и «удалить».

При выборе пункта «редактировать»  появится окно «редактировать сотрудника»  в данном окне нужно заполнить  все обязательные поля, после заполнения нажмите кнопку добавить.

При выборе пункта «удалить»  появится окно «сотрудник», для удаления выделите строку таблицы и нажмите  кнопку удалить.

Если требуется изменить название подразделений и количества штата, выберите пункт подразделение, появиться окно «подразделение» в котором будет таблица. Для ввода данных нужно выделить нужную вам ячейку таблицы и заполнить ее. Для удаления данных выделите ячейку и нажмите кнопку DEL.

Если требуется изменить название должности, выберите пункт «должность». Появиться окно «должность», для удаления выделите нужную строку и нажмите кнопку удалить, для добавления заполните пустую строку, которая находиться внизу таблицы.

    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 Курсовая1

{

    public partial class Form1 : Form

    {

        public bool Fufel = false;

        public Form1()

        {

            InitializeComponent();

            if (Program.OO.Z.S.Count!=0)

            bindingSource1.DataSource = Program.OO.Z.S;

        }

 

        public void Fff()

        {

            dataGridView1.DataSource = null;

            if(Program.OO.Z.S.Count!=0)

            dataGridView1.DataSource = bindingSource1;

        }

 

        private void toolStripMenuItem2_Click(object sender, EventArgs e)

        {

 

        }

 

        private void сотрудникToolStripMenuItem_Click(object sender, EventArgs e)

        {

 

        }

 

        private void должностьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form2 f = new Form2();

            f.Show();

        }

 

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            Program.OO.Clo();

        }

 

        private void подразделениеToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form4 h = new Form4();

            h.Show();

        }

 

        private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

        {

 

        }

 

        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            Sotrudnic R = (Sotrudnic)bindingSource1.Current;

            Form5 F = new Form5(R.rodstv);

            F.ShowDialog();

        }

 

        private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (!Fufel)

            {

                label1.Visible = true;

                textBox1.Visible = true;

            }

            else

            {

                label1.Visible = false;

                textBox1.Visible = false;

            }

        }

 

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

        {

            int a = Convert.ToInt32(e.KeyChar);

            if (a == 13)

            {

                if (textBox1.Text == "13579")

                {

                    Fufel = true;

                    должностьToolStripMenuItem.Visible = подразделениеToolStripMenuItem.Visible = сотрудникToolStripMenuItem.Visible = true;

                    label1.Visible = false;

                    textBox1.Visible = false;

                }

            }

        }

 

        private void добавитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Program.g = new Form3();

            Program.g.Show();

        }

 

        private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form6 Fg = new Form6();

            Fg.ShowDialog();

        }

 

        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)

        {

            if ((dataGridView1.Rows[e.RowIndex].DataBoundItem != null) &&

                     (dataGridView1.Columns[e.ColumnIndex].DataPropertyName.Contains(".")))

            {

                e.Value = Program.OO.BindProperty(

                dataGridView1.Rows[e.RowIndex].DataBoundItem,

                dataGridView1.Columns[e.ColumnIndex].DataPropertyName

                );

            }

        }

 

        private void bindingSource1_CurrentChanged(object sender, EventArgs e)

        {

            Sotrudnic S = (Sotrudnic)bindingSource1.Current;

            panel1.BackgroundImage = Image.FromFile(S.Fot);

        }

 

        private void справкаToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Form7 F = new Form7();

            F.ShowDialog();

        }

 

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

 

        }

 

        private void panel1_Paint(object sender, PaintEventArgs e)

        {

 

        }

    }

}

 

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

            if (Program.OO.Z.D == null) Program.OO.Z.D = new List<Dolgnost>();

            bindingSource2.DataSource = Program.OO.Z.D;

            dataGridView2.DataSource = bindingSource2;

            dataGridView2.Visible = true;

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            Dolgnost g = (Dolgnost)bindingSource2.Current;

            for (int i = 0; i < Program.OO.Z.D.Count; i++)

            {

                if (Program.OO.Z.D[i].name == g.name)

                {

                    Program.OO.Z.D.RemoveAt(i);

                    break;

                }

            }

            dataGridView2.DataSource = null;

            dataGridView2.DataSource = bindingSource2;

        }

 

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

 

        }

    }

 

{

    public partial class Form3 : Form

    {

        public Sotrudnic S = new Sotrudnic();

        public Form3()

        {

            InitializeComponent();

            bindingSource1.DataSource = Program.OO.Z.D;

            bindingSource2.DataSource = S.rodstv;

        }

 

        public void t_Tick()

        {

            if (S.Podraz != null)

            {

                 richTextBox1.Text=S.Podraz.name;

            }

        }

 

        private void label2_Click(object sender, EventArgs e)

        {

 

        }

 

        private void Form3_Load(object sender, EventArgs e)

        {

 

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            Form4 h = new Form4(0);

            h.Show();

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            try

            {

                bool f = false;

                for (int i = 0; i < Program.OO.Z.S.Count; i++)

                {

                    if (Convert.ToInt32(textBox5.Text) == Program.OO.Z.S[i].INN || Program.OO.Z.S[i].Num_P == Convert.ToInt32(textBox4.Text))

                        f = true;

                }

                if (!f)

                {

                    S.familiya = textBox1.Text;

                    S.imya = textBox2.Text;

                    S.Obraz = comboBox2.Text;

                    S.Oklad = Convert.ToInt32(textBox7.Text);

                    S.Staj = Convert.ToInt32(textBox6.Text);

                    S.otchestvo = textBox3.Text;

                    Dolgnost j = new Dolgnost();

                    j.name = comboBox1.Text;

                    S.dolgnost = j;

                    S.INN = Convert.ToInt32(textBox5.Text);

                    S.Num_P = Convert.ToInt32(textBox4.Text);

                    Program.OO.Z.S.Add(S);

                    Program.GG.Fff();

                    this.Close();

                }

                else

                {

                    MessageBox.Show("Данный номер уже существует!");

                }

            }

            catch

            {

                MessageBox.Show("Ошибка! Заполните обязательные поля.");

            }

        }

 

        private void button3_Click(object sender, EventArgs e)

        {

            openFileDialog1.FileName = "";

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                richTextBox2.Text = openFileDialog1.FileName;

                S.Fot = openFileDialog1.FileName;

            }

        }

    }

public partial class Form4 : Form

    {

        public Form4()

        {

            InitializeComponent();

            if (Program.OO.Z.P == null) Program.OO.Z.P = new List<podraz>();

            bindingSource2.DataSource = Program.OO.Z.P;

            dataGridView2.DataSource = bindingSource2;

            dataGridView2.Visible = true;

            dataGridView1.Visible = false;

        }

        public Form4(int a)

        {

            InitializeComponent();

            if (Program.OO.Z.P == null) Program.OO.Z.P = new List<podraz>();

            bindingSource2.DataSource = Program.OO.Z.P;

            dataGridView2.DataSource = bindingSource2;

            dataGridView2.Visible = false;

            dataGridView1.Visible = true;

        }

 

        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            Program.g.S.Podraz = (podraz) bindingSource2.Current;

            Program.g.t_Tick();

            this.Close();

        }

 

        private void Form4_Load(object sender, EventArgs e)

        {

 

        }

 

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

 

        }

    }

public partial class Form5 : Form

    {

        public Form5(List<Rodstv> L)

        {

            InitializeComponent();

            bindingSource2.DataSource = L;

        }

 

        private void Form5_Load(object sender, EventArgs e)

        {

 

        }

    }

public partial class Form6 : Form

    {

        public Form6()

        {

            InitializeComponent();

            bindingSource1.DataSource = Program.OO.Z.S;

        }

 

        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            Sotrudnic F = (Sotrudnic)bindingSource1.Current;

            for (int i = 0; i < Program.OO.Z.S.Count; i++)

            {

                if (F.familiya == Program.OO.Z.S[i].familiya && F.imya == Program.OO.Z.S[i].imya && F.otchestvo == Program.OO.Z.S[i].otchestvo)

                {

                    Program.OO.Z.S.RemoveAt(i);

                    break;

                }

            }

            dataGridView1.DataSource = null;

            dataGridView1.DataSource = bindingSource1;

            Program.GG.Fff();

        }

 

        private void Form6_FormClosing(object sender, FormClosingEventArgs e)

        {

            Program.GG.Fff();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            Sotrudnic F = (Sotrudnic)bindingSource1.Current;

            for (int i = 0; i < Program.OO.Z.S.Count; i++)

            {

                if (F.familiya == Program.OO.Z.S[i].familiya && F.imya == Program.OO.Z.S[i].imya && F.otchestvo == Program.OO.Z.S[i].otchestvo)

                {

                    Program.OO.Z.S.RemoveAt(i);

                    break;

                }

            }

            dataGridView1.DataSource = null;

            dataGridView1.DataSource = bindingSource1;

        }

 

        private void Form6_Load(object sender, EventArgs e)

        {

        }

  

public partial class Form7 : Form

    {

        public Form7()

        {

            InitializeComponent();

            StreamReader r = new StreamReader("2.txt");

            richTextBox1.Text = r.ReadToEnd();

            r.Close();

        }

 

        private void richTextBox1_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void Form7_Load(object sender, EventArgs e)

        {

        }

}