반응형

*C# Json 을 이용한 간단한 로또 당첨번호 확인 예제...

 

Main

- 사용한 컨트롤 : Button 1개, Label 3개, TextBox 8개, GroupBox 1개

 

- 참조 소스 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제 :: 삽질하는 개발자... (tistory.com)

 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제

* C# Json Parsing 을 이용한 로또 (Lotto) 당첨 번호 읽어 오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy..

kdsoft-zeros.tistory.com

전체 소스 코드

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

//json 참조 추가
using System.Net.Json;
using System.Net;
using System.IO;

namespace Lotto_1
{
    public partial class Form1 : Form
    {
        int iCount = 0;
        List<int> ltResult = new List<int>();
        public Form1()
        {
            InitializeComponent();
        }

        #region 사용자 정의함수...
        private bool IsNullString(string str)
        {
            return string.IsNullOrEmpty(str);
        }

        private int IsInt(object ob)
        {
            if (ob == null) return 0;

            int iCheck = 0;
            bool bCheck = int.TryParse(ob.ToString(), out iCheck);

            if (!bCheck)
            {
                return 0;
            }

            return iCheck;
        }

        private string GetHttpLottoString(string strUri)
        {
            string strResponseText = string.Empty;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
            request.Method = "GET";

            //웹리퀘스트 타임아웃 
            request.Timeout = 20 * 1000; // 20초
            //request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법

            //응답 받기
            using (HttpWebResponse hwr = (HttpWebResponse)request.GetResponse())
            {
                //응답이 정상적으로 이루어 졌으면... 
                if (hwr.StatusCode == HttpStatusCode.OK)
                {
                    Stream respStream = hwr.GetResponseStream();
                    using (StreamReader sr = new StreamReader(respStream))
                    {
                        strResponseText = sr.ReadToEnd();
                    }
                }
                else
                {
                    strResponseText = "";
                }
            }

            return strResponseText;
        }
        
        private bool isCheck()
        {
            //Lotto Number 당첨 번호 읽어 오기...
            if (IsNullString(textBox1.Text) && IsNullString(textBox2.Text) && IsNullString(textBox3.Text) && IsNullString(textBox4.Text)
                && IsNullString(textBox5.Text) && IsNullString(textBox6.Text) )
            {
                MessageBox.Show("빈 값일 순 없습니다.");
                return false ;
            }

            //숫자가 아니면...
            if (IsInt(textBox1.Text) == 0 && IsInt(textBox2.Text) == 0 && IsInt(textBox3.Text) == 0 && IsInt(textBox4.Text) == 0 &&
                IsInt(textBox5.Text) == 0 && IsInt(textBox6.Text) == 0 )
            {
                MessageBox.Show("숫자만 입력 해 주세요.");
                return false;
            }

            //회차 번호 체크
            if (IsInt(textBox8.Text) == 0 && IsNullString(textBox8.Text))
            {
                MessageBox.Show("숫자만 입력 또는 빈 값일 순 없습니다.");
                textBox8.Text = "";
                textBox8.Focus();
                return false;
            }

            return true;
        }

        private void Check_Result(int iNumber )
        {
            //-2 한 값은 마지막 보너스 넘버 는 체크 안함...
            for (int i = 0; i <= ltResult.Count - 2; i++)
            {
                if(iNumber == ltResult[i])
                {
                    iCount++;
                    return;
                }
            }
        }


        private void MessageResult(int iBonus)
        {
            switch(iCount )
            {
                case 6:
                {
                    lblResult.Text ="축하 드립니다. 1등에 당첨 되셨습니다.";
                    break;
                }
                case 5:
                {
                    if (iBonus == 1)
                    {
                         lblResult.Text = "축하 드립니다. 2등에 당첨 되셨습니다.";
                     }
                    else
                    {
                         lblResult.Text = "축하 드립니다. 3등에 당첨 되셨습니다.";
                    }
                    break;
                }
                case 4:
                {
                    lblResult.Text = "축하 드립니다. 4등에 당첨 되셨습니다.";
                    break;
                }
                case 3:
                {
                    lblResult.Text = "축하 드립니다. 5등에 당첨 되셨습니다.";
                    break;
                }
                default:
                {

                    lblResult.Text = "꽝 입니다. 다음 기회에...반드시 성공을...";
                    break;
                }
            }
        }

        #endregion 

        private void button1_Click(object sender, EventArgs e)
        {
            List<int> ltLottoNumber = new List<int>();
            int iBonus =0;

            ltResult.Clear();
            //Count 값 초기화...
            iCount = 0;

            //체크
            if(!isCheck ())
            {
                return;
            }
            ltLottoNumber.Add(Convert.ToInt32(textBox1.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox2.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox3.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox4.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox5.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox6.Text.Trim()));

            //로또 회차 넘버 불러오기...
            string strReturnValue = GetHttpLottoString("https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=" + textBox8.Text);

            if (strReturnValue == "")
            {
                MessageBox.Show("Lotto Number 불러오기 실패...");
                return;
            }

            //Json 으로 바꾸기...
            JsonTextParser jtr = new JsonTextParser();
            JsonObject jo = jtr.Parse(strReturnValue);
            JsonObjectCollection jac = (JsonObjectCollection)jo;

            //불러오기가 성공 하면...
            if (jac["returnValue"].GetValue().ToString() == "success")
            {
                //담기...
                ltResult.Add(Convert.ToInt32(jac["drwtNo1"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo2"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo3"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo4"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo5"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo6"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["bnusNo"].GetValue().ToString().Trim()));
                textBox7.Text = jac["bnusNo"].GetValue().ToString().Trim();
            }
            //Check Result
            for (int i = 0; i <= ltLottoNumber.Count - 1; i++)
            {
                Check_Result(ltLottoNumber[i]);

                if(ltLottoNumber[i] == ltResult[ltResult.Count-1])
                {
                    iBonus = 1;
                }
            }
            //Result
            MessageResult(iBonus );

        }

        private void textBox8_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter )
            {
                button1_Click(null, null);
            }
        }
    }
}

* 예제 결과

 

결과 화면

 

반응형

+ Recent posts