[NCS 실습, C#] 프로그래밍 언어 활용, 라이브러리 활용하기 - 회원 관리 프로그램 소스 코드
- 프로젝트 제목
회원 관리 프로그램
- 프로그램 유형
콘솔 응용 프로그램
- 프로그램 구성
데이터: 회원 형식 정의, 라이브러리
엔진: 회원 관리자 형식 정의, 라이브러리
응용: 회원 관리 응용, 콘솔 응용 프로그램
- 동작
사용자는 메뉴 선택을 통해 다음 기능을 반복 수행할 수 있다.
* 회원 데이터 추가
(아이디, 이름, 주소, 나이)
* 회원 데이터 삭제
* 회원 데이터 검색
(회원 아이디로 검색, 이름으로 검색)
* 전체 회원 데이터 보기
(간략 정보<아이디, 이름> 보기,
세부 정보<이이디, 이름, 주소, 나이> 보기)
Usecase 다이어그램
컴포넌트 다이어그램
- MemberLib: 클래스 라이브러리
Member.cs
namespace MemberLib { /// <summary> /// 회원 클래스 /// </summary> public class Member { /// <summary> /// 아이디 속성 - 가져오기 /// </summary> public string ID { get; private set; } /// <summary> /// 이름 속성 - 가져오기 /// </summary> public string Name { get; private set; } /// <summary> /// 주소 속성 - 가져오기 /// </summary> public string Address { get; private set; } /// <summary> /// 나이 속성 - 가져오기 /// </summary> public int Age { get; private set; } /// <summary> /// 회원 클래스 생성자 /// </summary> /// <param name="id">아이디</param> /// <param name="name">이름</param> /// <param name="address">주소</param> /// <param name="age">나이</param> public Member(string id, string name, string address, int age) { ID = id; Name = name; Address = address; Age = age; } /// <summary> /// ToString 재정의 /// </summary> /// <returns>회원 아이디</returns> public override string ToString() { return ID; } } } |
- MemberManagerLib : 클래스 라이브러리(MemberLib.dll 참조)
MemberManager.cs
using MemberLib; using System.Collections.Generic;
namespace MemberManagerLib { /// <summary> /// 회원 관리자 클래스 /// </summary> public class MemberManager { Dictionary<string, Member> mdic = new Dictionary<string, Member>(); /// <summary> /// 회원 데이터 추가 메서드 /// </summary> /// <param name="id">아이디</param> /// <param name="name">이름</param> /// <param name="addr">주소</param> /// <param name="age">나이</param> /// <returns>추가 여부</returns> public bool AddMember(string id, string name,string addr,int age) { if(mdic.ContainsKey(id)) { return false; } mdic[id] = new Member(id, name, addr, age); return true; }
/// <summary> /// 회원 데이터 삭제 메서드 /// </summary> /// <param name="id">아이디</param> /// <returns>삭제 여부</returns> public bool RemoveMember(string id) { if(mdic.ContainsKey(id)) { mdic.Remove(id); return true; } return false; } /// <summary> /// 회원 데이터 검색 메서드 /// </summary> /// <param name="cdele">비교 대리자</param> /// <returns>조건에 만족하는 회원 컬렉션</returns> public List<Member> SearchMember(CompareDele cdele) { List<Member> members = new List<Member>(); foreach(Member member in mdic.Values) { if(cdele(member)) { members.Add(member); } } return members; } /// <summary> /// 모든 멤버에게 특정 행위를 수행하는 메서드 /// </summary> /// <param name="doitmember">수행할 메서드의 대리자</param> public void DoItAll(DoItMember doitmember) { foreach(Member member in mdic.Values) { doitmember(member); } } } }
|
MMDelegate.cs
using MemberLib;
namespace MemberManagerLib { /// <summary> /// 특정 조건에 만족하는 회원인지 판별하는 대리자 /// </summary> /// <param name="member">회원</param> /// <returns>특정 조건에 만족 여부</returns> public delegate bool CompareDele(Member member); /// <summary> /// 특정 회원에 수행하는 작업을 대행하는 대리자 /// </summary> /// <param name="member">회원</param> public delegate void DoItMember(Member member); }
|
- MemberManagerApp: 콘솔 응용 프로그램(MemberManagerLib.dll, MemberLib.dll 참조)
MMApp.cs
using MemberLib; using MemberManagerLib; using System; using System.Collections.Generic;
namespace MemberManagerApp { class MMApp { #region 단일체 internal static MMApp Singleton { get; private set; } static MMApp() { Singleton = new MMApp(); } MMApp() { } #endregion
MemberManager mm = new MemberManager();
internal void Run() { ConsoleKey key; while((key = SelectMenu())!=ConsoleKey.Escape) { switch (key) { case ConsoleKey.F1: AddMember(); break; case ConsoleKey.F2: RemoveMember(); break; case ConsoleKey.F3: SearchMember(); break; case ConsoleKey.F4: ViewAll(); break; default: Console.WriteLine("잘못 선택하였습니다."); break; } Console.WriteLine("아무 키나 누르세요."); Console.ReadKey(true); } }
private void ViewAll() { Console.WriteLine("선택한 기능: 전체 회원 데이터 보기");
Console.WriteLine("*** F1:상세 보기 그 외: 간략 보기"); if(Console.ReadKey(true).Key == ConsoleKey.F1) { mm.DoItAll(VerifyView); } else { mm.DoItAll(SimplyView); } } static void VerifyView(Member member) { Console.WriteLine("아이디:{0}", member.ID); Console.WriteLine("* 이름:{0}", member.Name); Console.WriteLine("* 주소:{0}", member.Address); Console.WriteLine("* 나이:{0}", member.Age); } static void SimplyView(Member member) { Console.WriteLine("<{0}:{1}>", member.ID, member.Name); }
string dummy = string.Empty;//검색을 위해 필요한 더미 멤버 private void SearchMember() { Console.WriteLine("선택한 기능: 회원 데이터 검색");
Console.WriteLine("*** F1:ID로 검색, 그 외: 이름으로 검색");
List<Member> members; if (Console.ReadKey(true).Key == ConsoleKey.F1) { Console.Write("검색할 회원 ID:"); dummy = Console.ReadLine(); members = mm.SearchMember(CompareByID); } else { Console.Write("검색할 회원 이름:"); dummy = Console.ReadLine(); members = mm.SearchMember(CompareByName); }
Console.WriteLine("=== 검색 결과"); if(members.Count == 0) { Console.WriteLine("조건에 맞는 회원 데이터는 없네요."); return; } foreach (Member member in members) { VerifyView(member); } } bool CompareByID(Member member) { return member.ID == dummy; } bool CompareByName(Member member) { return member.Name == dummy; }
private void RemoveMember() { Console.WriteLine("선택한 기능: 회원 데이터 삭제"); Console.Write("삭제할 회원 ID:"); string id = Console.ReadLine(); if(mm.RemoveMember(id)) { Console.WriteLine("삭제하였습니다."); } else { Console.WriteLine("회원 데이터 삭제 실패!!!"); Console.WriteLine("존재하는 회원 ID인지 확인해 보세요."); } }
private void AddMember() { Console.WriteLine("선택한 기능: 회원 데이터 추가"); Console.Write("추가할 회원 ID:"); string id = Console.ReadLine(); Console.Write("이름:"); string name = Console.ReadLine(); Console.Write("주소:"); string addr = Console.ReadLine(); Console.Write("나이:"); int age = -1; int.TryParse(Console.ReadLine(), out age);
if(mm.AddMember(id,name,addr,age)) { Console.WriteLine("추가하였습니다."); } else { Console.WriteLine("회원 데이터 추가 실패!!!"); Console.WriteLine("이미 존재하는 아이디인지 확인하세요."); }
}
private ConsoleKey SelectMenu() { Console.Clear(); Console.WriteLine("*** 회원 관리 프로그램"); Console.WriteLine("*** F1: 회원 데이터 추가"); Console.WriteLine("*** F2: 회원 데이터 삭제"); Console.WriteLine("*** F3: 회원 데이터 검색"); Console.WriteLine("*** F4: 전체 회원 데이터 보기"); return Console.ReadKey(true).Key; } } }
|
Program.cs
namespace MemberManagerApp { class Program { static void Main(string[] args) { MMApp app = MMApp.Singleton; app.Run(); } } }
|
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[KaKao 지도 API] 기본 HTML 소스 코드 + 센터 이동 자바스크립트 함수 (0) | 2018.11.21 |
---|---|
Visual Studio에서 웹 사이트 만들기 (1) | 2018.11.21 |
[C#, Open API] 지역 검색 후 선택한 지역으로 지도 이동하는 GUI 프로그램 만들기 - 포트폴리오 (0) | 2018.11.21 |
[C#, 윈도우즈 프로그래밍 실습 포트폴리오] MVC 패턴을 적용하여 응용 개발하기 (0) | 2018.11.01 |
[NCS 실습, Windows Form with C#] 화면 구현 - 사용자 정의 컨트롤 및 이벤트 (0) | 2018.10.24 |
[NCS 실습] 프로그래밍 언어 활용 - 라이브러리 활용하기 (0) | 2018.10.04 |
[NCS 실습] 프로그래밍 언어 활용 - C# 언어 특징 활용하기 (0) | 2018.09.20 |
[C# 실습] 인덱서 정의 예제 소스 코드 (0) | 2018.09.12 |
[C# 기본 문법 활용하기] 프로그래밍 언어 활용 실습 - 포트폴리오 (0) | 2018.09.05 |
[C# 실습 설명] 제어문 - 메뉴 출력 및 선택 반복하기 (0) | 2018.08.31 |