서점 관리 시스템 :
프로젝트 운동 목표 :
1. Java 응용 프로그램의 기본 분석
2. 객체 지향 프로그래밍의 기본 아이디어를 배양하십시오
3. 기본 Java 디자인 패턴의 포괄적 인 적용
4. 레이어링 및 인터페이스의 기본 설계를 마스터하십시오
5. 합리적인 Java 응용 프로그램 패키지 구조를 구축하십시오
6. JSE의 포괄적 인 적용에 의해 배운 지식
7. 응용 프로그램에서 합리적으로 수집 프레임 워크를 사용하십시오
8. 응용 분야에서 스윙의 일반적인 구성 요소의 포괄적 인 사용
9. 기본 성능 계층 구현 메커니즘
10. IO 스트림 및 파일의 기본 작업
11. 좋은 Java 프로그래밍 습관을 개발하십시오
12. Java 프로그램을 디버그하는 능력을 배양하고 오류를 수정하는 능력을 배양하십시오.
프로젝트 기능 요구 사항 :
1. 사용자 등록을 작동하고 기본 정보를 수정하고 삭제 및 쿼리 할 수 있습니다.
2. 책의 기본 정보를 추가, 삭제, 수정 및 쿼리 할 수 있습니다.
3. 구매 양식을 작성할 수 있습니다. 구매 양식에는 여러 특정 구매 정보가 포함됩니다. 구매 한 책은 이미 책 관리에서 구입할 수 있어야합니다. 구매 중에 인벤토리에서 해당 책의 재고량을 수정합니다.
4. 판매 양식을 작성할 수 있습니다. 판매 양식에는 여러 특정 판매 정보가 포함됩니다. 판매 된 책은 이미 책 관리에 있어야하며 판매량은 현재 재고 수량을 초과 할 수 없습니다. 판매하는 동안 인벤토리에서 해당 책의 재고량을 수정하십시오.
5. 재고 세부 사항을보고 조건에 따라 특정 책의 재고 값을 찾을 수 있습니다.
6. 권한을 단순화하고 고정 권한 제어를 구현하십시오. 사용자는 모듈에 따라 운영 권한이 다른 인력으로 나뉘며 특수 관리자 사용자는 모든 기능을 작동 할 수 있습니다.
기본 프로젝트 설계 :
★ 건축 설계의 전반적인 프레임 워크, 모듈 디비전 : 5 모듈 : 사용자, 책, 구매, 판매 및 인벤토리
★ 시스템 기능 구조 설계 각 기능 모듈의 특정 기능 하위 모듈
★ 데이터베이스 디자인 프로젝트 프레임 워크 구현 : 모듈, 계층, 하청 계약 및 구축 응용 프로그램
1. 사용자 관리 (user.txt)
참고 : 유형은 int 유형이며 연산자의 유형을 나타내는 데 사용됩니다.
1- 관리자로 표시되면 모든 작업을 수행 할 수 있습니다.
2- 책 모듈을 운영 할 수있는 사람으로서
3- 구매 모듈을 운영 할 수있는 사람으로 표현
4- 판매 모듈을 운영 할 수있는 사람으로 표현
5- 인벤토리 모듈을 운영 할 수있는 사람으로 표현
2. 책 관리 (Book.txt)
3. 구매 관리 (inmain.txt)
4. 구매 세부 정보 관리 (indetail.txt)
5. 영업 관리 (Outmain.txt)
6. 영업 세부 관리 (OutDetail.txt)
7. 재고 관리 (stock.txt)
프로젝트 하청 계약
첫 번째 레이어 : 모듈에 따른 사용자 모듈 (사용자)
책 (책),
구매 (in),
판매 (아웃),
재고 (상점)
두 번째 레이어 : 3 층 모드에 따르면 프리젠 테이션 레이어 (UI), 로직 레이어 (비즈니스) 및 데이터 계층 (DAO)으로 나뉩니다.
일반적으로 값 객체 계층 (VO)을 추가해야합니다.
세 번째 층 : 층 내의 분할에 따라 특정 상황에 따라 다릅니다. 예를 들어, 하위 패키지는 철 삼각형 형태로 내장되어야하며 UI와 VO는 하위 포장으로 나눌 필요가 없습니다).
프로젝트 계층화 아이디어 :
완벽하지 않으면이 시리즈에 계속주의를 기울이십시오 (II)
다음은 코드의 일부입니다. (UTIL의 공개 클래스)
cn.hncu.bookstore.util
fileioutil.java :
패키지 cn.hncu.bookstore.util; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileoutputStream; import java.io.ioexception; import java.io.objepinputstream; import java.io.ova.io.obofoutputstream; java.util.arraylist; import java.util.list; import javax.swing.joptionpane;/*** 사용자 공개 데이터 읽기 및 쓰기 클래스* @author chen haoxiang** @version 1.0*/public fileioutil {public fileioutil ()}/*** @param files and the the reack and the reack in the react and the dataine** @param fileme 테이블) * @param ee (통과 된 제네릭의 유형!) * @return 레코드의 레코드! */@suppresswarnings ( "Checked") // 경고 경고 공개 정적 <e> 목록 <e> readformFile (String filename, e ee) {list <e> list = new arraylist <e> (); 최종 파일 파일 = 새 파일 (filename); ObjectInputStream in = null; if (! file.exists ()) {joptionpane.showmessagedialog (null, "데이터 테이블이 존재하지 않습니다!"); 반환 목록; } try {in = new ObjectInputStream (new FileInputStream (filename)); {list = (list <e>) in.readobject (); } catch (classNotFoundException e) {e.printstacktrace (); }} catch (filenotfoundException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 마침내 {if (in! = null) {try {in.close (); } catch (ioException e) {Throw new runtimeexception ( "데이터베이스 닫기 실패"); }}} 리턴 목록; } / ** * 데이터 파일 파일 파일에 목록 컬렉션을 작성하십시오. * * @param 목록 (저장 해야하는 데이터 수집) * @param filename (파일이 작성된 파일 이름) * / public static void write2file (list <객체> 목록, 문자열 filename) {objectOutputStream out = null; try {out = new ObjectOutputStream (new FileOutputStream (filename)); out.writeObject (list); } catch (filenotfoundException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } 마침내 {if (out! = null) {try {out.close (); } catch (ioexception e) {새로운 runtimeexception 던지기 ( "데이터베이스 닫기 실패!"); }}}}}}}}}}캡슐화 된 사용자 데이터 :
cn.hncu.bookstore.user.vo;
usermodel.java
패키지 cn.hncu.bookstore.user.vo;/** * @author Chen Haoxiang * @version 1.0 * <br/> * value 객체를 사용하는 value 객체 <br/> * 1. Serialize <br/> * 2. 모든 가변 멤버 및 보충제 세터 방법 <br/> 3. 코드 <br/> * 4. Tostring 메소드 <br/> * 5. 빈 매개 변수 구성 메소드 <br/> */public class usermodel {private string uuid; // 사용자 고유 식별 코드 개인 문자열 이름; // 사용자 유형 개인 int 유형; // 사용자 유형 개인 문자열 pwd; // 사용자 암호 public usermodel () {it}/** reture get uuid-useer code- 고유 식별 코드*/ public string getUuid () {return uuid; } / *** 함수 : UUID 사용자 고유 식별 코드 설정* @param uuid-user 고유 식별 코드 스트링 유형 매개 변수* / public void setuuid (String Uuid) {this.uuid = uuid; } / *** 함수 : 사용자의 사용자 이름* @return--name-user name* / public string getName () {return name; } / *** 함수 : 사용자의 사용자 이름* @return--name-user name* / public string getName () {return name; } / *** 함수 : 사용자 이름 설정** @param name- 사용자가 설정 한 사용자 이름, 문자열 유형 매개 변수* / public void setname (문자열 이름) {this.name = name; } / *** 기능 : 사용자 유형 가져 오기 :* 1 - 관리자를 대표하고 모든 작업이 수행 될 수 있습니다* 2 - 책 모듈을 운영 할 수있는 사람을 나타냅니다* 3 - 구매 모듈을 운영 할 수있는 사람을 나타냅니다* 4 - 영업 모듈을 운영 할 수있는 사람을 나타냅니다* 5는 인벤토리 모듈을 운영 할 수있는 사람* / public inttype를 나타냅니다. } / *** 기능 : 사용자 유형 설정 :* 1-책 모듈을 작동 할 수있는 사람을 나타냅니다.* 2-책 모듈을 운영 할 수있는 사람을 나타냅니다* 3-구매 모듈* 4를 운영 할 수있는 사람으로 선정 된 사람* 5를 운영 할 수있는 사람* 5-@param 유형을 운영 할 수있는 사람으로 운영 할 수있는 사람으로 선정 될 수 있습니다. settype (int type) {this.type = type; } / ***기능 : 사용자의 암호를 가져옵니다*@return 문자열 유형, 사용자의 비밀번호* / public string getPwd () {return pwd; } / ***함수 : 사용자의 비밀번호를 설정*@param pwd-스트링 유형 매개 변수* / public void setpwd (String pwd) {this.pwd = pwd; } @override public int hashcode () {Final int prime = 31; int result = 1; result = prime * result + ((uuid == null)? 0 : uuid.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (getClass ()! = obj.getClass ()) false를 반환합니다. Usermodel Other = (usermodel) obj; if (uuid == null) {if (Other.uuid! = null) false를 반환합니다. } else if (! uuid.equals (기타 .uuid)) false를 반환합니다. 진실을 반환하십시오. } @override public String toString () {return "usermodel [usermodel [uuid =" + uuid + ", name =" + name + ", type =" + type + ", pwd =" + pwd + "]; }} 캡슐화 된 사용자 쿼리 데이터 :
cn.hncu.bookstore.user.vo;
userQueryModel.java
패키지 cn.hncu.bookstore.user.vo; public class userQueryModel 확장 usermodel {}이 클래스에는 아무것도 없지만 usermodel을 물려 받으면 여전히 작성해야합니다. 이것은 모두가 준수하는 Java 쓰기 사양입니다!
사용자 dao (데이터 계층) : (인터페이스)
cn.hncu.bookstore.user.dao.dao;
userdao.java
패키지 cn.hncu.bookstore.user.dao.dao; import java.util.list; import cn.hncu.bookstore.user.vo.usermodel; import cn.hncu.bookstore.user.vo.userQueryModel;/** * * @author Chen Haoxang * * @verion 1.0의 데이터의 데이터에 대한 haoxer.vo.vo.vo.bo. 인터페이스 userDao { / *** 함수 : 사용자 생성** @param usermodel --- 생성 할 사용자 데이터* @return- 트루는 성공, 거짓 수단 생성 실패* / public boolean create (usermodel user); / *** 기능 : 사용자 삭제** @param uuid --- 사용자의 고유 식별 코드, 각 사용자는 동일하지 않습니다* @return --- true는 삭제가 성공했음을 의미합니다. 거짓은 삭제 실패*/ public boolean delete (String UUID); / *** 기능 : 사용자 데이터 수정** @Param 사용자 --- 수정 해야하는 사용자 데이터 매개 변수 이름* @return return true- 수정이 성공했음을 나타냅니다. RETURN FALSE- 수정이 실패했음을 나타냅니다*/ public boolean update (usermodel user); / *** 기능 : 모든 사용자 데이터 가져 오기** @return --- 사용자의 데이터*/ 공개 목록 <Sermodel> getall (); /** * 기능 : 특정 검색 조건에 따라 검색 * <br/> * 검색 조건을 충족하는 사용자 데이터를 반환합니다. ** @param uqm --- 캡슐화 된 검색 조건* @return ---- 검색 조건을 충족하는 사용자 데이터 세트*/ 공개 목록 <Sermodel> getByCondition (userQueryModel uqm); / *** 기능 : 특정 사용자 데이터 가져 오기** @param uuid --- 사용자 고유 식별 코드* @return ---이 고유 식별 코드에 따라 찾은 사용자 데이터를 반환*/ public usermodel getsingle (string uuid);}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.