Introduction
This assignment will give you practise w/user and program interfaces, and choosing/building useful data structures.
You will maintain a flat-file database, allowing users to query, delete a entry, create an entry.
You'll also, for some practise, submit a make file.
The Assignment
Write a command-line utility called
cddb
to maintain a flat-file database of album information. You will allow the user to view album info, add a new entry, or delete an entry, where each entry is an album w/all of the track information, as follows:
Options, and Descriptions
-l
— List album
Display an enumerated, alphabetical list of artists†
You will allow the user to choose an artist by entering the number, or to quit by entering a
q
You will then list all albums, by release date, enumerated
Allow the user to choose an album, by #, or return to the menu above (artists) by entering
a
If an album is entered, list all songs in that album, by track order. Prompt for input to return to the previous (i.e., the album) menu
-d
— Delete album. Similar to above, display menus allowing a user to choose an album to delete
-a
— Add album. You'll prompt for artist, album name, release date, and finally the track list. You may assume that they are entered in track order.
You'll want to check that the album doesn't already exist before adding it
-h
— Show usage msg and quit
†You may assume that all names are entered exactly. That is, do not worry about inconsistencies in spelling or capitalisation. E.g.,
Led Zeppelin
,
LedZeppelin
, and
led zeppelin
are 3 different groups for this assignment.
If no argument is supplied, a bad argument is supplied, or multiple arguments, print a usage message and exit.
File Format
Album information will be stored in a flat file w/the format shown in
sample.db
:
To simplify things, the filename (location of the DB) will be stored in an exported environment variable,
$CDDB
.
Target Language
You will do this in Python3.
Hints (maybe)
I'd create some data structure to represent an album
Store albums in a dictonary, keyed by artist
When updating the DB (writing the new file out), write to a temporary file. If this is successful, rename it appropriately. This is generally an atomic operation. So, if something bad happens w/your program, or the power grid, etc., you don't blow your DB up
Submission
Submit the following files:
cddb
— Your top-level Python script
Makefile
— your makefile, with the folowing targets:
clean — cleans up all intermediate and resulting files and directories (if any)
view — display any source code that you wrote, in a pager
Any other needed (Python) files
README
optional
— anything you want to say to me before I grade.
...
IPO PresentationYou work for a medium sized privately held elec.docx
IntroductionThis assignment will give you practise wuser and pr
1. Introduction
This assignment will give you practise w/user and program
interfaces, and choosing/building useful data structures.
You will maintain a flat-file database, allowing users to query,
delete a entry, create an entry.
You'll also, for some practise, submit a make file.
The Assignment
Write a command-line utility called
cddb
to maintain a flat-file database of album information. You will
allow the user to view album info, add a new entry, or delete an
entry, where each entry is an album w/all of the track
information, as follows:
Options, and Descriptions
-l
— List album
Display an enumerated, alphabetical list of artists†
You will allow the user to choose an artist by entering the
number, or to quit by entering a
q
You will then list all albums, by release date, enumerated
Allow the user to choose an album, by #, or return to the menu
2. above (artists) by entering
a
If an album is entered, list all songs in that album, by track
order. Prompt for input to return to the previous (i.e., the
album) menu
-d
— Delete album. Similar to above, display menus allowing a
user to choose an album to delete
-a
— Add album. You'll prompt for artist, album name, release
date, and finally the track list. You may assume that they are
entered in track order.
You'll want to check that the album doesn't already exist before
adding it
-h
— Show usage msg and quit
†You may assume that all names are entered exactly. That is, do
not worry about inconsistencies in spelling or capitalisation.
E.g.,
Led Zeppelin
,
LedZeppelin
, and
led zeppelin
are 3 different groups for this assignment.
If no argument is supplied, a bad argument is supplied, or
3. multiple arguments, print a usage message and exit.
File Format
Album information will be stored in a flat file w/the format
shown in
sample.db
:
To simplify things, the filename (location of the DB) will be
stored in an exported environment variable,
$CDDB
.
Target Language
You will do this in Python3.
Hints (maybe)
I'd create some data structure to represent an album
Store albums in a dictonary, keyed by artist
When updating the DB (writing the new file out), write to a
temporary file. If this is successful, rename it appropriately.
This is generally an atomic operation. So, if something bad
happens w/your program, or the power grid, etc., you don't blow
your DB up
Submission
Submit the following files:
4. cddb
— Your top-level Python script
Makefile
— your makefile, with the folowing targets:
clean — cleans up all intermediate and resulting files and
directories (if any)
view — display any source code that you wrote, in a pager
Any other needed (Python) files
README
optional
— anything you want to say to me before I grade.