MITS4002 Assignment
MITS4002
OBJECT-ORIENTED SOFTWARE DEVELOPMENT
Assignment (25%)
University Souvenir Store Application
50% deduction for Late Submission within one week
0 mark for Late Submission more than one week
0 mark for duplicated Submission or Shared Work
You will be marked based on your submitted zipped file on Moodle. You are most welcome to check your file with your lab tutor before your submission. No excuse will be accepted due to file co
uption, absence from lecture or lab classes where details of lab requirements may be given.
Please make sure that you attend Lecture EVERY WEEK as low attendance may result in academic penalty or failure of this unit.
MITS4002 Research Study
Copyright © XXXXXXXXXXVIT, All Rights Reserved. XXXXXXXXXXPage 2
Table of Contents
1. Introduction 3
1.1 Assignment Requirement 3
1.2 Deliverables and Structure 4
1.3 Software Restrictions 4
1.4 How to score high... 4
1.5 Assumptions 5
2. System Requirements 5
2.1 General Requirements 5
2.1.1 User Interface 5
2.1.2 Data Files 5
2.1.2 External Hardware 5
2.2 Data Requirements 6
2.2.1 Categories 6
2.2.2 Products 6
2.2.6 Members 6
2.3 Functional Requirements 7
2.3.1 Payments during checkout 7
2.3.2 Member Registration 8
2.3.3 New Products Entry 8
2.3.4 Category Addition 8
2.3.5 Buying a product 8
2.3.6 Reporting 9
2.4 File Formats and Sample data 9
2.4.1 Categories 9
2.4.2 Members 9
2.4.3 Products 10
2.4.5 Transactions 11
2.4.6 Discounts and offers 11
2.4.7 Vendors 12
2.4.8 Storekeepers 12
2.4.9 Sample file 13
1. Introduction
To show your ability to create an object-oriented program, you will construct the Java application as detailed in this document.
Your work will be assessed not only on the basis of how well the program works, but also on how closely you have fulfilled the specification, how well you have structured your code. You are advised to spend some quality time in team discussions to determine a suitable design.
Assignment Requirement
Your solution should demonstrate the following. You would each be individually assessed on your solution and would be required to establish your learning and understanding of the items stated in this section with adequate theoretical/technical explanations and demonstration of codes and other artefacts during your presentation;
Req-1: Strong understanding of Programming concepts
a. Appropriate and co
ect use of language (java) constructs
. Efficient development of algorithms and optimal use of looping constructs
c. Proper structured code using static methods, constants and li
aries
d. Creation of appropriate classes based on case study description
Req-2: Create solution design based on case study specifications described here
a. Evidence of your analysis of the case description to derive appropriate design specifications using class diagrams and other UML notations.
. Define classes in java that would demonstrate accessors, modifiers, instance methods, constructors
Req-3: Comprehensive Solution Development
a. System building using concepts of aggregation of classes.
. Based needs demonstrate the use of appropriate collections (eg: a
aylist, hashmap, iterators etc.)
c. Craft reusable method signatures with appropriate arguments and return values using wrapper classes.
d. Demonstrate aggregative operations on collection using build in li
aries
Req-4: Advanced OOP concepts
a. Build class hierarchies with OO inheritance and interfaces
. Use of appropriate over-riding and over-loading of methods
c. Demonstrate polymorphic class behaviour and late binding
Req-5: UI principles
a. Use of appropriate visual components
. Event driven programming with exception handling.
Req-6: Competence in Advanced concepts
a. Use of generics
. Identification and use of design patterns
c. Practices for e
or free coding including exception handling, e
or messaging through unit and system level testing.
Deliverables and Structure
You will deliver the following:
1. A ZIP file named MITS_XXX.zip where XXX is student ID. The ZIP file will have the following folders:
· \src folder which will contain the full set of working source files for this application, i.e. the *.java files, a
anged hierarchically into folders according to their path. The system must compile and run without e
ors.
· \classes folder for the compiled classes. This will be empty (i.e. class files must not be provided in the ZIP file).
· \docs folder which will contain the Project Report (report_ XXX.doc)
a. \data folder which will contain the data files (see later sections).
Note: You should use NetBeans IDE for this Assignment. But make sure that the batch files work.
2. A Project Report named report_XXX.doc, placed in the \docs folder of the ZIP file. The report cover must clearly show the name of your team and a list of members. The report must contain:
i. UML class diagrams showing the domain classes (most important classes) of your software. The diagrams may be drawn using tools of your choice (e.g. WhiteStarUML, MS Word diagrams, scanned hand drawings, Rational Rose tool diagrams, etc.). They must show classes, their main attributes and methods (including key parameters), their relationships with roles and multiplicity, uses of inheritance, etc. No text explanation is required for the UML class diagrams.
Software Restrictions
i. You may use Standared JDK version used in class only
ii. Use JUnit 4.0
iii. Use Swing APIs for building the GUI
iv. Use Java IO APIs for manipulating data from files.
(You may only use text or binary format files. Use of any database or other APIs such as XML etc. is not permitted)
How to score high...
i. Follow the specification carefully, make the software do what it is supposed to!
ii. Ensure the application works smoothly. Fix the bugs!
iii. Make sure it’s installable: once you’ve built your ZIP file, try unpacking it on a different system, in a folder with a different name, with a JDK at a different location, and verify the batch files work properly.
iv. If you think you know how to make this application more impressive, enhance it as appropriate.
v. Participate in the IVLE forums and help others with their questions.
vi. Do not copy code. You will lose marks for direct use of code from solutions you find elsewhere, and for sharing solutions with other teams.
vii. Write test case classes for as many important classes. Test important classes thoroughly.
viii. Ensure that you create ample data to demonstrate your system
Assumptions
No system requirements can be specified completely and accurately, using only the English language. Hence please make reasonable assumptions, where requirements are ambiguous. Ensure that you have documented them in your report. Clarify with the instructor on critical doubts.
2. System Requirements
You are assigned to implement a simple point-of-sale system for automating the University Souvenir Store.
The system, operated by the store keeper, will provide facilities to make payment, replenish stock, check inventory, member registration. The present system is GUI-based, with flat files to store data.
The design of your system should be flexible enough to cater to new requirements and/or changes in the requirements.
Cu
ently there is only one user of the system - the store keeper.
2.1 General Requirements
2.1.1 User Interface
The application will be GUI-based using Java Swing APIs.
When the user starts the system, he/she is shown a login screen. Upon successful login, he/she is taken to a main menu screen in which various options are shown. This may take the user to other screens based on the option chosen. Each of the functions described below should end by returning the user to the main menu screen.
2.1.2 Data Files
The data for the inventory and users, as well as transaction records, are cu
ently stored in text-based files. The exact formats of these files is detailed in a later section. It is mandatory that you use those formats.
The data files must be read when the application starts up, and updated whenever needed (e.g. when a new member is added, etc). The system should have the cu
ent state persisted at all times, so that even anomalous termination of the application does not result in loss of data.
2.1.2 External Hardware
The system will normally use bar-code readers to obtain the product code (from the product label) and the member id (from the membership card). However, for the time being, these bar-code readers are unavailable. Operators will therefore be prompted for the codes at the console.
Similarly, there will be a receipt printer and an adhesive label printer (for printing barcode labels). For this version of the software, you should build placeholder classes for these devices, that output text to the console.
2.2 Data Requirements
2.2.1 Categories
The products are classified into categories (“clothing”,”mugs”, “stationary”, “diaries”, etc.). Each category is identified by a “category id”, which is a three-letter code (e.g. “CLO” for “clothing”). The list of categories is not hardcoded, but rather stored in a data file named Category.dat as specified in a later section; categories can therefore be added by the store keeper.
2.2.2 Products
Each physical product in the store has a “product id” that identifies it uniquely. The product id is assigned automatically by the system, and consists of the category code, followed by a slash character, and a number which is assigned sequentially to products in the same category, starting from 1. For example, the twelfth product to be registered in the “clothing” category would be assigned a product id “CLO/12”. The list of products is stored in a data file named Products.dat as specified in a later section.
2.2.3 Vendors
The University keeps a list of vendors who supply the product. Vendors related information are stored in a data file named Vendors.dat as specified in a later section.
2.2.4 Transactions
Every billing transaction should be logged in a data file named Transactions.dat as specified in a later section.
2.2.5 Discounts
Discounts and other promotional offers are stored in a