联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2023-12-08 10:18


XUT CP1404 Assignment 1 © Lindsay Ward, James Cook University 1/5

XUT CP1404 Assignment 1 – Song List 1.0 <simplify>

Task:

You are to write a Python (3) program, as described in the following information and sample

output. This assignment will help you build skills using selection, repetition, file input/output,

exceptions, lists, functions and string formatting. Do not define any of your own classes or use

constructs that haven't been taught in this subject. Assignment 2 will build on this with more

advanced constructs including classes and a Graphical User Interface (GUI).

Everything you need to complete this assignment can be found in the subject teaching.

You will be given starter files including a README for your project, all of which you must use.

Program Overview:

This program is a simple song list that allows a user to track songs that they wish to learn and

songs they have completed learning. The program reads and writes a list of songs in a file.

Each song has:

• title, artist, year, whether it is learned

Users can choose to display the list of songs.

The song list should be sorted by year then by title (use operator.itemgetter) for sorting.

Users can add new songs and mark (set) songs as learned.

They cannot change songs from learned to unlearned.

Program Functionality Details:

Ensure that your program has the following features, as demonstrated in the sample output

below. Your program should:

• display a welcome message with your name in it

• display a menu for the user to choose from

• return to the menu after each action and loop until the user chooses to quit

• load a CSV (Comma Separated Values) file of songs (just once at the very start); a

sample CSV file is provided for you and you must use this format (note: you're not

expected to use the csv module, but you're welcome to)

• when the user chooses display: display a neatly formatted (lined up) list of all the songs

with their details (unlearned songs have an * next to them) and a count of these songs

(note: you are welcome to either guess or calculate the size of the title and artist fields

to line them up - either way is fine)

• when the user chooses add: prompt for the song’s title, artist and year,

error-checking each of these, then add the song to the song list in memory (not to the

file); new songs are always unlearned

• when the user chooses to complete a song: allow the user to choose one song by

number (error-checked), then change that song's status to learned

o if no songs are unlearned, then display a "No more songs to learn!" message

• when the user chooses quit: save the songs to the CSV file, overwriting file contents

Coding Requirements and Suggestions:

• Work incrementally on this task: complete small parts of it at a time rather than trying to

get it all working at once.

• Edit the module docstring at the very top of your code file to contain your own details.

• Make use of named constants as appropriate (e.g., for the characters that represent

the song's learned/unlearned status).

• Use functions appropriately for each significant part of the program: this is the divideand-conquer problem-solving approach. Follow the principles you've learned about

XUT CP1404 Assignment 1 © Lindsay Ward, James Cook University 2/5

functions, including the single responsibility principle (SRP).

• Only load (read) the file once, when the program starts.

• Only save (write) the file once, when the program ends.

• Store the song data in a list of lists and pass that to any functions that need access

to it. Note: this variable should not be global. The only global variables you may have

are CONSTANTS. (Did you understand this? If you use global variables, your functions

will be poorly designed. Do not use any global variables.)

• Do not store a song's index – this is just its position in the list.

• The menu choice should handle uppercase and lowercase letters.

• Use exception handling where appropriate to deal with input errors (including entering

numbers and selecting songs).

• Use generic, customisable functions to perform input with error checking (e.g., getting

the song title and artist can reuse the same function).

• The output shows that the solution does not require correct plurals (e.g., "1 songs").

You are welcome to leave yours this way. You may add logic to print these statements

correctly, but it is not expected or assessed.

Check the rubric carefully to understand how you will be assessed. There should be no

surprises here – this is about following the best practices we have taught in class.

Integrity:

The work you submit for this assignment must be your own. Submissions that are detected to

be too similar to that of another student or other work (e.g., code found online or generated

with tools) will be dealt with according to university procedures for handling plagiarism and

may result in serious penalties.

The goals of this assignment include helping you gain understanding of fundamental

programming concepts and skills, and future subjects will build on this learning. Therefore, it

is important that you develop these skills to a high level by completing the work and gaining

the understanding yourself. You may discuss the assignment with other students and get

assistance from your peers, but you may not do any part of anyone else’s work for them and

you may not get anyone else to do any part of your work. Note that this means you should

never give a copy of your work to anyone or accept a copy of anyone else’s work,

including looking at another student's work or having a classmate look at your work.

If you require assistance with the assignment, please ask general questions on the

discussion forum, or get specific assistance with your own work by talking with your lecturer

or tutor.

The subject teaching contains all the information you need for this particular assignment. You

should not use online resources (e.g., search, Stack Overflow, ChatGPT) to find resources or

assistance as this would limit your learning and would mean that you would not achieve the

goals of the assignment - mastering fundamental programming concepts and skills.

Sample Output:

Sample output from the program is provided below. Ensure that your program matches

this, including spaces, spelling and formatting. Think of this as helpful guidance as well

as training you to pay attention to detail. The sample output is intended to show a large (but

maybe not exhaustive) range of situations including user input error handling.

The following sample run was made using a CSV file that contained:

Heartbreak Hotel,Elvis Presley,1956,u

Macarena,Los Del Rio,1996,l

Amazing Grace,John Newton,1779,l

I Want to Hold Your Hand,The Beatles,1964,u

Boom Boom Pow,The Black Eyed Peas,2009,u

My Sharona,The Knack,1979,l

XUT CP1404 Assignment 1 © Lindsay Ward, James Cook University 3/5

You should be able to figure out what parts of the sample output below are user input.

Song List 1.0 - by Lindsay Ward

6 songs loaded.

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> this will be FUN

Invalid menu choice

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> d

1. Amazing Grace - John Newton (1779)

2. * Heartbreak Hotel - Elvis Presley (1956)

3. * I Want to Hold Your Hand - The Beatles (1964)

4. My Sharona - The Knack (1979)

5. Macarena - Los Del Rio (1996)

6. * Boom Boom Pow - The Black Eyed Peas (2009)

3 songs learned, 3 songs still to learn.

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> c

Enter the number of a song to mark as learned.

>>> 0

Number must be > 0.

>>> -1

Number must be > 0.

>>> 9

Invalid song number

>>> 7

Invalid song number

>>> 6

Boom Boom Pow by The Black Eyed Peas learned

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> c

Enter the number of a song to mark as learned.

>>> 6

You have already learned Boom Boom Pow

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> d

1. Amazing Grace - John Newton (1779)

2. * Heartbreak Hotel - Elvis Presley (1956)

3. * I Want to Hold Your Hand - The Beatles (1964)

4. My Sharona - The Knack (1979)

5. Macarena - Los Del Rio (1996)

6. Boom Boom Pow - The Black Eyed Peas (2009)

4 songs learned, 2 songs still to learn.

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> a

Enter details for a new song.

Title:

Input can not be blank.

Title: Can I Walk With You?

Artist:

Input can not be blank.

Artist:

Input can not be blank.

Artist: See Jane Run

Year: 0

Number must be > 0.

Year: -1

Number must be > 0.

Year: why must the year be like that?

XUT CP1404 Assignment 1 © Lindsay Ward, James Cook University 4/5

Invalid input; enter a valid number.

Year:

Invalid input; enter a valid number.

Year: 1998

Can I Walk With You? by See Jane Run (1998) added to song list.

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> D

1. Amazing Grace - John Newton (1779)

2. * Heartbreak Hotel - Elvis Presley (1956)

3. * I Want to Hold Your Hand - The Beatles (1964)

4. My Sharona - The Knack (1979)

5. Macarena - Los Del Rio (1996)

6. * Can I Walk With You? - See Jane Run (1998)

7. Boom Boom Pow - The Black Eyed Peas (2009)

4 songs learned, 3 songs still to learn.

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> quit

Invalid menu choice

Menu:

D - Display songs

A - Add new song

C - Complete a song

Q - Quit

>>> q

7 songs saved to songs.csv

Make some music!

At the end of this run, the saved CSV file contained:

Amazing Grace,John Newton,1779,l

Heartbreak Hotel,Elvis Presley,1956,u

I Want to Hold Your Hand,The Beatles,1964,u

My Sharona,The Knack,1979,l

Macarena,Los Del Rio,1996,l

Can I Walk With You?,See Jane Run,1998,u

Boom Boom Pow,The Black Eyed Peas,2009,l

XUT CP1404 Assignment 1 © Lindsay Ward, James Cook University 5/5

Marking Scheme:

Ensure that you follow the processes and guidelines taught in class to produce high quality work. Do not just focus on getting the program working.

This assessment rubric provides you with the characteristics of exemplary down to very limited work in relation to task criteria.

Criteria Exemplary (9, 10) Good (7, 8) Satisfactory (5, 6) Limited (2, 3, 4) Very Limited (0, 1)

Correctness

20%

Program works correctly for all

functionality required.

Exhibits aspects of exemplary

(left) and satisfactory (right)

Program mostly works correctly for

most functionality, but there is/are

some required aspects missing or

that have problems.

Exhibits aspects of satisfactory

(left) and very limited (right)

Program works incorrectly for all

functionality required.

Error checking

10%

Invalid inputs are handled well

using exceptions and control logic

as instructed, for all user inputs.

Invalid inputs are mostly handled

correctly as instructed, but there

is/are some problem(s), e.g.,

exceptions not well used.

Error checking is not done or is very

poorly attempted.

Similarity to sample

output

10%

All outputs match sample output

perfectly, or only one minor

difference, e.g., wording, spacing.

Multiple differences (e.g., typos,

spacing, formatting) in program

output compared to sample output.

No reasonable attempt made to

match sample output. Very many

differences.

Identifier naming

10%

All function, variable and constant

names are appropriate, meaningful

and consistent.

Multiple function, variable or

constant names are not

appropriate, meaningful or

consistent.

Many function, variable or constant

names are not appropriate,

meaningful or consistent.

Use of code

constructs

20%

Appropriate and efficient code use,

including good logical uses of

constants, data structures, decision

and repetition structures.

Mostly appropriate code use but

with some problems, e.g.,

unnecessary code, poor use of

constants, data structures, decision

and repetition structures.

Many significant problems with

code use.

Use of functions

15%

Functions and parameters are

appropriately used, functions are

well reused to avoid code

duplication, functions follow SRP

well.

Reasonable but not good use of

functions, e.g., poor parameter

choices, function choices don't

follow SRP well, too much low-level

detail in main.

No functions used or functions used

very poorly.

Any use of global variables.

Formatting

5%

All code formatting is appropriate,

including correct indentation,

horizontal spacing and consistent

vertical line spacing. PyCharm

shows no formatting warnings.

Multiple problems with code

formatting reduce readability of

code. PyCharm shows formatting

warnings.

Readability is poor due to code

formatting problems. PyCharm

shows many formatting warnings.

Commenting

10%

Meaningful docstrings for all

functions, appropriate # block/inline

comments, top docstring and

README are complete.

Missing function docstrings, noise

comments or missing block/inline

comments, details missing from top

docstring or README.

Commenting is very poor either

through having too many comments

(noise) or too few comments.


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp