U E D R , A S I H C RSS

10학번 c++ 프로젝트/소스

소스 파일

main.cpp

말그대로 메인입니다..by.AllMemberz

#include <windows.h>
#include "now_time.h"
#include "alarmsetting.h"
#include "cho.h"

void main()	{

	while(1)	{
		now_time a;
		a.print_now_time();
		system("cls");
		cho b;
		b.setwatch();
		system("cls");
		alarmsetting c;
		c.alm_set();
	}
}

now_time.cpp

시간을 표시합니다 by.김상호, 김정욱

/***********************************************************
* ////////현재시각표시//////////
*
* 아 진짜 고생 많이했다 ㅋㅋㅋㅋ
* 숫자 크기 정하느라 황금비율 찾아봤다능... ;;( 1 : 1.618 이니까 5:8 이라능...)
* 숫자 디자인 한참 고민했다능... ;;
* 숫자 띄우느라 애먹었다능... ;;
* 내 노력을 알아달라능...ㅡ,.ㅜ;;
*                                     By 컴공의 자랑
***********************************************************/

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include "now_time.h"
using namespace std;
typedef enum { NOCURSOR, SOLIDCURSOR, NORMALCURSOR } CURSOR_TYPE;

extern int ah;
extern int am;
extern int as;
void gotoxy(int x, int y)
{
	COORD Cur;
	Cur.X=x;
	Cur.Y=y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}
void setcursortype(CURSOR_TYPE c)
{
	CONSOLE_CURSOR_INFO CurInfo;

	switch (c) {
	case NOCURSOR:
		CurInfo.dwSize=1;
		CurInfo.bVisible=FALSE;
		break;
	case SOLIDCURSOR:
		CurInfo.dwSize=100;
		CurInfo.bVisible=TRUE;
		break;
	case NORMALCURSOR:
		CurInfo.dwSize=20;
		CurInfo.bVisible=TRUE;
		break;
	}
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CurInfo);
}
void now_time::print_now_time()
{
	
	char arr[10][8][16]={		// digit 노가다
		{{"  ■■■  "},			
		{"■      ■"},
		{"■      ■"},			
		{"■      ■"},			// 디자인 수정의 편의성을 위해 세로로 길게 씀.
		{"■      ■"},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■  "}},
		{{"    ■    "},
		{"  ■■    "},
		{"■  ■    "},
		{"    ■    "},
		{"    ■    "},
		{"    ■    "},
		{"    ■    "},
		{"■■■■■"}},
		{{"  ■■■  "},
		{"■      ■"},
		{"■      ■"},
		{"        ■"},
		{"      ■  "},
		{"    ■    "},
		{"  ■      "},
		{"■■■■■"}},
		{{"  ■■■  "},
		{"■      ■"},
		{"        ■"},
		{"    ■■  "},
		{"        ■"},
		{"        ■"},
		{"■      ■"},
		{"  ■■■  "}},
		{{"      ■  "},
		{"    ■■  "},
		{"  ■  ■  "},
		{"■    ■  "},
		{"■■■■■"},
		{"      ■  "},
		{"      ■  "},
		{"      ■  "}},
		{{"■■■■■"},
		{"■        "},
		{"■        "},
		{"  ■■■  "},
		{"        ■"},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■  "}},
		{{"  ■■■  "},
		{"■        "},
		{"■        "},
		{"■■■■  "},
		{"■      ■"},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■  "}},
		{{"■■■■■"},
		{"■      ■"},
		{"        ■"},
		{"      ■  "},
		{"    ■    "},
		{"    ■    "},
		{"    ■    "},
		{"    ■    "}},
		{{"  ■■■  "},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■  "},
		{"■      ■"},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■  "}},
		{{"  ■■■  "},
		{"■      ■"},
		{"■      ■"},
		{"  ■■■■"},
		{"        ■"},
		{"        ■"},
		{"        ■"},
		{"  ■■■  "}
		}
	};

		setcursortype(NOCURSOR);	//커서를 숨긴다.


		time_t a;
		tm* b;
		int h,m,s;
		while(1){
			char key;
			if(kbhit())
			{
				key=getch();
				if(key=='1')
					break;
	
			}
			
			system("cls");
			gotoxy(24,2);				// 땡땡( : ) 입력
			cout<<"□";
			gotoxy(24,5);
			cout<<"□";
			gotoxy(52,2);
			cout<<"□";
			gotoxy(52,5);
			cout<<"□";

			time(&a);			//시스템 시간 받아오기
			b=localtime(&a);

			h = b->tm_hour;		//시
			m = b->tm_min;		//분
			s = b->tm_sec;		//초
			if((ah == h)&&(am==m)&&(as==s))
			{
				printf("\a\a\a");
			}
			int h10 = h/10;			//시,분,초 각각의 10, 1의 자리 구하기
			int h1 = h%10;
			int m10 = m/10;
			int m1 = m%10;
			int s10 = s/10;
			int s1 = s%10;

			for(int x=0;x<8;x++){		//위에서부터 한줄씩, 총 6줄 1초마다 출력
				gotoxy(0,x);
				cout<<arr[h10][x];
				gotoxy(12,x);
				cout<<arr[h1][x];

				gotoxy(28,x);
				cout<<arr[m10][x];
				gotoxy(40,x);
				cout<<arr[m1][x];

				gotoxy(56,x);
				cout<<arr[s10][x];
				gotoxy(68,x);
				cout<<arr[s1][x];
			}
			Sleep(1000);				//요게 1초씩 대기함 ( 말그대로 sleep!!. 밀리세컨드 이기 때문에 1000이라 씀)
		}
}

cho.cpp

초시계 의 몸통~ by.박재홍, 박정근

#include "cho.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>
cho::cho()
{
	chk=0;
	clock2=0;
	prog_exit=false;
}
cho::~cho()
{
}
void cho::setwatch()
{
	
	
	std::cout<<"0 : 00 : 00";

	
	char key=getch();
	while(1)
	{ 

		if(prog_exit) break; //모드전환에 의한 
		if(chk==0) //0으로 멈춰 있는 상태
		{
			if(key=='1') // 모드 전환
			{
				prog_exit=true;
			}
			if(key=='3') //스탑워치 출발
			{
				chk=1;
				Fulls=GetTickCount();
				while(1)
				{
					clock=GetTickCount()-Fulls+clock2;
					rs=clock/1000;
					s=rs%60;
					m=clock/60000;
					rms=clock%1000;
					ms=rms/10;
					system("cls");
					std::cout<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;


					if(kbhit())
					{
						key=getch();
						break;
					}


				}

			}
		}
		if(chk==1) //스탑워치출발하고 있을때
		{

			if(key=='3') //일시정지
			{
				chk=2;
				system("cls");
				std::cout<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;
				key=getch();

			}
			if(key=='1') // 모드 전환
			{
				prog_exit=true;
			}

		}
		if(chk==2) //일시정지 상태일때
		{

			if(key=='2')
			{
				clock=0;
				system("cls");
				std::cout<<"0 : 00 : 00";

				key=getch();
				chk=0;


			}
			if(key=='1') // 모드 전환
			{
				prog_exit=true;
			}
			if(key=='3') // 일시정지 시점부터 다시시작
			{
				Fulls=GetTickCount();
				while(1)
				{
					clock2=(GetTickCount()-Fulls)+clock;
					rs=clock2/1000;
					s=rs%60;
					m=clock2/60000;
					rms=clock2%1000;
					ms=rms/10;
					system("cls");
					std::cout<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;

					if(kbhit())
					{
						chk=1;
						clock=clock2;
						key=getch();
						break;

					}
				}
			}
			if(key=='1') // 모드 전환
			{
				prog_exit=true;
			}
		}

	}

} 

alarmsetting.cpp

알람을 설정함 by.김정혜, 윤종하

//made by 김정혜
//알람설정화면 10.07.15
//ver.노가다 
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include"alarmsetting.h"
using namespace std;
struct altm{
 int altm_hour;
 int altm_min;
 int altm_sec; 
}settm;
int ah,am,as;
void alarmsetting::alm_set()
{
	
 char button; //버튼 임력할 변수 1,2,3중에....

 struct altm settm;
 settm.altm_hour=00;
 settm.altm_min=00;
 settm.altm_sec=00;

 int* a; //설정 시간 위치 포인터 

 a=&settm.altm_hour;//첨엔 시간을 가리키고 있음
 
 printf("■■ 알람 시간 설정 ■■\n");
 printf("\n");
 printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec);
 printf("\n");
 printf("1:종료, 2:시간↑, 3:칸옮기기→\n");
 printf("\n");
 //printf("1:mode ,2:reset ,3:start/stop\n");

 

 for(;;)
 { 
  button=getch();//이제 버튼 선택을 받음...

  if(button=='1')break;//모드 전환 되게 루프 나가는 거임

  if(button=='2'){//시간을 증가 시키는 경우. function으로 묶어 줘야 할듯...
   system("cls");

   *a += 1;

   if(settm.altm_hour==25)settm.altm_hour=00;
   if(settm.altm_min==60)settm.altm_min=00;
   if(settm.altm_sec==60)settm.altm_sec=00;

   printf("■■ 알람 시간 설정 ■■\n");
   printf("\n");
   printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec);
   printf("\n");
   printf("1:종료, 2:시간↑, 3:칸옮기기→\n");
   printf("\n");
   //printf("1:mode ,2:reset ,3:start/stop\n");
  }

  if(button=='3'){//설정 시간 위치를 바꾸는 경우. 역시 function으로 묶어줘야 할듯....
   system("cls");

   if(a==&settm.altm_hour) a = &settm.altm_min; 
   else if(a==&settm.altm_min) a = &settm.altm_sec; 
   else if(a==&settm.altm_sec) a = &settm.altm_hour; 

   printf("■■ 알람 시간 설정 ■■\n");
   printf("\n");
   printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec);
   printf("\n");
   printf("1:종료, 2:시간↑, 3:칸옮기기→\n");
   printf("\n");
   //printf("1:mode ,2:reset ,3:start/stop\n");
  }


 }


 system("cls");

 if((settm.altm_hour==00)&&(settm.altm_min==00)&&(settm.altm_sec==00)){
  printf("■■ 알람 설정 안됨ㅜ_ㅜ !■■\n");
 }

 else {
  printf("■■ 알람 설정 완료ㅋ_ㅋ !■■\n");
  printf("\n");
  printf("설정한 알람은 %d시 %d분 %d초 입니다!\n",settm.altm_hour,settm.altm_min,settm.altm_sec);
  printf("\n");

  ah = settm.altm_hour;
  am = settm.altm_min;
  as = settm.altm_sec;
 }
 //그 담에 원래 다음 화면으로 이동...


}



/*여기까진데, function 으로 묶어 주는 게 필요 할 것 같고
알람을 설정하는 위치가 어디인지도 좀 알려주는게 좋을 것 같다ㅎㅎ
깜빡이게 해서? */

헤더 파일

now_time.h

#pragma once
class now_time {

public:
	void print_now_time();
};

cho.h

#pragma once
class cho	{
private:
	int chk;
	int m,s,ms;
	int rs,rms;
	int clock;
	int clock2;
	int Fulls;
	bool prog_exit;
public:
	void setwatch();
	cho();
	~cho();

};

alarmsetting.h

#pragma once
class alarmsetting
{
public:
	
	void alm_set();
};

alarm.h

alarmsetting에서 now_time으로 넘기기 위해 사용

#pragma once
int alm_h;
int alm_m;
int alm_s;
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:06
Processing time 0.0343 sec