*용*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 1
검색어 입력폼
  • 연결리스트를 이용한 회원관리 프로그램
    #include#include#includetypedef struct element{char id[5]; //사용자ID(0000~9999)int grade; //신용등급(0~9)} element;//리스트를 구성하는 구조체typedef struct ListNode{element data; //사용자 정보(ID,신용등급)struct ListNode *link;} ListNode;void Insert(char *_id,int _grade);void searchNode();void Delete(char *_id);void Replace(char *_id,int _grade);//고객등급으로 고객정보를 삭제하는 함수.void deleteNodeBy(int _grade);void Count();void Sub_print(int _grade);void Sub_delete(credit);int Sub_count(int _grade);void Level_print();void Print();void Quit();int menu();//ID의 유효성 체크하는 함수.int checkID(char *_id);//고객등급의 유효성 체크하는 함수.int checkGrade(int _grade);//전역변수로 선언ListNode *CIMList = NULL; //리스트의 헤더 포인터.int main(){int result;char _id[5];int _grade;while(1){//사용자로부터 메뉴를 입력받고, 해당 작업을 처리함.result = menu();if(result == 1) //고객 추가.{printf("1. 고객 추가 n");printf("ID 입력 : ");scanf("%s",_id);printf("신용등급 입력 : ");scanf("%d",&_grade);//ID 및 신용등급이 유효성을 체크한다..정상이라면 추가한다.if(checkID(_id) && checkGrade(_grade)){Insert(_id,_grade);printf("ID( %s ), 고객등급 ( % 변경.{printf("4. 고객 변경(특정 ID 고객 정보 변경) n");//ID와 신용 등급을 입력 받는다.printf("ID 입력 : ");scanf("%s",_id);printf("신용등급 입력 : ");scanf("%d",&_grade);//입력된 ID와 신용등급의 유효성 체크if(checkID(_id) && checkGrade(_grade)) //유효성이 정상이라면.{Replace(_id,_grade);}else //유효성이 비정상이라면.{printf("ID는 0000~9999 , 고객등급은 0~9 값을 입력해주세요. n");}}else if(result == 5) //특정 신용등급만 출력{printf("6. 고객수 출력(특정 신용등급만 출력) n");printf("신용등급 입력 : ");scanf("%d",&_grade);if(checkGrade(_grade)) //신용등급 유효성 체크(정상이라면){Sub_print(_grade); //특정 신용등급을 가진 고객 정보 출력.}else //비정상이라면.{printf("ID는 0000~9999 , 고객등급은 0~9 값을 입력해주세요. n");}}else if(result == 6) //특정 신용등급 모두 삭제.{printf("5. 고객 삭제(특정 신용등급 모두 삭제) n");printf("신용등급 입력 : ");scanf("%d",&_grade);//신용등급 유효성 체크if(checkGrade(_grade)) //유효성 체크가 정상이이라면.{Sub_delete(_grade); //특정 신용등급 모두 삭제.}else //유효성 체크가 비정상이라면.{printf("ID는 0000~9999 , 고객등급은 0~9 값을 입력해주세요. n");}}else if(result == 7) //특정 신용등급 고객의 ID출력.{printf("7. 고객수 출력(특정 신용등급만 출력) n");printf("신용등급 입력 : ");scanf("%d",&_grade);//신용등급 유효성 체크if(checkGrade( 생성 및 정보 초기화.ListNode *temp,*tempHead;temp = (ListNode *)malloc(sizeof(ListNode));strcpy(temp->data.id,_id);temp->data.grade = _grade;temp->link = NULL;//리스트에 노드가 없는 경우.if(CIMList == NULL)CIMList = temp;else //리스트에 노드가 있는 경우.{tempHead = CIMList;while(1) //맨마지막 까지 이동한다.{if(tempHead->link == NULL) //마지막 노드인경우. while문 종료break;elsetempHead = tempHead->link;}tempHead->link = temp; //리스트의 맨 뒤에 삽입한다.}}//특정한 ID를 가진 노드를 삭제하는 함수.void Delete(char *_id){ListNode *curr; //현재 노드 포인터ListNode *prev; //이전 노드 포인터.ListNode *delNode; //삭제 하고자 하는 포인터int count = 0; //특정위치를 나타내는 변수.if(CIMList == NULL) //리스타가 존재하지않는 경우.return;if(strcmp(CIMList->data.id,_id) == 0) //처음 노드를 삭제 하고자 하는 경우.{delNode = CIMList; //처음 노드를 삭제 하기 위하여 임시변수에저장CIMList = CIMList->link; //CIMList 이동free(delNode); //삭제printf("ID( %s ) 를 가진 고객정보가 삭제 되었습니다.n",_id);}else{curr = CIMList->link; //현재 노드 포인터prev = CIMList; //이전 노드 포인터while(curr != NULL){if(strcmp(curr->data.id,_id) == 0) //원하는 노드까지 이동한 경우.{delNode = curr; //지워야할 노드를 임시 포인터에 저장prev-하기 위하여 임시변수에저장CIMList = CIMList->link; //CIMList 이동free(delNode); //삭제printf("고객등급( %d ) 를 가진 고객정보가 삭제 되었습니다.n",_grade);}else{curr = CIMList->link; //현재 노드 포인터prev = CIMList; //이전 노드 포인터while(curr != NULL){if(curr->data.grade == _grade) //원하는 노드까지 이동한 경우.{delNode = curr; //지워야할 노드를 임시 포인터에 저장prev->link = curr->link; //리스트를 새로 연결free(delNode); //노드를 삭제 한다.printf("고객등급( %d ) 를 가진 고객정보가 삭제 되었습니다.n",_grade);break;}else{//다음 노드로 이동.curr = curr->link;prev = prev->link;}}}}//특정한 신용등급을 가진 고객이 있는지 확인하는 함수.(특정 신용등급을 가진 모든 노드를 삭제할때 사용)int isFind(int _grade){ListNode *tempHead = CIMList;if(CIMList == NULL) //리스트가 빈경우.return 0;while(tempHead != NULL){if(tempHead->data.grade == _grade) //특정 신용등급을 가진 노드가 발견시.return 1; //1을 반환.tempHead = tempHead->link;}return 0; //발견되지 않은 경우.}//고객의 수를 출력하는 함수.void Count(){ListNode *tempHead = CIMList;int count = 0; //고객의 수if(CIMList == NULL) //리스트가 빈경우.count = 0;//리스트 순회한다.while(tempHead != NULL){++count; //1증가.tempHead = tempHead->link; //다음 노드로 이동.}printf("고객의 수는급을 가진 노드 출력.void Sub_print(int _grade){ListNode *tempHead;if(CIMList == NULL) //리스트에 노드가 없는경우{printf("입력된 고객 정보가 없습니다.n");}tempHead = CIMList;//리스트를 탐색한다.while(tempHead != NULL){//특정 신용등급을 가진 노드 발견시.if(tempHead->data.grade == _grade)printf("ID ( %s )n",tempHead->data.id); //해당 노드의 ID 출력.tempHead = tempHead->link; //다음노드로 이동.}}//특정 신용등급을 가진 노드 모두 삭제.ㅣvoid Sub_delete(int _grade){while(isFind(_grade)) //특정 신용등급을 가진 노드가 발견될때까지 모두 삭제.{deleteNodeBy(_grade); //특정 신용등급을 가진 노드 삭제.}}//특정 신용등급을 가진 노드의 갯수 출력.int Sub_count(int _grade){ListNode *tempHead = CIMList;int count = 0; //특정 신용등급을 가진 노드의 갯수.if(CIMList == NULL) //리스트가 빈경우.return 0;while(tempHead != NULL){if(tempHead->data.grade == _grade) //특정 신용등급을 가진 노드 발견시.{++count; //갯수 증가.}tempHead = tempHead->link;}return count;}//신용등급을 기준으로 정렬.void Level_print(){char _id[5];int _grade;ListNode *ptrA,*ptrB;for(ptrA = CIMList ; ptrA != NULL ; ptrA = ptrA->link){for(ptrB = ptrA->link ; ptrB != NULL ; ptrB = ptrB->link){if(ptrA->data.grade < ptrB->data.e);
    프로그램소스| 2010.09.17| 2,500원| 조회(361)
    미리보기
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 23일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
8:48 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감