联系方式

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

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

日期:2018-06-18 05:38

COMP2150 Assignment 1 Version 2, May 31 Summer 2018


Notes

• Please follow both the "Programming Standards" and "Assignment Guidelines" for

all work you submit. Programming standards 1-22 are in effect, but see also the

notes at the bottom of this assignment.

• Hand-in will be via the UM Learn Assignment facility, which will be demonstrated in

class. Make sure you leave enough time before the deadline to ensure your hand-in

works properly.

• Official test data will be provided several days before the assignment due date. Until

then, work with your own test data.

• All assignments in this course will carry an equal weight.

Assignment 1: An Online Ticket Exchange

Description

Getting tickets for games for certain sports teams can be difficult. Many tickets are already

held by season ticket owners. Online fraudsters take advantage of this demand to sell

phony tickets. However, owners of legitimate tickets may need to sell tickets to certain

games and would like to do so without the inconvenience of having to arrange a meeting

with a potential buyer.

Online ticket exchanges have been created by teams in order to protect both buyer and

seller, and to make the process simple. Season ticket holders are the only ones who may

offer tickets for sale, and they are automatically given an account on the exchange (they

may also buy additional seats). Those wanting to buy tickets create an account on the

exchange. When they wish to buy seats, they enter their buy request, and the exchange

attempts to match them up with a seller. If a match is found, the exchange processes

payment (we are not modelling the payment in this assignment) and makes the tickets

available to the buyer, either as a printable ticket or a QR code that can be displayed on a

smartphone.

Data Files

There are several data files containing different types of information. They are described

below. Note that where names are specified, they may include spaces and special

characters (e.g., single quotes) but do not include newline characters.

• Games file: this file contains information on the season's games, one game per line,

including game number, date and name of the opponent, respectively. The game

number is a positive integer, the date is written in yyyy/mm/dd format (where y, m

and d are digits), and opponent is a name. An example is shown below:

1 2018/09/4 Toronto Maple Leafs

COMP2150 Assignment 1 Version 2, May 31 Summer 2018

2

• Season ticket file: this file contains information on the season ticket holders, one

ticket holder per line. Included is the ticket holder's name, which may contain

blanks, and the number of tickets held. An example is shown below:

Chipman, Mark 12

• Transaction file: This file contains information on transactions that occur. Each

transaction is on one line of the file. More details about transactions follow.

For each type of transaction, you may assume that the type of each data item is correct (i.e.

integers or strings). Other types of errors are permitted though (e.g. incorrect spelling, or

an integer not found in the data).

Each transaction begins with one of five 3-letter codes. A comment line is also supported.

1. ADD: Add a new ticket buyer to the exchange.

The line has the form ADD name where name is the name of the buyer. You may

assume that buyer names are unique.

2. SEL: A season ticket holder offers tickets for sale.

The line has the form SEL game quantity name where game is the game number,

quantity is how many tickets are for sale and name is the name of the ticket holder.

When tickets are offered for sale, they must be assigned AT RANDOM to any buyers

waiting for them.

3. BUY: A buyer offers to buy tickets.

The line has the form BUY game quantity name where game is the game number,

quantity is how many tickets are wanted and name is the name of the buyer. A

buyer may have only one BUY request for any single game.

4. CAN: A buyer cancels an offer to buy tickets.

The line has the form CAN game name where game is the game number and name is

the name of the buyer.

5. REM: A buyer removes her account from the exchange.

The line has the form REM name where name is the name of the buyer. Only buyers

can be removed from the exchange, and any outstanding buy offers must also be

deleted.

6. #: Lines beginning with a hashtag are comments and are ignored by the program.

Transaction error processing

Each transaction may be either successful or contain one or more errors that must be

reported. The list below describes some error conditions your program should detect (but

there may be others as well).

1. ADD: name is already in the exchange as a buyer or ticket holder.

2. SEL: game is not a valid game number, quantity is more than the number owned

by the ticket holder, name is not a ticket holder.

3. BUY: game is not a valid game number, name is not a member of the exchange, or

already has a BUY request for this game.

COMP2150 Assignment 1 Version 2, May 31 Summer 2018

3

4. CAN: game is not a valid game number, name is not a member of the exchange or else

does not have a BUY request for this game.

5. REM: name is not a buyer in the exchange (you can't remove a ticket holder).

Main method and File.java

In order to make marking assignments easier, your main method MUST accept the names

of the three input files transaction file as a command-line argument. The data file names on

the command-line must be in the same order as described above (games, ticket holders,

transactions). The other two input files can have their names hard-coded into your

program (as games.txt and ticketHolders.txt). A sample main class will be given to you,

that has the code necessary to accept file names on the command-line, which you are free

to use (or ignore) as you wish. Utility functions used by this sample main class are

contained in File.java, which is also given to you.

NO PACKAGES

DO NOT USE PACKAGES! Any assignment that uses packages will receive a zero!

Output

For each transaction, produce a line of output (to standard output), describing the relevant

details.

At the end of the program, produce a summary description. This description contains a list

of all the ticket purchases for all games, ordered by game number first, then ordered by

buyer.

More details of the output will be released shortly.

Data Structures

There are some restrictions on data structures you must use for the assignment. Do not use

ANY built-in Java collection classes (e.g. ArrayLists, Hashes, ...) in this assignment, or Java

Generics: any linked structures must be your own, built from scratch. You should avoid

using arrays other than one exception listed specifically below (other than for minor things

such as temporary storage when parsing strings, etc.). See the notes at the bottom of this

assignment for further details on arrays.

The dataset descriptions above should be enough for you to generate your own test data to

start with. Official test data will be provided several days before the assignment is due.

Notes

• This is a large programming problem with many pieces to the puzzle - remember

your incremental development strategy from COMP1020 and get small pieces

working rather than trying to tackle the whole thing at once.

• The ADTs required above must be linked structures written by you. Do not use

built-in Java collection classes anywhere here. Plain arrays (not ArrayLists) may be

used as basic temporary storage to support things like string parsing using

COMP2150 Assignment 1 Version 2, May 31 Summer 2018

4

split(). Don't use them to build data structures or for storage in data. If your

solution requires ADTs other than those described above, these must also be your

own linked structures.

• See the documentation for class Random in Java for built-in routines to choose

randomly among the possibilities you generate.

• Your program will be tested by the markers under Unix and must run with a simple

javac/java as per the "Running Java" instructions on the course website.

• As yet, we do not know much OO - you should follow the rules of abstraction and

object-oriented programming based on what you have learned in previous courses

and given the limitations specified in this assignment. Use separate classes for

entities like buyers and offers to sell. Try to make other entities and classes for your

ADTs. Do not be afraid of using many classes - breaking things up usually makes for

much simpler pieces. The model solution I will show you uses more than ten classes,

just as an example.


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

python代写
微信客服:codinghelp