You've written a script and are producing an independant film about software engineers. It's going to quickly become an expensive venture so it'd be good idea to start managing your budget now. And since the movie is about hackers, it's probably best that your budgeting tool be run from the terminal.
Most of the little things in the budget have already been handled. The only things that'll you'll have to manage are the cast, crew, and locations. You'll start with an existing codebase, and some of the cast and crew that have already signed on have already come preloaded into the program. Any additional ones will have to be entered by the users of the budgeting tool. The inital budget stands at $1M, but if you're running low on funding, you can bring on additional executive producers who are willing to financially contribute to the project.
-
When app starts, the following information should be displayed:
- [Name of the movie]
- Starring: [top 2 paid cast members]
- Produced by: [List of producers]
-
When the app starts the user should see a list of numbered items in a main menu with the following options:
- Manage Cast
- Manage Crew
- Manage Locations
- Schedule
- Add Producer
- Expense Report
-
When the user selects
Add Producer
, they should be prompted to add the producer's name along with their financial contribution to the film. Their contribution should be added to the total budget and they should then be added to the movie's list of producers. The user should then return to the main menu -
When the user selects the
Manage Cast
option, they should be presented with another menu with the following options:- Show Cast
- Hire an Actor/Actress
- Fire an Actor/Actress
- Search by Name
- Go Back
When the user selets
Go Back
, they should be taken back to the main menu. -
When the user selects
Manage Cast
from the main menu and then selectsShow Cast
, the user should see a list of all cast members in the movie, ordered descending by their pay. The user should then be prompted to hitEnter
to return back to the main menu -
When the user selects
Manage Cast
from the main menu and then selectsHire an Actor/Actress
, the user should be prompted to enter in their name followed by their pay. The actor/actress should then be added to the list of all cast members, the user should be taken back to the main menu and shown a success message. -
When added an actor/actress to the cast and the budget cannot accomodate their pay, the cast member should not get added to the cast list and the user should be taken back to the main menu with an error message explaining that the project does not have enough funds.
-
When the user selects
Manage Cast
from the main menu and then selectsFire an Actor/Actress
, they should be shown a numbered list of all cast members, along with an option toGo Back
which takes them back to the main menu. If the user chooses the number of an actor or actress, they should be removed from the cast list and the user should be taken back to the main menu. -
When the user selects
Manage Cast
from the main menu and then selectsSearch by Name
, they should be prompted to type in the name of a cast member. They should then be shown a list of cast members with names and pay whose name matches the user's search. The search should not be case sensitive. The user should then be prompted to hit any key to be taken back to the main menu. -
When the user selects
Manage Cast
from the main menu and then selectsShow Cast
, the resulting list should be paginated with 5 records per page. The user should be able to hit the up and down arrow keys to page through the results. HittingEnter
should return to the main menu. -
When the user selects
Expense Report
, the following information should be displayed:- Total budget
- Total cost of cast
- Total cost of crew
- Amount remaining
The user should then be prompted to hit any key to return to the main menu.
-
When the user selects
Manage Crew
from the main menu, they should be presented with another menu with the following items:- Show Crew
- Hire Crew Member
- Fire Crew Member
- Go Back
When the user selects the
Go Back
option, they should be taken back to the main menu. -
When the user selects the
Manage Crew
option from the main menu and then selectsShow Crew
, they should be shown a list of all crew members, ordered descending by pay, and includes their name, job title, and pay. The user should then be prompted to hitEnter
to return to the main menu. -
When the user selects the
Manage Crew
option from the main menu and then selectsHire a Crew Member
, the user should be prompted to enter the crew member's name, title, and pay. The crew member should then be added to the movie's crew list. -
When the user attempts to add a crew member whose pay cannot be accomodated by the budget, they should not be added to the list of crew members. Instead the user should be returned to the main menu and be shown an error message
-
When the user selects the
Manage Crew
option from the main menu and then selectsFire a Crew Member
, they should be shown a numbered list of all crew members, along with an option toGo Back
which takes them back to the main menu. If the user chooses the number of a crew member, they should be removed from the crew and the user should be taken back to the main menu. -
When the user selects
Manage Crew
from the main menu and then selectsShow Crew
, the resulting list should be paginated with 5 records per page. The user should be able to hit the up and down arrow keys to page through the results. HittingEnter
should return to the main menu. -
When the user selects
Manage Locations
from the main menu, they should be shown another menu with the following options:- Show Locations
- Add a Location
- Go Back
When the user selects the
Go Back
option, they should be taken back to the main menu. -
When the user selects
Manage Locations
from the main menu and then selectsShow Locations
, they should be shown a list of all filming locations. The user should then be prompted to hitEnter
to return to the main menu. -
When the user selects
Manage Locations
from the main menu and then selectsAdd a Location
, they should be prompted to enter the name of the location along with the cost of shooting there for one day. The location should then be added to the movie's list of shooting locations. NOTE: The cost of locations does not get added to budget until it gets added to a schedule (later story) -
When the user selects
Schedule
from the main menu, they should be shown another menu with the following options:- Show Schedule
- Add Shoot
- Go Back
When the user selects the
Go Back
option, they should be taken back to the main menu. -
When the user selects
Schedule
from the main menu and thenAdd Shoot
, they should be presented with a numbered list of all shooting locations. The user can then select a location for the shoot. They should then be prompted to enter a start date and end date for shooting in that location. -
When the user adds a scheduling item and the resulting cost of that location (daily cost * number of days) is more than the budget can accomodate, the user should be shown an error message and be taken back to the main menu.
-
When the user selects
Expense Report
from the main menu, the report should also include the total cost of shooting locations -
When the user is adding a schedule item, after entering the start and end dates, they should be prompted to add cast members to the shoot and presented with a numbered list of all actors/actresses. The user should be able to add multiple cast members. Once the user hits
Enter
without choosing a menu item, the shoot should be added to the schedule and the user should be taken back to the main menu. -
When the user selects
Manage Cast
from the main menu and thenSearch by Name
, the results from their search should also include the cast members' schedule.
Yes I assumed that to be implied but we can make it explicit.
This ticket would be for the addition of schedules in the result set
Yes and no. There are a lot of tickets already and I thought I was already on the verge of too many. "Delete" seemed to be covered and it didn't seem worth adding another ticket for a concept that's already been done. I don't feel strongly about this though and am up for adding it in.
Correct, although I'm up for suggestions
Same as Trestlebridge--Classes, lists, linq, interfaces, (possibly inheritance), and generics. Although if we were to entertain the restructuring I pitched you the other day, the first project might only have classes, lists, linq, and inheritance. I don't know if that's worth a consideration for this though
I'm up for suggestions, but the pagination tickets were put in with that in mind. I was thinking about a paging class going in the boilerplate.
I would expect by the main menu items--cast, crew, locations, schedule, producer/budget. Some of those might be more challenging than others, so at a certain point they might want to pair up.
Do you have any suggestions? I would love that, but I can't think to anything to add that we can "black box" from students that would also continue to work throughout changes to their models (I'm only assuming they'll make changes to the model).
Working on that today
No. I'm hoping to have a better idea of what should go in it after I start working on it myself. As it stands, I have no idea.