Sr. | Other Projects |
---|---|
1 | Airline Ticketing Campaign Application (NON-WEB) |
2 | Build and Deployment of Java EE Web Application (Airline Ticket Reservation) |
§ Business Requirements
- Based on the Item purchased by Customer, the Operator can select that item from the Item list displayed on the Terminal screen
- For each Customer, the system will keep record of all items per transaction and finally persist the transaction information to external file for future use.
- Display Total sell amount at any point of time
§ Download Java Source code
§ Guide to import source into Eclipse
- After authorized Operator starts the system, she will be displayed with all available Item Numbers and Description,
- Based on the Items presented by Customer, the Operator will record each item to the system
- System will record each transaction which should contains following information (TransactionId, Date[ddmmyyyy], Time[HH:min:sec], OperatorId, MachineId, CustomerId, ItemId, ItemPriceAmount)
- Persist all transactions to external file : alltransactions.csv
- Reporting function to display total sale information
- Maintain Item information in external file : itemmaster.csv
- File Specifications
- alltransactions.csv
- TransactionId : (T1)
- Date[ddmmyyyy] : (20120721)
- Time[HH:min:sec] : (17:21:45)
- OperatorId : (A007)
- MachineId : (M1)
- CustomerId : (C1)
- ItemId : (I1)
- ItemPriceAmount : (250)
- ItemPriceCurrency : (JPY)
- itemmaster.csv
- ItemId : (I1)
- ItemDescription : (Milk)
- ItemPriceAmount : (250)
- ItemPriceCurrency : (JPY)
TODO : Add authentication, add logging and auditing, add Internationalization to display UI based on the system language (For Japanese system display UI in Japanese Language, Similarly for other languages)
§ Domain Model
§ Domain Model
- Project Structure
- Source code
[itemmaster.csv]
i1,Milk,250,jpy
i2,Bread,170,jpy
i3,Water,100,jpy
[POSApp.java]
import
java.util.HashMap;
import
java.util.Iterator;
import model.Item;
import
controller.ItemManager;
import
controller.ShoppingCart;
public class POSApp {
public static void main(String[] args) {
//Load list of available item list for Operator's
reference
ItemManager
itemManager = new ItemManager();
HashMap<String, Item> itemMap = itemManager.getAllItems();
Iterator<String> iterator = itemMap.keySet().iterator();
System.out.println("-----List
of Available Items------[Item#, Description, Price, Currency]");
while (iterator.hasNext()) {
Item item
= itemMap.get(iterator.next());
System.out.println(item.printStatus());
}
System.out.println("-------------------------------");
ShoppingCart
cart = new ShoppingCart();
cart.start();
cart.checkOut();
System.out.println("Thank
you for using POS, Have a nice day !!! ");
}
}
[ItemManager.java]
package controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner;
import model.Item;
import model.Price;
public class
ItemManager {
/**
* Method to return all available Item
information after reading from underlying data source, such as file.
* @return
Map of Items in key/value pair, where key is itemId and value is other item
details
*/
public
HashMap<String, Item> getAllItems() {
HashMap<String, Item> itemMap = new HashMap<String, Item>();
//create
file object from the external file
File itemFile = new File("itemmaster.csv");
//When
reading a file it is necessary to catch Exception,
//such as
FileNotFoundException by using try-catch block.
try
{
//Use
Scanner to read external file : itemmaster.csv
Scanner scanner = new Scanner(itemFile);
//continue
the loop till the end of file
while
(scanner.hasNext()) {
//Read
record from the external file line by line
String fileRecord =
scanner.nextLine();
//split
the record based on the comma (,) delimiter
//comma
delimiter to split the string record
//into
separate string and set to array String[]
String[] fileRecordSplit =
fileRecord.split(",");
//Populate item object from
the split record read from the file
Item item = new Item();
item.setId(fileRecordSplit[0]);
item.setDescription(fileRecordSplit[1]);
//create price object to be
set later into item object
Price price = new Price();
price.setAmount(Double.parseDouble(fileRecordSplit[2]));
price.setCurrency(fileRecordSplit[3]);
item.setPrice(price);
itemMap.put(item.getId(),
item); //key is ItemId and Value is entire item Object
}
} catch
(FileNotFoundException e) {
// TODO
Auto-generated catch block
e.printStackTrace();
}
return
itemMap;
}
}
[ShoppingCart.java]
package controller;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import model.Customer;
import model.Item;
import model.Machine;
import model.Operator;
import model.Transaction;
import dao.ShoppingCartDao;
public class
ShoppingCart {
ShoppingCartDao cartDao
= new ShoppingCartDao();
/**
* Method to start Shopping process
*/
public
void start() {
int
choice = 0;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Enter [1 = Add, 2 = Delete, 0 = Exit]");
choice = scanner.nextInt();
switch(choice)
{
case
1 :
add();
break;
case
2 :
Scanner sc = new Scanner(System.in);
System.out.println("Enter
Item id to be removed = ");
String itemId = sc.next();
delete(itemId);
break;
case
0 :
break;
default:
System.out.println("Invalid
choice.");
}
} while
(choice != 0);
}
//DAO = Data Access object
//csv = Comma Separate Value
public
void add() {
//TODO:
do validation if any
cartDao.create();
}
/**
* Method to prepare final transaction
details and print the receipt on the screen
*/
public
void checkOut() {
//TODO:
do validation if any
ArrayList<String> itemIds = cartDao.read();
//Create details of each item based on
the item id
ArrayList<Item> purchaseditems = cartDao.loadItemDetails(itemIds);
double
total = 0;
System.out.println("++++++ List of items purchased ++++++");
for
(Item item : purchaseditems) {
total = total + item.getPrice().getAmount();
System.out.println(item.printStatus());
}
System.out.println("-----------------------------------");
System.out.println("Total amount : " + total);
System.out.println("+++++++++++++++++++++++++++++++++++");
//record the transaction to external
persistent file
recordTransaction(purchaseditems);
}
//method to persist transaction details
to external file for further usage
private
void recordTransaction(ArrayList<Item>
purchaseditems) {
//create Transaction
Transaction transaction = new Transaction();
transaction.setId("T-788"); //TODO:
write a method to generate unique Id for each transaction
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy
HH:mm:ss");
transaction.setDate(dateFormat.format(new Date()));
Operator operator = new Operator();
operator.setId("O-005");
transaction.setOperator(operator);
Machine machine = new Machine();
machine.setId("M-101");
transaction.setMachine(machine);
//create and set customer
Customer customer = new Customer();
customer.setId("C-101");
//TODO: write a method to generate unique
Customer Id for each customer transaction
transaction.setCustomer(customer);
//Convert from ArrayList of item to the
Array of item objects
Item[] items = purchaseditems.toArray(new Item[purchaseditems.size()]);
transaction.setItems(items);
//save transaction to external file
try
{
FileWriter writer = new FileWriter("alltransaction.csv", true); //set true for append mode
BufferedWriter bufferedWriter =new
BufferedWriter(writer);
for (Item item : items) {
bufferedWriter.write(transaction.getId());
bufferedWriter.write(",");
bufferedWriter.write(transaction.getDate());
bufferedWriter.write(",");
bufferedWriter.write(transaction.getOperator().getId());
bufferedWriter.write(",");
bufferedWriter.write(transaction.getMachine().getId());
bufferedWriter.write(",");
bufferedWriter.write(transaction.getCustomer().getId());
bufferedWriter.write(",");
bufferedWriter.write(item.getId());
bufferedWriter.write(",");
//convert double to string before writing to file
//convert double to string before writing to file
bufferedWriter.write(String.valueOf(item.getPrice().getAmount()));
bufferedWriter.write("\n");
}
bufferedWriter.flush();
bufferedWriter.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public
void delete(String itemId) {
//TODO:
do validation if any
cartDao.delete(itemId);
}
}
[ShoppingCartDao.java]
package dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
import model.Item;
import controller.ItemManager;
public class
ShoppingCartDao {
//CRUD , Create, Read, Update, Delete
//Data Source
//Load items to in memory storage using
ArrayList
static
ArrayList<String> itemIdList = new ArrayList<String>();
/**
* Add item id to itemIdList ArrayList
*/
public
void create() {
Scanner scanner = new Scanner(System.in);
String itemId = "0";
do {
//Prompt to Operator !!!
System.out.println("Enter ItemId, [0 = Exit] : ");
itemId = scanner.next();
//do not add itemId as 0 (zero)
if
(!itemId.equals("0")) {
itemIdList.add(itemId);
}
} while
(!itemId.equals("0"));
}
/**
* Return list of Item ids of the
items purchased by customers
* @return
array list of item ids
*/
public
ArrayList<String> read() {
return
itemIdList;
}
/**
* TODO :
Implement this method if necessary
*/
public
void update() {
}
/**
* Delete item id from the
itemIdList
* @param
itemid the id to be removed from the list
*/
public
void delete(String itemid) {
itemIdList.remove(itemid);
}
/**
* Method to create item objects based
on list of item Ids
* @param
itemIds ids of the item to be populated with all necessary details such
as Description, Price
* @return
items with details
*/
public
ArrayList<Item> loadItemDetails(ArrayList<String> itemIds) {
ArrayList<Item> purchasedItemList
= new ArrayList<Item>();
//read all the available item map
ItemManager itemManager = new ItemManager();
HashMap<String,Item> allItems =
itemManager.getAllItems();
for
(int i = 0; i < itemIds.size(); i++) {
purchasedItemList.add(allItems.get(itemIds.get(i)));
}
return
purchasedItemList;
}
}
[Customer.java]
package model;
public class Customer {
private String id;
public String getId() {
return id;
}
public void
setId(String id) {
this.id = id;
}
}
[Item.java]
package model;
public class Item {
private Price price;
private String id;
private String description;
public Price getPrice() {
return price;
}
public void
setPrice(Price price) {
this.price =
price;
}
public String getId() {
return id;
}
public void setId(String
id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void
setDescription(String description) {
this.description
= description;
}
/**
* Method to
return current state of this Object instance
* (can be also
achieved by overriding toString() method of Object class)
* @return
current state of this object properties
*/
public String printStatus() {
return id
+ "," +
description + ","
+
price.getAmount() + ","
+
price.getCurrency()
;
}
}
[Machine.java]
package model;
public class Machine {
private String id;
private String model;
private String vendor;
public String getId() {
return id;
}
public void
setId(String id) {
this.id = id;
}
public String getModel() {
return model;
}
public void
setModel(String model) {
this.model =
model;
}
public String getVendor() {
return vendor;
}
public void
setVendor(String vendor) {
this.vendor =
vendor;
}
}
[Operator.java]
package model;
public class Operator {
private String id;
public String getId() {
return id;
}
public void
setId(String id) {
this.id = id;
}
}
[Price.java]
package model;
public class Price {
private double amount;
private String currency;// JPY, USD
public double
getAmount() {
return amount;
}
public void
setAmount(double amount) {
this.amount =
amount;
}
public String getCurrency() {
return currency;
}
public void
setCurrency(String currency) {
this.currency =
currency;
}
}
[Transaction.java]
package model;
public class Transaction {
private String id;
private Operator operator;
private Machine machine;
private Customer customer;
private String date;
private Item[] items;
public String getDate() {
return date;
}
public void
setDate(String date) {
this.date =
date;
}
public Item[] getItems() {
return items;
}
public void
setItems(Item[] items) {
this.items =
items;
}
public String getId() {
return id;
}
public void
setId(String id) {
this.id = id;
}
public Operator getOperator() {
return operator;
}
public void
setOperator(Operator operator) {
this.operator =
operator;
}
public Machine getMachine() {
return machine;
}
public void
setMachine(Machine machine) {
this.machine =
machine;
}
public Customer getCustomer() {
return customer;
}
public void
setCustomer(Customer customer) {
this.customer =
customer;
}
}
================================================
Output
================================================
- Finally, run POSApp application and provide values as shown in green colour below, it will also generate alltransactions.csv file.
Output
-----List of Available Items------[Item#, Description, Price, Currency]
i3,Water,100.0,jpy
i2,Bread,170.0,jpy
i1,Milk,250.0,jpy
-------------------------------
Enter [1 = Add, 2 = Delete, 0 = Exit]
1
Enter ItemId, [0 = Exit] :
i2
Enter ItemId, [0 = Exit] :
i3
Enter ItemId, [0 = Exit] :
i2
Enter ItemId, [0 = Exit] :
i1
Enter ItemId, [0 = Exit] :
0
Enter [1 = Add, 2 = Delete, 0 = Exit]
0
++++++ List of items purchased ++++++
i2,Bread,170.0,jpy
i3,Water,100.0,jpy
i2,Bread,170.0,jpy
i1,Milk,250.0,jpy
-----------------------------------
Total amount : 690.0
+++++++++++++++++++++++++++++++++++
Thank you for using POS, Have a nice day !!!
================================================
For Source Download Please check link at top of this blog.
================================================
I am very thankful to all your team for sharing such inspirational information about POS System.
ReplyDeleteSome POS system are referred to as Retail Management System which I think is much better.
ReplyDeletePOS System
When i am running these source code ,this is not printing water,bread and price and currencies like stuffs .What is the problem??Thank you in advance.
ReplyDeletePlease check project structure section at top, the itemmaster.csv file might be missing. Please copy error details.
ReplyDeleteI am very thankful to all your team for sharing such inspirational information about point of sale system.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteException in thread "main" java.lang.NullPointerException
ReplyDeleteat Controller.ShoppingCart.checkOut(ShoppingCart.java:75)
at POSApp.main(POSApp.java:27)
I'm getting this error. why is this?
Exception in thread "main" java.lang.NullPointerException
ReplyDeleteat Controller.ShoppingCart.checkOut(ShoppingCart.java:75)
at POSApp.main(POSApp.java:27)
I'm getting this error. why is this?
Please create itemmaster.csv under POS project, with following contents,
Deletei1,Milk,250,jpy
i2,Bread,170,jpy
i3,Water,100,jpy
Please refer to top of this post.
getting this error had create itemmaster.csv
ReplyDeleteException in thread "main" java.lang.NullPointerException
at controller.ShoppingCart.checkOut(ShoppingCart.java:75)
at pos1.POSApp.main(POSApp.java:31)
Please download source and import it into Eclipse and retry. (For download link please check at the top of this blog.)
ReplyDeletethanks it works perfectly don`t know what was the problem when I was copying the code
ReplyDeletethanks.this is very nice article.your information is very usefully for pos pos system
ReplyDeleteNice information and easy to use thanks for sharing this post.
ReplyDeletePos Solutions
Great article thanks for sharing this useful information. Point of sale
ReplyDeleteThanks for sharing about pos software...keep sharing...
ReplyDeleteIt is great post it shares lot of information...thank you.
ReplyDeletepoint of sale software for Retail Billing, Inventory & Accounting Management, Free Download Marg POS System software, 6 Lakh+ MARG users, 500+ Sales/Support centers, Stocks, Accounts, Vat/e-Return and TDS, India.
This is the Great article about your gift registry system. Sale System For Retail Its pretty interesting.Thanks for this wonderful post...
ReplyDeleteThanks for sharing such a nice article. epos i love your useful post for us. your idea is mind blowing that's why i would like to appreciate your work.
ReplyDeleteThanks for sharing the Java Code for developing POS system. This will help students for doing new in their Java field. I really appreciate your work.
ReplyDeleteExtra Insights
very Interesting and useful information. EPOS System Uk you have shared and keep sharing the blogs....
ReplyDeleteThis blog on Epos Software will make us more EPOS SOFTWARE Uk aware of its benefits, usage and how its working for every business..
ReplyDeleteThe Most company are like this epos software. Epos System it is easy way to keep the customer information.
ReplyDeleteI am very thankful to all your team pos system for sharing such inspirational information about bar EPOS system.
ReplyDeleteThank full , EPOS Systems UK he was new Way to help to us to get the business running sucessfull.
ReplyDeleteWonderful post, pos system for retail thankful to all your team for sharing such best information about POS systems.
ReplyDeleteIts really a great post, thanks for sharing, More useful Small or any business epos system system and its to good for business.
ReplyDeleteThanks a lot for that information to share. epos system That was a really Interesting post and I would really like to know more and more.
ReplyDeleteThanks for review, it was excellent and very informative. Please Visit:
ReplyDeletepharmacy software
retail systems
pos cash register
Thanks for sharing a nice post. epos systems It's been really informative and helped me a lot. Keep posting more posts.
ReplyDeleteHello I am so happy with your blog site,Thanks for sharing the article. Please Visit:
ReplyDeletepos cash register
cafe pos systems
retail systems
The depth of articles can easily be felt of this blog. Very precise and straight to the mark. I understood easily the matter of fact which the author of this blog wanted to deliver through his thoughts. Looking for more.ระบบ POS
ReplyDeleteI know the desktop Best Point of Sale which can be operate through web and exe at a time, simple faster and dynamic.
ReplyDeleteHi,
ReplyDeleteThanks for sharing a very interesting article about Developing POS (Point Of Sales) System using Java. This is very useful information for online blog review readers. Keep it up such a nice posting like this.
From,
Prabhu,
POS Billing Software
point of sale systems for small business
ReplyDeleteKeep up with latest updates on EPOS system point of sale, with iOS and Android support coming soon. Restaurants, coffee shops, bars, retail, street food
Thanks for giving important information
ReplyDeleteLooking for to buy POS check it out @
Bridge POS
The post is quite informative point of sale software Keep posting blogs of restaurant billing software and resturant management software
ReplyDeleteYour post is extremely helpful. epos system I will keep following. Thank you for sharing this information.
ReplyDeleteThanks a lot for that information. epos software That was a really Intresting post and I would really like to know more.
ReplyDeleteI really appreciate your effort of writing such a informative post and sharing with us. Keep up the good work.
ReplyDeleteThank you for Sharing this great post, epos software I'll follow you from now so i can read all of your posts.
ReplyDeleteWhat IDE did you use I'm Netbean but still nothings working please help
ReplyDeleteThanks for your great information.Keep updating more information from your blog.I will be waiting for your next post. retail management software | retail management software | restaurant management system
ReplyDeleteNice blog, very interesting to read
ReplyDeleteI have bookmarked this article page as i received good information from this.
Best POS Software in India | POS Software for Retail Stores in Hyderabad
cloud based erp software in
hyderabad | cloud erp
software
Intelepos is offering a simple but effective Epos System for Takeaway to manage your entire business smoothly. It will help you to learn about the customers’ requirements and preferences. Our Epos has the following features:
ReplyDeleteReal-time order tracking
Daily, weekly, and monthly sales report
Manage your staff
Epos system for takeaway
Epos system and Software for takeaway
This is great blog keep it up. epos market I read all your article and I really like it.Thanks for sharing.
ReplyDeleteThis is a good post. This post gives truly quality information. I’m definitely going to look into it. Really very useful tips are provided here. Thank you so much. Keep up the good works http://home2bis.com/sales-course/
ReplyDeleteIts good to be here, very nice post, the content is amazing, keep posting friend it will be very helpful for everyone, Thanks for sharing. I really liked it.
ReplyDeleteThanks And Regards POS Systems For Coffee Shops.
Great post I really appreciate this post it seems that there's a lot of interesting on this site I will bookmark your page for more new updates on your site. keep it up.
ReplyDeleteRetail Management System
Hi, I get this error when running the application "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1" any idea how to fix it?
ReplyDeleteThanks for sharing such beautiful information with us.
ReplyDeleteI hope you will share some more info about point of sale systems. Please Keep Sharing!
Point Of Sale Software
Certification is the basement of any Salesforce professional's skill. It is the best way to represent your level of skill and areas of expertise to current employer. Salesforce training in Chennai
ReplyDeleteDon’t get too caught up on manning your exhibition booth or constantly looking for someone to pitch your ideas. Give your throat and ankles a rest. And most importantly, stay hydrated and nourished! Take shifts and rotate between your team. event management and free online registration software
ReplyDeleteAmazing article!
ReplyDeletePayment Processing, Cloud Merchant System, Cloud POS, & Business Management Software
• No contract. No monthly fees.
• Unique systems to fit your industry needs
• Retail & Restaurant Options
• Online Store
• Ticketing & Services Option
• Personalized Customer Support
• With No Contracts
Completely customizable technology with customer relationship & Inventory Management.
The point of sale system or POS system is where the customer makes the payments against the goods or services offered by the company. Growing adoption for contactless payments and the propagation of Near Field Communication (NFC) devices in the industrial environment, has led to a roll in the adoption of integrated POS terminals.https://www.valuemarketresearch.com/report/point-of-sale-pos-system-market
ReplyDeleteRetail is a tough market. Successful retail businesses are able to closely monitor inventory, adapt to their profit and loss to keep high margin merchandise in stock and keep their employees running off a good system that allows them to sell goods but also track their respective performance. Sky does all of the above.
ReplyDeleteOur Retail POS are designed to address the challenges of Small & Independent Aspirants, Retailers and large multi-store Retail Chains. Their sector specific orientation, built using latest technologies, assure retailers 'a visible improvement' in customer engagement, by helping them source the right product at right price at the right time.
Retail POS Software in UAE, Single Lisence Software in UAE, Cashiers Software in UAE
ReplyDeletehttps://gccgamers.com/retail-pos-software.html
Retail Software in UAE, Safe Shopping Multiple Payment Options Express Delivery GCC Gamers Moneyback Guarantee.
1634611551066-10
epos till system for a restaurant in the UKEPOS software, Electronic Point of Sale systems
ReplyDeleteepos system for retail shopA retail EPOS system, or Electronic Point-of-Sale system
Hi there!
ReplyDeleteI had a very nice experience in your blog, actually I found this post explanatory and informative, keep sharing the best content
regards
Salvatore from Visite as Cataratas do Iguaçu em Foz do Iguaçu, Paraná - Brasil.
Thanks and take care
perde modelleri
ReplyDeleteSms onay
TÜRK TELEKOM MOBİL ÖDEME BOZDURMA
HTTPS://NFTNASİLALİNİR.COM
ankara evden eve nakliyat
trafik sigortası
dedektor
web sitesi kurmak
Ask kitaplari
This comment has been removed by the author.
ReplyDeleteThose who work in the retail industry are aware of the importance of employing sound business methods. There are a lot of things that need to be done in order to keep your retail shop chain, whether it be an offline or an online one, on the right track in order to ensure the success of your company. Your company can improve its efficiency, provide a better experience for its customers, and simplify its operations with effective Retail Management Software.
ReplyDeleteGreat post! Thanks. Looking for the best ERP system? Click on this link!
ReplyDeleteLooking for the best billing software in India? Sleek Bill offers top-notch online billing software with a user-friendly interface. Easily create, customize, and print invoices, then send them via sharable link or email. Enjoy premium online GST billing with us. https://sleekbill.in/
ReplyDelete