Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Исходный код программы на Java




Задание 1

Условие задания

Разработать приложение, предназначенное для автоматизации предметной области в соответствии с вариантом задания. Для этого необходимо создать два класса: Класс 1 и Класс 2. Класс 1 предназначен для описания любой из записей ведомости. Поля данного класса должны соответствовать полям ведомости, которые предназначены для хранения исходных данных.

Получение текущих значений полей, расчеты по формулам должно выполняться с помощью соответствующих нестатических методов этого класса. Для установки значений полей должен использоваться конструктор с параметрами. Класс 2 должен содержать метод main() – точку входа в программу, необходимое количество методов для подсчета итоговых данных ведомости, метод для вывода всех данных ведомости на консоль. В методе main() должен быть определен массив объектов типа Класс 1 для хранения соответствующих объектов.

Приложение должно обеспечивать:

1. Возможность использования текстового меню для выбора вариантов действий пользователя (уровни 3, 4).

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

3. Создание объектов Класса 1, количество которых соответствует количеству записей ведомости.

4. Добавление объектов Класса 1 в массив.

5. Вычисление итоговых данных.

6. Вывод на консоль исходных и расчетных данных каждой записи ведомости, а также итоговой информации ведомости в виде:

• необходимого количества колонок с заголовками (уровни 1, 2);

• настоящей таблицы с горизонтальными и вертикальными линиями сетки (числовые значения должны выводиться с определенной количеством знаков после запятой с использованием средств форматного вывода) - уровни 3, 4.

7. Предотвращение появления ошибок при выполнении программы (уровни 2, 3, 4).

8. Возможность редактирования любого поля любой из введенных записей ведомости (уровень 4).

Вариант №10


Описание архитектуры программы

Program – главный класс


Исходный код программы на C#

Класс Program

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

class Program

{

static int Main(string[] args)

{

string vvod;

List<Stanok> stan = new List<Stanok>();

 

do

{

Console.WriteLine("\nВЕДОМОСТЬ УЧЕТА ВРЕМЕНИ РАБОТЫ СТАНКОВ ПРЕДПРИЯТИЯ\n");

Console.WriteLine("Выберите желаемое действие:\n");

Console.WriteLine("1 - вывести ведомость на экран\n");

Console.WriteLine("2 - добавить запись\n");

Console.WriteLine("3 - изменить запись\n");

Console.WriteLine("0 - выход из программы\n");

 

vvod=Console.ReadLine();

switch (vvod)

{

case "1":

{

if (stan.Count == 0)

{

Console.WriteLine("Ведомость пуста. Добавьте первую запись.");

Console.ReadKey();

Console.Clear();

break;

}

 

else

{

Console.Clear();

print_tabl(stan);

}

break;

}

 

case "2":

{

Console.Clear();

add_note(stan);

Console.ReadKey();

Console.Clear();

break;

}

 

case "3":

{

if (stan.Count == 0)

{

Console.WriteLine("Ведомость пуста. Изменять нечего.");

Console.ReadKey();

Console.Clear();

break;

}

 

else

{

Console.Clear();

change_note(stan);

}

break;

}

case "0":

{

return 0;

}

default:

{

Console.Write("Неправильно выбран пункт меню! Пожалуйста, попробуйте ещё раз! \n");

Console.ReadKey();

Console.Clear();

break;

}

}

}

while (vvod!= "0");

 

return 0;

}

 

static int add_note(List<Stanok> stan)

{

int n;

string type, s;

double time_plan, time_fact;

Console.WriteLine("Сколько записей вы хотите добавить?");

s = Console.ReadLine();

if (!int.TryParse(s, out n))

{

Console.WriteLine("Ошибка ввода!! Пожалуйста, попробуйте ещё раз!");

 

return 0;

}

for (int i = 0; i < n; i++)

{

Stanok[] stan_1 = new Stanok[1];

Console.WriteLine("\nТип станка (не более 15 символов): ");

type = Console.ReadLine();

Console.WriteLine("Время по плану: ");

s = Console.ReadLine();

if (!double.TryParse(s, out time_plan))

{

Console.WriteLine("Неправельно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

 

Console.WriteLine("Время фактически: ");

s = Console.ReadLine();

if (!double.TryParse(s, out time_fact))

{

Console.WriteLine("Неправельно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

 

stan_1[0] = new Stanok(type, time_plan, time_fact);

stan.Add(stan_1[0]);

Console.WriteLine("Запись добавлена.");

}

return 0;

}

 

static int change_note(List<Stanok> stan)

{

string s, s1, s2;

double p, f;

int nom=-1, a=-1;

 

Console.WriteLine("Введите тип того станка, информацию о котором хотите изменить:");

s = Console.ReadLine();

for (int i = 0; i < stan.Count; i++)

{

if (s == stan[i].GetTypeStan())

{

nom = i;

break;

}

}

 

if (nom < 0)

{

Console.WriteLine("Нет такой записи!");

Console.ReadKey();

Console.Clear();

return 0;

}

 

else

{

 

shapka();

Console.Write("|{0,15:0} ", stan[nom].GetTypeStan());

Console.Write("|{0,13:f3} ", stan[nom].GetTimeWork_plan());

Console.Write("|{0,13:f3} ", stan[nom].GetTimeWork_fact());

Console.Write("|{0,14:f3} ", stan[nom].CalculateTime_Hours());

Console.Write("|{0,14:f3} |", stan[nom].CalculateTime_Proc());

niz();

 

while (a!= 0)

{

Console.WriteLine("\n\nКакое поле ведомости вы хотите изменить?");

Console.WriteLine("1 - тип станка");

Console.WriteLine("2 - время работы по плану");

Console.WriteLine("3 - время работы фактически");

Console.WriteLine("0 - выход ");

 

s1 = Console.ReadLine();

 

 

switch (s1)

{

case "1":

{

Console.WriteLine("Новый тип станка(не более 15 символов): ");

stan[nom].new_type(Console.ReadLine());

break;

}

 

case "2":

{

Console.WriteLine("Новое время работы по плану: ");

s2 = Console.ReadLine();

if (!double.TryParse(s2, out p))

{

Console.WriteLine("Неправильно введены данные! Пожалуйста, попробуйте ещё раз!");

break;

}

stan[nom].new_time_plan(p);

 

break;

}

case "3":

{

Console.WriteLine("Новое время работы фактически: ");

s2 = Console.ReadLine();

if (!double.TryParse(s2, out f))

{

Console.WriteLine("Неправильно введены данные! Пожалуйста, попробуйте ещё раз!");

break;

}

stan[nom].new_time_fact(f);

break;

}

case "0":

{

a = 0;

Console.Clear();

return 0;

}

default:

{

Console.Write("Неправильно выбран пункт меню! Пожалуйста, попробуйте ещё раз! \n");

break;

}

}

}

}

 

return 0;

}

 

static void print_tabl(List<Stanok> stan)

{

double Q1=0, Q2=0;

shapka();

 

for (int i = 0; i < stan.Count; i++)

{

Console.Write("|{0,15:0} ", stan[i].GetTypeStan());

Console.Write("|{0,13:f3} ", stan[i].GetTimeWork_plan());

Console.Write("|{0,13:f3} ", stan[i].GetTimeWork_fact());

Console.Write("|{0,14:f3} ", stan[i].CalculateTime_Hours());

Console.Write("|{0,14:f3} |", stan[i].CalculateTime_Proc());

niz();

Q1 += stan[i].GetTimeWork_plan();

Q2 += stan[i].GetTimeWork_fact();

}

 

Console.Write("|{0,16:0}"," Итого: ");

Console.Write("|{0,13:f3} ", Q1);

Console.Write("|{0,13:f3} ", Q2);

Console.Write("|{0,16} ", "|");

Console.Write("{0,15}","|");

niz();

Console.ReadKey();

Console.Clear();

}

static void shapka()

{

Console.Write(" ______________________________________________________________________________\n");

Console.Write("| ВЕДОМОСТЬ УЧЕТА ВРЕМЕНИ РАБОТЫ СТАНКОВ ПРЕДПРИЯТИЯ |");

Console.Write("|______________________________________________________________________________|");

Console.Write("| Тип | Время работы, час. | Отклонение от плана |");

Console.Write("| |_____________________________|_______________________________|");

Console.Write("| станка | по плану | фактически | в часах | в процентах |");

Console.Write("|________________|______________|______________|_______________|_______________|");

}

static void niz()

{

Console.Write("|________________|______________|______________|_______________|_______________|");

}

 

}

}

 

Класс Stanok

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

class Stanok

{

private string type;

private double time_plan;

private double time_fact;

 

public Stanok(string type, double time_plan, double time_fact)

{

this.type = type;

this.time_plan = time_plan;

this.time_fact = time_fact;

}

 

public string GetTypeStan()

{

return type;

}

 

public double GetTimeWork_plan()

{

return time_plan;

}

 

public double GetTimeWork_fact()

{

return time_fact;

}

 

public double CalculateTime_Hours()

{

double Q1 = time_plan - time_fact;

return Q1;

}

 

public double CalculateTime_Proc()

{

double Q2 = CalculateTime_Hours() * 100 / time_plan;

return Q2;

}

 

public void new_type(string newtype)

{

this.type = newtype;

}

 

public void new_time_plan(double new_time_plan)

{

this.time_plan = new_time_plan;

}

 

public void new_time_fact(double new_time_fact)

{

this.time_fact = new_time_fact;

}

}

}

 


Пример работы программы

План тестирования

Входные данные Ожидаемый Результат (Q1=P-F) Ожидаемый Результат (Q2=Q1*100/P) Полученный результат Отметка о прохождении теста
1-е число(P) 2-е число(F)
1. 52.360 45.300 7.060 13.484 Q1=7.060 +
Q2=13.484
2. 100.500 99.360 1.140 1.134 Q1=1.140 +
Q2=1.134
3. 353.500 333.560 19.940 5.641 Q1=19.940 +
Q2=5.641


 

 

 


 

Исходный код программы на Java

Class JavaApplication4

package javaapplication4;

 

import java.text.NumberFormat;

import java.util.ArrayList;

import java.util.Scanner;

public class JavaApplication4 {

public static void main(String[] args) {

String vvod;

Scanner scan= new Scanner(System.in);

 

ArrayList<stanoklist> stan = new ArrayList<stanoklist>();

do

{

System.out.println("\nВЕДОМОСТЬ УЧЕТА ВРЕМЕНИ РАБОТЫ СТАНКОВ ПРЕДПРИЯТИЯ\n");

System.out.println("Выберите желаемое действие:\n");

System.out.println("1 - вывести ведомость на экран\n");

System.out.println("2 - добавить запись\n");

System.out.println("3 - изменить запись\n");

System.out.println("0 - выход из программы\n");

 

vvod=scan.next();

switch (vvod)

{

case "1":

{

if (stan.isEmpty())

{

System.out.println("Ведомость пуста. Добавьте первую запись.");

break;

}

else

{

print_tabl(stan);

}

break;

}

case "2":

{

add_note(stan);

break;

}

case "3":

{

if (stan.isEmpty())

{

System.out.println("Ведомость пуста. Изменять нечего.");

break;

}

else

change_note(stan);

break;

}

case "0":

{

break;

}

default:

{

System.out.println("Неправильно выбран пункт меню! Пожалуйста, попробуйте ещё раз! \n");

break;

}

}

}

while (vvod!= "0");

}

static int add_note(ArrayList<stanoklist> stan)

{

Scanner scan= new Scanner(System.in);

 

int n=0;

String type, s;

double time_plan, time_fact;

System.out.println("Сколько записей вы хотите добавить?");

s = scan.next();

try

{

n = Integer.parseInt(s);

 

}

catch (NumberFormatException nfe)

{

System.out.println("Неправильный ввод!!!\n");

}

 

 

for (int i = 0; i < n; i++)

{

stanoklist[] stan_1 = new stanoklist[1];

System.out.println("\nТип станка (не более 15 символов): ");

type = scan.next();

System.out.println("Время по плану: ");

s = scan.next();

try

{

time_plan = Double.parseDouble(s);

}

catch (NumberFormatException nfe)

{

System.out.println("Неправильно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

 

System.out.println("Время фактически: ");

s = scan.next();

try

{

time_fact = Double.parseDouble(s);

}

catch (NumberFormatException nfe)

{

System.out.println("Неправильно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

 

stan_1[0] = new stanoklist(type, time_plan, time_fact);

stan.add(stan_1[0]);

System.out.println("Запись добавлена.");

}

return 0;

}

 

static int change_note(ArrayList<stanoklist> stan)

{

Scanner scan= new Scanner(System.in);

NumberFormat nf = NumberFormat.getInstance();

nf.setMinimumFractionDigits (3);

String s, s1, s2;

double p, f;

int nom=-1, a=-1;

 

System.out.println("Введите тип того станка, информацию о котором хотите изменить:");

s = scan.next();

for (int i = 0; i < stan.size(); i++)

{

if (s.equals(stan.get(i).GetTypeStan()))

{

nom = i;

break;

}

 

 

System.out.println(nom);

 

}

 

if (nom < 0)

{

System.out.println("Нет такой записи!");

 

return 0;

}

 

else

{

 

shapka();

System.out.print(String.format("|%15.9s ",stan.get(nom).GetTypeStan()));

System.out.print(String.format("|%13.9s ",nf.format(stan.get(nom).GetTimeWork_plan())));

System.out.print(String.format("|%13.9s ",nf.format(stan.get(nom).GetTimeWork_fact())));

System.out.print(String.format("|%14.9s ",nf.format(stan.get(nom).CalculateTime_Hours())));

System.out.print(String.format("|%14.9s |",nf.format(stan.get(nom).CalculateTime_Proc())));

niz();

 

while (a!= 0)

{

System.out.println("\n\nКакое поле ведомости вы хотите изменить?");

System.out.println("1 - тип станка");

System.out.println("2 - время работы по плану");

System.out.println("3 - время работы фактически");

System.out.println("0 - выход ");

 

s1 = scan.next();

 

 

switch (s1)

{

case "1":

{

System.out.println("Новый тип станка(не более 15 символов): ");

stan.get(nom).new_type(scan.next());

break;

}

 

case "2":

{

System.out.println("Новое время работы по плану: ");

s2 = scan.next();

try

{

p = Double.parseDouble(s2);

}

catch (NumberFormatException nfe)

{

System.out.println("Неправильно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

stan.get(nom).new_time_plan(p);

 

break;

}

case "3":

{

System.out.println("Новое время работы фактически: ");

s2 = scan.next();

try

{

f = Double.parseDouble(s2);

}

catch (NumberFormatException nfe)

{

System.out.println("Неправильно введено число! Пожалуйста, попробуйте ещё раз!");

break;

}

stan.get(nom).new_time_fact(f);

}

case "0":

{

a = 0;

return 0;

}

default:

{

System.out.println("Неправильно выбран пункт меню! Пожалуйста, попробуйте ещё раз! \n");

break;

}

}

}

}

 

return 0;

}

 

static void print_tabl(ArrayList<stanoklist> stan)

{

double Q1=0, Q2=0;

shapka();

NumberFormat nf = NumberFormat.getInstance();

nf.setMinimumFractionDigits (3);

for (int i = 0; i < stan.size(); i++)

{

System.out.print(String.format("|%15.9s ",stan.get(i).GetTypeStan())); //System.out.print(" | ");

System.out.print(String.format("|%13.9s ",nf.format(stan.get(i).GetTimeWork_plan())));

System.out.print(String.format("|%13.9s ",nf.format(stan.get(i).GetTimeWork_fact())));

System.out.print(String.format("|%14.9s ",nf.format(stan.get(i).CalculateTime_Hours())));

System.out.print(String.format("|%14.9s |",nf.format(stan.get(i).CalculateTime_Proc())));

niz();

Q1 += stan.get(i).GetTimeWork_plan();

Q2 += stan.get(i).GetTimeWork_fact();

}

 

System.out.print(String.format("|%16.9s","Итого: "));

System.out.print(String.format("|%13.9s ",nf.format(Q1)));

System.out.print(String.format("|%13.9s ",nf.format(Q2)));

System.out.print(String.format("|%16.9s","|"));

System.out.print(String.format("%16.9s","|"));

niz();

 

}

static void shapka()

{

System.out.print(" ______________________________________________________________________________\n");

System.out.print("| ВЕДОМОСТЬ УЧЕТА ВРЕМЕНИ РАБОТЫ СТАНКОВ ПРЕДПРИЯТИЯ |\n");

System.out.print("|______________________________________________________________________________|\n");

System.out.print("| Тип | Время работы, час. | Отклонение от плана |\n");

System.out.print("| |_____________________________|_______________________________|\n");

System.out.print("| станка | по плану | фактически | в часах | в процентах |\n");

System.out.print("|________________|______________|______________|_______________|_______________|\n");

}

static void niz()

{

System.out.print("\n|________________|______________|______________|_______________|_______________|\n");

}

 

}

 

Class stanoklist

package javaapplication4;

public class stanoklist {

private String type;

private double time_plan;

private double time_fact;

 

public stanoklist(String type, double time_plan, double time_fact)

{

this.type = type;

this.time_plan = time_plan;

this.time_fact = time_fact;

}

 

public String GetTypeStan()

{

return type;

}

 

public double GetTimeWork_plan()

{

return time_plan;

}

 

public double GetTimeWork_fact()

{

return time_fact;

}

 

public double CalculateTime_Hours()

{

double Q1 = time_plan - time_fact;

return Q1;

}

 

public double CalculateTime_Proc()

{

double Q2 = CalculateTime_Hours() * 100 / time_plan;

return Q2;

}

 

public void new_type(String newtype)

{

this.type = newtype;

}

 

public void new_time_plan(double new_time_plan)

{

this.time_plan = new_time_plan;

}

 

public void new_time_fact(double new_time_fact)

{

this.time_fact = new_time_fact;

} }


Пример работы программы

Задание 2

Условие задания

Преобразовать приложение для обработки ведомости (см. задание 1) так, чтобы в нем использовалось отношение агрегации, а его функциональные возможности остались прежними.

Приложение должно содержать три класса:

1. Класс - «целое», описывающий ведомость с множеством записей.

2. Класс - «часть», который описывает любую запись ведомости.

3. Класс, содержащий главный метод программы, в котором должен создаваться один объект класса - «целого» и с использованием ссылки на этот объект вызываться методы класса - «целого».


 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...