数据库综合实验报告1.docx

上传人:b****8 文档编号:11037350 上传时间:2023-02-24 格式:DOCX 页数:66 大小:250.77KB
下载 相关 举报
数据库综合实验报告1.docx_第1页
第1页 / 共66页
数据库综合实验报告1.docx_第2页
第2页 / 共66页
数据库综合实验报告1.docx_第3页
第3页 / 共66页
数据库综合实验报告1.docx_第4页
第4页 / 共66页
数据库综合实验报告1.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

数据库综合实验报告1.docx

《数据库综合实验报告1.docx》由会员分享,可在线阅读,更多相关《数据库综合实验报告1.docx(66页珍藏版)》请在冰豆网上搜索。

数据库综合实验报告1.docx

数据库综合实验报告1

企业备忘录管理系统

一、实验类别:

综合型实验

二、实验目的

1.掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。

2.初步掌握基于C/S的数据库应用系统分析、设计和实现方法。

3.进一步提高学生分析与解决问题的综合能力。

4.培养团队合作精神。

三、实验内容

在SQLServer2000数据库管理系统上,利用VC++开发工具开发一个企业备忘录系统的数据库应用系统。

四、实验过程

1.系统需求说明

在企业管理中,对于信息的处理是最重要的一环,其方式体现现在信息的采集、清理、分析、保存、失效的生命周期中。

设计一个企业备忘录管理系统,可以极大的提高企业的信息流转效率,从而提高生产率。

这个系统包含的模块主要用户登陆、备忘录类型社顶、信息录入以及特定信息采集

2.数据库结构设计

(1)系统功能

进入系统前需要身份验证

用户可以根据需要定义备忘录的信息

拥护可以定义企业员工的信息

具体的时间信息有拥护登入

根据不同的要求,可以在数据库中对时间进行查询和编辑

 

(2)功能模块划分

企业备忘录管理系统模块示意图

 

(3)系统流程分析

系统流程图

3.数据库设计

(1)数据库需求设计

企业成员基本信息:

成员ID、姓名、出生日期、性别、籍贯、职位。

备忘录类型信息:

备忘录类型ID、备忘录名称。

备忘录信息:

备忘录ID、备注企业成员ID、备忘录操作日期、备忘录发生日期、

是否有重大事件、时间花费、备忘录类型ID、备忘录内容。

(2)数据库逻辑结构设计

企业成员基本信息表

字段名称

数据类型

可否为空

约束条件

说明

member_id

INTEGER

NOTNULL

主键

成员ID

member_name

VARCHAR(24)

NOTNULL

姓名

birth_date

DATE

NOTNULL

出生日期

member_gender

VARCHAR

(2)

-

-

-

member_position

VARCHAR(10)

NULL

职位

备忘录类型信息表

字段名称

数据类型

可否为空

约束条件

说明

type_id

INTEGER

NOTNULL

主键

备注类型ID

type_name

VARCHAR(24)

NOTNULL

备注类型名称

备忘录信息表

字段名称

数据类型

可否为空

约束条件

说明

memo_id

INTEGER

NOTNULL

主键

备注信息ID、ID值从系统中获取

member_id

INTEGER

NOTNULL

外键(family_member_tab)

成员ID

oper_date

DATE

NOTNULL

操作备忘录信息时间

happen_date

DATE

NOTNULL

备忘录发生时间

is_bigevent

INTEGER

NOTNULL

是否为重大事件,1代表大事件

event_cost

VARCHAR(20)

NULL

时间花费

type_id

INTEGER

NOTNULL

外键(memo_type_tab)

备注类型ID

memo_text

CARCHAR(100)

NULL

备注信息

企业备忘录管理系统E-R图

4.系统实现

(1)创建数据库

创建表的SQL语句:

IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLES

WHERETABLE_NAME='company_member_tab')

DROPTABLEcompany_member_tab

--创建企业成员基本信息表

CREATETABLEcompany_member_tab(

member_idINTIDENTITY(1,1)PRIMARYKEY,

member_nameVARCHAR(24)NOTNULL,

member_positionVARCHAR(10),

birth_dateDATETIMENOTNULL,

member_genderVARCHAR(5),

member_hometownVARCHAR(20)

);

IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLES

WHERETABLE_NAME='memo_type_tab')

DROPTABLEmemo_type_tab

--创建备忘录类型信息表

CREATETABLEmemo_type_tab(

type_idINTPRIMARYKEY,

type_nameVARCHAR(24)NOTNULL

);

IFEXISTS(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLES

WHERETABLE_NAME='memo_info_tab')

DROPTABLEmemo_info_tab

--创建备忘录类型信息表

CREATETABLEmemo_info_tab(

memo_idINTNOTNULLPRIMARYKEY,

member_idINTNOTNULL,

oper_dateDATETIMENOTNULL,

happen_dateDATETIMENOTNULL,

is_bigeventINTNOTNULL

CHECK(is_bigeventIN(0,1)),

event_costVARCHAR(20),

type_idINTNOTNULL,

memo_textVARCHAR(1000)NULL,

FOREIGNKEY(member_id)REFERENCEScompany_member_tab,

FOREIGNKEY(type_id)REFERENCESmemo_type_tab

);

表的截图

企业成员基本信息表

备忘录类型信息表

备忘录信息表

(2)工程框架设计

设计主界面并增添函数

 

公司成员基本信息管理控件列表

控件类型

ID

属性

变量或函数

GroupBox

IDC_STATIC

公司成员基本信息管理

ListControl

IDC_LIST_FAMILY_MEMBER

列表控件类型变量m_listMember

Button

IDC_BTN_ADD_MEMBER

添加

函数OnBtnAddMember()添加公司成员信息

Button

IDC_BTN_MOD_MEMBER

修改

函数OnBtnModMember()修改公司成员信息

Button

IDC_BTN_DEL_MEMBER

删除

函数OnBtnDelMember()删除公司成员信息

 

备忘录配置信息管理控件列表

控件类型

ID

属性

变量或函数

GroupBox

IDC_STATIC

备忘录类型信息管理

ListControl

IDC_LIST_MEMO_TYPE

列表控件类型变量m_listType

Button

IDC_BTN_ADD_TYPE

添加

函数OnBtnAddType()添加备忘录类型信息

Button

IDC_BTN_MOD_TYPE

修改

函数OnBtnModType()修改备忘录类型信息

Button

IDC_BTN_DEL_TYPE

删除

函数OnBtnDelType()删除备忘录类型信息

 

备忘录信息管理控件列表

控件类型

ID

属性

变量或函数

GroupBox

IDC_STATIC

备忘录信息管理

ListControl

IDC_LIST_MEMO_INFO

列表控件类型变量m_listType

Button

IDC_BTN_ADD_MEMO

添加

函数OnBtnAddMemo()添加备忘录类型信息

Button

IDC_BTN_MOD_MEMO

修改

函数OnBtnModMemo()修改备忘录类型信息

Button

IDC_BTN_DEL_MEMO

删除

函数OnBtnDelMemo()删除备忘录类型信息

 

查询备忘录信息控件列表

控件类型

ID

属性

变量或函数

GroupBox

IDC_STATIC

备忘录信息管理

Button

IDC_BTN_QUERY_BIRTH

生日提示

函数OnBtnQueryBirth()处理生日提示信息

Button

IDC_BTN_MEMO_INFO

备忘录提示

函数OnBtnMemoInfo()处理备忘录信息提示

Button

IDC_BTN_MEMO_EVENT

大事记

函数OnBtnMemoEvent()处理大事记信息

主对话框类名称为CMemoDBSDlg,资源ID为IDD_MEMODBS_DIALOG,对话框名称为“公司备忘录管理系统”。

主界面用到了3个列表控件分别显示公司成员基本信息,备忘录类型信息和备忘录信息。

需要为这3个列表控件添加显示的列,从而显示相应的数据信息。

为了代码设计的清晰,在CMemoDBSDlg类中定义了一个InitConcrol私有函数负责添加控件的显示列。

InitConcrol函数代码如下:

voidCMemoDBSDlg:

:

InitControl()

{

//设置列表控件扩展风格

DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;

m_listMember.SetExtendedStyle(dwExStyle);

m_listMemoInfo.SetExtendedStyle(dwExStyle);

m_listType.SetExtendedStyle(dwExStyle);

//初始化公司成员列表控件

m_listMember.InsertColumn(0,"ID",LVCFMT_CENTER,30);

m_listMember.InsertColumn(1,"姓名",LVCFMT_CENTER,60);

m_listMember.InsertColumn(2,"职位",LVCFMT_CENTER,60);

m_listMember.InsertColumn(3,"出生日期",LVCFMT_CENTER,60);

m_listMember.InsertColumn(4,"性别",LVCFMT_CENTER,40);

m_listMember.InsertColumn(5,"籍贯",LVCFMT_CENTER,100);

//初始化备注类型列表控件

m_listType.InsertColumn(0,"类型ID",LVCFMT_CENTER,60);

m_listType.InsertColumn(1,"类型名称",LVCFMT_CENTER,100);

//初始化备注信息列表控件

m_listMemoInfo.InsertColumn(0,"备忘录ID",LVCFMT_CENTER,60);

m_listMemoInfo.InsertColumn(1,"姓名",LVCFMT_CENTER,60);

m_listMemoInfo.InsertColumn(2,"备忘录操作日期",LVCFMT_CENTER,140);

m_listMemoInfo.InsertColumn(3,"备忘录发生日期",LVCFMT_CENTER,140);

m_listMemoInfo.InsertColumn(4,"大事件",LVCFMT_CENTER,60);

m_listMemoInfo.InsertColumn(5,"事件花费",LVCFMT_CENTER,60);

m_listMemoInfo.InsertColumn(6,"备注类型",LVCFMT_CENTER,60);

m_listMemoInfo.InsertColumn(7,"备注内容",LVCFMT_CENTER,200);

}

在InitConcrol函数中首先调用CListCtrl的SetExtendedStyle方法设置控件的扩展风格。

这3个空间设置了相同的风格,以确保界面的一致性,设置扩展风格后的公司成员列表控件获取鼠标选择和鼠标略过情况的样式如图

(3)连接数据库

系统启动之后,可以将数据库中的数据升秒年十时毫到界面上,首先需要处理数据库的连接问题,需要3个函数:

ODBC数据源名称、数据库用户名称、数据库用户密码。

数据库用户的名称和密码均为dbaccess。

在CMemoDBSDlg类的OnInitDialog函数中处理数据库的连接。

其中关键代码为:

BOOLCMemoDBSDlg:

:

OnInitDialog()

{CLoginDlgdlg;

BOOLlogin=TRUE,DB_SYS_EXIT=FALSE;

while(login){

if(dlg.DoModal()==IDOK)

}

CStringstrConnect;

strConnect.Format("DSN=%s;PWD=%s",dlg.m_strDBSource,dlg.m_strDBUser,dlg.m_strDBPassword);

TRY{

m_db.OpenEx(strConnect,CDatabase:

:

noOdbcDialog);

login=FALSE;

}

CATCH(CDBException,ex)

{

AfxMessageBox(ex->m_strError);

AfxMessageBox(ex->m_strStateNativeOrigin);

}

AND_CATCH(CMemoryException,pEx)

{

pEx->ReportError();

AfxMessageBox("memoryexception");

}

AND_CATCH(CException,e)

{

TCHARszError[100];

e->GetErrorMessage(szError,100);

AfxMessageBox(szError);

}

END_CATCH

{else{

login=FALSE;

DB_SYS_EXIT=TRUE;

}

}

if(DB_SYS_EXIT)

CDialog:

:

OnCancel();

else{

InitControl();

InitCtrlData();

}

}

OnInitDialog函数首先判断数据库是否打开,如果已打开就退出函数,否则创建一个数据库的连接字符串,利用CDatabase的OpenEx方法打开数据库的连接,并处理数据库的异常。

(4)显示数据到界面上

连接数据库之后,西药把数据库中的数据显示在3个列表控件中。

在CMemoDBSDlg类中定义一个InitCtrlData私有函数,负责从数据库中读取数据并显示到列表控件中。

同时还需要定义3个分别把数据插入到列控件中的函数,分别为InsertMemberItem,InsertMemoTypeItem,InsertMemoInfoItem,在MemoDBSDlg.h文件中添加这3个函数定义。

代码为:

private:

//向公司成员信息列表框中插入公司成员列表信息

voidInsertMemberItem(intid,CStringname,CStringposition,CStringdate,CStringgender,CStringhometown);

//向备忘录类型信息列表框中插入类型信息.

voidInsertMemoTypeItem(intid,CStringname);

//向备忘录列表框中插入备忘录信息.

voidInsertMemoInfoItem(intid,CStringname,CStringoperDate,CStringhappenDate,intisEvent,CStringcost,CStringtype,CStringmemoTxt);

//从数据库中读取数据,并显示在.列表框中.

voidInitCtrlData();

//初始化列表控件.

voidInitControl();

向公司成员信息列表控件中插入公司成员信息的函数是InsertMemberItem。

代码为:

voidCMemoDBSDlg:

:

InsertMemberItem(intid,CStringname,CStringposition,CStringdate,CStringgender,CStringhometown)

{

intnIndex=m_listMember.GetItemCount();

LV_ITEMIvItem;

IvItem.mask=LVIF_TEXT;

IvItem.iItem=nIndex;

IvItem.iSubItem=0;

CStringtemp;

temp.Format("%d",id);

IvItem.pszText=(char*)(LPCTSTR)temp;

m_listMember.InsertItem(&lvItem);

m_listMember.SetItemText(nIndex,1,name);

m_listMember.SetItemText(nIndex,2,position);

m_listMember.SetItemText(nIndex,3,date);

m_listMember.SetItemText(nIndex,4,gender);

m_listMember.SetItemText(nIndex,5,hometown);

}

向备忘录类型信息列表控件中添加备忘录类型信息的函数InsertMemoTypeItem。

代码为:

voidCMemoDBSDlg:

:

InsertMemoTypeItem(intid,CStringname)

{intnIndex=m_listType.GetItemCount();

LV_ITEMlvItem;

lvItem.mask=LVIF_TEXT;

lvItem.iItem=nIndex;

lvItem.iSubItem=0;

CStringtemp;

temp.Format("%d",id);

lvItem.pszText=(char*)(LPCTSTR)temp;

m_listType.InsertItem(&lvItem);

m_listType.SetItemText(nIndex,1,name);

}

向备忘录信息列表控件中田间被望里信息的函数是InsertMemoInfoItem。

代码为:

voidCMemoDBSDlg:

:

InsertMemoInfoItem(intid,CStringname,CStringoperDate,CStringhappenDate,intisEvent,CStringcost,CStringtype,CStringmemoTxt)

{

intnIndex=m_listMemoInfo.GetItemCount();

LV_ITEMlvItem;

lvItem.mask=LVIF_TEXT;

lvItem.iItem=nIndex;

lvItem.iSubItem=0;

CStringtemp;

temp.Format("%",id);

lvItem.pszText=(char*)(LPCTSTR)temp;

m_listMemoInfo.InsertItem(&lvItem);

m_listmemoInfo.SetItemText(nIndex,1,name);

m_listmemoInfo.SetItemText(nIndex,2,operDate);

m_listmemoInfo.SetItemText(nIndex,3,happenDate);

m_listmemoInfo.SetItemText(nIndex,4,isEvent==0?

"否":

"是");

m_listmemoInfo.SetItemText(nIndex,5,cost);

m_listmemoInfo.SetItemText(nIndex,6,type);

m_listmemoInfo.SetItemText(nIndex,7,memoTxt);

}

从数据库中读取数据并显示到3个列表控件中的函数为InitCtrlData。

代码为:

voidCMemoDBSDlg:

:

InitCtrlData()

{

TRY{CRecordsetrs;

rs.m_pDatabase=&m_db;

CStringsql="Select*fromcompany_member_tab";

rs.Open(CRecordset:

:

dynaset,sql);

intid;

CStringname,position,date,gender,hometown;

while(!

rs.IsEOF()){

CDBVariantvar;

rs.GetFieldValue((short)0,var,SQL_C_SLONG);

if(var.m_dwType!

=DBVT_NULL)

id=var.m_iVal;

var.Clear();

rs.GetFieldValue(1,name);

rs.GetFieldValue(2,position);

rs.GetFieldValue(3,date);

rs.GetFieldValue(4,gender);

rs.GetFieldValue(5,hometown);

InsertMemberItem(id,name,position,date,Left(10),gender,hometown);

rs.MoveNext();

}

rs.Close();

sql="Select*fromMEMO_TYPE_TAB";

rs.Open(CRecordset:

:

dynaset,sql);

while(!

rs.IsEOF()){

CD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1