ASP.NET 및 SQL Server 기반 대학생 기부 플랫폼 구현

기능 요구사항

본 시스템은 사용자 프론트엔드와 관리자 백엔드 모듈로 구성됩니다.

사용자 프론트엔드 기능

  • 메인 페이지: 최신 공지사항 및 기부 프로젝트 목록 표시
  • 계정 관리: 회원 가입 및 로그인 기능
  • 공지사항: 목록 조회 및 상세 내용 확인
  • 기부 프로젝트: 프로젝트 탐색 및 인증 후 기부 가능
  • 커뮤니티 게시판: 게시글 조회 및 작성 기능
  • 개인 대시보드: 기부 내역 조회, 개인 정보 수정, 비밀번호 변경

관리자 백엔드 기능

  • 사용자 관리: 회원 정보 CRUD 작업
  • 공지 관리: 공지사항 게시 및 수정
  • 프로젝트 관리: 기부 프로젝트 운영
  • 기부 기록: 기부 내역 모니터링
  • 게시판 관리: 게시글 확인 및 답변 처리
  • 시스템 관리: 관리자 권한 제어(최고관리자 전용)

데이터베이스 구조

SQL Server 기반 데이터 모델 구성:

테이블명주요 필드
회원 정보회원ID, 계정명, 암호, 이메일, 연락처, 가입일시
공지사항공지ID, 제목, 내용, 게시일자
기부 프로젝트프로젝트ID, 명칭, 설명, 목표금액, 참여인원, 진행상태
기부 기록기록ID, 회원ID, 프로젝트ID, 금액, 일시
게시판게시글ID, 회원ID, 내용, 작성시간
관리자관리자ID, 이름, 암호, 권한등급

인터페이스 구현 예제

회원 가입 처리 로직

protected void BtnRegister_Click(object sender, EventArgs e)
{
    if (DBHelper.RecordExists("SELECT COUNT(*) FROM Users WHERE UserLogin=@id", 
        new SqlParameter("@id", TxtLoginId.Text)))
    {
        ShowAlert("이미 사용중인 계정입니다");
        return;
    }

    var query = @"INSERT INTO Users (UserLogin, PassKey, UserName, Gender, Contact, JoinDate)
                 VALUES (@login, @pwd, @name, @gender, @contact, @date)";
    
    SqlParameter[] parameters = {
        new SqlParameter("@login", TxtLoginId.Text),
        new SqlParameter("@pwd", EncryptPassword(TxtPass.Text)),
        new SqlParameter("@name", TxtUserName.Text),
        new SqlParameter("@gender", GenderSelect.Value),
        new SqlParameter("@contact", TxtContact.Text),
        new SqlParameter("@date", DateTime.Now)
    };

    DBHelper.ExecuteCommand(query, parameters);
    Session["CurrentUser"] = TxtLoginId.Text;
    RedirectWithAlert("가입 완료", "main.aspx");
}

게시판 기능 구현

void LoadBoardData()
{
    int totalRecords;
    int pageSize = BoardPager.PageSize;
    int currentPage = BoardPager.CurrentPage;
    
    RepeaterBoard.DataSource = PagingManager.GetPage(
        pageSize, currentPage, "CommunityBoard", 
        "PostID, Title, Author, PostDate", 
        "PostID", "", "PostID DESC", out totalRecords);
    
    RepeaterBoard.DataBind();
    BoardPager.TotalRecords = totalRecords;
}

protected void BtnPost_Click(object sender, EventArgs e)
{
    if (Session["CurrentUser"] == null)
    {
        ShowAlert("로그인이 필요합니다");
        return;
    }

    string sql = @"INSERT INTO CommunityBoard 
                  (Author, PostTitle, Content, PostDate)
                  VALUES (@writer, @title, @content, @date)";
    
    SqlParameter[] params = {
        new SqlParameter("@writer", Session["CurrentUser"].ToString()),
        new SqlParameter("@title", TxtPostTitle.Text),
        new SqlParameter("@content", TxtContent.Text),
        new SqlParameter("@date", DateTime.Now)
    };

    DBHelper.ExecuteCommand(sql, params);
    RedirectWithAlert("게시 완료", Request.Url.ToString());
}

성능 최적화 기법

  • 데이터베이스 쿼리 효율화: 인덱스 적용 및 최적화된 쿼리 작성
  • 콘텐츠 압축: 웹 리소스 압축을 통한 전송 효율 개선
  • 캐싱 전략: 자주 접근하는 데이터 메모리 캐싱 처리

향후 발전 방향

  • 모바일 환경 최적화 구현
  • 사용자 선호도 기반 콘텐츠 추천 시스템
  • 기부 패턴 분석을 위한 데이터 마이닝 도구 적용
  • HTTPS 프로토콜 강화 등 보안 체계 고도화
  • 사회복지기관과의 협력 체계 구축

태그: ASP.NET SQL-Server C# DB-설계 사용자-인증

6월 12일 19:58에 게시됨