Касса

Автор работы: Пользователь скрыл имя, 18 Февраля 2013 в 15:48, курсовая работа

Описание

Целью данного курсового проекта является написание программы «Касса», в которой требуется реализовать выдачу зарплаты работникам, имея количество купюр каждого достоинства и ведомость выдачи зарплаты.
Для реализации поставленной цели необходимо решить следующие задачи:
Изучить особенности программирования на языке Java;

Содержание

Содержание:
Введение…………………………………………………………................ 3
1. О Java…………………………………………………………...………….. 4
1.1. Типы данных…………………………………………………………...4
1.2. Условные операторы…………………………………………………..5
1.3. Циклы…………………………………………………………………..7
1.4. Принципы объектно-ориентированного программирования……….7
2. Постановка задачи………………………………………………………….9
3. Алгоритм решения………………………………………………………..10
Заключение………………………………………………………………..11
Список литературы……………………………………………………….12
Приложение 1. Текст программы………………………………………..13
Приложение 2. Тестовый пример……………………………………

Работа состоит из  1 файл

курсовой проект Громова.docx

— 56.33 Кб (Скачать документ)

        System.out.print("\n Nominal | Kol-vo ");

        float KaccaSumm=0;

        for (int j=0; j<n; j++) {

            System.out.printf("\n %7.2f | %6d", K[j], L[j]);

            KaccaSumm+= K[j] * L[j];

        }

//Выводит сумму денег в кассе

        System.out.printf("\nDeneg v KACCE: %.2f", KaccaSumm);       

// Запрос на количество работников

// Ограничение на количество работников от 1до 200, верхне значение можно изменить

// Если количество работников выйдет за пределы от 1 до 200, то программа завершится

        System.out.print("\n\nVvedite kolichestvo rabotnikov [1,"+MaxM+"]: ");

        m = in.nextInt();

        if ((m < 1)||(m>MaxM)) {

            System.out.print("\nNevernoe kolichestvo rabotnikov");

            return;

        }

//Создаем пустой массив-ведомость для указанного (m) количества работников

        S = new float [m];       

// Запрос и вывод происходит в цикле

        for (int i=0; i<m; i++) {

            System.out.print("Nomer rabotnika: " + (i+1) + '\n');

            System.out.print("Zarplata rabotnika: ");

            S[i] = in.nextInt();

        }

//Выводит таблицу с номерами работников и их зарплатой

        System.out.print("\n Rabotnik | Zarplata ");

        float ZarplataSumm=0;

        for (int i=0; i<m; i++) {

            System.out.printf("\n %8d | %8.2f", (i+1), S[i]);

            ZarplataSumm+= S[i];

        }

// Выводим сумму зарплаты по всем работникам

        System.out.printf("\nSumma zarplaty: %.2f", ZarplataSumm);

// Проверка, что денег в кассе хватит на зарплату всех работников. Если не хватит, то программ завершится

        if (ZarplataSumm > KaccaSumm) {

            System.out.print("\nDeneg v kacce ne hvataet\n");

            return;

        }       

//Главная часть программы

        System.out.print("\n\n  Si ");// perevod kursora na 2 stroki i vyvod "Si"

// В цикле выводим таблицу по столбцам

        for (int j=0; j<n; j++) {

            String s = 'K'+Integer.toString(j+1);

            System.out.printf(" %4s ", s);// Выводим номиналы денег в строке по столбцам

        }

        System.out.print("      Zi");// Последний столбец – сумма денег, которую получит работник при наличии в кассе денег определенного достоинства

        for (int i=0; i<m; i++) { // по строкам

            String s = 'S'+Integer.toString(i+1);

            System.out.printf("\n%4s ", s); //выводим номера работников

            float Zi=0; // сумма, которую выдадут из кассы работнику с номером [i]. Она может не совпадать с реальной зарплатой работника если размена купюр нет

            float Si = S[i]; // Si – это реальная зарплата работника

//В цикле считаем количество купюр каждого номинала  

            for (int j=0; j<n; j++) {

//Считаем от самого крупного номинала K1,

                if (L[j] != 0) { // проверка, есть ли в кассе купюры номинала K[j], если нет, то переходим в строку программы (*)

                    int Qij = (int) (Si/K[j]); //находим количество купюр номинала K[j], которое нужно для выдачи зарплаты работника с номером [i]

                    if (Qij != 0) { //Проверка, то количество купюр номинала K[j] не 0, а если 0, то переходим в строку программы (**)

                        if (Qij < L[j]) { //Проверяем, что в кассе есть необходимое количество [Qij] купюр номинала K[j]. Если нет, то переходим в строку программы (***)

                            Si -= K[j] * Qij; //Находим остаток от зарплаты после того, как определили количество купюр [Qij] номинала K[j]

                            L[j] -= Qij; //Находим остаток купюр в кассе после того, как работнику с номером [i] выдали необходимое число купюр[Qij] номинала K[j]

                        }

                        else { //(***) – строка для перехода

                            Qij = L[j]; //присваиваем количество всех купюр номинала K[j] в кассе (L[j]) переменной [Qij]. То есть все купюры номинала K[j] отдаем работнику с номером [i]

                            Si -= K[j] * L[j]; //Находим остаток от зарплаты после того,как определили количество купюр [Qij] номинала K[j]

                            L[j] = 0; //Сделаем количество купюр номинала K[j] в кассе 0

                        }

                        Zi += K[j] * Qij; //Увеличиваем выдаваемую сумму зарплаты [Zi] на величину произведения номинала K[j] купюр на и количество, выданное работнику с номером [i]

                    }

                    System.out.printf(" %4d ",Qij); //(**) выводим на печать [Qij]

                }

                else {

                    System.out.printf(" %4d ",0); //(*) выводим на печать 0

                }

            }

            System.out.printf(" %7.2f",Zi); //Выводим на печать сумму денег, которую можем выдать из кассы работнику с номером [i]

//эта сумма может не совпадать с реальной зарплатой

//Если сумма не совпадает с реальной зарплатой, то зарплату без сдачи выдать не можем

            if (Zi < S[i]) {

                System.out.print(" Net razmena v kasse");

            }

        }

        System.out.println();

    }

}

 
 
 
 

 

Приложение 2. Тестовый пример.

Для примера возьмем некую  валютную систему с пятью номиналами купюр и монет: 50 единиц, 10 единиц, 5 единиц, 2 единицы и 1 единицу. Предположим, мы имеем 30 купюр по 50 единиц, 27 купюр  по 10 единиц, 15 монет по 5 единиц, 12 монет  по 2 единицы и 20 монет по 1 единице. Тогда сумма денег в кассе  равна 1889 единиц. Пусть количество работников в ведомости равно 3, а зарплата каждого равна 128, 583 и 321 единицы соответственно. Сумма зарплат равна 1032 единиц. Тогда для того, чтобы выплатить зарплату первому работнику, нужны 2 купюры по 50 единиц, 2 купюры по 10 единиц, 1 монета по 5 единиц, 1 монета по 2 единицы, 1 монета по 1 единице; чтобы выдать зарплату второму работнику, нужны 11 купюр по 50 рублей, 3 по 10, 1 по 2 и 1 по 1; чтобы выдать зарплату третьему работнику, нужно 6 купюр по 50 рублей, 2 по 10 и 1 по 1.

Выдача зарплаты реализована.

 


Информация о работе Касса