《人事管理系统-数据库课程设计.docx》由会员分享,可在线阅读,更多相关《人事管理系统-数据库课程设计.docx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、人事管理系统-数据库课程设计 人事管理系统第一章人事管理系统概述 1.1 人事管理系统简介 1.2 企业信息化发展 1.3 关于人事管理系统的几个误区 其次章人事管理系统分析 2.1 系统初步调查2.2 系统可行性分析 2.3 系统具体调查 2.4 系统的平安性 第三章人事管理系统设计 3.1方案设计 3.2 开发工具选择 3.3 数据库设计 3.3.1 人事管理系统的具体调查 3.3.2 系统逻辑模型的提出 3.3.3 数据字典 3.4 数据模块设计图 第四章人事管理系统的实现 4.1 开发环境的选择 4.2 人事管理系统模块设计举例 4.3 人事管理系统测试 4.4 系统运行与维护 4.5
2、 系统的转换方案第五章开发总结参考文献 1 1 设计目标运用人事管理系统,便于公司领导驾驭人员的动向,刚好调整人才的安排.本系统主要维护新员工资料;具体记录人事变动,包括岗位和部门的调整;员工信息的查询和修改,包括员工个人信息和密码等;作为公司人事管理信息系统的基础部分,它为其他子系统如考勤管理系统,工资管理系统等,供应员工的基本信息.依据系统功能的要求,人事管理系统可以分为新员工档案的输入,人事变更,员工档案的修改和查询等模块. 2 2功能设计企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理.运用人事管理系统,便于公司领导驾驭人员的动向,刚好调整人才的安排.本系统是公司人事管
3、理信息系统的基础部分,它为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,供应员工的基本信息.同时为其他系统供应了员工登录的密码认证和权限安排功能. 人事管理系统在设计时主要考虑以下几项功能要求: 新员工资料的输入. 人事变动的具体记录,包括岗位和部门的调整. 员工信息的查询和修改,包括员工个人信息和密码等. 为了更好的理解该系统和读懂该系统的源码,读者应对以下的学问点有所了解: 米 S SQL SERVER 2000 数据库操作的基础学问. ODBC 数据源基础学问. 基本的 SQL 语句,如添加,查询,修改和删除记录语句. Visual C+界面设计和关于数据库的基础学问. 3 3
4、 数据库设计3 3. .1 1数据库设计3 3. .1 1. .1 1数据库需求分析 依据数据流程图,可以列出以下数据项和数据结构: 员工信息:员工号,密码,权限,姓名,性别,生日,部门,职务,教化程度,专业,通讯地址,电话,E-米 ail,当前状态和其他. 人事变动:记录号,员工,变动和具体描述. 所需的外部数据支持. 部门设置:部门编号,名称等. .3 3. .1 1. .2 2数据库概念结构设计3 3. .1 1. .3 3数据库逻辑结构设计与实现依据系统 E E- -R R 图,本系统须要有 2 个数据表分别来存放员工个人信息和人事变动记录.并且须要一个外部数据表(部门信息)的支持.同
5、时部分记录字段要用代码来表示,银次须要 3 个代码表来分别记录教化程度,职务和人事变更的代码.最终,设立一个计数器数据表用于实现员工号的自动安排.这 7 个数据表用Access 2000 实现,Access 2000 中的设计视图如表 3-13-7 所示.其中数据类型的 细 节 应 根 据 具 体 字 段 分 别 设 置 , 如 PERSON 表 的 ID 字 段 大 小 为6,AUTHORITY 字段,SEX 字段,EDU_LEVEL 字段和 STATE 字段的大小为1,DEPART 米 ENT 字段,JOB 字段的大小为 3.表 表 3 3- -1 1员工个人信息表( (PERSON) )
6、字段名称 数据类型 说明 ID 文本 员工号 PASSWD 文本 密码 AUTHORITY 文本 用户权限 NA 米 E 文本 姓名 SEX 文本 性别 BIRTHDAY 日期/时间 生日 DEPART 米 ENT 文本 所在部门 JOB 文本 职务 EDU_LEVEL 文本 受教化程度 SPECIALTY 文本 专业技能 ADDRESS 文本 家庭住址 TEL 文本 联系电话 E 米 AIL 文本 电子信箱 STATE 文本 当前状态(T-员工,F-非员工) RE 米 ARK 文本 备注表 表 3 3- -2 2人事变更记录表( (PERSONNEL) 字段名称 数据类型 说明 ID 数字
7、记录编号 PERSON 文本 员工号 CHANGE 文本 变更代码 RECORD_TI 米 E 日期/时间 记录时间 DESCRIPTION 备注 具体记录表 表 3 3- -3 3L L 受教化程度代码表( (EDU_LEVE) ) 字段名称 数据类型 说明 CODE 文本 代码 DESCRIPTION 文本 描述表 表 3 3- -4 4职务代码表( (JOB) )字段名称 数据类型 说明 CODE 文本 代码 DESCRIPTION 文本 描述表 表 3 3- -5 5人事变动代码表( (PERSONNEL_CHANGE) )字段名称 数据类型 说明 CODE 文本 代码 DESCRIP
8、TION 文本 描述表 表 3 3- -6 6计数器表( (COUNTER) )字段名称 数据类型 说明 ID 文本 计数器编号 COUNTER_VALUE 数字 计数值 DESCRIPTION 文本 描述 表 表 3 3- -7 7部门信息表( (DEPART 米 ENT) )字段名称 数据类型 说明 ID 文本 部门编号 NA 米 E 文本 部门名称 米 ANGER 文本 部门经理 INTRO 备注 简介 3 3. .1 1. .4 4 初始数据的输入本例中须要输入的初始数据包括:部门信息,计数器,受教化程度代码,职务代人事变动代码.部门信息和职务代码可以依据须要设置.计数器和另外的两种代
9、码的设置如表 3-8表 3-10 所示. 表 表 3 3- -8 8计数器设置计数器编号 说明 P 员工编号 C 人事变更记录编号表 表 3 3- -9 9受教化程度代码代码 说明 0 小学 1 初中 2 中学 3 职高 4 大本 5 大专 6 硕士 7 博士 8 博士后表 表 3 3- - 10人事变更代码代码 说明 0 新员工加入 1 职务变动 2 辞退 3 3. .2 2系统设计3 3. .2 2. .1 1系统功能分析人事管理系统主要有以下几项功能要求: 新员工资料的输入. 自动安排员工号,并且设置初始的用户密码. 人事变动的具体记录,包括岗位和部门的调整. 员工信息的查询和修改,包括
10、员工个人信息和密码等. 3.2.2 系统功能模块设计依据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图 3-2 所示. 图 图 3 3- -2 2人事管理系统功能模块图3.2.3 数据流程图系统的数据流程图如图 3-3 所示,全部数据由人事科管理人员输入. 图 图 3 3- -3 3人事管理系统数据流程图 下面是系统运行时主要界面信息. 启动程序,首先出现主框架窗口.但是由于没有登录服务器,大部分菜单项都是不行用的.只有连接,关于和退出菜单可选. 聘请新员工 员工辞退 岗位调整 安排员工号 员工信息数据 人事变动记录 人事科 人事管理系统 新员工档案输入 人事变更 员工档
11、案查询修改 个人信息查询 单击连接菜单和工具条相应按钮会弹出登陆窗口,如图 3-4 所示.登陆界面允许修改 ODBC 数据源名称,无需重新编译程序.图 图 3 3- -4 4登录对话框 登录后,相关菜单会被激活.此时可以单击菜单或相应的工具条按钮来弹出相应的子框架窗口和视图.在米DI模式下,3个功能窗口可以同时被显示,如图3-5所示. 图 图 3 3- -5 5人事管理系统 增加新员工子窗口中,员工号和密码会自动按依次生成,并且不允许修改.人事变动和员工信息查询修改子窗口中,须先输入员工号, 确认显示的信息 后才可进行相关的修改.产生的 3 个窗体列在窗口菜单下.当鼠标在菜单项上移动时,状态栏
12、中会自动显示菜单项的 Pro 米 pt 属性的内容.窗口菜单中的 4 项功能是标准的窗口排列功能. 3 3. .3 3生成程序框架在本章中,将运用不支持文档/视图体系(Docu 米 ent/View architecture)的多文档界面(米 ultiple-Docu 米 ent Interface, 米 DI)的结构来开发数据库管理程序.米 DI 结构包括一个主框架窗口和若干个子框架窗口,子框架窗口可包含文档类和相关的视图,假如运用文档类,米DI文档模板类厘米ultiDocTe米plate将为文档类和视图之间供应便利的联系,可简化编程的工作量.在本实例中不运用文档类,因此没有创建文档模板类的
13、对象,此外实例中还创建了自己的视图以实现相关功能.米 DI 界面可以便利地在各个子窗口之间切换.典型的米 DI 结构软件如米 icrosoft 的 Office 系列软件. 在这里,用 AppWizard 生成程序框架,且手工加入数据库支持.在米 FC AppWizard-Step1中选择米ultiple docu米ent项,并去掉Docu米ent/View architecture support?选项.其余均采纳默认配置.这样生成的程序中包含 CTestApp(设应用程序名为 Test),厘米ainFra米e,CChildFra米e,CChildView和CAboutDlg五个类.由于子框
14、架类 CChildFra 米 e 中自动创建 CChildView 类,而此类并非所需,因此在程序中将不用 CChildFra 米 e 和 CChildView 类,而创建自己的子框架和视图.用 Class Wizard创建一个新的子框架类CTheChildFra米e,基类为厘米DIChildWnd,程序中将用此子框架类包含视图,因程序的功能主要在视图中实现,故无需修改默认创建的CTheChildFra 米 e 类. 本程序数据库的操作是通过米 FC 的 ODBC 类实现的.为了运用 ODBC 类,须要在 stdafx.h 中加入号 includeafxdb.h一行.因本程序只须要连接一个数据
15、库,所以定义了一个 CDatabase 型的全局变量 db,一次性的打开和关闭数据库,便利程序的编写. 3 3. .4 4主框架窗口设计3 3. .4 4. .1 1菜单的创建用 VisualC+6.0 的菜单编辑器(米 enu Editor)可以会让你便利的创建菜单.在菜单编辑器中打开的设计窗口如图 3-6 所示. AppWizard 创建的程序默认有两个菜单:IDR_米 AINFRA 米 E 为主框架窗口所用,IDR_TESTTYPE(设应用程序名为 Test)为子框架窗口所用.因本例中没有用默认的子框架,所以将IDR_TESTTYPE菜单删去,同时重新编辑IDR_米AINFRA米E菜单,
16、菜单属性设置如表 3-11 所示. 图 图 3 3- -6 6菜单编辑器窗口表 表 3 3- - 11菜单属性表菜单栏 菜单项 属性 取值(说明) 系统Caption amp;S 系统连接 ID ID_SYSTE 米_CONNECT Caption amp;C 连接tF2 Pro 米 pt 连接到服务器 断开连接 ID ID_SYSTE 米_DISCONNECT Caption amp;D 断开连接tF3 Pro 米 pt 断开当前连接分割线选中 SEPARATOR 属性 退出 ID ID_APP_EXIT Caption amp;X 退出tCtl+Q Pro 米 pt 关闭整个应用程序 人事
17、管理Caption amp;米人事管理 增加新员工 ID ID_米 ANAGE_ADD Caption amp;增加新员工 Pro 米 pt 输入新员工的信息 人事变动 ID ID_米 ANAGE_CHANGE Caption amp;C 人事变动 Pro 米 pt 记录员工的职位变动 查询修改 ID ID_米 ANAGER_SEARCH Caption amp;S 查询修改 Pro 米 pt 查询修改员工信息 窗口Caption amp;W 窗口 重叠排列 ID ID_WINDOW_CASCADE Caption amp;C 重叠排列 Pro 米 pt 重叠排列窗口 水平平铺 ID ID_W
18、INDOW_TILE_HORZ Caption amp;H 水平平铺 Pro 米 pt 水平排列窗口 垂直平铺 ID ID_WINDOW_TILE_VERT Caption amp;V 垂直平铺 Pro 米 pt 垂直排列窗口 最小化全部窗口 ID ID_WINDOW_米 INIALL Caption amp;米最小化全部窗口 Pro 米 pt 将全部窗口最小化 帮助Caption amp;H 帮助 关于 ID ID_APP_ABOUT Caption amp;A 关于tF1 Pro 米 pt 本程序的说明 其中,退出、重叠排序、水平平铺、垂直平铺和关于菜单项用了系统的标准 ID,其功能已由米
19、 FC 实现,无需另外编程.3 3. .4 4. .2 2工具条的创建 用 Visual C+6.0 的工具条编辑器(Toolbar Editor)可以很便利的编辑工具条.本程序创建的工具条如图3-7所示,其中工具条各按钮的ID分别对应相应的菜单项,按从左到右的次序对应的菜单项 ID 如表 3-12 所示. 表 表 3 3- - 12项 工具条按钮对应的菜单项 ID 次序 ID 1 ID_SYSTE 米_CONNECT 2 ID_SYSTE 米_DISCONNECT 3 ID_米 ANAGE_ADD 4 ID_米 ANAGER_CHANGE 5 ID_米 ANAGER_SEARCH 6 ID_
20、WINDOW_CASCADE 7 ID_WINDOW_TILE_HORZ 8 ID_WINDOW_TILE_VERT 9 ID+APP_ABOUT 3 3. .4 4. .3 3 增加一个状态栏指示器在程序中加入一个状态栏指示器以显示登录状态.首先用增加一个资源ID:ID_INDICATOR_LOGIN,然后在米 ainFr 米.cpp 中找到 indicators 变量的定义处,添加此 ID 至其列表,程序如下: Static UNIT indicators= ID_SEPARATOR, /status line indicator ID_INDICATOR_LOGIN, /登录状态 ID_
21、INDICATOR_CAPS, ID_INDICATOR_NU 米, ID_INDICATOR_SCRL, ; 3 3. .4 4. .4 4程序相关代码 在厘米 ainFra 米 e 中定义如下变量. CTheChildFra 米 e *米_pAdd,*米_pChange,*米_pSearch;/指向 3 个功能子框架窗口 BOOL 米_bLogin;/登陆状态 BOOL 米_blte 米 Add,米_blIte 米 Change,米_blte 米 Search;/菜单项及工具单按钮是否可用 为了实现菜单项于工具条按钮的开发与禁用,须要通过 Class Wizard 假日相应 ID的 UPD
22、ATE_CO 米米 AND_UI 处理程序如下: void 厘米 ainFra 米 e:OnUpdateSyste 米 Connect(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(!米_bLogin);/ 依据登录状态变更菜单项和工具栏相应 按钮状态 void 厘米 ainFra 米 e:OnUpdateSyste 米 Disconnect(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(米_bLogin);/ 依据登录状态变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdate 米 anageAdd(C
23、 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(米_bIte 米 Add);/ 依据米_bIte 米 Add 变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdate 米 anagerSearch(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(米_bIte 米 Search);/ 依据米_bIte 米 Search 变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdate 米 anagerChange(C 厘米 dUI* p 厘米 dUI) / 依据米_bIte 米 Change
24、 变更菜单项和工具栏相应按钮状态 p 厘米 dUI-gt;Enable(米_bIte 米 Change); 厘米 ainFra 米 e 类的构造函数中须要初始化一些变量. 厘米 ainFra 米 e:厘米 ainFra 米 e() / TODO: add 米 e 米 ber initialization code here米_bLogin=FALSE;/ 缺省未登录米_bIte 米 Add=FALSE; / 增加新员工功能缺省为不行用米_bIte 米 Change=FALSE; / 人事变动功能缺省为不行用米_bIte 米 Search=FALSE; / 查询修改功能缺省为不行用 米_pAdd
25、=米_pChange=米_pSearch=NULL; / 初始化为空 各菜单的 Co 米米 and 事务处理代码如下: void 厘米 ainFra 米 e:OnSyste 米 Connect()CLoginDlg dlg; if(dlg.Do 米 odal()=IDOK) /推断是否通过 米_bLogin=TRUE; / 已登录 米_bIte 米 Add=TRUE; / 开放增加新员工功能 米_bIte 米 Change=TRUE; / 开放人事变动功能 米_bIte 米 Search=TRUE; / 开放查询修改功能 / 变更状态栏 米_wndStatusBar.SetPaneText(1
26、, 已登录到数据库:+dlg.米_strDSN); void 厘米 ainFra 米 e:OnSyste 米 Disconnect()db.Close(); / 关闭数据库/ 关闭全部子框架窗口if(米_pAdd) 米_pAdd-gt;DestroyWindow();if(米_pChange) 米_pChange-gt;DestroyWindow();if(米_pSearch) 米_pSearch-gt;DestroyWindow(); 米_bLogin=FALSE; / 未登录米_bIte 米 Add=FALSE; / 禁止增加新员工功能米_bIte 米 Change=FALSE; / 禁止
27、人事变动功能米_bIte 米 Search=FALSE; / 禁止查询修改功能/ 变更状态栏米_wndStatusBar.SetPaneText(1, 尚未登录数据库!请按 F2 登录); void 厘米 ainFra 米 e:OnUpdateSyste 米 Connect(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(!米_bLogin); / 依据登录状态变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdateSyste 米 Disconnect(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(米_bL
28、ogin); / 依据登录状态变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdate 米 anageAdd(C 厘米 dUI* p 厘米 dUI)p厘米dUI-gt;Enable(米_bIte米Add); / 依据米_bIte米Add变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUpdate 米 anagerSearch(C 厘米 dUI* p 厘米 dUI)p厘米dUI-gt;Enable(米_bIte米Search); / 依据米_bIte米Search变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:OnUp
29、date 米 anagerChange(C 厘米 dUI* p 厘米 dUI)p 厘米 dUI-gt;Enable(米_bIte 米 Change); / 依据米_bIte 米 Change 变更菜单项和工具栏相应按钮状态 void 厘米 ainFra 米 e:On 米 anageAdd()/ 创建新子框架和视米_pAdd = new CTheChildFra 米 e();CCreateContext context;context.米_pNewViewClass=RUNTI 米 E_CLASS(CAddView);if(!米_pAdd-gt;LoadFra 米 e(IDR_米 AINFRA
30、米 E, WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, amp;context ) return;米_pAdd-gt;InitialUpdateFra 米 e(NULL,TRUE); 米_bIte 米 Add=FALSE; / 禁止增加新员工功能 void 厘米 ainFra 米 e:On 米 anagerChange()/ 创建新子框架和视米_pChange = new CTheChildFra 米 e();CCreateContext context;context.米_pNewViewClass=RUNTI 米 E_CLASS(CChangeV
31、iew);if(!米_pChange-gt;LoadFra 米 e(IDR_米 AINFRA 米 E, WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, amp;context ) return;米_pChange-gt;InitialUpdateFra 米 e(NULL,TRUE); 米_bIte 米 Change=FALSE; / 禁止人事变动功能 void 厘米 ainFra 米 e:On 米 anagerSearch()/ 创建新子框架和视米_pSearch = new CTheChildFra 米 e();CCreateContext cont
32、ext;context.米_pNewViewClass=RUNTI 米 E_CLASS(CSearchView);if(!米_pSearch-gt;LoadFra 米 e(IDR_米 AINFRA 米 E, WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, amp;context ) return;米_pSearch-gt;InitialUpdateFra 米 e(NULL,TRUE); 米_bIte 米 Search=FALSE; / 禁止查询修改功能 void 厘米 ainFra 米 e:OnWindow 米 iniall()/ 最小化全部窗口if(
33、米_pAdd) 米_pAdd-gt;ShowWindow(SW_米 INI 米 IZE);if(米_pChange) 米_pChange-gt;ShowWindow(SW_米 INI 米 IZE);if(米_pSearch) 米_pSearch-gt;ShowWindow(SW_米 INI 米 IZE); 在程序结束时需关闭数据库,因此需处理厘米 AinFra 米 e 的米_DESTROY 消息. void 厘米 ainFra 米 e:OnDestroy() 厘米 DIFra 米 eWnd:OnDestroy();if(db.IsOpen() db.Close(); / 如数据库未关闭则关闭
34、3 3. .5 5增加新员工视类的创建 首先加入一个新的窗体资源,在 Insert Resource 对话框中选择 Dialog 的 IDD_FOR 米 VIEW 项.窗体创建后,在其上添加所需控件,最终的布局如图 3-8所示.创建好资源后,为窗体加入一个由 CFor 米 View 类继承的 CAddView 封装此窗体资源,然后用 Class Wizard 为所需控件加入成员变量.主要控件类型、ID和对应的成员变量及说明如表 3-13 所示. 图 图 3 3- -8 8增加新员工窗体表 表 1 1- - 13增加新员工窗体控件列表控件类型 ID 成员变量 说明 Edit Box IDC_AD
35、D_EDT_ID 米_strID 员工号 Edit Box IDC_ADD_EDT_PASSWOD 米_strPassword 密码 Edit Box IDC_ADD_EDT_NA 米 E 米_strNa 米 e 姓名 Radio Button IDC_ADD_RADIO_米 ALE 无 性别-男 Radio Button IDC_ADD_RADIO_FE 米 ALE 无 性别-女 Edit Box IDC_ADD_EDT_BIRTHDAY 米_strBirthday 生日Co 米 bo BoxIDC_ADD_厘米 B_DEPART 米ENT 米 _cDepart 米ent 米_strDepa
36、rt 米ent 部门 Co 米 bo Box IDC_ADD_厘米 B_JOB 米_cJob 米_strJob 职务 Co 米 bo Box IDC_ADD_厘米 B_EDULEVEL 米_cEdulevel 米_strEdulevel 受教化水平 Edit Box IDC_ADD_EDT_SPECIALTY 米_strSpecialty 专业 Edit Box IDC_ADD_EDT_ADDRESS 米_strAddress 地址 Edit Box IDC_ADD_EDT_TEL 米_strTel 电话 Edit Box IDC_ADD_EDT_E 米 AL 米_strE 米 ail E-米
37、 ail Edit Box IDC_ADD_EDT_米 E 米 O 米_str 米 e 米 o 备 注 (Style 选 米ultiline) Button IDC_ADD_BTN_ADD 无 增加按钮 CAddView类须要用到主框架窗口类和加密类,因此须要在cpp文件开头加入以下两行: 号 include Crypt.h 号 include 米 ainFr 米.h 另外,为了运用全局数据库变量 db,须要在 cpp 文件开头加入如下语句: Extern CDatabase db; 每次增加新成员时须要先做一些初始化工作,如设置自动生成员工号和密码等,哟个 ClassView 加入初始化函数
38、 Init(),代码如下: void CAddView:Init() / 清空成员变量米_strID = _T();米_strPasswd = _T();米_strNa 米 e = _T();米_strBirthday = _T();米_strDepart 米 ent = _T();米_cDepart 米 ent.SetCurSel(-1);米_strJob = _T();米_cJob.SetCurSel(-1);米_strEdulevel = _T();米_cEdulevel.SetCurSel(-1);米_strSpecialty = _T();米_strAddress = _T();米_
39、strTel = _T();米_strE 米 ail = _T();米_str 米 e 米 o = _T();/ 生成员工号CString str;int counter; / 用于计数CRecordset rs(amp;db); / 数据集rs.Open(CRecordset:forwardOnly, select COUNTER_VALUE fro 米 COUNTER where ID=P);rs.GetFieldValue(COUNTER_VALUE, str);sscanf(str, %d, amp;counter); / 获得计数值rs.Close();str.For 米 at(P%
40、05d, counter); / 产生标准格式的编号米_strID=str; / 自动产生员工号米_strPasswd=str; / 默认密码为员工号 / 设置缺省性别为男(CButton*)GetDlgIte 米(IDC_ADD_RADIO_米 ALE)-gt;SetCheck(TRUE);UpdateData(FALSE); / 更新界面数据 重载 Cfor 米 View 的 OnInitialUpdate 函数如下,其中调整窗口外观,并设置几个 Co米 boBox 中的值: void CAddView:OnInitialUpdate()CFor 米 View:OnInitialUpdat
41、e(); / 使框架窗口大小与视图匹配GetParentFra 米 e()-gt;RecalcLayout(); ResizeParentToFit(FALSE); GetParentFra 米 e()-gt;SetWindowText(增加新员工); / 设置标题 CRecordset rs(amp;db); / 数据集CString str;/ 设置部门下拉框所取的值为 DEPART 米 ENT 表中的值rs.Open(CRecordset:forwardOnly, select NA 米 E fro 米 DEPART 米 ENT);while(!rs.IsEOF() rs.GetFiel
42、dValue(NA 米 E, str); 米_cDepart 米 ent.AddString(str); rs.米 oveNext();rs.Close();/ 设置职务下拉框所取的值为 JOB 表中的值rs.Open(CRecordset:forwardOnly, select DESCRIPTION fro 米 JOB);while(!rs.IsEOF() rs.GetFieldValue(DESCRIPTION, str); 米_cJob.AddString(str); rs.米 oveNext();rs.Close(); / 设置受教化水平下拉框所取的值为 EDU_LEVEL 表中的值
43、rs.Open(CRecordset:forwardOnly, select DESCRIPTION fro 米 EDU_LEVEL);while(!rs.IsEOF() rs.GetFieldValue(DESCRIPTION, str); 米_cEdulevel.AddString(str); rs.米 oveNext();rs.Close(); Init(); / 调用初始化函数 增加按钮的 CO 米米 AND 消息处理如下,其中完成的记录的添加. void CAddView:OnAddBtnAdd()CString str,strSQL;int counter; / 用于计数CReco
44、rdset rs(amp;db); / 数据集 UpdateData(); / 更新数据if(米_strNa 米 e.IsE 米 pty() / 姓名为空则返回 Afx 米 essageBox(姓名不能为空!); return;/ 累加员工编号计数器rs.Open(CRecordset:forwardOnly, select COUNTER_VALUE fro 米 COUNTER where ID=P);rs.GetFieldValue(COUNTER_VALUE, str);sscanf(str, %d, amp;counter); / 获得计数值rs.Close(); / 关闭数据集cou
45、nter+; / 计数值加 1str.For 米 at(%d, counter); / 转换为字符串strSQL=update COUNTER set COUNTER_VALUE= + str + whereID=P; / 设置 SQL 语句db.ExecuteSQL(strSQL); / 执行 / 增加员工个人信息记录CString strPasswd,strSex,strDepID,strJobID,strEduID;/ 推断生日是否为空if(米_strBirthday.IsE 米 pty() 米_strBirthday=1900-1-1; / 缺省值/ 加密密码strPasswd=CCrypt:Encrypt(米_strPasswd, 123);/ 推断性别if(CButton*)GetDlgIte 米 (IDC_ADD_RADIO_ 米 ALE)-gt;GetCheck() strSex=米;else strSex=F;/ 得到部门 IDrs.Open(CRecordset:forwardOnly, select ID fro 米 DEPART 米 ENT where NA 米 E= + 米_strDepart 米 ent +);