mits
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 corruption, 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 © 2015-2018 VIT, All Rights Reserved. Page 2 Table of Contents 1.Introduction3 1.1Assignment Requirement3 1.2Deliverables and Structure4 1.3Software Restrictions4 1.4How to score high...4 1.5Assumptions5 2. System Requirements5 2.1General Requirements5 2.1.1 User Interface5 2.1.2 Data Files5 2.1.2 External Hardware5 2.2 Data Requirements6 2.2.1 Categories6 2.2.2 Products6 2.2.6 Members6 2.3Functional Requirements7 2.3.1 Payments during checkout7 2.3.2 Member Registration8 2.3.3 New Products Entry8 2.3.4 Category Addition8 2.3.5 Buying a product8 2.3.6 Reporting9 2.4File Formats and Sample data9 2.4.1 Categories9 2.4.2 Members9 2.4.3 Products10 2.4.5 Transactions11 2.4.6 Discounts and offers11 2.4.7 Vendors12 2.4.8 Storekeepers12 2.4.9 Sample file13 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 correct use of language (java) constructs b. Efficient development of algorithms and optimal use of looping constructs c. Proper structured code using static methods, constants and libraries 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. b. 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. b. Based needs demonstrate the use of appropriate collections (eg: arraylist, 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 libraries Req-4: Advanced OOP concepts a. Build class hierarchies with OO inheritance and interfaces b. 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 b. Event driven programming with exception handling. Req-6: Competence in Advanced concepts a. Use of generics b. Identification and use of design patterns c. Practices for error free coding including exception handling, error 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, arranged hierarchically into folders according to their path. The system must compile and run without errors. · \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. Currently 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 currently 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 current 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