사용한 개발 툴 : SAFEModeler

피자가게 ER다이어그램


SAFE Modeler.zip

ER다이어그램(11.5).erd

Posted by 검지발가락♡

사용한 개발 툴 : ORACLE

2008년 10월 12일

대학(UNIVERSITY) 데이터베이스 예제

 

학생

(STUDENT)

학번

(SNO)

이름

(SNAME)

학년

(YEAR)

학과

(DEPT)

 

100

나수영

4

컴퓨터

 

200

이찬수

3

전기

300

정기태

1

컴퓨터

 

 

400

송병길

4

컴퓨터

 

500

박종화

2

산공

 

과목

(COURSE)

과목번호

(CNO)

과목이름

(CNAME)

학점

(CREDIT)

학과

(DEPT)

담당교수

(PRNAME)

 

C123

프로그래밍

3

컴퓨터

김성국

C312

자료 구조

3

컴퓨터

황수관

 

C324

화일 처리

3

컴퓨터

이규찬

 

C413

데이타베이스

3

컴퓨터

이성호

 

C412

반 도 체

3

전자

홍봉진

 

 

등록

(ENROL)

학번

(SNO)

과목번호

(CNO)

성적

(GRADE)

중간성적

(MIDTERM)

기말성적

(FINAL)

 

100

C413

A

90

95

100

E412

A

95

95

 

200

C123

B

85

80

 

300

C312

A

90

95

 

300

C324

C

75

75

 

300

C413

A

95

90

 

400

C312

A

90

95

 

400

C324

A

95

90

 

400

C413

B

80

85

 

400

E412

C

65

75

 

500

C312

B

85

80

 

 

1) 컴퓨터학에서 개설되는 과목이름, 학점, 담당교수를 검색하라. 

select cname, credit, prname
from course
where dept = '컴퓨터'
order by cname, credit, prname;

2) 한 과목이라도 A학점을 받은 학생들의 학번을 검색하라.

select distinct sno
from enrol
where grade = 'A'

3) 모든 학생들의 이름을 가나다라 순으로 검색하라.  

select sname
from student
order by sname


4) 소속학과가 컴퓨터학과이거나 전기학과인 학생들의 이름과 학년을 검색하라.

select sname,year
from student
where dept='컴퓨터'or dept='전기'


5) 중간성적과 기말 성적이 80점 이상인 학생들에 대해서 학번의 오름차순으로, 또 같은 학번에 대해서는 과목번호의 내림차순으로 학번과 과목번호, 중간성적, 기말성적을 검색하라. 

select sno, cno, midterm, pinal
from enrol
where enrol.midterm >= 80 or enrol.pinal >= 80
order by sno, cno desc;

6) 등록(ENROL) 테이블에서 과목번호(CNO)가 'C312'인 중간성적(MIDTERM)에 3점 더한 값을 학번(SNO)과 '중간성적' 타이틀로 검색하라.

select sno, midterm+3 as 중간시험
from enrol
where cno = 'C312'

 

7) 학번이 300인 학생이 등록한 과목의 이름과 학점을 검색하라.

select cname, grade
from course, enrol
where enrol.sno = 300 and enrol.cno = course.cno

8) 과목이름이 '자료구조'인 과목에 등록한 학생의 이름(SNAME), 학과(DEPT), 성적(GRADE)을 검색하라.

select distinct sname, student.dept, grade
from student, course, enrol
where enrol.cno=
(
select course.cno
from course
where cname = '자료구조'
)  and student.sno = enrol.sno

9) 과목번호가 'C413'인 과목을 등록한 학생은 몇 명인가?

select count(cno)
from enrol
where cno = 'C413'


10) 각 과목별 기말성적의 최고점을 검색하라.

select cno, max(pinal)
from enrol
group by cno

 
13) 담당교수가 이씨 성을 가진 과목의 이름을 검색하라.

select prname
from course
where prname like '이%'

17) 학생 테이블에서 컴퓨터과 학생의 학번, 이름, 학년을 검색하여 새로운 컴퓨터학과(COMPUTER) 테이블에 삽입하라.

insert into computer(sno, sname, year)
select sno, sname, year
from student
where dept = '컴퓨터'

 
18) 학년이 4학년이 아닌 학생을 삭제하라.

delete
from student
where year <> 4

19) 모든 과목 정보를 삭제하라.

delete
from course


SQL실습문제.hwp

 

Posted by 검지발가락♡
사용한 개발 툴 : Microsoft Visual Studio 6.0
특징 : 라운드로빈 스케줄링, GUI, 파일처리, 구조체

GUI를 위해

void gotoxy(int x, int y)
{
 COORD Cur; Cur.X = x; Cur.Y = y;
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}
void PrintSquare(int x1, int y1, int x2, int y2)
{
 int i;
 // 사각형의 각 모서리를 먼저 그리고,
 gotoxy(x1, y1);
 printf("┏");
 gotoxy(x2, y1);
 printf("┓");
 gotoxy(x1, y2);
 printf("┗");
 gotoxy(x2, y2);
 printf("┛");
 // 윗변과 아랫변(가로 부분을 그림) "━"게 2바이트를 차기 하 기 때문에 I의 증가값을 2
 for (i=2; i < (x2-x1); i += 2)
 {
  gotoxy(x1 + i, y1);
  printf("━");
  gotoxy(x1 + i, y2);
  printf("━");
 }
 // "┃"는 1바이트를 차기 하기 때문에 증가값을 1
 for (i=1; i< y2-y1; i++)
 {
  gotoxy(x1, y1+i);
  printf("┃");
  gotoxy(x2, y1+i);
  printf("┃");
 }
}
//메시지를 출력
void OpeningMessage(int x, int y)
{
 int i;
 gotoxy(x, y);
 printf("Waiting simulation...\n");
 gotoxy(x, y+1);
 for (i=0; i<12; i++)
 {
  printf("■");
  Sleep(400);
 } }

이렇게 프로세스 GUI 생성~

파일처리

void openfile(){ // 파일 열기
 int n =0; // 버퍼수 
 int i = 0;
 char *buff;
 FILE *f;
 
 char fname[] = "process.dat"; 
 if ( (f = fopen(fname, "r")) == NULL){
  printf("파일이 열리지 않습니다.\n");
  exit(1);
 };
 
 while(!feof(f)){
  fscanf(f, "%d", &buff);
  n++;
 }
 num = n/2;
 rewind(f);
 p =(P *)malloc( sizeof(P)*num);
 for(i = 0; i <num ; i++){
  fscanf(f, "%d %d", &p[i].arrive_time, &p[i].burst_time);
  if(p[i].arrive_time <p[i-1].arrive_time){
   num = i;
   break;
  }
  p[i].copy_burst_time=p[i].burst_time;
 }
 fclose(f);
 
}


구조체

typedef struct process {
 int burst_time; // 버스트 타임
 int copy_burst_time;
 int arrive_time; //도착 시간
}P; // 프로세스에 관한 구조체
P *p;
typedef struct ready_queue{
 int remain_time; //남은 시간
 int end_time; // 끝난 시간
}Q;
Q *q;
Q *chart;

Posted by 검지발가락♡
원서로 된 운영체제 책이라 다시 정리

●운영체제란?

퓨터 사용자와 컴퓨터 하드웨어 사이에 중간 매개체 역할을 해주는 프로그램

- 목표 (편리성, 효율성)

·사용자 프로그램을 실행시키고 문제를 쉽게 해결하도록 함(효율성)

·컴퓨터 시스템을 편리하게 사용할수 있다.

- 시스템 관점

·OS는 자원할당자 이다.

모든 자원의 관리자로 동작하며, 작업을 위해 특정 프로그램과 사용자에게 필요한 자원을 할당한다.

자원에 대해 서로 상충될 수도 있는 많은 요청이 있기 때문에, 운영체제는 컴퓨터 시스템을 효율적이고 공정하게 운영할 수 있도록 어느 요청에 자원을 할당할지를 결정.

- OS는 제어 프로그램이다.

·컴퓨터의 부적절한 사용을 방지하기 위해 사용자 프로그램의 실행을 제어한다.

- 완전한 정의는 없다.

- 컴퓨터에서 항상 수행되는 프로그램 = kernel

● 컴퓨터 시스템 구조

4가지 구조로 나눌수 있다.

- 하드웨어 :

CPU, memory, I/O 장치로 구성되어 있으며 기본 컴퓨팅 자원을 제공한다.

- 운영체제 :

사용자를 위해 다양한 응용 프로그램간의 하드웨어 사용을 제어하고 조정한다.

컴퓨터 시스템이 동작할 때 이 자원들을 적절하게 사용할 수 있는 여러 가지 방법을 제공한다. 단순히 다른 프로그램이 유용한 작업을 할 수 있게 도와준다.

- 응용프로그램 :

컴퓨터 문제를 해결하기 위해 시스템 자원으르 사용

- user

● Computer startup(startup : 시동때 우선 실행해야 할 프로그램)

- 부트스트랩 프로그램은 power-up 이나 reboot를 로드한다.

- ROM 또는 EEPROM에 저장되며 일반적으로 firmware 라고 불린다.

- 모든 시스템의 상태를 초기화 한다.

- 커널과 시작은 OS를 로드함으로서 수행 된다.

●컴퓨터 시스템 연산

공유 메모리에 대한 접근을 제공하는 공통버스에 의해 연결된 여러개의 제어 장치기와 하나 이상의 CPU로 구성되어 있다.

-CPU와 장치제어기는 메모리 사이클을 얻기 위해 경쟁하면서 병행 수행될 수 있다.

·입출력 장치와 중앙연산장치는 동시에 수행할 수 있다.

·각각의 장치 컨트롤러는 특정한 장치 타입을 요구한다.

·각각의 장치 컨트롤러는 로컬 버퍼를 갖는다.

·중앙연산장치는 데이터부터 메인 메모리로 로컬 버퍼에까지 움직인다.

·입출력은 로컬버퍼 컨트롤러의 장치에 있다.

·장치컨트롤러는 CPU에 인터럽트에 의해 운영이 끝났다는 것을 알린다.

●Common Functions of Interrupts(중요?)

·서비스 루틴의 모든 주소들이 있는 인터럽트 벡터를 통해서 인터럽트 서비스 루틴은 대게 인터럽트 전송들을 통제한다. (인터럽트 상태 처리 후 저장 한 지점부터 다시 시작하기 위해서 저장함.)

·인터럽트의 구조는 인터럽트된 명령의 주소를 저장해야 한다.(예 : 32인덱스의 2000번 주소를 저장함.)

·인터럽트가 들어오면 로스트 인터럽트를 예방하는 또 다른 인터럽트를 수행은 작동하지 않는다.(CPU 상태 저장)

·소프트웨어에서 생성된 인터럽트를 트랩이라 한다.

·OS는 인터럽트 드리븐이다.

●Interrupt Handling(중요?)

·운영체제는 레지스터와 프로그램 카운터의(다음 실행할 인터럽트 주소 저장)저장에 의해 CPU의 상태를 보호한다.

· 인터럽트 발생 타입을 결정한다.

polling(조사를 위해서 → 몇 명의 user 가 사용?)

vectored interrupt system

·separate segments of code determine what action should be taken for each type of interrupt

 

※프로그램 카운터

다음에 실생할 명령이 저장되어있는 메인 메모리상의 어드레스를 가리키는 레지스터

프로그램 카운터는 각 명령어가 실행된 후, 곧 이어질 명령어의 주소를 가리키는 값이 자동적으로 증가한다.

 

●I/O 구조

·동기식 입출력(Synchronous) :

·입출력이 시작되면 요청한 프로세서는 입출력이 완료될 때까지 기다린다.

·특수한 명령어 사용 / 대기루프 사용

유저의 퀘스트한 프로그램의 처리에 있어 kernel의 device driver → Interrupt handler → hardware date transfer 처리 시간동안 다음 프로그램의 실행을 대기 하는 방식.

·비동기식 입출력(Asynchronous) : 요청한 프로세서는 입출력이 완료될 때 까지 기다리지 않고 계속 다른 작업을 수행한다.

시스템 콜 - I/O가 완료 하기위해 OS시스템이 유저를 허락할 때 까지 요청 한다.

Posted by 검지발가락♡

사용한 개발 툴 : JAVA, eclipse, MSSQL

2008년 12월 17일

1. 시스템 소개

목적

- 편의점을 보유하고 있는 사용자가 편의점의 물품을 계산하기 위하여 일일이 직접 계산기를 두드리지 않고 사용자의 편의를 위하여 편의점 요금 계산기를 이용해 계산하는 데에 목적 이 있다.

프로젝트 범위 (언어에 대한)

- 그 동안 배운 객체언어인 자바로 atw와 swing을 이용하여 button을 생성하여 이벤트를 발 생시켜 결과를 나타내는 편의점 요금 계산기를 보여준다.


2. 기본 기능

네 개의 버튼(“과자”),( “껌”),(“담배”),(“라면”)과 각 버튼의 옆에는 소비가격이 명시되어 있다. 각각의 버튼은 각기 다른 소비가격(2000,300,2500,1000)을 가지고 있다. 사용자는 자신이 소비한 항목에 대한 버튼을 그 횟수만큼 클릭함으로서 총 합계를 알 수 있는데, 프로그램 내에서 각 버튼들에 대한 (버튼을 누른 횟수 * 소비가격)을 종합, 합산하여 “합계”텍스트area영역에 출력하도록 한다. 아래쪽 영역에는 텍스트area가 있으며, 사용자는 자신이 어떤 물건에 대해 얼마나 소비했는지에 대한 지출내역을 알 수 있도록 명시한다.

3. 수정/첨부 사항

자신이 선택한 각 물품항목들(과자,껌,담배,라면)에 대한 가격대는 다양하다. 따라서 사용자의 편의를 고려하여, 각 항목에 대한 다양한 가격대를 제공, 그 중 하나를 선택할 수 있도록 radio button을 생성하여 구현하였다.


객체지향JAVA.zip.zip

Posted by 검지발가락♡
사용한 개발 툴 : Microsoft Visual Studio 6.0

기말텀 과제
- 작성조건
* 상속을 이용할 것
* STL container를 이용할 것(vector등)
- 제출내용
* 제안서
. 메뉴 설명
. 기본기능 설명
. 부가기능 설명
* 전체소스
. 소스파일을 컴파일 할 수 있게 전체 소스를 제출
. 컴파일 해서 동작가능하게 모든 파일이 포함되어 있어야 함
* 실행파일
. 반드시 release 모드로 실행파일을 만들고,
. VS6.0/VS2005가 설치된 곳에서 실행할 수 있게 해야 함 

class Students : public Student

{

public:

  Students();

  ~Students();

   void Input();

   void Show();

   void Range();

   void Dis();

   void Sort();

protected:

  vector<int> meeting;

  int s_meeting;

  int a,b,c,d,e,f,g,h,m,j,k,l;

};


 

벡터를 사용하여 구현

♣ 같은 학번이 입력되면 에러처리

♣ 제한된 점수의 입력이 초과 되면 그 해당 점수만 재입력

0123

성적처리(C ).zip.zip


Posted by 검지발가락♡




 

Posted by 검지발가락♡

사용한 개발 툴 : Microsoft Office Visio

2008년 5월 30일


요구사항 분석서

1. 소개

1.1 목적

본 U. S. I. S System은 대학교에서 학교/교수/학생 간의 원활한 정보교환(Data Exchange) 을 위함이다. 유비쿼터스 시대가 도래함에 따라 Mobile의 사용이 급속히 증대 되면서 학교생활에서의 모든 데이터들을 일괄적으로 처리해 줄 수 있는 프로세서를 Mobile을 통해 컴퓨터 없이도 직접적으로 접근할 수 있게 해준다. 빠른 시간 내에 즉각적인 데이터 처리로 시간적/공간적 제약 줄여 학생 및 교수에게 보다 융통성 있고 효율적으로 정보교환이 이루워 진다.

 

1.2 프로젝트 범위

   

 

2. 기능 요구사항

U. S. I. S System에 대한 기능적인 요구사항에 대한 분석은 프로세서의 기능적 측면에 대해 세부적으로 나누어 분석하였다. 다음은 U. S. I. S System에 대한 Lev.1, Lev.2 DFD를 보여주고 있다.

 

 

2.1 레벨 1 DFD

본 Level 1 DFD는 총 3개의의 세부 프로세서와 2개의 데이터 스토어로 구성된다. 1-프로세서는 학생의 개인 신상정보에 대한 DB를 관여한다. 2-프로세서는 교수가 학생의 출석부 및 성적에 대한 DB를 관여한다. 3-프로세서는 Mobile/Web에 대한 상호연동을 위한 프로세서이다. 그리고 이 프로세서들은 다음과 같은 기능을 수행한다.

-> 학생의 개인신상정보 등록/수정/삭제의 역할 수행

-> 교수는 학생의 출결사항 및 성적에 대한 DB를 입력/수정의 역학 수행

-> 학생(개인)/교수/학교(교무처 등)는 DB Server서 해당 자료를 열람 가능

 

 

2.2 레벨 2 DFD

 

 

2.3 레벨 2 DFD 프로세스 명세

프로세스

상세명세

비고

3.1

중간고사에 대한 학생들의 응시/불 응시로 나누고, 응시한 학생들의 점수에 대해 총 학점의 30%로 점수를 환산한다.

중간고사 (30%)

3.2

기말고사에 대한 학생들의 응시/불 응시로 나누고, 응시한 학생들의 점수에 대해 총 학점의 40%로 점수를 환산한다.

기말고사 (40%)

3.3

출석부에 명시될 출석/결석/지각 횟수를 입력받아 총 학점의 10%로 점수를 환산한다.

출결사항 (10%)

3.4

과제물에 대해 교수의 평가 점수가 총 학점의 20%로 점수를 환산한다.

과제 (20%)

3.5

위 4개의 프로세스에서 받아온 데이터로 총 점수를 100% 비율로 환산하고 학점 및 석차를 계산하여 내림차순으로 정렬하여 학점 DB Server에 보내준다.

총점 (100%)

 

2.4 데이터 사전

 

데이터 흐름

개인정보 = 이름 + 주민등록번호 + 생년월일 + 성별 + 휴대폰 번호 + 자택번호

+ 자택 주소 + 개인사진

교수정보 = 이름 + 직위 + 전공 + 전화

수강생정보 = 이름 + 학번 + 학과 + 생년월일 + 입학일

수강생학점 = 중간고사점수 + 기말고사 점수 + 과제점수 + 출결점수

인증서 = 학업성적확인서 + 재학 증명서 + 등록금납입증명서

통합학생정보 = 이름 + 학번 + 학과 +주민등록번호+ 생년월일 + 성별 + 입학일

+ 휴대폰 번호 자택 번호 + 자택 주소 + 개인사진 +중간고사점수 + 기말고사점수 + 과제점수 + 출결점수

학생정보 = 이름 + 학번 + 학과 + 주민등록번호 + 생년월일 + 성별 + 입학일 +휴대폰번호 +자택 번호 + 자택 주소 + 개인사진

데이터 저장소

개인정보 DC Server = 이름 + 주민등록번호 + 생년월일 + 성별 + 휴대폰 번호 + 자택번호 + 자택 주소 + 개인사진을 저장한다.

학점정보 DB Server = 중간고사(30) + 기말고사(40) + 출석(10) + 과제(20) 를 총합 100점으로 환산시킨 점수와 석차 및 학점 정보를 저장한다.

 

3. 비 기능적인 요구사항

- 가. 신뢰성을 위해 AM 8:00 ~ PM 9:00에 서비스를 제공하고 나머지 시간에는 서버 점검을 한다.

- 나. 보안적인 측면을 살펴보면 학교 자체에서 사용하고 있는 ID/Password를 그대로 이어 받아 사용함으로써 타인에 대해 접근을 통제하여 개인정보를 보호한다.

- 다. 성능적인 측면에서 살펴보면 Mobile/Web에 관한 서비스이므로 java를 이용한 구현 필요하고 응답시간은 데이터 전송시간을 고려해 2~5초 이내에 반응한다.

- 라. 구조적인 측면에서 살펴보면 Mobile/Web에서 동시 접속자의 수를 고려하여 충분한 Server용량을 구축한다.

- 마. 안정성에서 있어서 본 시스템에 대한 서비스가 Mobile과 연동되므로 데이터 송/수신 이 끊기지 않도록 파장이 짧은 주파수로 전송 한다.

 

4. 용어집

한글명

영문명

설명

교수

Professor

U. S. I. S System 시스템을 도입한 대학의 강의를 하는 교수로서 수강생정보를 조회하고 수강생의 학점(중간고사+기말고사+출석성적+과제점수)를 입력한다.

대학교

University

U. S. I. S System 시스템을 도입한 대학의 교무처 및 정보 관리실 학생처를 통칭한다.

모바일웹

MobileWeb

모바일 웹 은 유선 인터넷에서의 웹 의 기본 개념과 원칙에 이동성, 개인성이라는 모바일의 특성이 부가된 것이다. 학생과 교수는 모바일웹을 통하여 자료를 입력하고 조회 할 수 있다.

학생

Student

U. S. I. S System 시스템을 도입한 대학의 학생으로서, 개인정보를 입력하고 학점조회 할 수 있다.

 

 

 

5. 참고문헌

※ 관련 도서

⑴ 릭마티슨 (박주민) - 모바일 브랜딩 - 가람북 - 2008.04.07

⑵ 임영환 - 모든휴대폰을위한모바일웹사이트제작및프로그래밍 - 홍릉과학출판사 - 2008
⑶ 김성환 - 모바일 자바 프로그래밍(휴대폰을 위한) - 피어슨에듀케이션코리아 - 2005  
⑷ 최은만 - 소프트웨어 공학 - 정익사 - 2005

※ 관련 논문

⑴ 박길처 - 모바일 웹서비스 시스템 구현을 위한 모바일 웹 서비스 처리기의 설계  - 한국대학교 - 2005 
⑵ 강필구, 김재환, 이상준, 채진석  - 웹 2.0 기반 RSS 데이터 수집 엔진의 설계 및 구현 A Design and Implementation of RSS Data Collecting Engine based on Web 2.0  - 한국멀티미디어학회 - 2007

※ 관련 사이트

 http://www.technokorea.co.kr 테크노 코리아 

 

Posted by 검지발가락♡
사용한 개발 툴 : Microsoft Office Visio
2008년 4월 16일

프로젝트 계획서 

1. 소개

1.1 목적

- 대학교에서 학교/교수/학생 간의 원활한 정보교환(Data Exchange)을 위함이다. 더 나아가 Mobile 서비스를 통하여 서로 간의 연락을 취할 수 있다.

1.2 프로젝트 범위

- 본 Context Diagram은 U.S.E.I.S System의 범위를 나타낸다.

 

 

2. 기대효과

본 U.S.E.I.S System은 대학교 생활에 있어서의 기대 이익은 아래와 같다.

- 기업체에서 사원들의 신상정보 관리에 응용할 수 있다.

- 친목단체나 NGO등에서도 단원들의 신상정보 관리에 응용할 수 있다.

- Mobile서비스에 관련하여 배너 광고 등으로 금전적 이익을 창출할 수 있다.

3. 시스템 기능

본 U.S.E.I.S System의 일반적인 시스템 기능은 다음과 같다.

- 같은 학교 내의 학생을의 기초 신상 정보를 열람 할 수 있다.

- 교수님은 학생들의 기초 신상 정보를 열람할 수 있다.

- 기초 신상 정보를 등록한 학생 및 교수 간의 Mobile 서비스가 가능하다.

- 학생은 시간표나 공지사항들을 바로 바로 확인할 수 있다.

- 교수님은 학생들의 출석 체크나 공지사항 등을 등록 할 수 있다.

 

4. 추진일정

 

 

 

Posted by 검지발가락♡