SQL数据库课程设计实训报告

时间:2024.4.20

SQL数据库课程设计实训报告

(  2013   ~   20## )学年第学期)

姓    名:          

学    号:          

专    业:          

班    级:          

指导教师:         


SQL数据库实训报告


第二篇:SQLserver 数据库课程设计


  淮 海 工 学 院 计算机工程学院

课程设计报告

设计名称:            数据库课程设计             

    名:            号:   

专业班级:              网络121                  

院):             计算机工程学院               

设计时间:         2014.6.19~~2014.6.25              

设计地点:     机房、宿舍、文通楼、图书馆          


一、    需求分析

目前,大多数文档管理系统在实现了企业各部门日常文件管理的基本功能外,还增设了很多的新功能用以满足文档管理电子化、标准化的新要求,功能强大的档案查询模块大大方便了管理者日常查找文档的工作,解决了传统管理中查找困难、查找耗时间等问题。使用现代化的文档管理系统满足了企业“无纸化”的办公要求,实现了通过计算机对文档管理全程跟踪的要求。

二、    概念结构设计

1.系统功能结构

 

2.业务流程图

三、    物理结构设计

系统表

文档表

单位表

文档表

用户表

                              

四、    应用系统实现与测试

                        登陆界面

系统界面

文档基本信息

日志管理

文档基本信息

文档类别

单位列表

五、部分代码

// ADO.cpp: implementation of the CADO class.

//

//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "ADO.h"

#include <comdef.h>

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

//////////////////////////////////////////////////////////////////////

int ConCount = 0;

CADOConnection g_Connection;//全局数据库连接对象

CADOConnection * GetConnection()

{

    return &g_Connection;

}

CADOConnection::CADOConnection()

{

    InitADO();

    m_Connection.CreateInstance("ADODB.Connection");

}

CADOConnection::~CADOConnection()

{

    if (IsOpen())

        m_Connection->Close();

    m_Connection = NULL;

    UnInitADO();

}

void CADOConnection::InitADO()

{

        if (ConCount++ == 0)

            CoInitialize(NULL);

};

void CADOConnection::UnInitADO()

{

        if (--ConCount == 0)

             CoUninitialize();

};

BOOL CADOConnection::Open(CString ConStr)

{

    if (IsOpen())

        m_Connection->Close();

    m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);

    return IsOpen();

}

CString CADOConnection::GetSQLConStr(CString IP, CString DBName)

{

    CString Str;

    Str.Format("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=%s;Data Source=%s",DBName,IP);

    return Str;

}

_ConnectionPtr CADOConnection::GetConnection()

{

    return m_Connection;

}

BOOL CADOConnection::IsOpen()

{

    long State;

    m_Connection->get_State(&State);

    if (State == adStateOpen)

        return true;

    return false;

}

////////////////////////////////////////

CADODataSet::CADODataSet()

{

    m_DataSet.CreateInstance("ADODB.Recordset");

}

CADODataSet::~CADODataSet()

{

    if (IsOpen())

        m_DataSet->Close();

    m_DataSet = NULL;

    m_Connection = NULL;

}

void CADODataSet::SetConnection(CADOConnection *pCon)

{

    m_Connection = pCon;

}

int CADODataSet::GetRecordCount()

{

    if (IsOpen())

        return m_DataSet->GetRecordCount();

    else

        return 0;

}

BOOL CADODataSet::Open(CString SQLStr)

{

    if (IsOpen())

        m_DataSet->Close();

    //*/

    m_DataSet->Open(_bstr_t(SQLStr),

            _variant_t((IDispatch*)g_Connection.GetConnection(), true),

            adOpenKeyset, adLockOptimistic, adCmdText);

    return IsOpen();

    //*/

}

BOOL CADODataSet::IsOpen()

{

    long State;

    m_DataSet->get_State(&State);

    if (State == adStateOpen)

        return true;

   

    return false;

}

FieldsPtr CADODataSet::GetFields()

{

    return m_DataSet->GetFields();

}

BOOL CADODataSet::Next()

{

    if (m_DataSet->adoEOF)

        return false;

    m_DataSet->MoveNext();

    return true;

}

void CADODataSet::AddNew()

{

    m_DataSet->AddNew();

}

void CADODataSet::SetFieldValue(CString FieldName, _variant_t Value)

{

    m_DataSet->PutCollect((_bstr_t)FieldName,Value);

}

void CADODataSet::Save()

{

    m_DataSet->Update();

}

void CADODataSet::move(int nIndex)

{

    m_DataSet->MoveFirst();

    m_DataSet->Move(nIndex);

}

int CADODataSet::GetRecordNo()

{

    return m_DataSet->AbsolutePosition;

}

void CADODataSet::Delete()

{

    m_DataSet->Delete(adAffectCurrent);

}

BOOL CADODataSet::Open(CString SQLStr, int LockType)

{

    if (IsOpen())

        m_DataSet->Close();

    //*/

    m_DataSet->Open(_bstr_t(SQLStr),

            _variant_t((IDispatch*)g_Connection.GetConnection(), true),

            adOpenKeyset,(LockTypeEnum) LockType, adCmdText);

    return IsOpen();

}

/ CheckSum.cpp : implementation file

//

#include "stdafx.h"

#include "Person.h"

#include "CheckSum.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CCheckSum dialog

CCheckSum::CCheckSum(CWnd* pParent /*=NULL*/)

    : CDialog(CCheckSum::IDD, pParent)

{

    //{{AFX_DATA_INIT(CCheckSum)

    m_emp = _T("");

    m_mm = _T("");

    m_yy = _T("");

    //}}AFX_DATA_INIT

}

void CCheckSum::DoDataExchange(CDataExchange* pDX)

{

    CDialog::DoDataExchange(pDX);

    //{{AFX_DATA_MAP(CCheckSum)

    DDX_Control(pDX, IDC_LISTEMP, m_list);

    DDX_Control(pDX, IDC_CYY, m_cyy);

    DDX_Control(pDX, IDC_CMM, m_cmm);

    DDX_Control(pDX, IDC_CEMP, m_cemp);

    DDX_CBString(pDX, IDC_CEMP, m_emp);

    DDX_CBString(pDX, IDC_CMM, m_mm);

    DDX_CBString(pDX, IDC_CYY, m_yy);

    //}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CCheckSum, CDialog)

    //{{AFX_MSG_MAP(CCheckSum)

    ON_CBN_CLOSEUP(IDC_CEMP, OnCloseupCemp)

    ON_CBN_CLOSEUP(IDC_CYY, OnCloseupCyy)

    ON_CBN_CLOSEUP(IDC_CMM, OnCloseupCmm)

    //}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CCheckSum message handlers

BOOL CCheckSum::OnInitDialog()

{

    CDialog::OnInitDialog();

    int i = 0;

    m_list.InsertColumn(i,"人员姓名");

    m_list.SetColumnWidth(i++,100);

    m_list.InsertColumn(i,"工作总天数");

    m_list.SetColumnWidth(i++,100);

    m_list.InsertColumn(i,"迟到总天数");

    m_list.SetColumnWidth(i++,100);

    m_list.InsertColumn(i,"早退总天数");

    m_list.SetColumnWidth(i++,100);

    m_list.InsertColumn(i,"病假总天数");

    m_list.SetColumnWidth(i++,100);

    m_list.InsertColumn(i,"事假总天数");

    m_list.SetColumnWidth(i++,100);

    m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

    int curyear,curmonth;

    CTime time(CTime::GetCurrentTime());

    curyear = time.GetYear();

    curmonth = time.GetMonth();

    char value[10];

    for (int y = 2000; y < 2100 ;y++)

    {

        _itoa(y,value,10);

        m_cyy.InsertString(y-2000,value);

    }

    m_cyy.SetCurSel(curyear-2000);

    for (int n = 1 ; n<=12 ;n++)

    {

        _itoa(n,value,10);

        m_cmm.InsertString(n-1,value);

    }

    m_cmm.SetCurSel(curmonth-1);

    CADODataSet dataset;

    dataset.SetConnection(::GetConnection());

    dataset.Open("Select * From tab_Employees");

    m_cemp.InsertString(0,"(全部)");

    for (int index = 1 ; index <= dataset.GetRecordCount() ; index++)

    {

        m_cemp.InsertString(index,(_bstr_t)dataset.GetFields()->Item["emp_name"]->Value);

        dataset.Next();

    }

    m_cemp.SetCurSel(0);

    UpdateList();

    return TRUE;  // return TRUE unless you set the focus to a control

                  // EXCEPTION: OCX Property Pages should return FALSE

}

void CCheckSum::UpdateList()

{

    m_list.DeleteAllItems();

    this->UpdateData();

    CADODataSet dataset;

    dataset.SetConnection(::GetConnection());

    CString str,temp,where,datestr,StartDate,EndDate;

    StartDate = m_yy + "-" + m_mm + "-1" ;

    EndDate.Format("DATEADD(month,1,'%s')",StartDate);

    datestr.Format(" between '%s' and %s",StartDate,EndDate);

    //*/

    temp += "select emp.emp_name ,ROUND(isnull(works.workday,0),2)";

    temp += " workday,ROUND(isnull(lates.lateday,0),2) lateday,";

    temp += " ROUND(isnull(leaveearlys.leaveearlyday,0),2) leaveearlyday,";

    temp += " ROUND(isnull(bjdays.bjday,0),2) bjday,ROUND(isnull(sjdays.sjday,0),2) sjday";

    temp += " from tab_Employees emp ";

    temp += " left join";

    temp += " (select sum(DATEDIFF(second,ontime,offtime)) / 60.0 / 60.0 / 8.0";

    temp += " as workday,name  From tab_Check where checkdate %s group by name)";

    temp += " works on emp.emp_name = works.name";

    temp += " left join";

    temp += " (select (sum(DATEPART(Hour,latetime)) * 60 * 60 + ";

    temp += " sum(DATEPART(minute,latetime)) * 60 + sum(DATEPART(second,latetime)))";

    temp += " /60.0 /60.0 /8.0 as lateday,name   From tab_Check where checkdate";

    temp += " %s group by name) lates on emp.emp_name = lates.name";

    temp += " left join";

    temp += " (select (sum(DATEPART(Hour,leaveearly)) * 60 * 60 + ";

    temp += " sum(DATEPART(minute,leaveearly)) * 60 + sum(DATEPART(second,leaveearly)))";

    temp += " /60.0 /60.0 /8.0  as leaveearlyday,name   From tab_Check where ";

    temp += " checkdate %s group by name) leaveearlys on emp.emp_name";

    temp += " = leaveearlys.name";

    temp += " left join";

    temp += " (select isnull(sum(DATEDIFF(second,onleave,offleave))";

    temp += " / 60.0 / 60.0 / 8.0,0) as bjday,name  From tab_Check where";

    temp += " leave = '病假' and checkdate %s group by name) ";

    temp += " bjdays on emp.emp_name = bjdays.name";

    temp += " left join";

    temp += " (select isnull(sum(DATEDIFF(second,onleave,offleave)) ";

    temp += " / 60.0 / 60.0 / 8.0,0) as sjday,name  From tab_Check where ";

    temp += " leave = '事假' and checkdate %s group by name) ";

    temp += " sjdays on emp.emp_name = sjdays.name";

    temp += " %s";//*/

    //

    where.Format(" where emp.emp_name = '%s'",m_emp);

    if (m_emp == "(全部)")

        str.Format(temp,datestr,datestr,datestr,datestr,datestr,"");

    else

        str.Format(temp,datestr,datestr,datestr,datestr,datestr,where);

    //*/

    dataset.Open(str,adLockUnspecified);

    for (int i = 0; i < dataset.GetRecordCount() ; i++)

    {

        int n = 0;

        m_list.InsertItem(i,"");

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["emp_name"]->Value);

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["workday"]->Value);

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["lateday"]->Value);

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["leaveearlyday"]->Value);

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["bjday"]->Value);

        m_list.SetItemText(i,n++,(_bstr_t)dataset.GetFields()->Item["sjday"]->Value);

        dataset.Next();

    }//*/

}

void CCheckSum::OnCloseupCemp()

{

    UpdateList();  

}

void CCheckSum::OnCloseupCyy()

{

    UpdateList();  

}

void CCheckSum::OnCloseupCmm()

{

    UpdateList();  

}

六、课程设计心得体会

这次历时两周的课程设计,对于我们来说确实收获了不少。第一天我们查找资料、了解有关的知识,相互探讨,了解文档管理系统的需求,做好需求分析后,开始系统的设计,画出E-R图,写出各个实体的属性。对于数据库的创建,虽然出现很多的问题,但经过探讨之后我们都能够很好的解决,这便让我们体会到上课专心听讲的重要性。对于所需表的创建是一个比较简单的内容,问题主要是存储过程和触发器的创建,在请教老师后,最后还是解决了各种难题。

接下来就是用MFC设计界面阶段了,由于对Mfc知识掌握的不全面,很多问题也是不得其解,比如一开始时对数据的链接上。通过自己的复习和巩固,还有相互讨论,出现的一些问题也迎刃而解了。

   这次的校园卡管理系统设计不仅使我们学会了把数据库的各个模块联系起来,并使用ADO连接,更让我懂得了如何设计一个系统,了解了系统设计的过程,通过这次实习,我也了解到要设计一个好的系统并不是一件容易的事,听了老师的建议我们才知道,自己设计的系统存在很多的缺陷,还需要从各方面得以改善。

   我们相信,只要自己肯努力、肯奋斗,总是会有收获的。

参考文献

《数据库原理与应用-------基于SQL Server》清华大学出版社  李春葆 曾慧 曾平 喻丹丹编著

更多相关推荐:
数据库课程设计报告范例

数据库课程设计报告课题名称:图书管理统专业:信息与计算科学班级:信计071班小组人员:***一.背景资料在高校中,学生的数量较多,图书的数量也比较多,每天图书的借阅量比较大,采用手工的处理方式已经不能满足这种需…

数据库课程设计报告

20xx级数据库课程设计任务书设计目的数据库课程设计是在学生系统地学习了数据库系统原理课程后按照关系型数据库的基本远离综合运用所学的知识设计开发一个小型的数据库管理信息系统通过对一个实际问题的分析设计与实现将原...

数据库课程设计报告

南京理工大学泰州科技学院计算机科学与技术系信管专业10信管2班级大型数据库课程设计报告书姓名赵敏学号指导老师职称讲师设计地点起讫时间完成报告书时间20xx年12月5日第1页课程设计要求各专业学生应根据课程任教老...

数据库课程设计报告

数据库课程设计设计题目数据库创建和修改表专业物联网工程班级20xx级设计人林升学号20xx01052143山东科技大学20xx年7月3日课程设计任务书一课程设计题目创建和修改表的定义二课程设计主要参考资料1数据...

SQLServer数据库课程设计报告

武汉工业学院数据库系统课程设计说明书设计题目选课管理系统姓名学院专业学号指导教师20xx年6月8日一读书笔记1SQL数据库的实际应用SQL包括了所有对数据库的操作主要是由4个部分组成1数据定义这一部分又称为SQ...

数据库课程设计报告

计算机与控制工程学院数据库原理及应用课程设计报告题目名称选课系统专业计科班级计1211学号20xx58501149姓名李利娟指导教师毕远伟20xx年01月11日1课程设计评语班级计1211学号20xx58501...

分布式数据库课程设计报告

分布式数据库在学生信息管理系统中的应用班级姓名设计时间指导教师评语评阅成绩目录摘要31第一章绪论411课题研究的意义412分布式数据库技术国外发展现状413分布式数据库技术国内发展现状514分布式数据库技术发展...

数据库课程设计报告

西安邮电大学计算机学院数据库课程设计报告题目英雄联盟账号信息管理系统专业名称班级软件1202学生姓名尚奕帆学号8位指导教师乔平安起止时间一课程设计目的由于最近游戏英雄联盟非常火爆刚好这学期学习了数据库相关知识对...

数据库课程设计报告

数据库课程设计题目游戏后台数据库系统姓名学生班号学号专业指导教师20##年4月10日~20##年4月20日目录第一章需求分析...-1-1.1系统背景1.2系统需求分析1.3目标与任务1.4数据流程第二章系统概…

数据库课程设计报告

数据库课程设计报告目录一、课程设计概述.21.1课程设计的目的与任务.21.2课程设计的主要内容.21.3所选题目及成员.2二、系统需求分析.22.1功能需求分析.22.2性能需求及运行环境分析.32.3数据需…

数据库课程设计报告

湖南文理学院数据库课程设计1数据库原理与应用课程设计报告题目仓库管理系统设计专业班级电信0801班设计学生蒋文福设计时间20xx年6月20日7月1日湖南文理学院物理与电子科学学院湖南文理学院数据库课程设计摘要随...

数据库课程设计实验报告 20xx 模板

湖北医药学院公共管理学院数据库课程设计实验报告20xx20xx学年第一学期注意1每一小组的实验报告必须独自完成若有雷同一律扣分2模板内容请自行扩充但不得删减3元旦放假后请班长按组收齐实验报告交到办公室4目录请自...

数据库课程设计报告(17篇)