[c언어] c프로그래밍 시뮬레이션 [매장 계산대 구현]
*민*
다운로드
장바구니
소개글
c언어로 구현한 시뮬레이션 프로그래밍 입니다.이마트, 홈플러스 등등에 있는 계산대를 구현하였습니다.
소스는 깔끔하고 보기좋게 모든 연산은 함수로 구현하였으며, 모든 라인별로 주석을 달아놓았습니다.
제가 제출할때 냈던 보고서까지 첨부하였으며, 본 자료는 학기말 텀 프로젝트로 제작 하였으며, 교수님께 만점을 받은 프로그램 입니다.
제작기간은 약 4일정도 소요 되었습니다.
아래는 소스 일부 입니다.-------------------------------------------------------
void customer() //손님 발생함수
{
double temp;
int goods, line;
srand(time(NULL));
temp=Uniform(); //유니폼을 호출하여 리턴값을 temp 에 저장
if (0.4 < temp && temp < 0.6) //만약 temp 가 0.4보다 크고 0.6보다 작으면
{
goods=rand()%30 + 1; //goods에 1부터 30까지 랜덤값 저장
line=select_line(); //select_line()을 호출하여 line에 저장
Q_put(line,goods); //해당 계산대의 큐에 goods값 저장
}
}
void counter_1() //계산대 1 함수
{
int i;
queue_num(); //queue_num() 호출
gotoxy(17,22);
printf("%2d", counter1.line); //현제 대기자수 출력
if(counter1.state==0) //계산중이지 않으면
{
gotoxy(17,16);
printf("O"); //입장가능 ('O') 출력
}
if (counter1.line>0 && counter1.state==0) //대기손님이 있으나, 계산중이지 않으면
{
if(rear[0] != front[0]) //큐에 데이터가 있으면
{
waiting_time[0][front[0]] = clk - queue[0][front[0]].time_start; //대기시간 = 현제시간 - 줄을 선 시간
gotoxy(16,14);
printf("%3.1lf",waiting_time[0][front[0]]); //현제손님 대기시간 출력
if(waiting_time[0][front[0]] > 0.0) //대기시간이 0보다 크면
{
total_delay[0]++; //누적 대기손님 1 증가
}
gotoxy(101,12);
아래는 보고서 일부 입니다.-------------------------------------------------------
1. 문제정의
- 주제선정
강의 마지막 주차 때 배운 Simulation 을 큰 주제로 잡아 세부 주제를 선정 하였습니다. 누구나 한 달에도 몇 번씩은 방문하는 대형할인마트를 모델로 삼아 Simulation을 구현하였습니다.
- 세부조건
계산대는 총 3개가 갖추어져 있다. 손님들은 제각각 필요한 물건들을 모두 구매하면 계산대로 향하는데, 누구나 그렇듯이 계산대 중에 대기 중인 손님이 있다면 줄이 가장 적은 곳에 줄을 선다. 하지만 1, 2, 3 번 계산대의 대기 줄이 같으면 출구에 가까운 1번 계산대에 줄을 선다. 각각 구매한 상품은 해당 계산대의 직원이 바코드를 찍으며 계산을 시작한다. 각 계산대별 직원들의 상품 바코드 찍은 속도는 똑같으며, 상품을 계산대에 꺼내어 놓는 시간과, 금액을 결제하는 시간은 생략한다. 각 계산대별 누적 손님과, 누적 판매금액, 누적 대기 손님, 평균 대기시간은 매장의 중앙관리소에 기록되며, 통계가 나온다.
- 구현방법
․ 계산할 손님의 발생
void customer()
Uniform 값을 발생시켜 발생한 값이 0.4부터 0.6 사이의 값이면 손님이 발생한다.
손님이 구매한 물품의 수는 random 함수를 사용하여 1부터 30사이의 수를 발생시킨다. (rand()%30+1) 즉 손님의 최소 1개부터 30개까지의 물품을 구매한다.
---------------------------------------------------------------------------------
현제 프로그램은 오류업이 정상적으로 동작하며, 받으신 분들이 간단한 수정이 용이하도록 만들어 졌습니다.
필요하신분은 받으세요. 받으셔도 정말 후회 없습니다.
컴파일 실행환경
Microsoft visual c++압축파일 내 파일목록
2007년 2학기 프로그래밍실습 Term Project.hwp
c 텀프로젝트.dsp
c 텀프로젝트.dsw
c 텀프로젝트.ncb
c 텀프로젝트.opt
c 텀프로젝트.plg
term.c
Debug/c 텀프로젝트.exe
Debug/c 텀프로젝트.ilk
Debug/c 텀프로젝트.pch
Debug/c 텀프로젝트.pdb
Debug/term.obj
Debug/vc60.idb
Debug/vc60.pdb
c 텀프로젝트.dsp
c 텀프로젝트.dsw
c 텀프로젝트.ncb
c 텀프로젝트.opt
c 텀프로젝트.plg
term.c
Debug/c 텀프로젝트.exe
Debug/c 텀프로젝트.ilk
Debug/c 텀프로젝트.pch
Debug/c 텀프로젝트.pdb
Debug/term.obj
Debug/vc60.idb
Debug/vc60.pdb