2012-10-30 2 views
-6

C++에서 Employee Database 프로그램을 수행하고 있습니다. 각 직원마다 고유 한 직원 번호를 생성하고 싶지만 성공하지 못했습니다. 누군가 나를 도와 드릴 수 있습니다. 오, Visual C++가 아닌 Turbo C++ Borland 관련 코드를 게시하십시오. 곧 너희들의 소식을 듣기를 바란다. 코드가 아니라면이 작업을 수행하는 알고리즘을 알려주십시오.고유 Emplyee ID 생성 C++

+8

순차처럼 사용이 ... 독특한 것으로 알려져 Luchian 고르의 알고리즘의 –

+0

구현된다. 'last_id ++;'last_id가 마지막으로 사용 된 것이면이 코드는 새로운 고유 ID를 생성하고 last_id에 저장합니다. – BenjiWiebe

+1

일반적인 RDBMS 백엔드를 사용하여 직원 데이터를 저장하는 경우 해당 데이터베이스 고유의 식별자 생성 메커니즘을 사용해야합니다. 이러한 메커니즘은 데이터베이스에 의해 강제 적용될 수 있으며 잠금 및 동기화 문제를 처리해야합니다. 표준 데이터베이스 백엔드를 사용하지 않는다면 아마해야 할 것입니다. – Rook

답변

2

1에서 시작하여 매번 증가하십시오. 여기에 단일 스레드 버전입니다 :

unsigned long long int unique_id() 
{ 
    static unsigned long long int n = 0; 
    return ++n; 
} 

스레드 안전 버전의 경우는, 대신 std::atomic<unsigned long long int>를 사용하거나 뮤텍스를 추가 할 수 있습니다.

+0

std :: 터보 C++의 원자 및 뮤텍스? –

+0

C++ 빌더, 터보 C++의 현대적인 (유지 보수 된) 대체품으로 C++ 11 스펙 중 적어도 일부는 분명히 지원됩니다. 그러나 Turbo C++ 자체에 대한 희망은별로 없습니다. – Rook

-1

아주 간단한 고유 한 ID 발생기

class UniqueIDGenerator{ 
    private: 
     static unsigned long uniqueId = 1000ul; //Starting the IDs with 1000 

    public: 
     static unsigned long generateUniqueId(){ 
     return uniqueId++; 
     } 
}; 

int empId = UniqueIDGenerator::generateUniqueId(); 
+0

이것은 C++이 아닙니다 ... –

+0

@KerrekSB 구문 오류가 발생하면 죄송합니다. 나는 오랫동안 C++에 손대지 않았다. 오류를 지적하여 문제를 해결할 수 있습니까? – Vivek

+0

C++에는 "공용 클래스"같은 것이 없습니다. 그냥'클래스'. 그러나 비 정적 멤버가없는 클래스도 맨 위에 약간 있습니다. 왜 함수가 아닌가? –