Software辅导、c/c++程序语言辅导
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 1
Assignment #2
Worth: 10% of final grade
Account Ticketing System
Milestone Worth Due Date Submission Required
1 10% (Suggested Target: November 16th) NO
2 40% November 26th by 23:59 EST (end of Week 11) YES
3 10% (Suggested Target: November 30th) NO
4 40% December 3
rd by 23:59 EST (end of Week 12) YES
Introduction
Assignment 2 is a continuation of Assignment 1 Milestone 4 and will complete the account ticketing
system. The ticketing component will be added among other improvements. Additional business and
data validation rules will be required to ensure a higher quality data store is maintained including
security and overall application functionality. Agents will have more features available including ticket
management and data persistence (using files) so when data is modified, the changes are retained and
can be reloaded when the application is later restarted.
For assignment 2, you will be provided with a set of generalized instructions and given more freedom
to create your own solution (this means creating your own functions, macro's, and deciding in what
file they should be placed). However, you must use the data types and functions that are explicitly
stated).
Preparation
Download or clone the Assignment 2 (A2) from https://github.com/Seneca-144100/IPC-Project
In the directory: A2/MS1 you will find the Visual Studio project files ready to load. Open the project
(a2ms1.vcxproj) in Visual Studio.
IMPORTANT
• You will need to copy your work from Assignment 1 Milestone 4 and add all the header and
source code files to the a2ms1 Visual Studio project before continuing.
• Remember to update the comments at the top of each file to reflect Assignment 2 Milestone 1.
• DO NOT ADD the a1ms4.c file.
Milestone – 1 (Worth 10%, Target Due Date: November 19
th)
Milestone – 1 does not require a submission and does not have a specific deadline, however, you
should target to have this part completed no later than November 19
th to ensure you leave enough
time to complete Milestone – 2 which must be submitted and is due November 26th
.
Milestone-1 includes the main function and should not be modified (a2ms1.c). This main will do some
preliminary data type testing by creating some test data using the new data types and then launch the
application logic by calling the applicationStart function accordingly.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 2
This milestone focuses on accommodating some new data types and extending/improving on data
validation routines including implementing additional business logic (rules and conditions for data).
Specifications
New Data Types
You will need to create three (3) new data types in this milestone ("Message", "Ticket", and
"AccountTicketingData") which will complete what is needed for this application.
Review the a2ms1.c file (more specifically the "main" and "populateTickets" functions) to learn more
about the field information used in these new data types based on the data being assigned.
The "Message" and "Ticket" data types will need to be defined in a new header file "ticket.h" (don't
forget to apply the safeguarding technique as described in Assignment 1).
Message type
• The Message data type has three members. The 1st member is a single character representing the
account type of the author of the message (same as used in the Account type). The 2nd member
represents the display name for a given user (same as used in the Account type) and should be able
to accommodate 30 printable characters. The 3rd member represents the message details and
should be sized to accommodate 150 printable characters.
• Create meaningful member names for each.
Ticket type
• The Ticket type has six (6) members.
1. Unique number for a ticket.
2. Customer account number related to the ticket.
3. A ticket status indicator where 0 represents closed and 1 represent active (still open)
4. A subject line (like an email subject) that should accommodate up to 30 printable characters.
5. A counter that represents the number of messages associated with the ticket.
6. An array of Message types that should be able to store up to 20 messages.
• Create meaningful member names for each.
AccountTicketingData type
• This new data type is provided for you below and should be placed in the existing header file
"accountTicketingUI.h". This type will be used to help simplify the passing of data between key
functions with more efficiency and readability.
struct AccountTicketingData
{
struct Account* accounts; // array of accounts
const int ACCOUNT_MAX_SIZE; // maximum elements for account array
struct Ticket* tickets; // array of tickets
const int TICKET_MAX_SIZE; // maximum elements for ticket array
};
• Review the a2ms1.c file to see how this is instantiated and used.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 3
Application Logic Entry-Point
The function parameters for "applicationStart" will need to be modified so it receives just one
argument which is a pointer to the new "AccountTicketingData" type.
• Update the necessary function definition to use the new argument accordingly (after
reading and implementing the menu changes below).
Menu Modifications
menuAgent
• The function used for the agent main menu "menuAgent" currently has three (3) parameters but
will require modification. Since the accounts array and its maximum size information are now
members of the new data type "AccountTIcketingData", the existing first two parameters can be
replaced with a pointer to the new "AccountTicketingData" type. This means this function should
now only have two (2) parameters.
• Update the necessary function definition to use the new argument accordingly.
• The menuAgent function should be modified to display five (5) more menu options (5 – 9).
Selecting any of these new options will display a temporary notice that the feature is not
currently available. Review the sample output for details.
Data Validation and Business Rules
You should apply system library functions like the character analysis and manipulators you have
recently learned about to help enforce data validation and business rules where appropriate (review
your code and apply where necessary).
New Account
• The application currently prompts the user for an account number when creating a new Account.
This is not ideal and needs to be replaced with an auto-generated account number based on the
next increment of the highest number found in the accounts data set.
o Upgrade your process for creating a new account so the account number is automatically
assigned before getting user input for the remaining data. The account number should also
be displayed as part of the title/banner (see below sample, the 50600 was automatically
assigned).
o Prompting for a new account should therefore start with the account type like this:
New Account Data (Account#:50600)
----------------------------------------
Enter the account type (A=Agent | C=Customer):
User Login
• Enhance the validation for obtaining the UserLogin member that stores the login identifier and do
not allow any whitespace characters (spaces and tabs etc.). Below is an example of an attempt to
enter whitespace characters:
User Login Data Input
----------------------------------------
Enter user login (10 chars max): my login
ERROR: The user login must NOT contain whitespace characters.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 4
Enter user login (10 chars max): my login
ERROR: The user login must NOT contain whitespace characters.
Enter user login (10 chars max):
• Enhance the validation for obtaining the UserLogin member that stores the password to enforce
the password meets the new criteria (see example below):
Enter the password (must be 8 chars in length): password
SECURITY: Password must contain 2 of each:
Digit: 0-9
UPPERCASE character
lowercase character
symbol character: !@#$%^&*
Enter the password (must be 8 chars in length): aaAA#$12
Note: "aaAA#$12" is valid because it meets the password validation criteria.
Person
• Enhance the Person data input processes (when adding new or updating) so that entered values for
the country member are stored as all UPPERCASE characters (the user should be able to enter
lowercase characters and you will convert it to uppercase accordingly).
A2-MS1: Sample Output
==============================================
Account Ticketing System - Login
==============================================
1) Login to the system
0) Exit application
----------------------------------------------
Selection: 1
Enter your account#: 50008
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 1
New Account Data (Account#:50600)
----------------------------------------
Enter the account type (A=Agent | C=Customer): A
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 5
Person Data Input
----------------------------------------
Enter the person's full name (30 chars max): Agent Chris
Enter birth year (current age must be between 18 and 110): 1999
Enter the household Income: $240750.11
Enter the country (30 chars max.): england
User Login Data Input
----------------------------------------
Enter user login (10 chars max): Has Space
ERROR: The user login must NOT contain whitespace characters.
Enter user login (10 chars max): Neil234
Enter the password (must be 8 chars in length): 12345678
SECURITY: Password must contain 2 of each:
Digit: 0-9
UPPERCASE character
lowercase character
symbol character: !@#$^&*
Enter the password (must be 8 chars in length): pa55WD!d
SECURITY: Password must contain 2 of each:
Digit: 0-9
UPPERCASE character
lowercase character
symbol character: !@#$^&*
Enter the password (must be 8 chars in length): pa55WD&!
*** New account added! ***
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 4
Acct# Acct.Type Full Name Birth Income Country Login Password
----- --------- --------------- ----- ----------- ---------- ---------- --------
30001 CUSTOMER Silly Sally 1990 150000.10 CANADA
50599 AGENT Fred Flintstone 1972 2250400.22 AFRICA agent1 y*b*#*@*
30004 CUSTOMER Betty Boop 1978 250800.74 INDIA
50008 AGENT Will Smith 1952 2350600.82 U.S.A. agentJ T***2*t*
20020 CUSTOMER Shrimpy Shrimp 2000 350500.35 KOREA
50600 AGENT Agent Chris 1999 240750.11 ENGLAND Neil234 p*5*W*&*
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 6
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 2
Enter the account#: 50600
Update Account: 50600 (Agent Chris)
----------------------------------------
1) Update account type (current value: A)
2) Person
3) Login
0) Done
Selection: 3
User Login: Neil234 - Update Options
----------------------------------------
1) Password
0) Done
Selection: 1
Enter the password (must be 8 chars in length): juMP1!*&
SECURITY: Password must contain 2 of each:
Digit: 0-9
UPPERCASE character
lowercase character
symbol character: !@#$^&*
Enter the password (must be 8 chars in length): juMP1!*9
User Login: Neil234 - Update Options
----------------------------------------
1) Password
0) Done
Selection: 0
Update Account: 50600 (Agent Chris)
----------------------------------------
1) Update account type (current value: A)
2) Person
3) Login
0) Done
Selection: 2
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 7
Person Update Options
----------------------------------------
1) Full name (current value: Agent Chris)
2) Household Income (current value: $240750.11)
3) Country (current value: ENGLAND)
0) Done
Selection: 3
Enter the country (30 chars max.): romania
Person Update Options
----------------------------------------
1) Full name (current value: Agent Chris)
2) Household Income (current value: $240750.11)
3) Country (current value: ROMANIA)
0) Done
Selection: 0
Update Account: 50600 (Agent Chris)
----------------------------------------
1) Update account type (current value: A)
2) Person
3) Login
0) Done
Selection: 0
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 4
Acct# Acct.Type Full Name Birth Income Country Login Password
----- --------- --------------- ----- ----------- ---------- ---------- --------
30001 CUSTOMER Silly Sally 1990 150000.10 CANADA
50599 AGENT Fred Flintstone 1972 2250400.22 AFRICA agent1 y*b*#*@*
30004 CUSTOMER Betty Boop 1978 250800.74 INDIA
50008 AGENT Will Smith 1952 2350600.82 U.S.A. agentJ T***2*t*
20020 CUSTOMER Shrimpy Shrimp 2000 350500.35 KOREA
50600 AGENT Agent Chris 1999 240750.11 ROMANIA Neil234 j*M*1***
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 8
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 5
Feature #5 currently unavailable!
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 6
Feature #6 currently unavailable!
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 9
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 7
Feature #7 currently unavailable!
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 8
Feature #8 currently unavailable!
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 9
Feature #9 currently unavailable!
<< ENTER key to Continue... >>[ENTER]
AGENT: Will Smith (50008)
==============================================
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 10
Account Ticketing System - Agent Menu
==============================================
1) Add a new account
2) Modify an existing account
3) Remove an account
4) List accounts: detailed view
----------------------------------------------
5) List new tickets
6) List active tickets
7) List closed tickets
8) Add a new ticket
9) Manage a ticket
----------------------------------------------
0) Logout
Selection: 0
### LOGGED OUT ###
==============================================
Account Ticketing System - Login
==============================================
1) Login to the system
0) Exit application
----------------------------------------------
Selection: 0
Are you sure you want to exit? ([Y]es|[N]o): Y
==============================================
Account Ticketing System - Terminated
==============================================
Milestone – 1 Submission
1. This is a test submission for verifying your work only – no files will be submitted to your instructor.
2. Upload (file transfer) your all header and source files:
a2ms1.c
account.c
account.h
accountTicketingUI.c
accountTicketingUI.h
commonHelpers.c
commonHelpers.h
ticket.h
3. Login to matrix in an SSH terminal and change directory to where you placed your source code.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 11
4. Manually compile and run your program to make sure everything works properly:
gcc -Wall a2ms1.c account.c accountTicketingUI.c commonHelpers.c -o ms1
If there are no error/warnings are generated, execute it: ms1
5. Run the submission command below (replace profname.proflastname with your professors Seneca
userid and replace NAA with your section):
~profName.proflastname/submit 144a2ms1/NAA_ms1
6. Follow the on-screen submission instructions.
Milestone – 2 (Worth 20%, Due Date: November 26TH)
Milestone – 2 will involve refinements to be made to any appropriate code that would benefit from
using the string library (string.h). In addition, the login procedure and requirements will be enhanced
to include more robust authentication. This will involve the prompting of the user for their account
number, login identifier, and password to be validated before being given access to the system (only
three (3) attempts will be permitted and if not successful, will be returned to the login menu). Lastly,
support for creating, viewing, and managing of ticket information will be added.
Milestone-2 includes the main function which should not be modified (a2ms2.c). The main function
will populate account and ticketing data to be used in testing the changes and new features before
handing off the process to your business logic, starting in the applicationStart function.
Specifications
Reminder
You will be provided with a set of generalized instructions and given more freedom to create your own
solution and unless otherwise explicitly stated, you should create your own functions and macro's
where appropriate, including deciding in what file they should be placed.
String Library
• Review all your code and upgrade where necessary to use functions available from the string
library. Functions you should be considering can be any of the following (but no others):
strlen, strcpy, strcat, strcmp, strncat, strncmp, strncpy, strchr, strrchr
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 12
Business Rules and Logic Modifications
Login Process
• The login process currently only prompts for an account number to permit access to the system.
This must be changed to incorporate more robust authentication. This will now include prompting
for the following:
• Account number (Note: Only agent type accounts can login)
• User login identifier
• Password
• The combined validation of all these pieces of information will determine if the user can have
access to the system. If all three pieces of information combined match with the system data then
the application should launch the agent main menu.
• Only three (3) attempts are permitted. If the 3rd attempt does not match the records for the
provided account and user information, the user should be returned to the starting menu.
• Review the sample output carefully to see how the process should work when invalid account
numbers, and/or invalid user login identifiers, and/or invalid passwords are entered.
• Note: You do not want to disclose to the user which of the three (3) fields were incorrect – doing so
helps hackers determine where they have guessed correctly! You will also want to avoid disclosing
the field length limits as this is very useful information to a hacker.
Remove an Account (agent menu option #3)
• Removal of an account should also remove any tickets (set to a safe empty state) that are
associated with the account.
• The result message should be updated to include the number of tickets removed:
*** Account Removed! (? tickets removed) ***
Note: Replace ? with the number of tickets that were removed.
Viewing Tickets
• Currently, the agent main menu options #5-#7 to list new, active, and closed tickets indicates the
feature is currently unavailable. This must now be replaced with the functionality to display all the
appropriate tickets for the respective views (new, active, or closed).
• New tickets are determined based on two field values. The ticket status must be open (will have a
value of 1) and there will be only one (1) message.
Note: Tickets will always have at least one message, and the first message will always be
associated with a customer type (the first message describes the ticket issue).
• Active tickets are determined based on the status being open (will have a value of 1) and this
listing will include new tickets.
• Closed tickets are determined based on the status being closed (will have a value of 0).
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 13
• All ticket listing views will include six (6) pieces of information:
• Ticket number
• Account number
• Customer's full name *
*Hint: see "note" above regarding ticket construction. You may assume the 1st message in a
ticket will be authored by a customer.
• Ticket status
• Subject line
• Number of messages
• Review the sample output to see how this should work including what content should be displayed
and the desired tabular format.
• You will notice, after displaying the main ticket summaries, the user should have the option to
enter a specific ticket number to view the messages related to that specific ticket.
Note: Only the tickets that are listed may be entered otherwise display the error message:
ERROR: Invalid ticket number.
• Review the sample output to see how the contents of the messages should be displayed.
• When the user enters a zero (0), control will be returned to the ticket menu.
Add New Ticket (menu option #8)
Currently, the agent main menu option #8 indicates the feature is currently unavailable. This must
now be replaced with the functionality to create a new customer ticket.
• The system must automatically determine the next available ticket number (follows the same logic
applied in the generation of the next account number).
Note: If the ticketing system has reached the maximum allowable number of tickets, the following
error message should be displayed and then return to the main menu:
ERROR: Ticket listing is FULL, call ITS Support!
• All new tickets are immediately set to the "ACTIVE" status.
• The customer's account number must be associated with the new ticket being created.
Note: Agent type account holders are not permitted to have tickets, therefore, if the account
number entered belongs to an agent type, the following error message should be shown:
ERROR: Agent accounts can't have tickets!
• The main subject of the ticket must be entered that concisely summarizes the purpose of the ticket
(the problem).
• It is mandatory an initial message be entered that details the reason for the ticket.
Hint: You can guarantee and assume that all tickets will have at least one message and that the first
message will be associated to the customer.
• The account type and respective full name must be recorded with the message.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 14
Manage a Ticket (menu option #9)
Currently, the agent main menu option #9 indicates the feature is currently unavailable. This must
now be replaced with the functionality to manage a ticket.
• The agent must enter a valid ticket number to be modified. If it is invalid display an error message:
ERROR: Invalid ticket number.
• The agent may modify the ticket in four (4) possible ways:
1. Add a CUSTOMER message
2. Add an AGENT message
Attempting to add a message to a closed ticket should display the error:
ERROR: Ticket is closed - new messages are not permitted.
Attempting to add a message beyond the maximum message limits should display the error:
ERROR: Message limit has been reached, call ITS Support!
3. Close the ticket (only if it is currently active)
o When the ticket is already in a closed state, an error message should be displayed:
ERROR: Ticket is already closed!
o The agent should be prompted to confirm their action
o Display a confirmation message when the operation is complete
4. Re-open a ticket to make it ACTIVE again
o When the ticket is already in an active state, an error message should be displayed:
ERROR: Ticket is already active!
o The agent should be prompted to confirm their action
o Display a confirmation message when the operation is complete
• Review the sample output to see how the ticket management options should be presented.
A2-MS2: Sample Output (LONG)
The LONG submission option will qualify you to potentially earn a maximum of 100% (A+).
Please review the file "A2MS2-LONG-OUTPUT.pdf" (located in the sub-directory: "sample-output")
which should be used for this submission option. Also available, is a text file "a2ms2_4-longinputs.txt"
which contains only the user inputs and can be used to help automate testing your work by
copying and pasting it into your command window.
A2-MS2: Sample Output (SHORT)
The SHORT submission option will qualify you to potentially earn a maximum of 70% (B).
Please review the file "A2MS2-SHORT-OUTPUT.pdf" (located in the sub-directory: "sample-output")
which should be used for this submission option. Also available, is a text file "a2ms2_4-shortinputs.txt"
which contains only the user inputs and can be used to help automate testing your work by
copying and pasting it into your command window.
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 15
Reflection (Worth 20%, Due Date: Nov. 26
th)
Academic Integrity
It is a violation of academic policy to copy content from the course notes or any other published
source (including websites, work from another student, or sharing your work with others).
Failure to adhere to this policy will result in the filing of a violation report to the Academic Integrity
Committee.
Instructions
• Create a text file named “reflect.txt” and record your answers to the questions below in this file.
• Answer each question in sentence/paragraph form unless otherwise instructed.
• A minimum 350 overall word count is required (does NOT include the question or any sample code)
and no more than 600.
• Whenever possible, it is expected you will substantiate your answers with a brief example to
demonstrate your view(s).
1. What is your favourite string function from the string library that you have used in this application?
Describe why?
2. Milestones 1 & 2 required you to create some additional functions. List all the new function
prototypes you added. For each new function you created, briefly describe why you created it and
include what module/library you put it in and why you added it to that specific module.
Reflections will be graded based on the published rubric:
https://github.com/Seneca-144100/IPC-Project/tree/master/Reflection%20Rubric.pdf
Milestone – 2 Submission
1. Upload (file transfer) your all header and source files including your reflection:
• a2ms2.c
• account.c
• account.h
• accountTicketingUI.c
• accountTicketingUI.h
• commonHelpers.c
• commonHelpers.h
• ticket.h
• ticket.c
• reflect.txt
SDDS Fall – 2021 School of Software Design and Data Science
SDDS School of Software Design and Data Science Page | 16
2. Login to matrix in an SSH terminal and change directory to where you placed your source code.
3. Manually compile and run your program to make sure everything works properly:
gcc -Wall a2ms2.c account.c ticket.c accountTicketingUI.c commonHelpers.c -o ms2
If there are no error/warnings are generat