ICP Assignment Question
ICP Assignment Question
APU is a well-known private university located in Bukit Jalil, Kuala Lumpur. Currently, the
university has more than 500 staffs and they are attached to different departments and
schools. In general, staffs can be classified into four (4) main categories, i.e. academic,
administration, management, and technical. Recently, the university has decided to develop a
new system for better efficiency in leave application and management. You as a programmer
in the university has been appointed to be fully in-charged for the development of the system.
Basically, the system has three types of users, and they are admin staff (leave management),
staff (leave application), and superior (leave approval). Once the system is launched, staffs
are required to login with valid username and password to enter the main screen before they
can execute any task.
The system will identify admin users automatically once they login successfully. For staff
users, their roles can be leave applicant or approver (if he/she is an immediate supervisor of
other staffs). The followings outlined the main functions/tasks that could be performed by
users in the system.
a. Admin
add new staff’s information (including his leave details) to the system
update the leave balance (annual leave, compassionate leave, emergency
leave, maternity leave, medical leave, etc.) of staff for every new year or
when it is necessary
search for any staff’s leave information using staff ID or name
generate monthly report (text file) for the leave statistics of each
department or school
b. Staff
Apply leave
The submitted system should be compiled and executed without errors. Besides, validation
should be done wherever needed. Staff leave balances and leave records need to be stored in
text files. Primary Key should be implemented, no duplication of same staff or leave records
should be accepted.
2.0 REQUIREMENTS
i. You are required to carry out extra research for your system and document any
logical assumptions you made after the research.
ii. Your program should use symbolic constants where appropriate. Validations need
to be included to ensure the accuracy of the system. State any assumptions that
you make under each function.
iii. You are required to store all data required for your system in separate text files.
iv. You are expected to use control structures, functions, array, pointers, structures,
unions, and files in your program. Your program must embrace modular
programming technique and should be menu driven. Functions of similar
operations can be grouped (or kept alone) and stored as separate C files. Header
files are to be stored separately as .h files.
v. You may include any extra features which you may feel relevant and that add
value to the system.
vi. There should be no need for graphics (user interface) in your program, as what is
being assessed, is your programming skill not the interface design.
vii. You should include the good programming practice such as comments, variable
naming conventions and indentation.
viii. In a situation where a student:
- Found to be involved in plagiarism, the offence will be dealt in accordance
to APU regulations on plagiarism.
ix. You are required to use portable ANSI C programming language to implement the
solution. Use of any other language like C++/Java etc. is not allowed.
x. Results of a comprehensive testing is to be included in your document in the form
of Input/Output screenshots with sufficient explanation. The tests conducted shall
take into consideration of all valid inputs and negative test cases.
3.0 DELIVERABLES
2. Program / Source files (.c files), Header files (.h files), and text files. (all
compressed as single .zip or .rar file)
iv. Submission
- All three files to be uploaded to Moodle on or before FEBRUARY
DD/MM/22:11:59 PM.
4.0ASSESSMENT CRITERIA
5.0PERFORMANCE CRITERIA
unique logic with hardly any errors / omissions. The documentation does not have any
missing components. Sample outputs documented have clear explanation. All work is
referenced according to Harvard Name Referencing convention. Student must be able to
provide excellent explanation of the codes and work done, show additional concepts / new
ideas used in the solution, able to answer all questions posed with accurate / logical answers /
explanation provided with sound arguments and clear discussion. Overall an excellent piece
of work submitted.
Credit (65%-74%)
This grade will be assigned to work which of good standard and meets most of the
requirements stated in the question. The program runs smoothly when executed. There is
clear evidence and application of C concepts up to at least intermediate level. The program
solution is unique with good coding styles and validation. The program implemented maps
well against the design (pseudocode and flowchart) as seen in the documentation. The design
of the solution varies in styles and has unique logic with minor errors / omissions. The
documentation does not have any missing components. Sample outputs documented with
some explanation. All work is referenced according to Harvard Name Referencing
convention but with some minor errors / omissions. Student must be able to provide good
explanation of the codes and work done, answer most questions posed with mostly accurate /
logical answers / explanation. Overall a good assignment submitted.
Pass (50%-64%)
This grade will be assigned to work which meets at least half of the basic requirements
(approximately 50%) stated in the questions. The program runs smoothly when executed.
There is clear evidence and application of C concepts at basic level. The program solution is
common with basic coding styles and validation. The program implemented somewhat maps
with the design (pseudocode and flowchart) as seen in the documentation. The design of the
solution is average in terms of logic and style with some errors / omissions. The
documentation has some missing components. Sample outputs documented but without any
explanation. Did some referencing but not according to Harvard Name Referencing
convention and with some minor errors / omissions. Student must be able to explain some
codes and work done and able to answer some questions posed with some accurate / logical
answers / explanation. Overall an average piece of work submitted.
Fail (Below 50%)
This grade will be assigned to work which achieved less than half of the requirements stated
in the question. The program is able to compile but not able to execute or with major error.
The program solution has only basic coding styles with no validation. The program solution
has little or no mapping with the design. The design of the solution has major / obvious errors
/ omissions. The documentation has some missing essential components. No referencing.
Student is barely able to explain the codes / work done and answer given on the questions
posed but with mostly inaccurate / illogical answers / explanation. Overall a poor piece of
work submitted.