티스토리 뷰
[C언어 소스] 주소 관리 프로그램 소스
이 포스팅에서는 주소 관리 프로그램 소스를 공개하도록 할게요.
이 주소 관리 프로그램은 사용자 정보(이름, 주소, 전화번호, 휴대폰, e-mail)를 등록하고, 출력하고 삭제할 수 있는 프로그램입니다.
이 소스를 조금 변형하시면 더 멋진 프로그램을 만들 수 있지 않나 싶네요^^
주소 관리 프로그램 소스 공개
아래의 파일을 클릭하시면 다운로드 받으실 수 있습니다.
#include <stdio.h> #include <malloc.h> #include <string.h> struct _node { char name[10]; // 이름 char address[30]; // 주소 char phone[14]; // 전화번호 char mobile[14]; // 핸드폰 char mail[20]; // e-mail struct _node *link; // 다음 노드 }; typedef struct _node node; void Insert(node*); // 노드 삽입 함수 void Delete(node*); // 노드 삭제 함수 void Display(node*); // 노드 정보 출력 함수 int main(void) { node *ptr; int choice; /* 첫번째 노드 생성 동적할당을 통해 공간을 생성하여 노드를 만든다. 다음 노드 위치는 NULL로 초기화한다 */ ptr = (node *)malloc(sizeof(node)); ptr->link = NULL; /* do-while을 이용한 반복 4. 종료를 선택할 때까지 반복한다. */ do { // 메뉴 출력 printf("주소관리 프로그램\n"); printf("1. 등 록\n"); printf("2. 출 력\n"); printf("3. 삭 제\n"); printf("4. 종 료\n"); printf("명령어를 선택하시오: "); // 1문자를 입력받아 숫자로 변환 choice = getchar() - '0'; // 입력 버퍼 초기화 fflush(stdin); /* 입력받은 숫자에 따라 분기 1 : 등록 -> Insert 2 : 출력 -> Display 3 : 삭제 -> Delete */ switch(choice) { case 1 : Insert(ptr); break; case 2 : Display(ptr->link); break; case 3 : Delete(ptr); break; } }while(choice!=4); } void Insert(node *ptr) { while (ptr->link != NULL) ptr = ptr->link; ptr->link = (node*)malloc(sizeof(node)); ptr = ptr->link; printf("이름을 입력하시오: "); gets(ptr->name); printf("주소를 입력하시오: "); gets(ptr->address); printf("전화번호 입력하시오: "); gets(ptr->phone); printf("핸드폰을 입력하시오: "); gets(ptr->mobile); printf("E-Mail을 입력하시오: "); gets(ptr->mail); ptr->link = NULL; printf("\n"); } void Delete(node *ptr) { node *prev; char _phone[14]; printf("삭제할 전화번호를 선택하시오: "); gets(_phone); while (ptr->link != NULL) { prev = ptr; ptr = ptr->link; /* 저장되어 있는 데이터중에서 전화번호를 기준으로 데이터를 삭제 */ if (strcmp(_phone, ptr->phone) == 0) { prev->link = ptr->link; free(ptr); break; } } return; } void Display(node *ptr) { printf("%6s", "이 름") ; printf("%14s", "주 소"); printf("%14s", "전화번호"); printf("%14s", "핸드폰"); printf("%10s\n", "E-Mail"); while (ptr != NULL) { printf("%6s", ptr->name); printf("%14s", ptr->address); printf("%14s", ptr->phone); printf("%14s", ptr->mobile); printf("%10s", ptr->mail); ptr = ptr->link; printf("\n"); } printf("\n"); }
실행화면
아래는 주소 관리 프로그램을 실행한 실행화면입니다.
위 소스에 검색 기능을 추가한 소스
위 소스에 검색 기능을 추가해 보았습니다.
#include <stdio.h> #include <malloc.h> #include <string.h> struct _node { char name[10]; // 이름 char address[30]; // 주소 char phone[14]; // 전화번호 char mobile[14]; // 핸드폰 char mail[20]; // e-mail struct _node *link; // 다음 노드 }; typedef struct _node node; void Insert(node*); // 노드 삽입 함수 void Delete(node*); // 노드 삭제 함수 void Display(node*); // 노드 정보 출력 함수 void Search(node*); // 노드 정보 검색 함수 int main(void) { node *ptr; int choice; /* 첫번째 노드 생성 동적할당을 통해 공간을 생성하여 노드를 만든다. 다음 노드 위치는 NULL로 초기화한다 */ ptr = (node *)malloc(sizeof(node)); ptr->link = NULL; /* do-while을 이용한 반복 4. 종료를 선택할 때까지 반복한다. */ do { // 메뉴 출력 printf("주소관리 프로그램\n"); printf("1. 등 록\n"); printf("2. 출 력\n"); printf("3. 삭 제\n"); printf("4. 검 색\n"); printf("5. 종 료\n"); printf("명령어를 선택하시오: "); // 1문자를 입력받아 숫자로 변환 choice = getchar() - '0'; // 입력 버퍼 초기화 fflush(stdin); /* 입력받은 숫자에 따라 분기 1 : 등록 -> Insert 2 : 출력 -> Display 3 : 삭제 -> Delete 4 : 검색 -> Search */ switch(choice) { case 1 : Insert(ptr); break; case 2 : Display(ptr->link); break; case 3 : Delete(ptr); break; case 4 : Search(ptr); break; } }while(choice!=5); } void Insert(node *ptr) { while (ptr->link != NULL) ptr = ptr->link; ptr->link = (node*)malloc(sizeof(node)); ptr = ptr->link; printf("이름을 입력하시오: "); gets(ptr->name); printf("주소를 입력하시오: "); gets(ptr->address); printf("전화번호 입력하시오: "); gets(ptr->phone); printf("핸드폰을 입력하시오: "); gets(ptr->mobile); printf("E-Mail을 입력하시오: "); gets(ptr->mail); ptr->link = NULL; printf("\n"); } void Delete(node *ptr) { node *prev; char _phone[14]; printf("삭제할 전화번호를 선택하시오: "); gets(_phone); while (ptr->link != NULL) { prev = ptr; ptr = ptr->link; /* 저장되어 있는 데이터중에서 전화번호를 기준으로 데이터를 삭제 */ if (strcmp(_phone, ptr->phone) == 0) { prev->link = ptr->link; free(ptr); break; } } return; } void Display(node *ptr) { printf("%6s", "이 름") ; printf("%14s", "주 소"); printf("%14s", "전화번호"); printf("%14s", "핸드폰"); printf("%10s\n", "E-Mail"); while (ptr != NULL) { printf("%6s", ptr->name); printf("%14s", ptr->address); printf("%14s", ptr->phone); printf("%14s", ptr->mobile); printf("%10s", ptr->mail); ptr = ptr->link; printf("\n"); } printf("\n"); } void Search(node *ptr) { char _name[10]; printf("이름을 입력하시오: "); gets(_name); printf("%6s", "이 름") ; printf("%14s", "주 소"); printf("%14s", "전화번호"); printf("%14s", "핸드폰"); printf("%10s\n", "E-Mail"); while (ptr != NULL) { if (strcmp(_name, ptr->name) == 0) { printf("%6s", ptr->name); printf("%14s", ptr->address); printf("%14s", ptr->phone); printf("%14s", ptr->mobile); printf("%10s", ptr->mail); printf("\n"); } ptr = ptr->link; } }
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[C언어] 세 개의 단어를 입력받아 사전 순으로 가장 먼저 나오는 단어 출력하기 (0) | 2014.02.25 |
---|---|
[C언어] 분수의 합을 구하는 프로그램 소스 (0) | 2014.02.24 |
JQuery Slider 추천! bxSlider, 간단한 설치, 애니메이션까지 (1) | 2014.02.23 |
[C#] 서버와 클라이언트 파일 전송 기본 예제 (8) | 2013.12.05 |
[C언어] malloc(), free() 함수를 이용한 메모리 동적 할당 예제 (4) | 2013.12.05 |
[C언어 소스] 주소 관리 프로그램 소스 (28) | 2013.11.26 |
[HTML5 강의] 5. HTML5 기본태그, 목록 만들기 (0) | 2013.11.22 |
[HTML5 강의] 4. HTML5의 기본 태그, 텍스트 관련 태그 (0) | 2013.11.22 |
[HTML5 강의] 1. HTML5 시작하기 (2) | 2013.11.22 |
[HTML5 강의] 3. HTML5 기본 태그, 시멘틱(semantic) 태그 (2) | 2013.11.21 |
[HTML5 강의] 2.1 HTML5의 기본 (0) | 2013.11.21 |
댓글
-
하늘과 나 메일 드렸습니다^^ 2012.11.29 13:22 신고
-
하늘과 나 한번 수정해 봤어요
void search(node *ptr) {
char _name[10];
printf("이름을 입력하시오: ");
gets(_name);
printf("%6s", "이 름") ;
printf("%14s", "주 소");
printf("%14s", "전화번호");
printf("%14s", "핸드폰");
printf("%10s\n", "E-Mail");
while (ptr != NULL) {
if (strcmp(_name, ptr->name) == 0) {
printf("%6s", ptr->name);
printf("%14s", ptr->address);
printf("%14s", ptr->phone);
printf("%14s", ptr->mobile);
printf("%10s", ptr->mail);
printf("\n");
}
ptr = ptr->link;
}
} 2013.11.27 00:04 신고 -
나그네 좋은 글 남겨주셔서 감사합니다.
많은 도움이 되었습니다. 2014.04.09 13:55 -
케이엠지 위 소스대로 입력후 출력하니
1 등록에서 이름과 주소가 묶여서 출력됩니다.ㅠㅠ
소스를 봤을땐 아무 문제 없는거 같은데 혹시 원인이 무엇인지 아십니까?ㅠㅠ 2015.03.09 23:35 -
하늘과 나 출력결과가 다르다는 말씀이시지요?
이름과 주소가 묶인다는 이야기는.붙어서 출력된다는 말씀이신지요?
입력하신 값도 알려주시면 확인해볼게요^^ 2015.03.09 23:37 신고 -
하늘과 나 소스에 문제가 있는 것 같아요
중간에 아래를 넣어주시면 될 것 같습니다
// 입력 버퍼 초기화
fflush(stdin);
2015.12.10 21:13 신고 -
asdf -> 2015.12.14 15:34
-
DLWHDCKS 심각도 코드 설명 프로젝트 파일 줄
오류 LNK2019 _WinMain@16 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다. ConsoleApplication30 c:\Users\admin\documents\visual studio 2015\Projects\ConsoleApplication30\ConsoleApplication30\MSVCRTD.lib(exe_winmain.obj) 1
심각도 코드 설명 프로젝트 파일 줄
오류 LNK1120 1개의 확인할 수 없는 외부 참조입니다. ConsoleApplication30 c:\users\admin\documents\visual studio 2015\Projects\ConsoleApplication30\Debug\ConsoleApplication30.exe 1
이렇게 뜨는대 어떻게해야할까용..
2016.05.08 14:34 -
하늘과 나 http://www.jynote.net/529
위의 글을 참고해 주세요^^ 2016.05.08 19:48 신고 -
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
ㅁㅅㅁㅎ 쉽게좀만드삼 2016.07.21 17:30
-
DS_C 이름순 정렬 혹은 전화번호순 정렬 방법이 있나요? 2016.06.11 00:03
-
ㅠ warning C4013: 'gets'이(가) 정의되지 않았습니다. extern은 int형을 반환하는 것으로 간주합니다. 이런 error가 뜹니다 2016.06.25 11:54
-
ㅠ 그리고 이름을 입력하세요 주소를 입력하세요 가 바로 떠서 이름 입력이 불가합니다;; 어떻게 하나요 ㅠㅠ 2016.06.25 12:04
-
ㅠ 그리고 이름을 입력하세요 주소를 입력하세요 가 바로 떠서 이름 입력이 불가합니다;; 어떻게 하나요 ㅠㅠ 2016.06.25 12:04
-
ㅠ 그리고 이름을 입력하세요 주소를 입력하세요 가 바로 떠서 이름 입력이 불가합니다;; 어떻게 하나요 ㅠㅠ 2016.06.25 12:04
-
ㅠ #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct _node {
char name[10]; // 이름
char phone[14]; // 전화번호
struct _node *link; // 다음 노드
};typedef struct _node node;
void membershipInsert(node*); // 노드 삽입 함수
void membershipDelete(node*); // 노드 삭제 함수
void membershipDisplay(node*); // 노드 정보 출력 함수
void main() {
int choice, choise0, choise1, choise2;
node *ptr;
printf(" Cven eleven \n");
printf("=============================================\n");
printf("1. 회원 관리 & 포인트 조회\n");
printf("2. 재고 관리\n");
printf("3. 종료\n");
printf("어떤 업무를 보시겠습니까?\n");
do {
scanf("%d", &choise0);
if (choise0 != 1 && choise0 != 2 && choise0 != 3) {
printf("번호를 잘못 입력하셨습니다.");
}
} while (choise0 != 1 && choise0 != 2 && choise0 != 3);
switch (choise0) {
case 1:
printf(" 회원 관리 & 포인트 조회 \n");
printf("=============================================\n");
printf("1. 회원 관리\n");
printf("2. 포인트 조회\n");
printf("3. 종료\n");
printf("어떤 업무를 보시겠습니까?\n");
do{
scanf("%d", &choise1);
if (choise1 != 1 && choise1 != 2 && choise1 != 3) {
printf("번호를 잘못 입력하셨습니다.");
}
} while (choise1 != 1 && choise1 != 2 && choise1 != 3);
switch(choise1){
case 1:
/*
첫번째 노드 생성
동적할당을 통해 공간을 생성하여 노드를 만든다.
다음 노드 위치는 NULL로 초기화한다
*/
ptr = (node *)malloc(sizeof(node));
ptr->link = NULL;
/*
do-while을 이용한 반복
4. 종료를 선택할 때까지 반복한다.
*/
do {
// 메뉴 출력
printf(" 회원관리 프로그램 \n");
printf("=============================================\n");
printf("1. 회원가입\n");
printf("2. 회원조회\n");
printf("3. 회원삭제\n");
printf("4. 종료\n");
printf("어떤 업무를 보시겠습니까?\n");
do {
scanf("%d ", &choice);
// 입력 버퍼 초기화
fflush(stdin);
if (choice != 1 && choice != 2 && choice != 3 && choice != 4) {
printf("번호를 잘못 입력하셨습니다.");
}
} while (choice != 1 && choice != 2 && choice != 3 && choice != 4);
/*
입력받은 숫자에 따라 분기
1 : 등록 -> Insert
2 : 출력 -> Display
3 : 삭제 -> Delete
*/
switch (choice) {
case 1:
membershipInsert(ptr);
break;
case 2:
membershipDisplay(ptr->link);
break;
case 3:
membershipDelete(ptr);
break;
}
} while (choice != 4 || (1>choice && choice>4));
break;
}
case 2:
printf(" 재고 관리 \n");
printf("=============================================\n");
printf("1. 회원 관리\n");
printf("어떤 업무를 보시겠습니까?\n");
scanf("%d", &choise2);
break;
case 3:
break;
}
}
void membershipInsert(node *ptr) {
while (ptr->link != NULL)
ptr = ptr->link;
ptr->link = (node*)malloc(sizeof(node));
ptr = ptr->link;
printf("이름을 입력하시오: ");
gets_s(ptr->name,14);
printf("전화번호 입력하시오: ");
gets_s(ptr->phone,10);
ptr->link = NULL;
printf("\n");
}
void membershipDelete(node *ptr) {
node *prev;
char _phone[14];
printf("삭제할 전화번호를 선택하시오: ");
gets_s(_phone,14);
while (ptr->link != NULL) {
prev = ptr;
ptr = ptr->link;
/* 저장되어 있는 데이터중에서 전화번호를 기준으로 데이터를 삭제 */
if (strcmp(_phone, ptr->phone) == 0) {
prev->link = ptr->link;
free(ptr);
break;
}
}
return;
}
void membershipDisplay(node *ptr) {
printf("%6s", "이 름");
printf("%14s\n", "전화번호");
while (ptr != NULL) {
printf("%6s", ptr->name);
printf("%14s", ptr->phone);
ptr = ptr->link;
printf("\n");
}
printf("\n");
}
소스코드를 약간 바꿔서 제 나름대로 이렇게 만들어봤는데 계속 이름 입력이 넘어가네요,,, 버퍼문제인거 같은데 어디서 어떻게 잡아야될지 모르겠습니다 2016.06.25 12:15 -
Roosio 혹시 추가,삭제,검색하고
수정까지 추가가 가능할까요??
수정까지 추가해서 만드려고 해도 잘 안되네요.... 2016.11.25 00:03 -
wookss10 삭제랑 검색 기능이 제대로 구현이 안돼여.. 2022.06.07 13:37
공지사항
- Total
- 3,659,521
- Today
- 25
- Yesterday
- 427
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- 인터넷
- MBTI 검사
- C언어
- C
- C언어 문제
- It
- 리뷰
- 소스
- 성공
- 예제 소스
- MBTI 자료
- 강좌
- 안드로이드 어플
- MBTI 테스트
- 모토로이
- 효과음
- JavaScript
- MBTI
- C언어 소스
- HTML
- 안드로이드
- 안드로이드 어플 추천
- 강의
- 프로그래밍 문제
- 인터넷 익스플로러
- 소스코드
- php
- 프로그래밍
- MBTI 강좌
- 스마트폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
글 보관함
- 2022/06 (1)