สวัสดีครับ ด้วยบทความ [Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 1 ผู้เขียนได้ลองออกแบบและพัฒนา POS ด้วย bash Linux Command ที่เกิดจากแรงบันดาลใจ จากใบเสร็จรับเงินจึงได้ลองออกแบบดูว่าสามารถพัฒนาได้หรือไม่ ผลก็ออกมาว่าสามารถใช้งานได้ในระดับหนึ่ง แต่ก็ยังติดปัญหาในเรื่องของการเก็บข้อมูล จึงได้พัฒนาต่อในภาษา java เพราะว่าผู้เขียนจะได้เอา โปรแกรมโครงสร้างข้อมูลที่มีอยู่แล้วมาพัฒนาการเก็บข้อมูลได้ทันที ไม่ต้องพัฒนา ในส่วนของ bash ให้เสียเวลาจึงได้บทที่ 2 ออกมา เป็นที่มาของชื่อที่บอกว่าเอามาเปรียบเทียบกันระหว่างสองภาษานี้นั่นเอง เพราะไม่ต้องมาพัฒนาในส่วนที่ยังทำไม่ได้ให้เสียเวลา อาจจะนานจน หมดกำลังใจทำต่อเลยก็ได้
[Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 2
แต่ด้วยโปรแกรมยังไม่เป็นที่พอใจสำหรับผู้เขียน จึงต้องพัฒนาต่อๆไป เท้าความในบทที่ 2 คือผู้เขียนได้พัฒนา ในรูปแบบ การป้อนข้อมูลสินค้าจาก user ทุกครั้งที่มีการเริ่มต้นโปรแกรมใหม่ทุกๆครั้ง โดยไม่มีการเก็บข้อมูลสินค้า แล้วสามารถที่จะเลือกมาใช้ได้ในทันที ในบทความนี้จึงพัฒนาโปรแกรมต่อในส่วนของ การเก็บข้อมูลด้วย ผู้อ่านและผู้ที่สนใจจำเป็นจะต้องมีความรู้โครงสร้างข้อมูลเป็นพื้นฐานในการอ่านโค๊ดโปรแกรมด้วย และโปรแกรม ได้แบ่ง โปรแกรมออกเป็นส่วนให้เลือกใช้ ได้แก่การเพิ่ม ข้อมูลสินค้า (add) แสดงรายการลิสสินค้า (show) และ นำรายการสินค้ามาเลือกด้วย ID ข้อมูลสินค้านั้นมาคำนวน (cal) ไหนๆก็เปลี่ยนมาพัฒนาทางภาษา java แล้วก็เปลี่ยนชื่อบทความไปเลยแต่ ยังเป็นบทความยาวต่อเนื่องอยู่ครับ ก่อนอื่นมาดู flowchart ที่ผู้เขียนออกแบบไว้กันก่อน
ภาพที่ 1
ภาพที่ 2
ภาพที่ 3
ภาพที่ 4
ในการออกแบบนั้น เมื่อได้ลองทำตามกับที่ออกแบบเอาไว้ ก็จะรู้ได้ว่าปัญหานั้นเยอะมาก ไม่สามารถทำตามที่คิดไว้ได้อย่างสมบูรณ์ จึงต้องเปลี่ยนแปลงไปตามความเหมาะสม
มาลองอ่านโค๊ด ตัวอย่างกัน ปล. ใส่โปรแกรมที่ช่วยให้ดูโค๊ดง่ายๆแล้ว แต่ทำไม่มันเปลี่ยน... T T เศร้าแปป
ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส
โค๊ดตัวอย่าง
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.rmi.server.ExportException;
import java.util.Scanner;
public class javaPOSSLT2 {
Node newNode;
static Node head ;
static Node curr;
Node prev;
static String record;
static String amoun;
//เพิ่มโหนดในลิ้งลิสท์
public void add(Object newId,Object newItem,Object newPrice){
if(head==null){
newNode = new Node(newId,newItem,newPrice);
}
else {
newNode = new Node( newId,newItem, newPrice, head);
}
head = newNode;
}
//ค้นหาข้อมูลในลิ้งลิสซ์
public boolean searchItem(Object id,Object item, Object price){
curr = head ;
prev = null ;
boolean status = false;
while(curr != null){
Object[] Arr = null;
if(curr.getItem() == Arr){
status = true;
break;
}else{
prev = curr;
curr = curr.getNext();
}
}
if(status){
return true;
}else{
return false;
}
}
//ลบข้อมูลในลิส
public void deleteNode(Object id,Object item, Object price){
if(searchItem(id,item, price)){
if(prev == null){
head = curr.getNext();
}else{
prev.setNext(curr.getNext());
}
}else{
System.out.println("Not found Item");
}
}
//แทรกโหนดในลิส
public void insert(Object iteminsert, Object newId,Object newItem,Object newPrice){
newNode = new Node(newId,newItem, newPrice);
if(searchItem(iteminsert,newId, newPrice)){
if(prev == null){
newNode.setNext(curr);
head = newNode;
}else {
newNode.setNext(curr);
prev.setNext(newNode);
}
}else{
if (head == null){
newNode.setNext(curr);
head = newNode;
}else if(curr == null){
prev.setNext(newNode);
}
}
}
//แสดงข้อมูลในลิส
public Object[] showdata(){
Object[] Arr = null;
curr = head;
while (curr != null){
Arr = curr.getItem();
System.out.print(Arr[0]);
System.out.print(" " + Arr[1]);
System.out.print(" " + Arr[2]);
System.out.println();
System.out.println();
curr = curr.getNext();
}
System.out.println();
return Arr ;
}
public Object[] data(){
Object[] Arr = null;
curr = head;
while (curr != null){
Arr = curr.getItem();
curr = curr.getNext();
}
System.out.println();
return Arr ;
}
public static Object[] record_sale(){
javaPOSSLT2 Item = new javaPOSSLT2();
String in_id = Item.id_return();
String in_amount = Item.amount_return();
Object Arr[] = null;
curr = head;
while (curr != null){
Arr = curr.getItem();
if(Arr[0].equals(in_id)){
System.out.print(Arr[1]);
System.out.print(" " + Arr[2]);
System.out.print(" " + in_amount);
}
curr = curr.getNext();
}
System.out.println();
return Arr ;
}
private String id_return() {
// TODO Auto-generated method stub
return record;
}
public static void id_return(String id_i){
record = id_i;
}
private String amount_return() {
// TODO Auto-generated method stub
return amoun;
}
public static void amount_return(String amount_i){
amoun = amount_i;
}
static int plus = 0;
static int money = 0;
@SuppressWarnings("static-access")
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
javaPOSSLT2 Item = new javaPOSSLT2();
javaPOSSLT2 export = new javaPOSSLT2();
System.out.println("ยินต้อนรับเข้าสู่โปรแกรม POS By SheepCode Version1.3");
while(plus != 1){
System.out.print("เลือกโปรแกรม ?");
Scanner y = new Scanner(System.in);
String program = y.nextLine();
switch(program){
//เพิ่มสินค้า
case "add": // เพิ่มชื่อสินค้า
System.out.println("กรุณาป้อนป้อนรหัสสินค้า");
System.out.print("รหัสสินค้า :");
Scanner d = new Scanner(System.in);
String id = d.nextLine();
System.out.println("กรุณาป้อนชื่อสินค้า");
System.out.print("ชื่อสินค้า :");
Scanner i = new Scanner(System.in);
String item = i.nextLine();
System.out.println("กรุณาป้อนราคาสินค้า");
System.out.print("ราคาสินค้า :");
Scanner p = new Scanner(System.in);
String price = p.nextLine();
Item.add(id, item,price);
break;
case "show" :
System.out.println("แสดงรายชื่อสินค้า........");
System.out.println("id "+"ชื่อสินค้า " +"ราคาสินค้า ");
Item.showdata();
break;
case "cal" :
int sum = 0;
int price2 = 0;
int check_loop = 1 ;
String price1 ;
while (check_loop != 0){
System.out.print("ป้อนไอดีสินค้า:");
Scanner id_in = new Scanner(System.in);
String id_i = id_in.nextLine();
Object Arr[] = Item.data();
curr = head;
while (curr != null){
Arr = curr.getItem();
if(Arr[0].equals(id_i)){
System.out.print("ป้อนจำนวนสินค้า :");
Scanner amount = new Scanner(System.in);
String amount_i = amount.nextLine();
Item.id_return(id_i);
Item.amount_return(amount_i);
price1 = (String) Arr[2] ;
int amount_int = Integer.parseInt(amount_i);
int price1_int = Integer.parseInt(price1);
price2 = amount_int * price1_int ;
sum = sum + price2 ;
}
curr = curr.getNext();
}
System.out.println("ชื่อสินค้า " +"ราคาสินค้า "+"จำนวนสินค้า");
Item.record_sale();
System.out.print("ใส่ข้อมูลเพิ่มหรือไม่ :");
Scanner check_y = new Scanner(System.in);
String check = check_y.nextLine();
if(check.equals("yes")){
check_loop = 1;
}else{
check_loop = 0;
}
}
System.out.print("รับเงินมาจำนวน :");
Scanner money = new Scanner(System.in);
int money_in = money.nextInt();
double net = sum/1.07;
double vat = sum - net ;
int change = money_in - sum;
System.out.println("NAME : Sheep Code Service");
System.out.println("BRANCH : Sheep baby");
System.out.println("TEL : 02-123-4567");
System.out.println("NUMBER : ID9999999999");
System.out.println("RECEIP : SKLSheepCode");
System.out.println("ราคารวม : " + sum + " บาท");
System.out.println("ราคาสุทธิ : " + net + " บาท");
System.out.println("ภาษี: " + vat + " บาท");
System.out.println("เงินที่ได้รับจากลูกค้า: " + money_in + " บาท");
System.out.println("เงินทอน : " + change + " บาท");
break;
}
System.out.print("คุณต้องการออกจากโปรแกรมหรือไม่ ?");
Scanner z = new Scanner(System.in);
String zes = z.nextLine();
if (zes.equals("yes") ){
plus = 1;
}else{
plus = 0;
}
}
System.out.print("Bye Bye");
}
}
ผลการทดสอบและผลลัพท์ โค๊ดที่ได้ออกแบบ
เริ่มโปรแกรม
โปรแกรม add
สามารถที่จะป้อน รหัสสินค้าเท่าไรก็ได้เท่าที่เราใส่ จากตัวอย่างนี้ ผู้เขียน ใส่ไว้แค่ สามอย่าง
ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส
โปรแกรม show
โปรแกรม Cal
ในส่วนโปรแกรม cal ผู้ใช้สามารถที่จะเลือก ID ของสินค้าที่ใส่เอาไว้ออกมา จากนั้น ก็ ใส่จำนวน สินค้า เสร็จเรียบร้อย โปรแกรมจะถามต่อว่า ใส่ข้อมูลเพิ่มหรือไม่ ถ้าตอบ yes ก็จะใส่เพิ่มเติม แต่ถ้า no โปรแกรมจะเข้าสู่การคำนวนราคา และ แสดงผล ออกมาให้เราเห็นด้านล่าง
บ๊าย บาย