数据库综合实验讲义.docx

上传人:b****3 文档编号:12877382 上传时间:2023-04-22 格式:DOCX 页数:32 大小:1.97MB
下载 相关 举报
数据库综合实验讲义.docx_第1页
第1页 / 共32页
数据库综合实验讲义.docx_第2页
第2页 / 共32页
数据库综合实验讲义.docx_第3页
第3页 / 共32页
数据库综合实验讲义.docx_第4页
第4页 / 共32页
数据库综合实验讲义.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据库综合实验讲义.docx

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

数据库综合实验讲义.docx

数据库综合实验讲义

 

数据库综合实验讲义

学院:

电气工程

教研室:

自动化

教师:

2012.03.20

 

1、建立工程

打开vc++6.0,点击“file->new->mfcappwizard(exe)”,项目名为:

manager,单击“OK”,选择单文档程序,然后点击“下一步”,建立工程。

单击“finish”按钮,并调试运行,生成如下界面

2.修改单文档界面的标题“南通大学电气工程学院”

按照下图,在CLASSVIEW选项卡单击“CManagerApp”

添加代码:

m_pMainWnd->SetWindowText("管理信息系统-南通大学电气工程学院");

然后,调试,运行,看调试结果,如下:

3.为单文档界面添加图画:

复制位图文件,到res文件夹,重新命名为“bg.bmp”,然后单击“resourceview”选项卡,右键单击“managerresources”,如下图

单击“insert”按钮,点击“Bitmap”,并单击“import”选项

并在res文件夹下,选中“bg.bmp”,然后单击“import”。

同时按住“ctrl+w”键,在“Classname”,选择“CManagerView”下选中“WM_PAINT”

单击“Addfunction”,在单击“EditCode”,在

添加如下代码:

 

CPaintDC*pDC=newCPaintDC(this);//devicecontextforpainting

CBitmapbmp;

RECTRect;

RECTRectView;

POINTptSize;

CDCdcmem;

BITMAPbm;

intb=bmp.LoadBitmap(IDB_BITMAP_BG);//将位图取出;

dcmem.CreateCompatibleDC(pDC);//创建兼容设备上下文。

dcmem.SelectObject(&bmp);//用设备上下文选择位图;

dcmem.SetMapMode(pDC->GetMapMode());//设置映射方式;

GetObject(bmp.m_hObject,sizeof(BITMAP),(LPSTR)&bm);//映射位图;

GetClientRect(&Rect);

ptSize.x=bm.bmWidth;

ptSize.y=bm.bmHeight;

pDC->DPtoLP((LPPOINT)&ptSize,1);//设备单元to逻辑单元;

GetClientRect(&RectView);

CRectRectBmp=RectView;

if((RectView.right-RectView.left)>bm.bmWidth)//位图宽度容纳不下;

{

RectBmp.left=RectView.left+(RectView.right-RectView.left-bm.bmWidth)/2;

RectBmp.right=bm.bmWidth;

}

else

{

RectBmp.left=RectView.left;

RectBmp.right=RectView.right-RectBmp.left;

}

if((RectView.bottom-RectView.top)>bm.bmHeight)

{

RectBmp.top=RectView.top+(RectView.bottom-RectView.top-bm.bmHeight)/2;

RectBmp.bottom=bm.bmHeight;

}

else

{

RectBmp.top=RectView.top;

RectBmp.bottom=RectView.bottom-RectBmp.top;

}

pDC->StretchBlt(RectBmp.left,RectBmp.top,RectBmp.right,\

RectBmp.bottom,&dcmem,0,0,bm.bmWidth,bm.bmHeight,\

SRCCOPY);

dcmem.DeleteDC();

调试,并运行后如下图:

4.添加登录管理界面

4.1单击“ResourceView”选项卡,右键单击“Dialog”,单击“insert”,插入一个对话框文档,

并进行如下设置

4.2插入位图:

复制位图文件,到res文件夹,重新命名为“0003.bmp”,右键点击“Bitmap”,并单击“import”选项,并在res文件夹下,选中“0003.bmp”,然后单击“import”。

并修改位图属性IDB_BITMAP_LOGIN如下:

拖动

picture控件至对话框,设置picture控件的属性Type:

Bitmap

Image:

IDB_BITMAP_LOGIN如下图:

显示如下:

4.3.设置密码登陆:

在对话框上设置文本文件“static”,并对按钮进行设置:

拖动“ComboBox”控件至对话框,设置属性为:

IDC_COMBO1

拖动“EditBox”控件至对话框,设置属性:

IDC_EDIT1,并修改“Styles”选项卡,勾住“Password”选项,如下图

4.4显示登录对话框

同时按住“Ctrl+W”键,创建一个新类,类的名字“CLoginDlg”,单击“ok”按钮,生产如下图:

在CManagerApp中双击InitInstance函数

添加如下代码:

CLoginDlgloginDlg;

if(loginDlg.DoModal()!

=IDOK)

returnFALSE;

代码加载的位置一定在

CSingleDocTemplate*pDocTemplate;之前,切记,同时要添加头文件#include"LoginDlg.h"

单击“登录”或者“退出”按钮后,

4.5.登录界面与数据库相连

同时按住“Ctrl+W”键,创建一个新类,类的名字“CPassWord”,基于数据库“CRecorset”类,如下图

单击“OK”,选中ODBC,点击“OK”,到所在目标下选中数据库。

“manager”文件夹,

点击“OK”,到所在目标下选中数据库。

(例程给出manager.mdb数据库),然后选中password表。

单击“OK”.

Password表设置如下:

其中,passwd为要设置的密码。

对登录对话框设置变量,同时按住“Ctrl+W”键,进行如下设置,在“MemberVariable”选项卡进行设置变量,注意ID号,每一个ID分别设置2个变量,一个CString类型,一个Control类型

设置好变量后,为CLoginDlg添加函数,同时按住“Ctrl+W”键,按照下图进行设置:

在OnInitDialog()函数里加进如下代码:

用于数据库的打开

CPassWordrecordset;

CStringstrSQL;

UpdateData(TRUE);

//strSQL.Format("select*frompasswordwhereuser='%s'ANDpasswd='%s'",m_strUser,m_strPass);

strSQL="select*frompassword";

if(!

recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

returnFALSE;

}

while(!

recordset.IsEOF())

{

m_ctrUser.AddString(recordset.m_user);

recordset.MoveNext();

}

recordset.Close();

同时在StdAfx.h头文件里包含如下的头文件代码,如下图

#include//ODBC数据库API头文件

#include

 

同时按住“Ctrl+W”键,进行如下设置,

单击“EditCode”,在voidCLoginDlg:

:

OnOK()函数里添加如下代码:

CPassWordrecordset;

CStringstrSQL;

CManagerApp*ptheApp=(CManagerApp*)AfxGetApp();

UpdateData(TRUE);

//检查用户名是否输入

if(m_strUser.IsEmpty())

{

AfxMessageBox("请输入用户名!

");

m_ctrUser.SetFocus();

return;

}

if(m_strPass.IsEmpty())

{

AfxMessageBox("请输入密码!

");

m_ctrPass.SetFocus();

return;

}

//从用户表中检查用户名密码是否正确

strSQL.Format("select*frompasswordwhereuser='%s'ANDpasswd='%s'",m_strUser,m_strPass);

if(!

recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

return;

}

if(recordset.GetRecordCount()==0)

{

//密码错误处理

recordset.Close();

MessageBox("密码错误,请重新输入!

");

m_strPass="";

m_ctrPass.SetFocus();

UpdateData(FALSE);

}

else

{

//分配用户权限

ptheApp->m_bIsAdmin=recordset.m_isadmin;

recordset.Close();

CDialog:

:

OnOK();

}

运行后如下图:

在密码框里输入密码“1”,则可以进入界面程序了。

5.添加“用户管理”设置

单击“ResourceView”选项卡,右键单击“Dialog”,单击“insert”,插入一个对话框文档,设置对话框的属性为IDD_DIALOG_USER

5.1设置对话框:

添加“列表”(listcontrol)控件:

设置为:

IDC_LIST_USERNAME

“新增”按钮:

IDC_BUTTON_NEW

“删除”按钮:

IDC_BUTTON_DELETE

“退出”按钮:

IDCANCEL

“保存”按钮:

IDOK

“取消”按钮:

ID_BUTTON_CANCEL

“是否管理员”:

checkBox选框

对三个编辑框按照下图设置:

用户名:

IDC_EDIT1选中“Disabled”

密码:

IDC_EDIT2,选中“password”

确认密码:

IDC_EDIT3,选中“password”

5.2创建新类

同时按住“Ctrl+W”键,创建一个新类,类的名字“CUserDlg”,单击“ok”按钮,

5.3设置菜单

用户设置:

ID_SYS_USER

5.4显示“用户设置”对话框

同时按住“CTRL+W”键,按下图设置:

在OnSysUser()函数里添加如下代码:

并添加头文件#include"UserDlg.h"

CUserDlgUserDlg;

UserDlg.DoModal();

调试后单击“用户设置”菜单,界面运行如下:

5.4区分用户的等级管理功能

添加如下代码:

CManagerApp*ptheApp=(CManagerApp*)AfxGetApp();

pCmdUI->Enable(ptheApp->m_bIsAdmin);

5.5为用户列表显示数据

同时按住“CTRL+W”键,添加变量m_ctrList

同时,为userdlg添加OnInitDialog()函数

同时,为userdlg添加RefreshData()函数,按照下图,单击AddMemberFunction

添加变量:

按照下图设置函数,并单击“OK”按钮

添加变量:

CPassWordm_recordset;

在RefreshData()函数添加如下代码

m_ctrList.SetFocus();

//清空用户列表

m_ctrList.DeleteAllItems();

m_ctrList.SetRedraw(FALSE);

CStringstrSQL;

UpdateData(TRUE);

//打开记录集

strSQL="select*frompassword";

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

return;

}

//添加用户名到用户列表中

inti=0;

while(!

m_recordset.IsEOF())

{

m_ctrList.InsertItem(i++,m_recordset.m_user);

m_recordset.MoveNext();

}

m_recordset.Close();

m_ctrList.SetRedraw(TRUE);

调试后,结果如下:

5.6设置变量,

按照下图设置

依次如下设置

5.7为“新增”按钮添加代码:

进行如下设置:

在函数中添加如下代码:

//清空用户资料

m_strUser="";

m_strPass="";

m_strRePass="";

m_bIsAdmin=FALSE;

//设置用户名编辑框为可用

m_ctrUser.EnableWindow(TRUE);

m_ctrUser.SetFocus();

//更新数据到界面

UpdateData(FALSE);

5.8为“保存”按钮添加功能

UpdateData();

if(m_ctrUser.IsWindowEnabled())

{//增加新用户的输入检查

if(m_strUser=="")

{

MessageBox("请填写用户名!

");

m_ctrUser.SetFocus();

return;

}

}

else

{//修改用户信息的输入检查

if(m_strUser=="")

{

MessageBox("请选择一个用户!

");

return;

}

}

//限制密码不能为空

if(m_strPass=="")

{

MessageBox("密码不能为空,请输入密码!

");

m_ctrPass.SetFocus();

return;

}

//验证密码与确认密码是否一致

if(m_strPass!

=m_strRePass)

{

MessageBox("两次输入地密码不一致,请重新输入密码!

");

m_ctrPass.SetFocus();

m_strPass="";

m_strRePass="";

UpdateData(FALSE);

return;

}

//打开记录集

CStringstrSQL;

strSQL.Format("select*frompasswordwhereuser='%s'",m_strUser);

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

return;

}

if(m_ctrUser.IsWindowEnabled())

{//增加新用户

//判断用户是否已经存在

if(m_recordset.GetRecordCount()!

=0)

{

m_recordset.Close();

MessageBox("该用户已经存在!

");

return;

}

m_recordset.AddNew();

m_recordset.m_user=m_strUser;

m_recordset.m_passwd=m_strPass;

m_recordset.m_isadmin=m_bIsAdmin;

m_recordset.Update();

MessageBox("用户添加成功!

请记住用户名和密码!

");

m_recordset.Close();

}

else

{//修改用户信息

//判断用户是否不存在

if(m_recordset.GetRecordCount()==0)

{

m_recordset.Close();

MessageBox("该用户不存在!

请更新数据库");

return;

}

m_recordset.Edit();

m_recordset.m_user=m_strUser;

m_recordset.m_passwd=m_strPass;

m_recordset.m_isadmin=m_bIsAdmin;

m_recordset.Update();

MessageBox("用户修改成功!

请记住用户名和密码!

");

m_recordset.Close();

}

m_ctrUser.EnableWindow(FALSE);

//更新用户列表

RefreshData();

5.9添加“删除”按钮功能

5.10为“取消”按钮添加功能

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

当前位置:首页 > 医药卫生 > 基础医学

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

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