이제부터는 메인화면 구성을 살펴보기로 하자

 

 

상단의 그림처럼 메인화면은 단순 구성으로 이루어져있다.

먼저 가장 상단에 블럭방이용신청, 시간충전, 회원등록, 내정보수정, 블럭제품등록, 관리자등록으로 구성되어 있으며 하단 리스트부에는 탭으로 구성되어 있으며 일일블럭방이용관리, 회원관리,충전기록관리,회원유효기간관리, 블럭방이용관리, 블럭제품관리, 관리자 관리로 구성되어 있다

여기서  관리자 등록, 관리자관리는 오직 최고 관리자 권한을 갖는 사람에게만 노출되어 진다.

 

리스트뷰에 대한 기능 설명부터 차근차근 살펴보자

 

첫번째로 보이는 것이 일일블럭방 이용관리다

날짜별로 자유블럭방을 이용하는 친구들에 대한 목록을 보여준다.

 

먼저 자동으로 당일 날짜가 셋팅되어져 있다.

달력을 클릭하면 다른 날짜를 선택하고 그 선택되어진 날짜에 이용한 사람들 목록이 보여진다.

 

구성은 번호, 회원번호, 이름, 나이, 입실시간, 퇴실시간, 인정시간, 잔여시간, 입금/결재, 연락처, 메모로 구성되어 있다

 

그럼 먼저 블럭방 이용신청화면을 살펴보자

 

 

먼저 회원인 경우 회원이름을 입력하여 검색하면 된다.

검색된 화면에서 회원을 선택하면 그 회원의 정보가 상기 화면에 자동으로 뿌려진다.

 

구성은 화면에 보이는것처럼 단순하게 되어 있다.

회원일 경우 회원번호가 표시되는것 이외는 일반(일일단순이용회원)이나 시간충전회원이나 동일하다 또한 비회원전환을 선택시에는 회원도 비회원 즉 일일단순이용회원으로 변경도 가능하다

반대로 일일단순이용회원에서 회원등록과 시간충전을 한경우는 다시 수정화면을 통해 회원으로 전환도 가능하다

그부분은 아래에서 살펴보기로 하자

이렇게 내용을 입력한 다음 등록을 하면 일일이용기록으로 등록이 된다.

 

 

회원일때 검색화면이다.

검색된 회원을 더블클릭으로 선택하거나 하단의 회원선택버튼을 눌러서 선택을 하면된다.

회원이 아니면 일반등록버튼을 눌러 일반회원으로 등록하면된다

 

 

 

일일회원정보 수정은 등록화면과 동일하다

여기서 회원으로 전환하고 싶으면 회원검색을 한 후 해당 회원을 선택하면 회원번호가 기록되어진다. 그러면서 회원등록으로 변경이 된다.

물론 이때 다른 기록들은 변경이 되지 않고 그대로 화면에 나타난다.

단순히 회원으로만 변경이 된다

 

 

 

일일회원에 대한 마감화면이다

입실일자와 회원이면 회원번호가 기록되어 지고

최초 입실시간과 퇴실시간이 기록되어진다

퇴실시간은 자동으로 현재시간이 기록되어 진다.

사용시간이 계산되어져 표시된다

30분 단위로 과금이 되도록 구성되어 있어서 수동으로 인정시간을 선택하도록 되어 있다.

서비스를 해주는 친구를 위해 인정시간 0분 부터 사용시간 전후 30분 단위로 이전 1시간 이후 1시간을 선택하도록 만들어져 있다

예를 들면 2시간 30분을 이용한경우

1시간 30분, 2시간, 2시간30분, 3시간, 3시간30분으로 인정시간을 선택하도록 되어 있다

이 인정시간에 따라 남은 시간(회원인경우)이나 결재금액이 결정된다.

 

마감을 하더라도 다시 취소를 하면 마감취소가 가능하다.

 

그리고 마감이 된경우 일일회원정보 수정이나 삭제는 불가능하도록 구성되어 있다.

 

다음 포스트에서는 회원관리, 회원등록화면에 대해서 살펴보자

top


최초 환경구성은 이렇다

Visual Studio 2012

SQLite 3.7.16.2   http://system.data.sqlite.org/index.html/timeline?y=ci

.NET Framework 4.0

 

SQLite는 sqlite-netFx45-setup-bundle-x86-2012-1.0.85.0.exe를 설치하였다.

Visual Studio를 이용하여 데이타베이스에 연결한 다음 테이블은 총 5개를 만들었다

 

ADMIN : 관리자 정보 테이블

BLOCK : 블록제품 정보 테이블

CHARGE : 충전정보 테이블

DAILY : 자유블럭방 이용 일일회원 정보 테이블

MEMBER : 자유블럭방 시간충전 회원 정보(일반회원)

 

이렇게 구성하였다.

 

먼저 아래와 같이 초기 로그인 화면을 만들었다.

이 부분은  C# Winform을 이용하면 간단히 만들수 있다.

 

로그인은 2가지 그룹으로 분류해서 만들었다.

최고관리자 그룹과 일반 관리자 그룹으로 나누어서 만들었으며

최고관리자는 블럭방 프로그램 모든 기능을 사용한다. 특히 일반 관리자를 등록 관리하는 기능을 가진다 또한 SMS발송 권한을 가진다.

그러나 일반 관리자는  일일회원등록, 충전정보, 일반회원 등록 및 관리가 가능하도록 구성되어 있다.

 

 

 

처음부터 너무 긴 이야기를 시작하면 지루할 것 같아 일단 여기까지 로그인 화면구성에 대한 부분은 종료할려고 한다.

 

그리고 이프로그램을 개발하면서 가장 고민스러웠던 부분이 MDB를 사용할것인가 SQLite를 사용할것인가를 결정하는것이었다.

결론은 2기가정도면 DB로서 문제를 일으키는 MDB대신 로컬DB로 최고의 성능을 발휘하는 SQLite로 하기로 결정을 했다.

사용하기 쉽고 비쥬얼한 부분에서는 MDB가 편하지만 일단 유료이고 DB로서 그렇게 신뢰가 가지 않아서 무료인 SQLite를 사용하기로 했다(나만의 생각인가)

 

여하튼 SQLite를 사용하면서 가장 어려웠던것이 (사실 몰랐던 것이 맞을것 같다)

DB에러가 너무 많이 나온다는 것이었다.

 

문제를 찾기 위해 구글링을 무지 많이 했던것 같다.

결과적으로 SQLite는 Insert, Update 뿐 아니라 Select에서도 트랜잭션을 걸어줘야 한다는 것이었다

 

그래서 아예 함수를 만들어서 사용했다

 

//트랜잭션 시작
public void BeginTran(SQLiteConnection conn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand("BEGIN IMMEDIATE", conn);
        command.ExecuteNonQuery();
        command.Dispose();
    }
    catch
    {
        Console.WriteLine("BeginTran");
    }
}

//트랜잭션 완료
public void CommitTran(SQLiteConnection conn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand("Commit", conn);
        command.ExecuteNonQuery();
        command.Dispose();
    }
    catch
    {
        Console.WriteLine("CommitTran");
    }
}

 

이렇게 함수를 만든 다음

 

String Sql = "select IDX,ID,PWD.......... from ADMIN where ID='" + SID + "' and PWD='" + SPwd + "'";

try
{
    Conn.Open();
    if (Conn.State == ConnectionState.Open)
    {
        dbdata.BeginTran(Conn);

        SQLiteCommand CMD = new SQLiteCommand(Sql, Conn);
        CMD.CommandType = CommandType.Text;
        SQLiteDataReader rs;
        rs = CMD.ExecuteReader();

        while (rs.Read())
        {
            ADInfo.IDX = Convert.ToInt32(rs[0]);
            ADInfo.ID = Convert.ToString(rs[1]);
            .
            .
            .
            .
        }
        CMD.Dispose();
        rs.Close();
        rs.Dispose();

        dbdata.CommitTran(Conn);
    }
    Conn.Close();
}

catch
{
    if (Conn.State == ConnectionState.Open)
    {
        Conn.Close();

    }
    Console.WriteLine("AdminLoad");
}

 

모든 DB관련 쿼리에 트랜잭션을 걸어준 결과 DB에러 부분이 사라졌다..

 

다음 시간에는 메인 구성에 대한 이야기를 하면서 개발하면서 있었던 이야기들을 좀 더 많이 해보기로 할까 한다.

 

top


C# winform과 SQLite를 이용한 블럭방 관리 프로그램을 만들고자 한다.

DB를 SQLite를 사용하기로 한것은 MDB보다 로컬DB로서 효용가치나 퀄러티가 좋기 때문이다.

복잡한 레이아웃보다는 꼭필요한 기능만을 탑재하고자 한다.

필요한 사람이 있다면 그냥 가져다 썼으면 하는 바램으로 지금부터 프로그램을 소개하고자 한다.

 

초기 화면은 아래 그림과 같다.

 

 

 

 

기능은

- 블럭방이용신청

- 시간충전

- 회원등록

- 블럭제품등록

- 관리자 등록(최고관리자에게만 주어집)

등이 기본기능이고

 

거기에 따른 리스트뷰는

- 일일블럭방 이용관리

- 회원관리

- 충전기록관리

- 회원유효기간관리

- 블럭방 이용 기록관리

등으로 꾸며진다.

 

초기 회원로그인부터 프로그램 종료까지...

이제부터 그 소개를 하고자 한다.

 

물론 만들면서 고민했던 부분도 곁들여서 설명하고자 한다.

다음 글을 기대해주시길....

top