Исходный код программы на Java
Стр 1 из 3Следующая ⇒ Задание 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; } } }
Пример работы программы План тестирования
Исходный код программы на 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|