资源描述
安徽工业大学
《面向对象程序设计》课程汇报
课程名称:人事管理系统
姓名:
专业班级:
指导老师:
/12/28
1.数据库建立:
2. 配数据源:
我电脑|搜索C盘:ODBC......
添加|数据源类型选 Microsoft Access Driver[*.mdb],完成
输入数据源名称“人事管理系统”,说明“用于创建人事管理系统”
“选择”,数据库名“人事管理系统”,“确定”。
3.创建人事管理应用程序框架
VC++|文件|新建|工程|MFC AppWizard[exe]|名称“人事管理系统”
选择“单文档”,“支持文档/视图构架”,“下一步”,,,
选“查看数据库不使用文件支持”点“数据源...”,,,按截图选择“OK”,,,
点“完成”,,,看一下摘要,,,向导已生成程序框架
4. 制作人事管理主窗体
向导已生成主窗体:Dialog下IDD_MY_FORM。在此对话框中加10个静态标签控件(只是用来提醒其旁边编辑框),以下:
每个控件点下右键|属性|,可设置其ID和标题,全部全部设置!
在对应静态标签右边放9个编辑框控件,每个控件下右键 | 属性,可设置其ID。
为每个编辑框控件绑定数据源字段:选定一个编辑框控件,右键 | 建立类向导 | 组员变量标签 |class name列表下选CmySet(数据库结果集)左边是数据库字段资源,右边是在类中为其分配组员变量,但m_column*不好记,又不能改,只好全部删掉(Delete Variable…)再手工建立(Add Variable…),换为好记名字
将编辑框(在CmyView视图类中)和上述变量绑定:Add Variable…然后选而不是输入。
你会发觉惟独IDC_EDIT_GZSJ和m_gzsj(工作时间)联不上(没有m_pSet->m_gzsj可选),看一下m_gzsj定义,在“人事管理系统Set.h”文件中用是Ctime类,这类有些毛病(年份范围有限)《以下花了很大精力处理“日期/时间字段”问题,原来能够把数据库“工作时间”字段改为“文本”类型,这么向导就会自动对应Cstring,从而回避此问题。
之所以不回避,关键目标是想经过处理此问题,让同学们了解MFC程序结构。》,而且应该初始化为0(即NULL)(听说用SQL Server数据库就没问题,莫非是和Access不匹配???),所以检验一下CmySet类结构函数:发觉惟独没有对m_gzsj初始化,所以加一句m_gzsj=0;再回去看看,结果还是不能绑定(还是没有m_pSet->m_gzsj可选)。所以还是不用Ctime类,改用COleDateTime类,改头文件:
改结构函数中初始化:
再回去看看,结果能够绑定了,注意类型变为COleDateTime。再到视图类中看看影射函数DoDataExchange(),已经有映射了。保留,编译犯错,提醒DDX_FieldText(pDX, IDC_EDIT_GZSJ, m_pSet->m_gzsj, m_pSet);中'DDX_FieldText' : none of the 10 overloads can convert parameter 3 from type 'class COleDateTime'
可见 COleDateTime和CString无法转换
方法1:自己转(请用此方法完成后面“增加统计”)
int dyear,dmonth,dday;
dyear= m_pSet->m_gzsj.GetYear();
dmonth= m_pSet->m_gzsj.GetMonth();
dday= m_pSet->m_gzsj.GetDay();
CString dstr;
dstr.Format(“%d-%d-%d”,dyear,dmonth,dday);
DDX_FieldText(pDX, IDC_EDIT_GZSJ, dstr, m_pSet); 编译,运行
开始正确,但点“下一统计”,犯错,考虑:DDX_FieldText(pDX, IDC_EDIT_GZSJ, dstr, m_pSet);中最终指针已没有用处,将此句改为:DDX_Text(pDX, IDC_EDIT_GZSJ, dstr);
编译,运行,临时正确(还未经过UPDATE验证)
5. 为系统实现增加、删除、排序和查询功效
增加4个按钮,ID以下表:
增加新对话框(窗体)及创建类组员:
在查询或过滤统计时,需要一个对话框,用于输入查询条件,增加对话框方法:
VC主菜单,“插入”|“资源”|“对话框(Dialog)类型”| 放一个“分组框控件”,标题为“请输入过滤查询条件”| 在分组框内放一个“编辑框”控件
新建对话框在工程中是不可识别,须为其定义一个新“类”并作一个类申明,才可在工程中调用,对话框中“右键”| “类向导”,提醒必需创建新类,创建,并命名为CDlgQuery
切到“组员变量”标签,为编辑框控件IDC_EDIT1增加组员变量m_query
编制按钮单击响应代码:
回到IDD_MY_FORM对话框,
(1) 双击“增加统计”按钮,完成下列代码:
void CMyView::OnButtonAdd()
{
// TODO: Add your control notification handler code here
m_pSet->AddNew();
m_pSet->Update();//更新统计集
m_pSet->Requery();//重新提取数据
m_pSet->MoveLast();//移动下一条统计
UpdateData(FALSE);//更新视图
}
(2) 双击“删除统计”按钮,完成下列代码:
void CMyView::OnButtonDel()
{
// TODO: Add your control notification handler code here
m_pSet->Delete();
m_pSet->MoveNext();
if (m_pSet->IsEOF())
m_pSet->MoveLast();
if (m_pSet->IsBOF())
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
(3)“筛选统计”按钮响应代码:按职员编号查询,要用到对话框IDD_DIALOG1(CDlgQuery类)来输入筛选条件,所以“人事管理系统View.cpp”中要加入“#include "DlgQuery.h"”。
CDlgQuery Dlgquery;
CString value;
if (Dlgquery.DoModal()==IDOK)//“模式窗口方法打开,结束前不能操纵父窗口”
{
value="职员编号=+"+Dlgquery.m_query+"";
m_pSet->m_strFilter=value;
m_pSet->Requery();
UpdateData(FALSE);
}
(4) 双击“排序统计”按钮,完成下列代码:按职员编号排序
m_pSet->m_strSort="职员编号";
m_pSet->Requery();
UpdateData(FALSE);
6.程序运行演示
展开阅读全文