- 프로그램을 실행하면 UserInfo.txt 에서 값을 가져와 연결 리스트 노드에 추가한다.
- 1.주차를 선택하면 노드를 생성하고 전화번호, 차량 번호를 입력 받아 등록 시점의 시간과 함께 노드에 저장한다.
- 2.출차를 선택하면 해당 전화번호를 키로 가지는 노드를 삭제한다.
- 3.조회를 선택하면 기본키인 전화번호를 기준으로 노드를 탐색한다.
- 4.관리자를 선택하면 패스워드 확인을 통해 패스워드가 일치할 경우에만 전체 차량, 고객 정보를 출력한다.
- 5.종료를 선택하면 노드에 저장된 정보를 기반으로 파일을 작성하고 프로그램을 종료한다.
- 연결리스트, 함수 선언
- 헤더 파일, 관리자 비밀번호와 연결리스트 구조를 정의 한다.
- 메뉴창 프린트 함수, 노드의 생성, 삽입, 탐색, 삭제, 전체 출력, 파일쓰기의 주요 함수를 정의한다.
* print_menu 함수
- 직사각형 디자인으로 선택 항목을 프린트 한다.
- 노드 생성함수
- 새로운 노드를 생성하고 전화번호와 차량번호를 사용자로 부터 입력 받아 노드 멤버 변수에 추가한다.
- return_time 함수를 인자로 사용하여 return 받은 현재 시간 정보 문자열을 노드 멤버 변수에 추가한다.
- 새로운 노드를 리턴한다.
- 노드 삽입함수
- 만약 기존에 연결리스트가 없다면 새로운 노드를 생성한다.
- 연결리스트에 노드있다면 ptr이 이동하여 마지막 주소를 찾고 마지막 연결리스트의 맨 끝에 노드를 연결한다.
- 노드 탐색 함수
- 검색할 전화번호(기본키)를 입력받아 입력받은 전화번호와 노드의 멤보변수의 정보가 같을때 까지 이동한다
- 만일 같은 노드들의 멤버 변수중 같은 것이 있다면 그 노드의 주소를 리턴, 없으면 NULL을 리턴한다.
- 만일 노드가 없다면 종료한다.
- 제거 대상이 맨앞의 노드라면 다음 노드가 헤드노드가 되고 제거 대상은 메모리를 해제한다.
- 제거 대상이 연결리스트 중간이라면 제거 대상의 다음 노드 주소를 이전노드의 다음 노드로 설정하고 연결하고 메모리를 해제한다.
- 노드 전체 출력함수
- 헤드 노드부터 연결리스트의 끝까지 돌면서 노드별 멤버변수 값을 출력한다.
- 파일쓰기 함수
- UserInfo.txt 파일로을 쓰기 모드로 열고 전체 노드의 멤버 변수 정보를 파일에 모두 쓴다.
- 관리자 권한 함수
- 입력값이 패스워드와 같으면 1을 아니면 0을 리턴한다.
- 현재시간 리턴 함수
- 현재시간을 문자열 buf_t에 저장하여 리턴한다.
- 메인함수
- 실행 후 파일로 부터 값을 가져와 순서대로 phone,car_num,time 변수에 저장하고 하나의 노드를 생성하는 작업을 반복하여 모든 파일 데이터를 연결리스트에 올린다.
- 스위치 문을 통해 사용자가 메뉴를 선택하도록한다.
- 1번 선택시 인서트 함수가 실행되어 노드를 추가한다.
- 2번 선택시 딜레트 함수가 실행되어 값을 찾아 삭제한다.
- 3번 선택시 서치 함수가 실행되어 기본키인 전화번호를 기준으로 노드를 찾아 출력한다.
- 4번 선택시 관리자가 맞다면 디스플레이 함수가 실형되어 모든 데이터를 보여준다.
- 5번 선택시 파일에 모든 노드 데이터를 저장하고 프로그램이 종료된다.
-
OCR 기술을 접목시켜 번호판을 자동 인식하여 저장하도록 편의를 개선 할 수 있다.
-
전화번호 입력시 안심콜 출입 서비스와 연동한다면 식당등의 시설 이용시 유저가 안심콜이나 QR인증을 할 필요없이 주차장에 주차를 하는 것 만으로도 시설을 이용 할 수 있다.
-
입차시 등록된 입차 시간정보를 기준으로 출차시 요금을 자동 정산하는 기능을 추가 할 수 있다.