Menu



Manage

Study_C > 11-make.c Lines 130 | 5.0 KB
다운로드

                        /*****************************************************************

 * 개인신상 저장 업데이트된 프로그램

 ********************************************************************/

#define _CRT_SECURE_NO_WARNINGS			// scanf오류 제거를 위한 코드
#include<stdio.h>			    		// 표준 입출력장치 사용을 위한 헤더파일 로드
#include <string.h>                     // 문자열 비교를 위한 함수 라이브러리 추가
#define SIZE 100                        // 입력받을 인원수를 설정

typedef struct client {										// 고객정보 구조체 생성
	char ClCode[20];										// 고객 코드
	char ClName[20];										// 고객 이름
	char ClAdress[50];										// 고객 주소
	char ClBlance[20];										// 고객 잔액
}Client;													// 고객정보유형 생성

void add_client(Client a[]);				// 리스트에 클라이언트 인원을 추가하는 함수
void check_client(Client a[]);				// 리스트에 해당 클라이언트가 있는지 확인하는 함수
void variance(Client a[]);					// 리스트에 해당하는 클라이언트의 잔액을 변경해주는 함수

int clientNum = 0;											// 전역 변수 : 고객 총원 관리용 (클라이언트 늘을때마다 1 증가)

int main()
{
	Client (*pf)(Client);									// 클라이언트형이 들어가는 함수 포인터 생성
	pf = NULL;												// pf함수 초기화
	int keynum = 1;											// while = 1 과 같이 무한 반복을 위한 키로 이용할 숫자
	struct client list[SIZE];								// 인원 100명의 고객 배열 실행
	Client *cl;												// client list와 동기화할 항목 생성
	cl = list;												// client list와 cl 동기화?

	int code = 0;											// 이용 항목 적용 코드값

	printf("=============================");
	while (keynum == 1)										// While 1보다 있어보아서 해놓았음/ 이용할 서비스 선택
	{
		printf("\n이용할 항목을 입력하세요.\n");
		printf("1: \"이용 고객 정보 등록\"\n2: \"고객 정보 조회\"\n3: \"잔액 변경\"\n0: \"종료\"\n\n");
		scanf("%d", &code);									//  이용 항목 선택하기

		if (code == 1)										// 1번을 고른 경우 클라이언트 인원 추가 함수 실행
			pf = add_client;
		else if (code == 2)									// 2번을 고른 경우 클라이언트 정보 검색 함수 실행
			pf = check_client;
		else if (code == 3)									// 3번을 고른 경우 클라이언트 잔액 변경 함수 실행
			pf = variance;
		else if (code == 0)									// 0번을 고른 경우 알림과 정상 종료
		{
			printf("프로그램을 종료합니다.");
			return 0;
		}
		pf(*cl);											// 선택된 1~3코드에 해당하는 함수 실행
	}
}

void add_client(Client cl[SIZE])							// 클라이언트 인원 추가 함수
{
	int keyNum = 1;											// main 함수와 동일 / 이게 더 있어보여서....
	
	printf("\n");											// 미관을 위해 한 줄 띄어쓰기
	while (keyNum == 1)
	{
		if (clientNum >= SIZE - 1)							// 전역변수 clientNum이 100명 꽌찬경우 자동으로 실행하지 않고 뒤로가기
		{
			printf("등록 가능한 고객 수를 넘겼습니다.\n 처음 화면으로 돌아갑니다.");
			keyNum = 0;
			break;
		}
		printf("\n이름을 입력해주세요.\n \"getout\" 입력하고 엔터키를 누르시면 처음 화면으로 돌아갑니다.\n");
		scanf("%s", cl[clientNum].ClName);
		
		if (strcmp(cl[clientNum].ClName, "getout") == 0)	// getout 이라 입력한 경우 초기 화면으로 돌아감
		{
			keyNum = 0;
			break;
		}

		printf("고객 번호를 입력해주세요 : \n");			// 고객 번호 입력 및 저장
		scanf("%s", cl[clientNum].ClCode);

		printf("해당 고객의 주소를 입력하세요 : \n");		// 고객 주소 입력 및 저장 (해당 컴에서 gets 함수사 사용 불가능 상황)
		scanf("%s", cl[clientNum].ClAdress);

		printf("해당 고객의 잔액을 입력하세요 : \n");		// 고객 잔액 입력 및 저장
		scanf("%s", cl[clientNum].ClBlance);

		clientNum++;										// 전역변수 clientNum 1증가
	}
	return;													// 함수 종료
}

void check_client(Client cl[SIZE])					// 클라이언트 정보 검색 함수
{
	int i = 0;												// for문용 i변수 초기화
	char name[20] = {0};									// 이름 확인 비교용 name 배열 생성

	printf("찾으실 고객의 이름을 말씀해주세요\n");			// 고객 이름 입력
	scanf("%s", name);
	for (i = 0; i < SIZE; i++)								// 해당	이름과 동일한 이름을 찾으면 해당 고객 정보를 출력하는 문장
		if (strcmp(cl[i].ClName, name) == 0)
			printf("\n%s 고객님의 정보입니다.\n고객 번호 : %s\n고객 주소 : %s\n잔액 : %s\n\n",cl[i].ClName, cl[i].ClCode, cl[i].ClAdress, cl[i].ClBlance);
		else
		{
															// 아니면 뭔가를 추가하려다가 말았음
		}
			printf("");
	return;													// 함수 종료
}

void variance(Client cl[SIZE])						// 클라이언트 잔역 변경 함수
{
	int i = 0;												// 찾기 for문용 i변수 0으로 초기화
	char clNum[20] = { 0 };											// 고객 대조용으로 고객 번호 입력할 변수 초기화

	printf("바꿀 고객님의 고객 번호를 입력해주세요.\n");
	scanf("%s", clNum);
	for (i = 0; i < SIZE; i++)								// 고객이 일치하면 바뀐 금액을 입력받아 저장하고 보여주는 for문
		if (cl[i].ClCode == clNum)
		{
			printf("%s고객님의 현재 잔액은 %s원 입니다.\n변동 후 잔액을 입력해주세요.\n", cl[i].ClName, cl[i].ClBlance);
			scanf("%s", cl[i].ClBlance);
			printf("%s고객님의 변동 후 잔액은 %s원 입니다.\n", cl[i].ClName, cl[i].ClBlance);
			return;											// 정보를 보여준 후 처음으로 돌아가기
		}																
		printf("찾으시는 고객 정보가 없습니다.");			// 없는경우 결과값

		return;
}