개인 프로젝트를 진행하였다
프로젝트는 기획안을 작성하고
그에 따른 프로그램을 구현하는것이다
나는 ERP 시스템을 구현하기로 하였다
<기획안>
자바 개인 프로젝트
프로젝트 기획안
작성자: 남정욱
프로젝트 명 : 자재 관리 프로그램
기획 의도
기업에서 제품의 판매 혹은 구매가 이루어졌을때 제품들의 재고를 관리할수있는 프로그램 현장에서 근무를 했을때 재고 관리가 부실한 경우를 많이 보았고 이를 보완하기위해 입고 및 출고를 한번에 관리하고 직관적으로 볼수있는 프로그램을 만들어야겠다고 생각하였다 제품 입고시 제품을 등록하면 재고수량이 증가 하고 출고시에 감소하며 제품의 구매 단가와 판매 단가 재품 출고시의 수익률을 볼수 있고 제품의 거래처를 한번에 볼수 있습니다
벤치마킹
Econt ERP 의 재고관리 프로그램 제품의 등록과 구매단가 판매 단가등을 입력 재고를 관리할수있음
주요 기능
입고 관리
- 제품 등록
- 입고 일자
- 입고지
출고 관리
- 출고 일자
- 출고지
자재 정보
-제품 리스트
-제품 스펙
-구매가
-판매가
-수익율
재고 관리
-입고
-출고
<메인 컨트롤>
package NewProject;
import NewProject.Common.CommomVariables;
import NewProject.Service.MemberService;
import NewProject.Service.ProductService;
import NewProject.Service.ReleaseService;
import java.util.Scanner;
public class InventoryMamagementSystemMain {
public static void main(String[] args) {
ProductService productService = new ProductService();
Scanner scanner = new Scanner(System.in);
CommomVariables commomVariables = new CommomVariables();
MemberService memberService = new MemberService();
ReleaseService releaseService = new ReleaseService();
int seletNo = 0;
boolean run = true;
boolean run2= true;
boolean run3 = true;
boolean run4 = true;
while (run) {
System.out.println("로그인 단계");
System.out.println("1.로그인 | 2.사원 등록 | 3.사원 정보 수정 | 4.입출고 관리 | 5.로그아웃");
System.out.print("선택> ");
seletNo = scanner.nextInt();
if (seletNo == 1) {
memberService.memberLogin();
} else if (seletNo == 2) {
memberService.memberSave();
} else if (seletNo == 3) {
memberService.memberUpdate();
} else if (seletNo == 4) {
if (commomVariables.LoginName == null)
System.out.println("로그인후 이용해주세요");
if (commomVariables.LoginName != null) {
while (run2) {
int num = 0;
System.out.println("입출고 관리");
System.out.println("1.입고 관리| 2.출고 관리 | 0.뒤로 가기");
System.out.print("선택> ");
num = scanner.nextInt();
if (num == 1) {
while (run3) {
int num2 = 0;
System.out.println("입고 관리");
System.out.println("1.제품 등록 | 2.제품 목록 | 3.제품 검색 | 0. 뒤로가기");
System.out.print("선택> ");
num2 = scanner.nextInt();
if (num2 == 1) {
productService.ProductSave();
} else if (num2 == 2) {
productService.ProductList();
} else if (num2 == 3) {
productService.ProductSearch();
} else if (num2 == 0) {
break;
}
}
} else if (num == 2) {
while (run4) {
int num3 =0;
System.out.println("출고 관리");
System.out.println("1.제품 출고 | 2.출고 리스트 | 3.상품 검색 | 4.총 판매액 | 0.돌아 가기");
System.out.print("선택> ");
num3 = scanner.nextInt();
if (num3 == 1){
releaseService.ProductSell();
} else if (num3 == 2) {
releaseService.SellList();
} else if (num3 == 3) {
releaseService.SellSearch();
} else if (num3 == 4) {
releaseService.SellRevenue();
} else if (num3 == 0) {
break;
}
}
}
}
} else if (seletNo == 5) {
memberService.logOut();
}
}
}
}
}
<필드값>
package NewProject.DTO;
public class MemberDTO {
private Long id;
private int MemberId;
private String MemberName;
public void setId(Long id) {
this.id = id;
}
public void setMemberId(int memberId) {
MemberId = memberId;
}
public void setMemberName(String memberName) {
MemberName = memberName;
}
public Long getId() {
return id;
}
public int getMemberId() {
return MemberId;
}
public String getMemberName() {
return MemberName;
}
public MemberDTO(){
}
Long idValeu = 1L;
public MemberDTO(String MemberName , int MemberId){
this.id = idValeu++;
this.MemberName = MemberName;
this.MemberId = MemberId;
}
@Override
public String toString() {
return "MemberDTO{" +
"id=" + id +
", MemberId=" + MemberId +
", MemberName='" + MemberName + '\'' +
'}';
}
}
로그인 및 사원 등록을 위한 필드
package NewProject.DTO;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class ProductDTO {
private Long id;
private String productName; // 상품 이름
private int ProductQuantity; // 상품 수량
private String ProductFrom; // 구매처
private String createdAt; // 입고 시간
private int purchasePrice; // 구매 단가
private int Buy;
public void setId(Long id) {
this.id = id;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setProductQuantity(int productQuantity) {
ProductQuantity = productQuantity;
}
public void setProductFrom(String productFrom) {
ProductFrom = productFrom;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public void setPurchasePrice(int purchasePrice) {
this.purchasePrice = purchasePrice;
}
public Long getId() {
return id;
}
public String getProductName() {
return productName;
}
public int getProductQuantity() {
return ProductQuantity;
}
public String getProductFrom() {
return ProductFrom;
}
public String getCreatedAt() {
return createdAt;
}
public int getPurchasePrice() {
return purchasePrice;
}
public int getBuy() {
return Buy;
}
public void setBuy(int buy) {
Buy = buy;
}
public ProductDTO(){
}
Long idValue = 1L;
public ProductDTO(String productName, int productQuantity, String productFrom, int purchasePrice){
this.id = idValue++;
this.productName=productName;
this.ProductQuantity = productQuantity;
this.ProductFrom = productFrom;
this.purchasePrice = purchasePrice;
this.Buy = productQuantity * purchasePrice;
this.createdAt = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss"));
}
@Override
public String toString() {
return "ProductDTO{" +
"id=" + id +
", productName='" + productName + '\'' +
", ProductQuantity=" + ProductQuantity +
", ProductFrom='" + ProductFrom + '\'' +
", purchasePrice=" + purchasePrice +
", Buy=" + Buy +
", createdAt='" + createdAt + '\'' +
'}';
}
}
제품 구매 및 등록을 위한 필드
package NewProject.DTO;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class ReleaseDTO {
private Long id;
private String productName; // 상품 이름
private int SalesQuantity; // 판매 수량
private String SellTo; // 판매처
private String createAt; // 판매 시간
private int SellPrice; // 판매 가격
private int SellRevenue; // 수익
public void setSellRevenue(int sellRevenue) {
SellRevenue = sellRevenue;
}
public int getSellRevenue() {
return SellRevenue;
}
public void setId(Long id) {
this.id = id;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setSalesQuantity(int salesQuantity) {
SalesQuantity = salesQuantity;
}
public void setSellTo(String sellTo) {
SellTo = sellTo;
}
public void setCreateAt(String createAt) {
this.createAt = createAt;
}
public void setSellPrice(int sellPrice) {
SellPrice = sellPrice;
}
public Long getId() {
return id;
}
public String getProductName() {
return productName;
}
public int getSalesQuantity() {
return SalesQuantity;
}
public String getSellTo() {
return SellTo;
}
public String getCreateAt() {
return createAt;
}
public int getSellPrice() {
return SellPrice;
}
ReleaseDTO(){
}
Long idValue = 1L;
public ReleaseDTO(String productName, int salesQuantity, String sellTo, int sellPrice){
this.id = idValue++;
this.productName = productName;
this.SalesQuantity = salesQuantity;
this.SellTo = sellTo;
this.SellPrice = sellPrice;
this.SellRevenue = salesQuantity * sellPrice;
this.createAt = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss"));
}
@Override
public String toString() {
return "ReleaseDTO{" +
"id=" + id +
", productName='" + productName + '\'' +
", SalesQuantity=" + SalesQuantity +
", SellTo='" + SellTo + '\'' +
", SellPrice=" + SellPrice +
", SellRevenue=" + SellRevenue +
", createAt='" + createAt + '\'' +
'}';
}
}
제품 출고 등록 필드
package NewProject.DTO;
public class RevenueDTO {
private String ProductName;
private int purchasePrice;
private int SellPrice;
private int Revenue;
private int ProductQuantity; // 구매 수량
private int SalesQuantity; // 판매 수량
public void setProductName(String productName) {
ProductName = productName;
}
public void setPurchasePrice(int purchasePrice) {
this.purchasePrice = purchasePrice;
}
public void setSellPrice(int sellPrice) {
SellPrice = sellPrice;
}
public String getProductName() {
return ProductName;
}
public int getPurchasePrice() {
return purchasePrice;
}
public int getSellPrice() {
return SellPrice;
}
public int getRevenue() {
return Revenue;
}
public void setRevenue(int revenue) {
Revenue = revenue;
}
public int getProductQuantity() {
return ProductQuantity;
}
public int getSalesQuantity() {
return SalesQuantity;
}
public void setProductQuantity(int productQuantity) {
ProductQuantity = productQuantity;
}
public void setSalesQuantity(int salesQuantity) {
SalesQuantity = salesQuantity;
}
public RevenueDTO(){
}
public RevenueDTO(String ProductName , int purchasePrice , int SellPrice , int ProductQuantity , int SalesQuantity){
this.ProductName = ProductName;
this.purchasePrice= purchasePrice * ProductQuantity;
this.SellPrice = SellPrice * SalesQuantity;
this.Revenue += SellPrice - purchasePrice;
}
@Override
public String toString() {
return "RevenueDTO{" +
"ProductName='" + ProductName + '\'' +
", purchasePrice=" + purchasePrice +
", ProductQuantity=" + ProductQuantity +
", SalesQuantity=" + SalesQuantity +
", SellPrice=" + SellPrice +
", Revenue=" + Revenue +
'}';
}
}
제품의 구매 및 판매 수량과 판매액과 구매액을 관리하는 필드
<리파지토리>
package NewProject.Repository;
import NewProject.DTO.MemberDTO;
import java.util.ArrayList;
import java.util.List;
public class MemberRepository {
List<MemberDTO> memberDTOList = new ArrayList<>();
public MemberDTO memberLogin(String memberName, int memberId) {
MemberDTO result = null;
for (int i = 0; i < memberDTOList.size(); i++) {
if (memberName.equals(memberDTOList.get(i).getMemberName()) && memberId == memberDTOList.get(i).getMemberId()){
result = memberDTOList.get(i);
}
}
return result;
}
public boolean memberSave(MemberDTO memberDTO) {
return memberDTOList.add(memberDTO);
}
public boolean memberUpdate(String loginName, String memberName, int memberId) {
boolean result = false;
for (int i = 0; i < memberDTOList.size(); i++) {
if (loginName.equals(memberDTOList.get(i).getMemberName())){
memberDTOList.get(i).setMemberName(memberName);
memberDTOList.get(i).setMemberId(memberId);
result = true;
}
}
return result;
}
}
직원 등록과 로그인 메서드
package NewProject.Repository;
import NewProject.DTO.ProductDTO;
import java.util.ArrayList;
import java.util.List;
public class ProductRepository {
List<ProductDTO> productDTOList = new ArrayList<>();
public boolean ProductSave(ProductDTO productDTO) {
return productDTOList.add(productDTO);
}
public List<ProductDTO> ProductList() {
return productDTOList;
}
public List<ProductDTO> ProductSearch(String productName) {
List<ProductDTO>productDTOS = new ArrayList<>();
for (int i = 0; i < productDTOList.size(); i++) {
if (productDTOList.get(i).getProductName().contains(productName)){
productDTOS.add(productDTOList.get(i));
}
}
return productDTOS;
}
public int productBuy(String productName){
int a = 0;
for (int i = 0; i < productDTOList.size(); i++) {
if (productName.equals(productDTOList.get(i).getProductName())){
a = productDTOList.get(i).getPurchasePrice();
}
}
return a;
}
}
물품 구매 및 등록 메서드
package NewProject.Repository;
import NewProject.DTO.ReleaseDTO;
import java.util.ArrayList;
import java.util.List;
public class ReleaseRepository {
List<ReleaseDTO>releaseDTOList = new ArrayList<>();
public boolean ProductSell(ReleaseDTO releaseDTO) {
return releaseDTOList.add(releaseDTO);
}
public List<ReleaseDTO> SellList() {
return releaseDTOList;
}
public List<ReleaseDTO> SellSearch(String productName) {
List<ReleaseDTO>releaseDTOS = new ArrayList<>();
for (int i = 0; i < releaseDTOList.size(); i++) {
if (releaseDTOList.get(i).getProductName().contains(productName)){
releaseDTOS.add(releaseDTOList.get(i));
}
}
return releaseDTOS;
}
public int productSell() {
int a = 0;
for (ReleaseDTO releaseDTO : releaseDTOList) {
a = releaseDTO.getSellPrice();
}
return a;
}
}
제품 출고 메서드
package NewProject.Repository;
import NewProject.DTO.ProductDTO;
import NewProject.DTO.ReleaseDTO;
import NewProject.DTO.RevenueDTO;
import java.util.ArrayList;
import java.util.List;
public class RevenueRepositoty {
List<RevenueDTO> revenueDTOList = new ArrayList<>();
public boolean PurchasePriceSave(RevenueDTO revenueDTO) {
System.out.println(revenueDTO);
return revenueDTOList.add(revenueDTO);
}
public boolean SellSave(RevenueDTO revenueDTO) {
System.out.println(revenueDTO);
return revenueDTOList.add(revenueDTO);
}
public int SellRevenue(String productName) {
List<ProductDTO> productDTOList = new ArrayList<>();
List<ReleaseDTO> releaseDTOList = new ArrayList<>();
int i;
for (i = 0; i < productDTOList.size(); i++) {
if (productName.equals(productDTOList.get(i).getProductName())) {
}
for (int j = 0; j < releaseDTOList.size(); j++) {
if (productName.equals(releaseDTOList.get(i).getProductName())) {
}
}
}
return revenueDTOList.get(i).getSellPrice();
}
}
구매 및 판매 관련 메서드
이번 프로젝트를 진행하면서 조금 더 많은 부분을 구현하고싶었지만 아직 부족한점이 많은게 느껴졌고
평소에 우리가 흔히 생각하는 프로그램 및 시스템 하나만 하더라도 수많은 노력이 필요하다는걸 느꼈다
이번 프로젝트는 이게 끝이 아니라 틈틈히 코드를 수정해 나가야할거같다
'개발일지' 카테고리의 다른 글
개발일지 그룹화, 조건 적용 ,join, sub qurey, 제약 조건 (1) | 2024.01.03 |
---|---|
MySQL (1) | 2024.01.02 |
인터페이스 , 예외처리 (0) | 2023.12.29 |
개발일지 -HashMap , 상속 클래스- (1) | 2023.12.26 |
회원제 게시판 프로젝트 (1) | 2023.12.25 |