ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 43
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Данный текст проверяет, что после завершения работы программы в файл "users.out" были записаны корректные данные о профилях пользователей и файл существует.
На рисунке 11 продемонстрированы результаты прошедшего тестирования.
Рисунок 11 – Результат тестирования
5 Вывод
В результате выполнения курсового проектирования были получены навыки по построению диаграммы классов, диаграмм компонентов и диаграмм последовательностей, а также опыт работы по документированию программного продукта.
Во время разработки проекта «Фитнес-трекер» использовалась библиотека java.io и java.util. java.io необходим для хранения бинарных данных в сериализированном виде, а также чтения их и вывод на экран пользователя. java.util используется для подключения списков и ввода с клавиатуры.
Итоговое приложение соответствует заявленным требованиям. Наиболее важный модуль программы протестирован и исправно функционирует.
ПРИЛОЖЕНИЕ
Main
package Violet.WorkoutTracker;
import javax.naming.InvalidNameException;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, InvalidNameException, ClassNotFoundException {
WorkoutSession workout = new WorkoutSession();
workout.run();
}
}
WorkoutSession
package Violet.WorkoutTracker;
import javax.naming.InvalidNameException;
import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
public class WorkoutSession {
private boolean init = false;
private int userId = 0;
//private ArrayList
private ArrayList
users;
public WorkoutSession(){
}
public boolean isInteger(Object object) {
if(object instanceof Integer) {
return true;
} else {
String string = object.toString();
try {
Integer.parseInt(string);
} catch(Exception e) {
return false;
}
}
return true;
}
public void readUsers() throws IOException, ClassNotFoundException {
Path currentPath = Paths.get("").toAbsolutePath();
String tmp = currentPath.toString() + "/users.out";
File f = new File(tmp);
if (!f.exists()) return;
FileInputStream fis = new FileInputStream("users.out");
boolean cont = true;
try ( ObjectInputStream input = new ObjectInputStream(fis)){
while(cont) {
ArrayList
obj = (ArrayList
) input.readObject();
if (obj != null) {
users = obj;
}
}
} catch (IOException | ClassNotFoundException e) {
cont = false;
}
}
public void login() throws IOException, ClassNotFoundException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String cmdOp;
while (!init) {
System.out.print("Do you have a profile?(y/n): ");
cmdOp = bufferedReader.readLine();
if (cmdOp.equals("y")) {
if (users.size() == 0) {
System.out.println("profiles do not exist");
continue;
}
System.out.println("Available profiles: ");
for (int i = 0; i < users.size(); i++) {
System.out.print(i + 1 + " " + users.get(i).getName() + "\n");
}
System.out.print("Select your profile:");
cmdOp = bufferedReader.readLine();
if (!isInteger(cmdOp)) {
System.out.println("Try again");
continue;
}
userId = Integer.parseInt(cmdOp) - 1;
if (userId >= users.size() || userId < 0) {
System.out.println("Wrong number, try again");
continue;
}
init = true;
break;
} else if (cmdOp.equals("n")) {
System.out.print("Write your name:");
cmdOp = bufferedReader.readLine();
if (cmdOp.equals("")){
System.out.println("Wrong name");
continue;
}
users.add(new Profile(cmdOp));
continue;
} else continue;
}
}
private void process(ArrayList
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String cmdOp;
while (init) {
System.out.println();
for (int i = 0; i < workout.size(); i++) {
System.out.print(i + 1 + " ");
workout.get(i).display();
}
System.out.print("Choose your workout: ");
cmdOp = bufferedReader.readLine();
if (!isInteger(cmdOp)) {
System.out.println("Write number and try again");
continue;
}
int exerciseId = Integer.parseInt(cmdOp);
if (exerciseId > workout.size() || exerciseId < 1) {
System.out.println("Wrong number, try again");
continue;
}
System.out.print("Start training?(y/n): ");
cmdOp = bufferedReader.readLine();
double start = 0, time = 0;
if (cmdOp.equals("y")) {
start = System.currentTimeMillis();
System.out.print("Write `stop` when you finish: ");
while (true) {
if (cmdOp.equals("stop")) {
time = (System.currentTimeMillis() - start) / (1e3 * 3600 * 1000);
workout.get(exerciseId - 1).allCal += time * workout.get(exerciseId - 1).getCalPerHour();
break;
}
cmdOp = bufferedReader.readLine();
if (!cmdOp.equals("stop")){
System.out.print("Please, write word correctly(`stop`):");
}
}
} else continue;
System.out.print("Time = " + time + " hour " + "\nyou spent " + workout.get(exerciseId - 1).allCal + " cal\n" +
"your " + workout.get(exerciseId - 1).getType() + " was amazing, continue?(y/n): ");
users.get(userId).addCal( workout.get(exerciseId - 1).allCal);
users.get(userId).addTime( time );
workout.get(exerciseId - 1).clear();
cmdOp = bufferedReader.readLine();
if (cmdOp.equals("y")) {
continue;
} else if (cmdOp.equals("n")) {
System.out.println("\n\nWell done " + users.get(userId).getName() + ", whole time = " + users.get(userId).getTime() + " hour " + "\nyou spent " + users.get(userId).getCal() + " cal");
break;
} else System.out.println("Wrong, break");
break;
}
}
public ArrayList
ArrayList
exercise.add(new Training("push_ups", 345.0));
exercise.add(new Training("jump rope", 413.0));
exercise.add(new Training("squats", 284.1));
return exercise;
}
public void run() throws IOException, InvalidNameException, ClassNotFoundException {
ArrayList
users = new ArrayList
();
readUsers();
login();
process(workout);
FileOutputStream fos = new FileOutputStream( "users.out" );
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(users);
out.close();
}
}
Profile
package Violet.WorkoutTracker;
import java.io.Serializable;
public class Profile implements Serializable {
private String name;
private double allCal = 0;
private double allTime = 0;
Profile(String name){
this.name = name;
}
public void addTime(double dt){
this.allTime += dt;
}
public void addCal(double new_cal){
this.allCal += new_cal;
}
public String getName(){
return this.name;
}
public double getTime(){
return this.allTime;
}
public double getCal(){
return this.allCal;
}
}
Training
package Violet.WorkoutTracker;
public class Training{
private String type;
private double calPerHour;
public double allCal;
Training(String type, double calPerHour){
this.type = type;
this.calPerHour = calPerHour;
}
public double getCalPerHour(){
return calPerHour;
}
void display(){
System.out.println(type);
}
String getType(){ return type; }
void clear(){
allCal = 0.0;
}
}
TestWorkout
package Violet.WorkoutTracker;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public class TestWorkout {
@Test
public void testFunc() throws Exception{
WorkoutSession app = new WorkoutSession();
// проверка функций
String word = "q";
Assert.assertFalse(app.isInteger(word));
ArrayList
for (int i = 0; i < wrkt.size(); i++) {
assertTrue( wrkt.get(i).getCalPerHour() >= 0);
}
}
@Test
public void testAfterWork() throws Exception{
//сначала запускается программа, потом уже проверяется
//после окончания функции обязаельно:
// -должен существовать файл для сериализации
// -должен быть как минимум 1 профиль, после правильного завершения прог.
Path currentPath = Paths.get("").toAbsolutePath();
String tmp = currentPath.toString() + "/users.out";
File f = new File(tmp);
Assert.assertEquals(true, f.exists());
ArrayList
users = new ArrayList<>();
FileInputStream fis = new FileInputStream("users.out");
boolean cont = true;
try ( ObjectInputStream input = new ObjectInputStream(fis)){
while(cont) {
ArrayList
obj = (ArrayList
) input.readObject();
if (obj != null) {
users = obj;
}
}
} catch (IOException | ClassNotFoundException e) {
cont = false;
}
Assert.assertNotEquals(0, users.size());
}
}