The goal of this lab is to work on a collaborative project using the project management tools we saw in class yesterday. It also introduces C programming with structs.
In this lab, you will work in pairs but each pair will work on different parts of the project, with one product produced at the end. The work of the two pairs will be coordinated using Mercurial.
You are writing software for a Twitter knock-off called Chatter. In the Chatter system, users send messages at most 140 characters long. Additionally, each message has the user id of the user who sent the message (at most 16 characters long), a time stamp indicating the time the message was sent (a long int indicating the number of milliseconds since midnight, Jan 1, 1970), and up to 5 hash codes indicating categories or topics the message falls under (each hash code is at most 10 characters long).
I have provided some code for producing "random" text components and "random" user names. Your tasks will include designing and implementing a struct to represent messages, writing functions for displaying and sorting messages, and completing drivers to test these messages.
Even though we are continuing your work from last week, set up a new directory for this lab and move into it.
mkdir lab3 cd lab3
Now, get your local repository and working copy
hg clone /homes/tvandrun/Public/cs245/repositories/chatter
The chatterUtil
library provides the following
functions:
randomInt()
: produce a random int
between 0 (inclusive) and a given int (exclusive).
So randomInt(4)
will return 0, 1, 2, or 3,
with equal probability.
getTimeMillis()
: return the current time
fillRandomText()
: fill the given char
array with a string containing a randomly chosen text
for a chatter message
fillRandomUserName()
: fill the given
char array with a string containing a randomly chosen
text for a user name
You need to complete the following tasks:
struct message
type.
You need to complete that struct according to
the description of a message given above.
Since the struct type needs to be seen by
the library and the drivers, it is defined in
message.h
message.h
gives the prototype for the function newRandomMessage()
which is used by the two driver programs.
Write a definition for this function in an
implementation file for the message library.
Use the functions from chatterUtil
to
produce the text, user name, and hash codes.
message.h
gives the prototype for the function display()
which displays a message to the screen, nicely formatted,
showing all the information stored about that
message.
The driver displayDriver
tests this.
message.h
gives the prototype for the function sortByUserName
,
and the driver sortDriver.c
uses it.
This function must be completed so that it
sorts an array of messages by user name, alphabetically.
sortDriver
.
The sortDriver
program
is intended to display all the usernames in the
array of messages after sorting,
to search the array for a message containing
a given hashcode, and then to sort the mssages
by date.
Finish the driver so that it exercises these
things, adding appropriate functions to
the library as necessary.
For example, you will need to write a
sortByDate()
function or the
equivalent.
Divide this work between the two groups and sync up as you go along so you can test the code as you go.