본문 바로가기

[C#] 데이터베이스 관리 이 프로그램은 코드만 가지고는 아무것도 구현할 수 없다. 컴퓨터의 Microsoft SQL 서버를 구동하고 서버 탐색기에서 데이터베이스를 생성 한 후 데이터베이스에 테이블을 만든다. 테이블을 만들었다면 윈폼에 바인딩 시킨 후 쿼리를 만들어 버튼에 할당해야 겨우 기능 하나가 구현된다. ※ 구현 기능 ○ 라디오버튼을 체크하면 해당하는 그룹박스만 보임 ○ 모든 학생 보기 버튼을 클릭하면 모든 chk가 'Y'인 데이터 출력 ○ 탈퇴 학생 포함 버튼을 클릭하면 모든 데이터 출력 ○ 아이디를 입력하고 아이디를 찾기 버튼을 클릭하면 일치하는 아이디가 존재할 경우 해당 데이터 출력 ○ 이름을 입력하고 이름으로 찾기 버튼을 클릭하면 이름 중 일부라도 일치한다면 모두 출력 ○ 아이디, 이름, 전화번호, 주소를 모두 입력하..
[C#] 서버 - 클라이언트 1 : N 비동기 채팅 서버에 클라이언트를 여러개 연결할 수 있고, 한 클라이언트가 메세지를 전송하면 서버는 해당 메세지를 연결된 모든 클라이언트에 Broadcast 한다. 클라이언트마다 메세지 수신을 위한 스레드가 동작하는데, 스레드가 끝나면 프로세스도 끝나는 걸 방지하기 위해 배경 스레드로 설정한다. 서버는 연결된 클라이언트마다 소켓과 스레드를 생성하여 관리한다. Server (Console) using System; using System.Collections; using System.IO; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; namespace ConsoleServer { class Program { s..
[C#] 웹 브라우저 C# 에서 웹을 불러오는 기능이 매우 잘 되어있어 쉽게 구현할 수 있다. 최대한 크롬이랑 비슷하게 만들려 했는데 흠... 코드 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WebBrowser { public partial class Form1 : Form { public Form1() { InitializeComponent(); webBrowser1.Sc..
[C#] 지하철 최단거리 데이터 라벨링 알바가 왜 있는지를 알 것 같은 프로그램. 플로이드 알고리즘으로 최단 거리를 계산한다. 문제는 모든 역마다 다른 역에 대한 거리 정보를 입력해줘야 되기 때문에 (역의 개수)^2 크기의 2차원 배열을 노선도를 보면서 입력해야 한다. 심지어 노선이 교차되는 역과 그 주변역은 예외로 처리 해줘야 되기 때문에 반복을 사용한 입력도 힘들다(아래 프로그램도 역이 16개인데 10개역이 예외처리된다). '이거 간단하게 하는 법 없나?' 하고 비슷한 코드 찾아보다가 배열 [101][101]짜리 선언한거 보고 바로 수작업했다. Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat..
[C#] 숫자 야구 사실 프로그램 기능 구현은 어려울게 없어서 코드를 최대한 간결하게 짜려고 노력했다. 요즘 애들은 숫자 야구 모르겟지? ※ 구현 기능 ○ New Game 버튼 클릭 시 0~9까지 각자 다른 난수 3개 생성 후 숫자 선택 버튼 활성화 ○ 숫자 버튼 클릭 시 값을 기억하고 버튼은 사라짐. 숫자 버튼 3개를 선택하면 Hit 버튼 활성화, 숫자버튼은 더이상 반응안함 ○ Hit 버튼 클릭 시 선택한 숫자 3개와 난수3개를 비교 후 값이 존재하지만 위치가 다르면 Ball, 값과 위치가 모두 같으면 Strike로 계산하여 출력. Hit 버튼 비활성화 ○ 9이닝 안에 삼진에 성공하면 승리 메세지 출력, 실패하면 패배 메세지 출력. 양쪽 모두 New Game 버튼 외 비활성화 코드 using System; using Sy..
[C#] 아날로그 시계 이거 생각보다 어렵다. 일단 시계의 침 모양을 만들기 위해 좌표를 4개를 찍어서 채워줘야 한다. 아날로그 시계인 만큼 침들을 회전이동 시켜줘야 하는데, 좌표 4개를 찍어서 침을 만들었으니 중심을 제외한 좌표 3개를 이동시켜 줘야 한다. 또한 프로그램을 실행했을 때 침들을 현재 시간에 놓는 작업과 시간 표시를 위해 시계 테두리에 숫자를 회전하면서 그리는 작업도 생각을 요구한다. 경과를 빠르게 보여주기위해 타이머 Interval을 100ms로 설정. 하지만 폼의 텍스트는 현재시간을 받아오기 때문에 1배속 그대로 출력된다. 코드 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using ..
[C#] 바이오리듬 주제 자체는 유사과학이지만 그래픽 공부 면에서 y좌표를 리스트에 저장한 후 일정한 간격으로 이어 사인파를 만드는 과정은 꽤나 유익하다. Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Globalization; namespace BioRhythm { public partial class Form1 : Form { public Form1(..
[C#] 하노이의 탑 계획을 세웠다가 처맞은 프로그램. 원래 계획은 판의 개수를 선택하는 기능을 만들어서 1개~6개중 하나를 선택하게 만들려 했었다(윈폼이 쓸데없이 크고 위에 사용안된 판들이 떠있는 이유). 그 후 기둥마다 스택을 할당해서 push와 pop을 통해 판을 이동시키고 목표 기둥에 모든 판이 들어가면 완료되게 만들려 했다. 그런데 판을 만들기 위해 사용한 RectangleShape가 타입이 없다? 그래서 배열이나 리스트, 스택으로 조작하는게 불가능함...Object로 만들고 Control 써도 안됨. 그럼 케이스를 다 만들어 줘야 하는데, 판 n개를 사용하는 경우 하나당 케이스가 3 x 2 x n 개 나온다. 즉, 케이스만 6 x (1 + 2 + 3 + 4 + 5 + 6) = 216 가지...그리고 판 3개를 구분..