SQLserver 数据库课程设计.docx
《SQLserver 数据库课程设计.docx》由会员分享,可在线阅读,更多相关《SQLserver 数据库课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
SQLserver数据库课程设计
淮海工学院计算机工程学院
课程设计报告
设计名称:
数据库课程设计
姓名:
学号:
专业班级:
网络121
系(院):
计算机工程学院
设计时间:
2014.6.19~~2014.6.25
设计地点:
机房、宿舍、文通楼、图书馆
成绩:
指导教师评语:
签名:
年月日
一、需求分析
目前,大多数文档管理系统在实现了企业各部门日常文件管理的基本功能外,还增设了很多的新功能用以满足文档管理电子化、标准化的新要求,功能强大的档案查询模块大大方便了管理者日常查找文档的工作,解决了传统管理中查找困难、查找耗时间等问题。
使用现代化的文档管理系统满足了企业“无纸化”的办公要求,实现了通过计算机对文档管理全程跟踪的要求。
二、概念结构设计
1.系统功能结构
2.业务流程图
三、物理结构设计
系统表
文档表
单位表
文档表
用户表
四、应用系统实现与测试
登陆界面
系统界面
文档基本信息
日志管理
文档基本信息
文档类别
单位列表
五、部分代码
//ADO.cpp:
implementationoftheCADOclass.
//
//////////////////////////////////////////////////////////////////////
#include"stdafx.h"
#include"ADO.h"
#include
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
intConCount=0;
CADOConnectiong_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();
}
voidCADOConnection:
:
InitADO()
{
if(ConCount++==0)
CoInitialize(NULL);
};
voidCADOConnection:
:
UnInitADO()
{
if(--ConCount==0)
CoUninitialize();
};
BOOLCADOConnection:
:
Open(CStringConStr)
{
if(IsOpen())
m_Connection->Close();
m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);
returnIsOpen();
}
CStringCADOConnection:
:
GetSQLConStr(CStringIP,CStringDBName)
{
CStringStr;
Str.Format("Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=%s;DataSource=%s",DBName,IP);
returnStr;
}
_ConnectionPtrCADOConnection:
:
GetConnection()
{
returnm_Connection;
}
BOOLCADOConnection:
:
IsOpen()
{
longState;
m_Connection->get_State(&State);
if(State==adStateOpen)
returntrue;
returnfalse;
}
////////////////////////////////////////
CADODataSet:
:
CADODataSet()
{
m_DataSet.CreateInstance("ADODB.Recordset");
}
CADODataSet:
:
~CADODataSet()
{
if(IsOpen())
m_DataSet->Close();
m_DataSet=NULL;
m_Connection=NULL;
}
voidCADODataSet:
:
SetConnection(CADOConnection*pCon)
{
m_Connection=pCon;
}
intCADODataSet:
:
GetRecordCount()
{
if(IsOpen())
returnm_DataSet->GetRecordCount();
else
return0;
}
BOOLCADODataSet:
:
Open(CStringSQLStr)
{
if(IsOpen())
m_DataSet->Close();
//*/
m_DataSet->Open(_bstr_t(SQLStr),
_variant_t((IDispatch*)g_Connection.GetConnection(),true),
adOpenKeyset,adLockOptimistic,adCmdText);
returnIsOpen();
//*/
}
BOOLCADODataSet:
:
IsOpen()
{
longState;
m_DataSet->get_State(&State);
if(State==adStateOpen)
returntrue;
returnfalse;
}
FieldsPtrCADODataSet:
:
GetFields()
{
returnm_DataSet->GetFields();
}
BOOLCADODataSet:
:
Next()
{
if(m_DataSet->adoEOF)
returnfalse;
m_DataSet->MoveNext();
returntrue;
}
voidCADODataSet:
:
AddNew()
{
m_DataSet->AddNew();
}
voidCADODataSet:
:
SetFieldValue(CStringFieldName,_variant_tValue)
{
m_DataSet->PutCollect((_bstr_t)FieldName,Value);
}
voidCADODataSet:
:
Save()
{
m_DataSet->Update();
}
voidCADODataSet:
:
move(intnIndex)
{
m_DataSet->MoveFirst();
m_DataSet->Move(nIndex);
}
intCADODataSet:
:
GetRecordNo()
{
returnm_DataSet->AbsolutePosition;
}
voidCADODataSet:
:
Delete()
{
m_DataSet->Delete(adAffectCurrent);
}
BOOLCADODataSet:
:
Open(CStringSQLStr,intLockType)
{
if(IsOpen())
m_DataSet->Close();
//*/
m_DataSet->Open(_bstr_t(SQLStr),
_variant_t((IDispatch*)g_Connection.GetConnection(),true),
adOpenKeyset,(LockTypeEnum)LockType,adCmdText);
returnIsOpen();
}
/CheckSum.cpp:
implementationfile
//
#include"stdafx.h"
#include"Person.h"
#include"CheckSum.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CCheckSumdialog
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
}
voidCCheckSum:
:
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()
/////////////////////////////////////////////////////////////////////////////
//CCheckSummessagehandlers
BOOLCCheckSum:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
inti=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);
intcuryear,curmonth;
CTimetime(CTime:
:
GetCurrentTime());
curyear=time.GetYear();
curmonth=time.GetMonth();
charvalue[10];
for(inty=2000;y<2100;y++)
{
_itoa(y,value,10);
m_cyy.InsertString(y-2000,value);
}
m_cyy.SetCurSel(curyear-2000);
for(intn=1;n<=12;n++)
{
_itoa(n,value,10);
m_cmm.InsertString(n-1,value);
}
m_cmm.SetCurSel(curmonth-1);
CADODataSetdataset;
dataset.SetConnection(:
:
GetConnection());
dataset.Open("Select*Fromtab_Employees");
m_cemp.InsertString(0,"(全部)");
for(intindex=1;index<=dataset.GetRecordCount();index++)
{
m_cemp.InsertString(index,(_bstr_t)dataset.GetFields()->Item["emp_name"]->Value);
dataset.Next();
}
m_cemp.SetCurSel(0);
UpdateList();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
voidCCheckSum:
:
UpdateList()
{
m_list.DeleteAllItems();
this->UpdateData();
CADODataSetdataset;
dataset.SetConnection(:
:
GetConnection());
CStringstr,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+="selectemp.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+="fromtab_Employeesemp";
temp+="leftjoin";
temp+="(selectsum(DATEDIFF(second,ontime,offtime))/60.0/60.0/8.0";
temp+="asworkday,nameFromtab_Checkwherecheckdate%sgroupbyname)";
temp+="worksonemp.emp_name=works.name";
temp+="leftjoin";
temp+="(select(sum(DATEPART(Hour,latetime))*60*60+";
temp+="sum(DATEPART(minute,latetime))*60+sum(DATEPART(second,latetime)))";
temp+="/60.0/60.0/8.0aslateday,nameFromtab_Checkwherecheckdate";
temp+="%sgroupbyname)latesonemp.emp_name=lates.name";
temp+="leftjoin";
temp+="(select(sum(DATEPART(Hour,leaveearly))*60*60+";
temp+="sum(DATEPART(minute,leaveearly))*60+sum(DATEPART(second,leaveearly)))";
temp+="/60.0/60.0/8.0asleaveearlyday,nameFromtab_Checkwhere";
temp+="checkdate%sgroupbyname)leaveearlysonemp.emp_name";
temp+="=leaveearlys.name";
temp+="leftjoin";
temp+="(selectisnull(sum(DATEDIFF(second,onleave,offleave))";
temp+="/60.0/60.0/8.0,0)asbjday,nameFromtab_Checkwhere";
temp+="leave='病假'andcheckdate%sgroupbyname)";
temp+="bjdaysonemp.emp_name=bjdays.name";
temp+="leftjoin";
temp+="(selectisnull(sum(DATEDIFF(second,onleave,offleave))";
temp+="/60.0/60.0/8.0,0)assjday,nameFromtab_Checkwhere";
temp+="leave='事假'andcheckdate%sgroupbyname)";
temp+="sjdaysonemp.emp_name=sjdays.name";
temp+="%s";//*/
//
where.Format("whereemp.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(inti=0;i{
intn=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();
}//*/
}
voidCCheckSum:
:
OnCloseupCemp()
{
UpdateList();
}
voidCCheckSum:
:
OnCloseupCyy()
{
UpdateList();
}
voidCCheckSum:
:
OnCloseupCmm()
{
UpdateList();
}
六、课程设计心得体会
这次历时两周的课程设计,对于我们来说确实收获了不少。
第一天我们查找资料、了解有关的知识,相互探讨,了解文档管理系统的需求,做好需求分析后,开始系统的设计,画出E-R图,写出各个实体的属性。
对于数据库的创建,虽然出现很多的问题,