数据库课程设计人事管理系统.docx

上传人:牧羊曲112 文档编号:1909069 上传时间:2022-12-25 格式:DOCX 页数:40 大小:174.37KB
返回 下载 相关 举报
数据库课程设计人事管理系统.docx_第1页
第1页 / 共40页
数据库课程设计人事管理系统.docx_第2页
第2页 / 共40页
数据库课程设计人事管理系统.docx_第3页
第3页 / 共40页
数据库课程设计人事管理系统.docx_第4页
第4页 / 共40页
数据库课程设计人事管理系统.docx_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《数据库课程设计人事管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计人事管理系统.docx(40页珍藏版)》请在三一办公上搜索。

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系统的转换方案 第五章 开发总结 参考文献 1 设计目标使用人事

2、管理系统,便于公司领导掌握人员的动向,及时调整人才的分配。本系统主要维护新员工资料;详细记录人事变动,包括岗位和部门的调整;员工信息的查询和修改,包括员工个人信息和密码等;作为公司人事管理信息系统的基础部分,它为其他子系统如考勤管理系统,工资管理系统等,提供员工的基本信息。 根据系统功能的要求,人事管理系统可以分为新员工档案的输入,人事变更,员工档案的修改和查询等模块。2 功能设计企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配。本系统是公司人事管理信息系统的基础部分,它为其他子系统,如考勤管理系统,工资管理系统

3、和员工培训系统,提供员工的基本信息。同时为其他系统提供了员工登录的密码认证和权限分配功能。人事管理系统在设计时主要考虑以下几项功能要求: 新员工资料的输入。 人事变动的详细记录,包括岗位和部门的调整。 员工信息的查询和修改,包括员工个人信息和密码等。为了更好的理解该系统和读懂该系统的源码,读者应对以下的知识点有所了解: MS SQL SERVER 2000数据库操作的基础知识。 ODBC数据源基础知识。 基本的SQL语句,如添加,查询,修改和删除记录语句。 Visual C+界面设计和关于数据库的基础知识。3数据库设计3.1 数据库设计3.1.1 数据库需求分析 根据数据流程图,可以列出以下数

4、据项和数据结构:员工信息:员工号,密码,权限,姓名,性别,生日,部门,职务,教育程度,专业,通讯地址,电话,E-mail,当前状态和其他。 人事变动:记录号,员工,变动和详细描述。 所需的外部数据支持。 部门设置:部门编号,名称等。3.1.2 数据库概念结构设计3.1.3 数据库逻辑结构设计与实现 根据系统E-R图,本系统需要有2个数据表分别来存放员工个人信息和人事变动记录。并且需要一个外部数据表(部门信息)的支持。同时部分记录字段要用代码来表示,银次需要3个代码表来分别记录教育程度,职务和人事变更的代码。最后,设立一个计数器数据表用于实现员工号的自动分配。这7个数据表用Access 2000

5、实现,Access 2000中的设计视图如表3-13-7所示。其中数据类型的细节应根据具体字段分别设置,如PERSON表的ID字段大小为6,AUTHORITY字段,SEX字段,EDU_LEVEL字段和STATE字段的大小为1,DEPARTMENT字段,JOB字段的大小为3。表3-1 员工个人信息表(PERSON)字段名称数据类型说明ID文本员工号PASSWD文本密码AUTHORITY文本用户权限NAME文本姓名SEX文本性别BIRTHDAY日期/时间生日DEPARTMENT文本所在部门JOB文本职务EDU_LEVEL文本受教育程度SPECIALTY文本专业技能ADDRESS文本家庭住址TEL文

6、本联系电话EMAIL文本电子信箱STATE文本当前状态(T-员工,F-非员工)REMARK文本备注表3-2 人事变更记录表 (PERSONNEL)字段名称数据类型说明ID数字记录编号PERSON文本员工号CHANGE文本变更代码RECORD_TIME日期/时间记录时间DESCRIPTION备注详细记录表3-3 L受教育程度代码表(EDU_LEVE)字段名称数据类型说明CODE文本代码DESCRIPTION文本描述表3-4 职务代码表(JOB)字段名称数据类型说明CODE文本代码DESCRIPTION文本描述表3-5 人事变动代码表(PERSONNEL_CHANGE)字段名称数据类型说明CODE

7、文本代码DESCRIPTION文本描述表3-6 计数器表(COUNTER)字段名称数据类型说明ID文本计数器编号COUNTER_VALUE数字计数值DESCRIPTION文本描述表3-7 部门信息表(DEPARTMENT)字段名称数据类型说明ID文本部门编号NAME文本部门名称MANGER文本部门经理INTRO备注简介3.1.4初始数据的输入本例中需要输入的初始数据包括:部门信息,计数器,受教育程度代码,职务代人事变动代码。部门信息和职务代码可以根据需要设置。计数器和另外的两种代码的设置如表3-8表3-10所示。表3-8 计数器设置计数器编号说明P员工编号C人事变更记录编号表3-9 受教育程度

8、代码代码说明0小学1初中2高中3职高4大本5大专6硕士7博士8博士后表3-10 人事变更代码代码说明0新员工加入1职务变动2辞退3.2 系统设计3.2.1 系统功能分析人事管理系统主要有以下几项功能要求: 新员工资料的输入。 自动分配员工号,并且设置初始的用户密码。 人事变动的详细记录,包括岗位和部门的调整。 员工信息的查询和修改,包括员工个人信息和密码等。3.2.2 系统功能模块设计根据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图3-2所示。人事管理系统新员工档案输入人事变更员工档案查询修改 图3-2 人事管理系统功能模块图3.2.3 数据流程图系统的数据流程图如图3

9、-3所示,所有数据由人事科管理人员输入。 个人信息查询招聘新员工员工辞退岗位调整分配员工号员工信息数据人事变动记录人事科图3-3 人事管理系统数据流程图下面是系统运行时主要界面信息。启动程序,首先出现主框架窗口。但是由于没有登录服务器,大部分菜单项都是不可用的。只有“连接”,“关于”和“退出”菜单可选。单击“连接”菜单和工具条相应按钮会弹出“登陆”窗口,如图3-4所示。登陆界面允许修改ODBC数据源名称,无需重新编译程序。 图3-4 登录对话框登录后,相关菜单会被激活。此时可以单击菜单或相应的工具条按钮来弹出相应的子框架窗口和视图。在MDI模式下,3个功能窗口可以同时被显示,如图3-5所示。

10、图3-5 人事管理系统“增加新员工”子窗口中,员工号和密码会自动按顺序生成,并且不允许修改。“人事变动”和“员工信息查询修改”子窗口中,须先输入员工号, 确认显示的信息后才可进行相关的修改。产生的3个窗体列在“窗口”菜单下。当鼠标在菜单项上移动时,状态栏中会自动显示菜单项的Prompt属性的内容。“窗口”菜单中的4项功能是标准的窗口排列功能。3.3 生成程序框架在本章中,将使用不支持文档/视图体系(Document/View architecture)的多文档界面(Multiple-Document Interface, MDI)的结构来开发数据库管理程序。MDI结构包括一个主框架窗口和若干个

11、子框架窗口,子框架窗口可包含文档类和相关的视图,如果使用文档类,MDI文档模板类CMultiDocTemplate将为文档类和视图之间提供方便的联系,可简化编程的工作量。在本实例中不使用文档类,因此没有创建文档模板类的对象,此外实例中还创建了自己的视图以实现相关功能。MDI界面可以方便地在各个子窗口之间切换。典型的MDI结构软件如Microsoft的Office系列软件。在这里,用AppWizard生成程序框架,且手工加入数据库支持。在MFC AppWizard-Step1中选择Multiple document项,并去掉Document/View architecture support?选

12、项。其余均采用默认配置。这样生成的程序中包含CTestApp(设应用程序名为 Test),CMainFrame,CChildFrame,CChildView和CAboutDlg五个类。由于子框架类CChildFrame中自动创建CChildView类,而此类并非所需,因此在程序中将不用CChildFrame和CChildView类,而创建自己的子框架和视图。用Class Wizard创建一个新的子框架类CTheChildFrame,基类为CMDIChildWnd,程序中将用此子框架类包含视图,因程序的功能主要在视图中实现,故无需修改默认创建的CTheChildFrame类。本程序数据库的操作是

13、通过MFC的ODBC类实现的。为了使用ODBC类,需要在stdafx.h中加入#include“afxdb.h”一行。因本程序只需要连接一个数据库,所以定义了一个CDatabase型的全局变量db,一次性的打开和关闭数据库,方便程序的编写。3.4 主框架窗口设计3.4.1 菜单的创建 用VisualC+6.0的菜单编辑器(Menu Editor)可以会让你方便的创建菜单。在菜单编辑器中打开的设计窗口如图3-6所示。AppWizard创建的程序默认有两个菜单:IDR_MAINFRAME为主框架窗口所用,IDR_TESTTYPE(设应用程序名为Test)为子框架窗口所用。因本例中没有用默认的子框架

14、,所以将IDR_TESTTYPE菜单删去,同时重新编辑IDR_MAINFRAME菜单,菜单属性设置如表3-11所示。 图3-6 菜单编辑器窗口 表3-11 菜单属性表菜单栏菜单项属性取值(说明)系统Caption&S系统连接IDID_SYSTEM_CONNECTCaption&C连接tF2Prompt连接到服务器断开连接IDID_SYSTEM_DISCONNECTCaption&D断开连接tF3Prompt断开当前连接分割线选中SEPARATOR属性退出IDID_APP_EXITCaption&X退出tCtl+QPrompt关闭整个应用程序人事管理Caption&M人事管理增加新员工IDID_

15、MANAGE_ADDCaption&增加新员工Prompt输入新员工的信息人事变动IDID_MANAGE_CHANGECaption&C人事变动Prompt记录员工的职位变动查询修改IDID_MANAGER_SEARCHCaption&S查询修改Prompt查询修改员工信息窗口Caption&W窗口重叠排列IDID_WINDOW_CASCADECaption&C重叠排列Prompt重叠排列窗口水平平铺IDID_WINDOW_TILE_HORZCaption&H水平平铺Prompt水平排列窗口垂直平铺IDID_WINDOW_TILE_VERTCaption&V垂直平铺Prompt垂直排列窗口最小

16、化所有窗口IDID_WINDOW_MINIALLCaption&M最小化所有窗口Prompt将所有窗口最小化帮助Caption&H帮助关于IDID_APP_ABOUTCaption&A关于tF1Prompt本程序的说明其中,“退出”、“重叠排序”、“水平平铺”、“垂直平铺”和“关于”菜单项用了系统的标准ID,其功能已由MFC实现,无需另外编程。3.4.2 工具条的创建 用Visual C+6.0的工具条编辑器(Toolbar Editor)可以很方便的编辑工具条。本程序创建的工具条如图3-7所示,其中工具条各按钮的ID分别对应相应的菜单项,按从左到右的次序对应的菜单项ID如表3-12所示。表3

17、-12 工具条按钮对应的菜单项ID次序ID1ID_SYSTEM_CONNECT2ID_SYSTEM_DISCONNECT3ID_MANAGE_ADD4ID_MANAGER_CHANGE5ID_MANAGER_SEARCH6ID_WINDOW_CASCADE7ID_WINDOW_TILE_HORZ8ID_WINDOW_TILE_VERT9ID+APP_ABOUT 3.4.3增加一个状态栏指示器在程序中加入一个状态栏指示器以显示登录状态。首先用增加一个资源ID:ID_INDICATOR_LOGIN,然后在MainFrm.cpp中找到indicators变量的定义处,添加此ID至其列表,程序如下:S

18、tatic UNIT indicators=ID_SEPARATOR, /status line indicatorID_INDICATOR_LOGIN, /登录状态ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;3.4.4 程序相关代码在CmainFrame中定义如下变量。CTheChildFrame *m_pAdd,*m_pChange,*m_pSearch; /指向3个功能子框架窗口BOOL m_bLogin; /登陆状态BOOL m_bltemAdd,m_blItemChange,m_bltemSearch; /菜单项及工具单

19、按钮是否可用为了实现菜单项于工具条按钮的开发与禁用,需要通过Class Wizard假日相应ID的UPDATE_COMMAND_UI处理程序如下:void CMainFrame:OnUpdateSystemConnect(CCmdUI* pCmdUI) pCmdUI-Enable(!m_bLogin); / 根据登录状态改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateSystemDisconnect(CCmdUI* pCmdUI) pCmdUI-Enable(m_bLogin); / 根据登录状态改变菜单项和工具栏相应按钮状态void CMainFrame:OnU

20、pdateManageAdd(CCmdUI* pCmdUI) pCmdUI-Enable(m_bItemAdd); / 根据m_bItemAdd改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateManagerSearch(CCmdUI* pCmdUI) pCmdUI-Enable(m_bItemSearch); / 根据m_bItemSearch改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateManagerChange(CCmdUI* pCmdUI) / 根据m_bItemChange改变菜单项和工具栏相应按钮状态pCmdUI-Enab

21、le(m_bItemChange); CMainFrame类的构造函数中需要初始化一些变量。CMainFrame:CMainFrame()/ TODO: add member initialization code herem_bLogin=FALSE; / 缺省未登录m_bItemAdd=FALSE; / 增加新员工功能缺省为不可用m_bItemChange=FALSE; / 人事变动功能缺省为不可用m_bItemSearch=FALSE; / 查询修改功能缺省为不可用 m_pAdd=m_pChange=m_pSearch=NULL; / 初始化为空各菜单的Command事件处理代码如下:v

22、oid CMainFrame:OnSystemConnect() CLoginDlg dlg;if(dlg.DoModal()=IDOK) /判断是否通过m_bLogin=TRUE; / 已登录m_bItemAdd=TRUE; / 开放增加新员工功能m_bItemChange=TRUE; / 开放人事变动功能m_bItemSearch=TRUE; / 开放查询修改功能/ 改变状态栏m_wndStatusBar.SetPaneText(1, 已登录到数据库:+dlg.m_strDSN);void CMainFrame:OnSystemDisconnect() db.Close(); / 关闭数据

23、库/ 关闭所有子框架窗口if(m_pAdd) m_pAdd-DestroyWindow();if(m_pChange) m_pChange-DestroyWindow();if(m_pSearch) m_pSearch-DestroyWindow();m_bLogin=FALSE; / 未登录m_bItemAdd=FALSE; / 禁止增加新员工功能m_bItemChange=FALSE; / 禁止人事变动功能m_bItemSearch=FALSE; / 禁止查询修改功能/ 改变状态栏m_wndStatusBar.SetPaneText(1, 尚未登录数据库!请按F2登录);void CMai

24、nFrame:OnUpdateSystemConnect(CCmdUI* pCmdUI) pCmdUI-Enable(!m_bLogin); / 根据登录状态改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateSystemDisconnect(CCmdUI* pCmdUI) pCmdUI-Enable(m_bLogin); / 根据登录状态改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateManageAdd(CCmdUI* pCmdUI) pCmdUI-Enable(m_bItemAdd); / 根据m_bItemAdd改变菜单项和工具栏相

25、应按钮状态void CMainFrame:OnUpdateManagerSearch(CCmdUI* pCmdUI) pCmdUI-Enable(m_bItemSearch); / 根据m_bItemSearch改变菜单项和工具栏相应按钮状态void CMainFrame:OnUpdateManagerChange(CCmdUI* pCmdUI) pCmdUI-Enable(m_bItemChange); / 根据m_bItemChange改变菜单项和工具栏相应按钮状态void CMainFrame:OnManageAdd() / 创建新子框架和视m_pAdd = new CTheChildF

26、rame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CAddView);if(!m_pAdd-LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context ) return;m_pAdd-InitialUpdateFrame(NULL,TRUE);m_bItemAdd=FALSE; / 禁止增加新员工功能void CMainFrame:OnManagerChange() / 创建新子框架和视m_pChange = ne

27、w CTheChildFrame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CChangeView);if(!m_pChange-LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context ) return;m_pChange-InitialUpdateFrame(NULL,TRUE);m_bItemChange=FALSE; / 禁止人事变动功能void CMainFrame:OnManagerSearch() /

28、 创建新子框架和视m_pSearch = new CTheChildFrame();CCreateContext context;context.m_pNewViewClass=RUNTIME_CLASS(CSearchView);if(!m_pSearch-LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context ) return;m_pSearch-InitialUpdateFrame(NULL,TRUE);m_bItemSearch=FALSE; / 禁止查询修改功能void CMainFr

29、ame:OnWindowMiniall() / 最小化所有窗口if(m_pAdd) m_pAdd-ShowWindow(SW_MINIMIZE);if(m_pChange) m_pChange-ShowWindow(SW_MINIMIZE);if(m_pSearch) m_pSearch-ShowWindow(SW_MINIMIZE);在程序结束时需关闭数据库,因此需处理CMAinFrame的M_DESTROY消息。void CMainFrame:OnDestroy()CMDIFrameWnd:OnDestroy();if(db.IsOpen() db.Close(); / 如数据库未关闭则关

30、闭3.5 增加新员工视类的创建首先加入一个新的窗体资源,在Insert Resource对话框中选择Dialog 的 IDD_FORMVIEW项。窗体创建后,在其上添加所需控件,最后的布局如图3-8所示。创建好资源后,为窗体加入一个由CFormView类继承的CAddView封装此窗体资源,然后用Class Wizard为所需控件加入成员变量。主要控件类型、ID和对应的成员变量及说明如表3-13所示。 图3-8 增加新员工窗体 表1-13 增加新员工窗体控件列表控件类型ID成员变量说明Edit BoxIDC_ADD_EDT_IDm_strID员工号Edit BoxIDC_ADD_EDT_PAS

31、SWODm_strPassword密码Edit BoxIDC_ADD_EDT_NAMEm_strName姓名Radio ButtonIDC_ADD_RADIO_MALE无性别-男Radio ButtonIDC_ADD_RADIO_FEMALE无性别-女Edit BoxIDC_ADD_EDT_BIRTHDAYm_strBirthday生日Combo BoxIDC_ADD_CMB_DEPARTMENTm_cDepartmentm_strDepartment部门Combo BoxIDC_ADD_CMB_JOBm_cJobm_strJob职务Combo BoxIDC_ADD_CMB_EDULEVELm

32、_cEdulevelm_strEdulevel受教育水平Edit BoxIDC_ADD_EDT_SPECIALTYm_strSpecialty专业Edit BoxIDC_ADD_EDT_ADDRESSm_strAddress地址Edit BoxIDC_ADD_EDT_TELm_strTel电话Edit BoxIDC_ADD_EDT_EMALm_strEmailE-mailEdit BoxIDC_ADD_EDT_MEMOm_strMemo备注(Style选Multiline)ButtonIDC_ADD_BTN_ADD无“增加”按钮CAddView类需要用到主框架窗口类和加密类,因此需要在cpp文

33、件开头加入以下两行:#include Crypt.h#include MainFrm.h另外,为了使用全局数据库变量db,需要在cpp文件开头加入如下语句:Extern CDatabase db;每次增加新成员时需要先做一些初始化工作,如设置自动生成员工号和密码等,哟个ClassView加入初始化函数Init(),代码如下:void CAddView:Init()/ 清空成员变量m_strID = _T();m_strPasswd = _T();m_strName = _T();m_strBirthday = _T();m_strDepartment = _T();m_cDepartment.

34、SetCurSel(-1);m_strJob = _T();m_cJob.SetCurSel(-1);m_strEdulevel = _T();m_cEdulevel.SetCurSel(-1);m_strSpecialty = _T();m_strAddress = _T();m_strTel = _T();m_strEmail = _T();m_strMemo = _T();/ 生成员工号CString str;int counter; / 用于计数CRecordset rs(&db); / 数据集rs.Open(CRecordset:forwardOnly,select COUNTER_

35、VALUE from COUNTER where ID=P);rs.GetFieldValue(COUNTER_VALUE, str);sscanf(str, %d, &counter); / 获取计数值rs.Close();str.Format(P%05d, counter); / 产生标准格式的编号m_strID=str; / 自动产生员工号m_strPasswd=str; / 默认密码为员工号/ 设置缺省性别为男(CButton*)GetDlgItem(IDC_ADD_RADIO_MALE)-SetCheck(TRUE);UpdateData(FALSE); / 更新界面数据重载Cfor

36、mView的OnInitialUpdate函数如下,其中调整窗口外观,并设置几个ComboBox中的值:void CAddView:OnInitialUpdate() CFormView:OnInitialUpdate();/ 使框架窗口大小与视图匹配GetParentFrame()-RecalcLayout(); ResizeParentToFit(FALSE);GetParentFrame()-SetWindowText(增加新员工); / 设置标题CRecordset rs(&db); / 数据集CString str;/ 设置部门下拉框所取的值为DEPARTMENT表中的值rs.Ope

37、n(CRecordset:forwardOnly, select NAME from DEPARTMENT);while(!rs.IsEOF()rs.GetFieldValue(NAME, str);m_cDepartment.AddString(str);rs.MoveNext();rs.Close();/ 设置职务下拉框所取的值为JOB表中的值rs.Open(CRecordset:forwardOnly, select DESCRIPTION from JOB);while(!rs.IsEOF()rs.GetFieldValue(DESCRIPTION, str);m_cJob.AddSt

38、ring(str);rs.MoveNext();rs.Close();/ 设置受教育水平下拉框所取的值为EDU_LEVEL表中的值rs.Open(CRecordset:forwardOnly, select DESCRIPTION from EDU_LEVEL);while(!rs.IsEOF()rs.GetFieldValue(DESCRIPTION, str);m_cEdulevel.AddString(str);rs.MoveNext();rs.Close();Init(); / 调用初始化函数“增加”按钮的COMMAND消息处理如下,其中完成的记录的添加。void CAddView:O

39、nAddBtnAdd() CString str,strSQL;int counter; / 用于计数CRecordset rs(&db); / 数据集UpdateData(); / 更新数据if(m_strName.IsEmpty() / 姓名为空则返回AfxMessageBox(姓名不能为空!);return;/ 累加员工编号计数器rs.Open(CRecordset:forwardOnly,select COUNTER_VALUE from COUNTER where ID=P);rs.GetFieldValue(COUNTER_VALUE, str);sscanf(str, %d, &

40、counter); / 获取计数值rs.Close(); / 关闭数据集counter+;/ 计数值加1str.Format(%d, counter); / 转换为字符串strSQL=update COUNTER set COUNTER_VALUE= + str + where ID=P; / 设置SQL语句db.ExecuteSQL(strSQL); / 执行/ 增加员工个人信息记录CString strPasswd,strSex,strDepID,strJobID,strEduID;/ 判断生日是否为空if(m_strBirthday.IsEmpty() m_strBirthday=190

41、0-1-1; / 缺省值/ 加密密码strPasswd=CCrypt:Encrypt(m_strPasswd, 123);/ 判断性别if(CButton*)GetDlgItem(IDC_ADD_RADIO_MALE)-GetCheck() strSex=M;else strSex=F;/ 得到部门IDrs.Open(CRecordset:forwardOnly,select ID from DEPARTMENT where NAME= + m_strDepartment +);rs.GetFieldValue(ID, strDepID);rs.Close();/ 得到职务代码rs.Open(CRecordset:forwardOnly,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号