Sprint 6 Challenge

Ouverte
#8 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Calme
Stack technique
java
Domaine
backend, cli, database

Piste de recherche

Commencez par définir les modèles et le point d’entrée dans la méthode main, puis planifiez la classe d’accès, les interfaces de la couche de service et la base de données en mémoire décrite dans les exigences. Testez la couche de service avec des tests unitaires et vérifiez que les critères d’acceptation concernant l’emprunt, le retour, la recherche, la disponibilité et l’acceptation des pénalités de retard sont respectés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 6 🦑 Size Large Core

Sprint Challenge

The code you write for this challenge is mandatory homework and should be completed and sent in a PR for review before class.

Requirements

Overview

Create a library system for managing book borrowing and returns.

Acceptance Criteria

Ability to:

  • Save new books
    • Validate against duplicates
    • New book saved to database (in memory or text file)
  • Borrow a book
    • Validate if it's available to borrow
    • Start with a fixed borrow period (maybe 1 month) and optionally refactor later to be variable
    • Update database record to set that the book is now borrowed and hence not available for someone else to borrow
      • Should include a borrow / return date
  • List the books currently borrowed by a user
    • Actively borrowed books only, not ones that have been returned
  • Return a book
    • If it's being returned late report that the borrower should be fined £1 per day late
    • Update database record to set that the book has been returned and hence can now be borrowed again
  • Search for a book by title or author to see if it's available to borrow or not
  • Present sensible responses for the cases:
    • Book exists and can be borrowed
    • Book exists but is already borrowed by someone else
    • Book does not exist
Code Quality
  • Tiered architecture used with an in memory database (or you can write to a text file, your choice!) and console used as the presentation layer
  • Interfaces used in service layer and DI used throughout
  • Code clearly documented and unit tested!
Developer Guidance (deliberately limited!)
  • Think about the models you'll want first, and what data you'll need to store in order to meet the above criteria
  • Think about how to save the data in a format (using appropriate data structures) that you'll be able to read and write to → the internet can help here!
  • Create an access class responsible for reading and writing to the 'database'
  • Create a suitable service layer using interfaces that you call from a main method to perform the library operations detailed in the acceptance criteria
  • Make sure the service layer is unit tested
Submission & Review

Fork the coursework repo to your own GitHub account.
Make regular small commits with clear messages.
When you are ready, open a Pull Request to the CYF repo. Make sure you fill in the PR template provided.
A volunteer will review your submission and send you feedback.

Langage dominant
Aucune donnée de langage
Étoiles
1
Forks
11
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de CodeYourFuture/Module-Java

Toutes les issues de CodeYourFuture/Module-Java

Issues similaires

Plus d'issues Backend & API Design

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.