На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Менеджмент рабочего времени (C#, WPF, MS SQL Server, SQlite)

Задание

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

Функционал программы

  • Учет работ
  • Учет сотрудников
  • Учет рабочего времени и расчет зарплаты
  • добавление / изменение / удаление данных

Использованные технологии

  • язык C#
  • WPF + WINFORMS
  • SQL SERVER и SQLITE
  • среда разработки Visual Studio 2019 / 2022

Содержание отчета к программе

  • Оглавление
  • Введение. 4
  • 1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ.. 7
  • 1.1 Информационное обеспечение задачи. 7
  • 1.2. Обзор и анализ существующих программных решений. 8
  • 1.3 Техническое задание на разработку приложения «Менеджмент рабочего времени»  9
  • 2 АНАЛИЗ СРЕД И ЯЗЫКОВ КАК ИНСТРУМЕНТОВ РЕАЛИЗАЦИИ.. 11
  • 2.1 Язык высокого уровня C#. 11
  • 2.2  Windows Forms или Windows Presentation Foundation. 12
  • 2.3. Выбор состава технических и программных средств. 15
  • 3 РАЗРАБОТКА ПРИЛОЖЕНИЯ МЕНЕДЖМЕНТ РАБОЧЕГО ВРЕМЕНИ НА ЯЗЫКЕ C#. 21
  • 3.1 Постановка задачи. 21
  • 3.2 Физическая структура базы данных. 22
  • 3.3 Физическая структура программы.. 27
  • 3.4 Разработка пользовательского интерфейса. 32
  • 3.5  Инструкция пользователя. 40
  • ЗАКЛЮЧЕНИЕ. 44
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 46
  • ПРИЛОЖЕНИЯ. 48

 

Фрагмент программного кода

using System;
using MaterialSkin;
using MaterialSkin.Controls;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;

namespace WMS.UI
{
    public partial class StatementForm : MaterialForm
    {
        // Основные Sql параметры
        SqlConnection SqlConnection;
        public StatementForm()
        {
            InitializeComponent();

            var materialSkinManager = MaterialSkinManager.Instance;
            materialSkinManager.AddFormToManage(this);
            materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
            materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE);
        }

        private async void StatementForm_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "accountingWorkDBDataSet.Employees". При необходимости она может быть перемещена или удалена.
            this.employeesTableAdapter.Fill(this.accountingWorkDBDataSet.Employees);

            SqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Accounting"].ConnectionString); // строка подключения
            await SqlConnection.OpenAsync(); // открыли подключение к БД
            SqlDataReader sqlReader = null;
            SqlCommand command = new SqlCommand("SELECT * FROM [Statement] ", SqlConnection);
            try
            {
                sqlReader = await command.ExecuteReaderAsync();
                while (await sqlReader.ReadAsync())
                {
                    listBox1.Items.Add(Convert.ToString(sqlReader["StatementId"]) + "   " + Convert.ToString(sqlReader["Date"]) +
                        "  " + Convert.ToString(sqlReader["EmployeeName"]) + "   " + Convert.ToString(sqlReader["NumberHours"]) + "   " + Convert.ToString(sqlReader["HourlyRate"]) +
                      "   " + Convert.ToString(sqlReader["Salary"]));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                sqlReader?.Close(); // закрыли подключение к БД
            }

        }

        private async void ADDguna2Button1_Click(object sender, EventArgs e)
        {
            if (label7.Visible)
                label7.Visible = false;
            if (!string.IsNullOrEmpty(DatedateTimePicker1.Text) && !string.IsNullOrWhiteSpace(DatedateTimePicker1.Text) &&
                !string.IsNullOrEmpty(EmployeeCb.Text) && !string.IsNullOrWhiteSpace(EmployeeCb.Text) &&
               !string.IsNullOrEmpty(HoursTb.Text) && !string.IsNullOrWhiteSpace(HoursTb.Text) &&
               !string.IsNullOrEmpty(RateTb.Text) && !string.IsNullOrWhiteSpace(RateTb.Text) &&
               !string.IsNullOrEmpty(SalaryTb.Text) && !string.IsNullOrWhiteSpace(SalaryTb.Text))
            {
                SqlCommand command = new SqlCommand("INSERT INTO [Statement] (Date, EmployeeName, " +
                    "NumberHours, HourlyRate, Salary) " +
                    "VALUES(@Date, @EmployeeName, @NumberHours, @HourlyRate, @Salary)", SqlConnection);
                command.Parameters.AddWithValue("Date", DatedateTimePicker1.Text);
                command.Parameters.AddWithValue("EmployeeName", EmployeeCb.Text);
                command.Parameters.AddWithValue("NumberHours", HoursTb.Text);
                command.Parameters.AddWithValue("HourlyRate", RateTb.Text);
                command.Parameters.AddWithValue("Salary", SalaryTb.Text);

                await command.ExecuteNonQueryAsync();
            }
            else
            {
                label7.Visible = true;
                label7.Text = "Все поля должны быть заполнены!";
            }
        }

        private void CALCguna2Button2_Click(object sender, EventArgs e)
        {
            double hours;
            double rate;

            hours = Convert.ToDouble(HoursTb.Text);
            rate = Convert.ToDouble(RateTb.Text);

            switch (comboBox3.Text)
            {
                case "*":

                    SalaryTb.Text = Convert.ToString(hours * rate);
                    break;
            }
        }

        private async void UpdatetoolStripButton1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            SqlDataReader sqlReader = null;
            SqlCommand command = new SqlCommand("SELECT * FROM [Statement] ", SqlConnection);
            try
            {
                sqlReader = await command.ExecuteReaderAsync();
                while (await sqlReader.ReadAsync())
                {
                    listBox1.Items.Add(Convert.ToString(sqlReader["StatementId"]) + "   " + Convert.ToString(sqlReader["Date"]) +
                        "  " + Convert.ToString(sqlReader["EmployeeName"]) + "   " + Convert.ToString(sqlReader["NumberHours"]) + "   " + Convert.ToString(sqlReader["HourlyRate"]) +
                      "   " + Convert.ToString(sqlReader["Salary"]));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                sqlReader?.Close(); // закрыли подключение к БД
            }
        }

        private void WorkstoolStripButton1_Click(object sender, EventArgs e)
        {
            WorksWindow works = new WorksWindow();
            works.Show();

        }

        private async void EDITguna2Button2_Click(object sender, EventArgs e)
        {
            if (label12.Visible)
            {
                label12.Visible = false;
            }

            if (!string.IsNullOrEmpty(IdTb.Text) && !string.IsNullOrWhiteSpace(IdTb.Text) &&
                !string.IsNullOrEmpty(DatedateTimePicker.Text) && !string.IsNullOrWhiteSpace(DatedateTimePicker.Text) &&
               !string.IsNullOrEmpty(EmployeecomboBox.Text) && !string.IsNullOrWhiteSpace(EmployeecomboBox.Text) &&
               !string.IsNullOrEmpty(NumberHoursTb.Text) && !string.IsNullOrWhiteSpace(NumberHoursTb.Text) &&
               !string.IsNullOrEmpty(HourlyRateTb.Text) && !string.IsNullOrWhiteSpace(HourlyRateTb.Text) &&
               !string.IsNullOrEmpty(SalaryTextBox.Text) && !string.IsNullOrWhiteSpace(SalaryTextBox.Text))
            {
                SqlCommand command = new SqlCommand("UPDATE [Statement] SET [Date]=@Date, " +
                    "[EmployeeName]=@EmployeeName, [NumberHours]=@NumberHours, [HourlyRate]=@HourlyRate, [Salary]=@Salary " +
                    "WHERE [StatementId]=@Id", SqlConnection);
                command.Parameters.AddWithValue("Id", IdTb.Text);
                command.Parameters.AddWithValue("Date", DatedateTimePicker.Text);
                command.Parameters.AddWithValue("EmployeeName", EmployeecomboBox.Text);
                command.Parameters.AddWithValue("NumberHours", NumberHoursTb.Text);
                command.Parameters.AddWithValue("HourlyRate", HourlyRateTb.Text);
                command.Parameters.AddWithValue("Salary", SalaryTextBox.Text);

                await command.ExecuteNonQueryAsync();
            }
            else if (!string.IsNullOrEmpty(IdTb.Text) && !string.IsNullOrWhiteSpace(IdTb.Text))
            {
                label12.Visible = true;
                label12.Text = "Все поля должны быть заполнены!";
            }
            else
            {
                label12.Visible = true;
                label12.Text = "Id должен быть заполнен!";
            }
        }

        private void CALCULATIONguna2Button1_Click(object sender, EventArgs e)
        {
            double hours;
            double rate;

            hours = Convert.ToDouble(NumberHoursTb.Text);
            rate = Convert.ToDouble(HourlyRateTb.Text);

            switch (comboBox1.Text)
            {
                case "*":

                    SalaryTextBox.Text = Convert.ToString(hours * rate);
                    break;
            }
        }

        private void BacktoolStripButton1_Click(object sender, EventArgs e)
        {
            UserPageWindow userPage = new UserPageWindow();
            userPage.Show();
            Hide();
        }

        private void ExittoolStripButton1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private async void DeleteBtn_Click(object sender, EventArgs e)
        {
            if (label14.Visible)
                label14.Visible = false;
            if (!string.IsNullOrEmpty(IDTextBox.Text) && !string.IsNullOrWhiteSpace(IDTextBox.Text))
            {
                SqlCommand command = new SqlCommand("DELETE FROM [Statement] WHERE [StatementId]=@Id", SqlConnection); // sql комманда удаление
                command.Parameters.AddWithValue("Id", IDTextBox.Text);

                await command.ExecuteNonQueryAsync();
            }
            else
            {
                label14.Visible = true;
                label14.Text = "Id должен быть заполнен!";
            }
        }
    }
}

Структура проекта

Скриншот архива с проектом

Пояснения по запуску программы

Запустить среду разработки Visual Studio 2019 или же 2022, предварительно скачав ее с оффициального сайта - https://visualstudio.microsoft.com/ru/vs/community/, при установке среды выбирете рабочие нагрузки - Разработка классических приложений на C#. После установки среды разработки запустите проект, смените путь к базе данных на ваш, прописав его в файле App.config, база данных автоматически отобразится в обозревателе серверов и в программе SQL SERVER MANAGEMENT STUDIO, которую вам необходимо будет скачать и установить с оффициального сайта -  https://learn.microsoft.com/ru-ru/sql/ssms/download-sql-server-management-studio-ssms?view=azure-sqldw-latest,  важно! необходимо выбрать русский язык для инсталлятора. 

Купить 7000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

Здесь еще никто не оставлял свои комментарии, будь первым!

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

7000,00 

Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Система управления работами.rar
97.5 MB
Оцени работу

0

рейтинг

Менеджмент рабочего времени (C#, WPF, MS SQL Server, SQlite)
В Курсовой работе рассмотрен процесс разработки приложения по учету рабочего времени и расчета зарплаты.
Категория: Образование
Стоимость: 7000,00