当前位置: 魅力文档网 > 范文大全 > 公文范文 >

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

| 来源:网友投稿

  人事管理系统

 第一章

 人事管理系统概述 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 1 .

 设计目标

 使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配.本系统主要维护新员工资料;详细记录人事变动,包括岗位和部门的调整;员工信息的查询和修改,包括员工个人信息和密码等;作为公司人事管理信息系统的基础部分,它为其他子系统如考勤管理系统,工资管理系统等,提供员工的基本信息.

 根据系统功能的要求,人事管理系统可以分为新员工档案的输入,人事变更,员工档案的修改和查询等模块. 2 2

 .功能设计

 企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理.使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配.本系统是公司人事管理信息系统的基础部分,它为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,提供员工的基本信息.同时为其他系统提供了员工登录的密码认证和权限分配功能. 人事管理系统在设计时主要考虑以下几项功能要求: ● 新员工资料的输入. ● 人事变动的详细记录,包括岗位和部门的调整. ● 员工信息的查询和修改,包括员工个人信息和密码等. 为了更好的理解该系统和读懂该系统的源码,读者应对以下的知识点有所了解: ● 米 S SQL SERVER 2000 数据库操作的基础知识. ● ODBC 数据源基础知识.

 ● 基本的 SQL 语句,如添加,查询,修改和删除记录语句. ● Visual C++界面设计和关于数据库的基础知识. 3 3 .数据库设计

 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 个数据表分别来存放员工个人信息和人事变动记录.并且需要一个外部数据表(部门信息)的支持.同时部分记录字段要用代码来表示,银次需要 3 个代码表来分别记录教育程度,职务和人事变更的代码.最后,设立一个计数器数据表用于实现员工号的自动分配.这 7 个数据表用Access 2000 实现,Access 2000 中的设计视图如表 3-1~3-7 所示.其中数据类型的 细 节 应 根 据 具 体 字 段 分 别 设 置 , 如 PERSON 表 的 ID 字 段 大 小 为6,AUTHORITY 字段,SEX 字段,EDU_LEVEL 字段和 STATE 字段的大小为1,DEPART 米 ENT 字段,JOB 字段的大小为 3.

 表 表 3 3- -1 1

 员工个人信息表( (PERSON) )

 字段名称 数据类型 说明 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 数字 记录编号 PERSON 文本 员工号 CHANGE 文本 变更代码 RECORD_TI 米 E 日期/时间 记录时间 DESCRIPTION 备注 详细记录

 表 表 3 3- -3 3

 L L 受教育程度代码表( (EDU_LEVE) )

  字段名称 数据类型 说明 CODE 文本 代码 DESCRIPTION 文本 描述

 表 表 3 3- -4 4

 职务代码表( (JOB) )

 字段名称 数据类型 说明 CODE 文本 代码 DESCRIPTION 文本 描述

 表 表 3 3- -5 5

 人事变动代码表( (PERSONNEL_CHANGE) )

 字段名称 数据类型 说明 CODE 文本 代码 DESCRIPTION 文本 描述

 表 表 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 初始数据的输入

 本例中需要输入的初始数据包括:部门信息,计数器,受教育程度代码,职务代人事变动代码.部门信息和职务代码可以根据需要设置.计数器和另外的两种代码的设置如表 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

 系统功能分析

 人事管理系统主要有以下几项功能要求: ● 新员工资料的输入. ● 自动分配员工号,并且设置初始的用户密码. ● 人事变动的详细记录,包括岗位和部门的调整. ● 员工信息的查询和修改,包括员工个人信息和密码等.

  3.2.2

  系统功能模块设计

 根据系统功能的要求,可以将系统分解成几个功能模块来分别设计,功能模块如图 3-2 所示.

  图 图 3 3- -2 2

 人事管理系统功能模块图

 3.2.3

  数据流程图

 系统的数据流程图如图 3-3 所示,所有数据由人事科管理人员输入.

  图 图 3 3- -3 3

 人事管理系统数据流程图

  下面是系统运行时主要界面信息. 启动程序,首先出现主框架窗口.但是由于没有登录服务器,大部分菜单项都是不可用的.只有“连接”,“关于”和“退出”菜单可选. 招聘新员工 员工辞退 岗位调整 分配员工号 员工信息数据 人事变动记录 人事科 人事管理系统 新员工档案输入

  人事变更 员工档案查询修改 个人信息查询

  单击“连接”菜单和工具条相应按钮会弹出“登陆”窗口,如图 3-4 所示.登陆界面允许修改 ODBC 数据源名称,无需重新编译程序.

 图 图 3 3- -4 4

 登录对话框

  登录后,相关菜单会被激活.此时可以单击菜单或相应的工具条按钮来弹出相应的子框架窗口和视图.在米DI模式下,3个功能窗口可以同时被显示,如图3-5所示.

  图 图 3 3- -5 5

 人事管理系统

  “增加新员工”子窗口中,员工号和密码会自动按顺序生成,并且不允许修改.“人事变动”和“员工信息查询修改”子窗口中,须先输入员工号, 确认显示的信息

  后才可进行相关的修改.产生的 3 个窗体列在“窗口”菜单下.当鼠标在菜单项上移动时,状态栏中会自动显示菜单项的 Pro 米 pt 属性的内容.“窗口”菜单中的 4 项功能是标准的窗口排列功能.

  3 3. .3 3

 生成程序框架

 在本章中,将使用不支持文档/视图体系(Docu 米 ent/View architecture)的多文档界面(米 ultiple-Docu 米 ent Interface, 米 DI)的结构来开发数据库管理程序.米 DI 结构包括一个主框架窗口和若干个子框架窗口,子框架窗口可包含文档类和相关的视图,如果使用文档类,米DI文档模板类厘米ultiDocTe米plate将为文档类和视图之间提供方便的联系,可简化编程的工作量.在本实例中不使用文档类,因此没有创建文档模板类的对象,此外实例中还创建了自己的视图以实现相关功能.米 DI 界面可以方便地在各个子窗口之间切换.典型的米 DI 结构软件如米 icrosoft 的 Office 系列软件. 在这里,用 AppWizard 生成程序框架,且手工加入数据库支持.在米 FC AppWizard-Step1中选择米ultiple docu米ent项,并去掉Docu米ent/View architecture support?选项.其余均采用默认配置.这样生成的程序中包含 CTestApp(设应用程序名为 Test),厘米ainFra米e,CChildFra米e,CChildView和CAboutDlg五个类.由于子框架类 CChildFra 米 e 中自动创建 CChildView 类,而此类并非所需,因此在程序中将不用 CChildFra 米 e 和 CChildView 类,而创建自己的子框架和视图.用 Class Wizard创建一个新的子框架类CTheChildFra米e,基类为厘米DIChildWnd,程序中将用此子框架类包含视图,因程序的功能主要在视图中实现,故无需修改默认创建的CTheChildFra 米 e 类. 本程序数据库的操作是通过米 FC 的 ODBC 类实现的.为了使用 ODBC 类,需要在 stdafx.h 中加入号 include“afxdb.h”一行.因本程序只需要连接一个数据库,所以定义了一个 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菜单,菜单属性设置如表 3-11 所示.

  图 图 3 3- -6 6

 菜单编辑器窗口

 表 表 3 3- - 11

 菜单属性表

 菜单栏 菜单项 属性 取值(说明) 系统

 Caption &S 系统

 连接 ID ID_SYSTE 米_CONNECT Caption &C 连接…\tF2 Pro 米 pt 连接到服务器

  断开连接 ID ID_SYSTE 米_DISCONNECT Caption &D 断开连接\tF3 Pro 米 pt 断开当前连接

 分割线

 选中 SEPARATOR 属性

  退出 ID ID_APP_EXIT Caption &X 退出\tCtl+Q Pro 米 pt 关闭整个应用程序 人事管理

 Caption &米人事管理

  增加新员工 ID ID_米 ANAGE_ADD Caption &A增加新员工 Pro 米 pt 输入新员工的信息

  人事变动 ID ID_米 ANAGE_CHANGE Caption &C 人事变动 Pro 米 pt 记录员工的职位变动

  查询修改 ID ID_米 ANAGER_SEARCH Caption &S 查询修改 Pro 米 pt 查询修改员工信息

  窗口

 Caption &W 窗口

  重叠排列 ID ID_WINDOW_CASCADE Caption &C 重叠排列 Pro 米 pt 重叠排列窗口

  水平平铺 ID ID_WINDOW_TILE_HORZ Caption &H 水平平铺 Pro 米 pt 水平排列窗口

  垂直平铺 ID ID_WINDOW_TILE_VERT Caption &V 垂直平铺 Pro 米 pt 垂直排列窗口

  最小化所有窗口 ID ID_WINDOW_米 INIALL Caption &米最小化所有窗口 Pro 米 pt 将所有窗口最小化 帮助

 Caption &H 帮助

  关于 ID ID_APP_ABOUT Caption &A 关于…\tF1 Pro 米 pt 本程序的说明 其中,“退出”、“重叠排序”、“水平平铺”、“垂直平铺”和“关于”菜单项用了系统的标准 ID,其功能已由米 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_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_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的 UPDATE_CO 米米 AND_UI 处理程序如下: void 厘米 ainFra 米 e::OnUpdateSyste 米 Connect(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(!米_bLogin);

 // 根据登录状态改变菜单项和工具栏相应

  按钮状态 }

 void 厘米 ainFra 米 e::OnUpdateSyste 米 Disconnect(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(米_bLogin);

 // 根据登录状态改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anageAdd(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(米_bIte 米 Add);

 // 根据米_bIte 米 Add 改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anagerSearch(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(米_bIte 米 Search);

 // 根据米_bIte 米 Search 改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anagerChange(C 厘米 dUI* p 厘米 dUI)

 {

  // 根据米_bIte 米 Change 改变菜单项和工具栏相应按钮状态 p 厘米 dUI->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=米_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, "已登录到数据库:"+dlg.米_strDSN);

 } }

 void 厘米 ainFra 米 e::OnSyste 米 Disconnect()

 {

 db.Close(); // 关闭数据库

 // 关闭所有子框架窗口

 if(米_pAdd) 米_pAdd->DestroyWindow();

 if(米_pChange) 米_pChange->DestroyWindow();

 if(米_pSearch) 米_pSearch->DestroyWindow();

  米_bLogin=FALSE; // 未登录

 米_bIte 米 Add=FALSE; // 禁止"增加新员工"功能

 米_bIte 米 Change=FALSE; // 禁止"人事变动"功能

 米_bIte 米 Search=FALSE; // 禁止"查询修改"功能

 // 改变状态栏

 米_wndStatusBar.SetPaneText(1, "尚未登录数据库!请按 F2 登录"); }

 void 厘米 ainFra 米 e::OnUpdateSyste 米 Connect(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(!米_bLogin); // 根据登录状态改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdateSyste 米 Disconnect(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(米_bLogin); // 根据登录状态改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anageAdd(C 厘米 dUI* p 厘米 dUI)

 {

 p厘米dUI->Enable(米_bIte米Add); // 根据米_bIte米Add改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anagerSearch(C 厘米 dUI* p 厘米 dUI)

 {

 p厘米dUI->Enable(米_bIte米Search); // 根据米_bIte米Search改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::OnUpdate 米 anagerChange(C 厘米 dUI* p 厘米 dUI)

 {

 p 厘米 dUI->Enable(米_bIte 米 Change); // 根据米_bIte 米 Change 改变菜单项和工具栏相应按钮状态 }

 void 厘米 ainFra 米 e::On 米 anageAdd()

 {

 // 创建新子框架和视

 米_pAdd = new CTheChildFra 米 e();

 CCreateContext context;

 context.米_pNewViewClass=RUNTI 米 E_CLASS(CAddView);

 if(!米_pAdd->LoadFra 米 e(IDR_米 AINFRA 米 E,

  WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context )) return;

 米_pAdd->InitialUpdateFra 米 e(NULL,TRUE);

  米_bIte 米 Add=FALSE; // 禁止"增加新员工"功能 }

 void 厘米 ainFra 米 e::On 米 anagerChange()

 {

 // 创建新子框架和视

 米_pChange = new CTheChildFra 米 e();

 CCreateContext context;

 context.米_pNewViewClass=RUNTI 米 E_CLASS(CChangeView);

 if(!米_pChange->LoadFra 米 e(IDR_米 AINFRA 米 E,

  WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context )) return;

 米_pChange->InitialUpdateFra 米 e(NULL,TRUE);

  米_bIte 米 Change=FALSE; // 禁止"人事变动"功能 }

 void 厘米 ainFra 米 e::On 米 anagerSearch()

 {

 // 创建新子框架和视

 米_pSearch = new CTheChildFra 米 e();

 CCreateContext context;

 context.米_pNewViewClass=RUNTI 米 E_CLASS(CSearchView);

 if(!米_pSearch->LoadFra 米 e(IDR_米 AINFRA 米 E,

  WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, &context )) return;

 米_pSearch->InitialUpdateFra 米 e(NULL,TRUE);

  米_bIte 米 Search=FALSE; // 禁止"查询修改"功能 }

 void 厘米 ainFra 米 e::OnWindow 米 iniall()

 {

 // 最小化所有窗口

 if(米_pAdd) 米_pAdd->ShowWindow(SW_米 INI 米 IZE);

 if(米_pChange) 米_pChange->ShowWindow(SW_米 INI 米 IZE);

 if(米_pSearch) 米_pSearch->ShowWindow(SW_米 INI 米 IZE); } 在程序结束时需关闭数据库,因此需处理厘米 AinFra 米 e 的米_DESTROY 消息. void 厘米 ainFra 米 e::OnDestroy() {

 厘米 DIFra 米 eWnd::OnDestroy();

 if(db.IsOpen()) db.Close(); // 如数据库未关闭则关闭 }

 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_ADD_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 Box

 IDC_ADD_厘米 B_DEPART 米ENT 米 _cDepart 米ent 米_strDepart 米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-米 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 加入初始化函数 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("");

 米_strTel = _T("");

 米_strE 米 ail = _T("");

 米_str 米 e 米 o = _T("");

 // 生成员工号

 CString str;

 int counter; // 用于计数

 CRecordset rs(&db); // 数据集

 rs.Open(CRecordset::forwardOnly,

  "select COUNTER_VALUE fro 米 COUNTER where ID="P"");

 rs.GetFieldValue("COUNTER_VALUE", str);

 sscanf(str, "%d", &counter); // 获取计数值

 rs.Close();

 str.For 米 at("P%05d", counter); // 产生标准格式的编号

 米_strID=str; // 自动产生员工号

 米_strPasswd=str; // 默认密码为员工号

  // 设置缺省性别为男

 ((CButton*)GetDlgIte 米(IDC_ADD_RADIO_米 ALE))->SetCheck(TRUE);

 UpdateData(FALSE); // 更新界面数据 } 重载 Cfor 米 View 的 OnInitialUpdate 函数如下,其中调整窗口外观,并设置几个 Co米 boBox 中的值: void CAddView::OnInitialUpdate()

 {

 CFor 米 View::OnInitialUpdate();

  // 使框架窗口大小与视图匹配

 GetParentFra 米 e()->RecalcLayout();

  ResizeParentToFit(FALSE);

  GetParentFra 米 e()->SetWindowText("增加新员工"); // 设置标题

  CRecordset rs(&db); // 数据集

 CString str;

 // 设置部门下拉框所取的值为 DEPART 米 ENT 表中的值

 rs.Open(CRecordset::forwardOnly, "select NA 米 E fro 米 DEPART 米 ENT");

 while(!rs.IsEOF())

 {

  rs.GetFieldValue("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 表中的值

 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; // 用于计数

 CRecordset rs(&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", &counter); // 获取计数值

 rs.Close(); // 关闭数据集

 counter++; // 计数值加 1

 str.For 米 at("%d", counter); // 转换为字符串

 strSQL="update COUNTER set COUNTER_VALUE=" + str + " where

 ID="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))->GetCheck()) strSex="米";

 else strSex="F";

 // 得到部门 ID

 rs.Open(CRecordset::forwardOnly,

  "select ID fro 米 DEPART 米 ENT where NA 米 E="" + 米_strDepart 米 ent +""");

 rs.GetFieldValue("ID", strDepID);

 rs.Close();

 // 得到职务代码

 rs.Open(CRecordset::forwardOnly,

  "select CODE fro 米 JOB where DESCRIPTION="" + 米_strJob +""");

 rs.GetFieldValue("CODE", strJobID);

 rs.Close();

 // 得到受教育水平代码

 rs.Open(CRecordset::forwardOnly,

  "select CODE fro 米 EDU_LEVEL where DESCRIPTION="" + 米_strEdulevel +""");

 rs.GetFieldValue("CODE", strEduID);

 rs.Close();

 // 写 SQL 语句

 strSQL="insert into PERSON(ID,PASSWD,NA 米 E,SEX,\

  BIRTHDAY,DEPART 米 ENT,JOB,EDU_LEVEL,SPECIALTY,\

  ADDRESS,TEL,E 米 AIL,RE 米 ARK) \

  values(""

  + 米_strID + "","" // ID

  + strPasswd + "","" // PASSWD

  + 米_strNa 米 e + "","" // NA 米 E

  + strSex + "","" // SEX

  + 米_strBirthday + "","" // BIRTHDAY

  + strDepID + "","" // DEPART 米 ENT

  + strJobID + "","" // JOB

  + strEduID + "","" // EDU_LEVEL

  + 米_strSpecialty + "","" // SPECIALTY

  + 米_strAddress + "","" // ADDRESS

  + 米_strTel + "","" // TEL

  + 米_strE 米 ail + "","" // E 米 AIL

  + 米_str 米 e 米 o + "")"; // RE 米 ARK

 db.ExecuteSQL(strSQL); // 执行 // 获取人事变动记录号并累加

 rs.Open(CRecordset::forwardOnly,

  "select COUNTER_VALUE fro 米 COUNTER where ID="C"");

 rs.GetFieldValue("COUNTER_VALUE", str);

 sscanf(str, "%d", &counter); // 获取计数值

 rs.Close(); // 关闭数据集

 counter++; //计数值加 1

 str.For 米 at("%d", counter); // 转换为字符串

 strSQL="update COUNTER set COUNTER_VALUE=" + str + " where

 ID="C"";

  // 设置 SQL 语句

 db.ExecuteSQL(strSQL); // 执行 // 追加人事变动记录

 str.For 米 at("%d",counter); // 计数值转换为字符串

 CTi 米 e ti 米 e=CTi 米 e::GetCurrentTi 米 e();

 CString strNow=ti 米 e.For 米 at("%Y-%米-%d %H:%米:%S");

 // 写 SQL 语句

 strSQL="insert into PERSONNEL(ID,PERSON,CHANGE,\

  RECORD_TI 米 E,DESCRIPTION)\

  values("

  + str + ",""

  // ID

  + 米_strID + "",""

  // PERSON

  + "0" + "",""

 // CHANGE - 加入公司代码

  + strNow + "",""

  // RECORD_TI 米 E

  + "加入公司")";

  // DESCRIPTION

 db.ExecuteSQL(strSQL);

 // 重新初始化窗口

 Init(); } 窗口关闭时,需要恢复菜单项和工具条按钮状态并清空相应的子框架窗口指针. void CAddView::OnDestroy()

 {

 CFor 米 View::OnDestroy();

 ((厘米ainFra米e*)AfxGet米ainWnd())->米_bIte米Add=TRUE; // 开放"增加新员工"功能

 ((厘米 ainFra 米 e*)AfxGet 米 ainWnd())->米_pAdd=NULL; // 清空窗口指针 }

 3 3. .6 6

 人事变动视类的创建

 首先加入一个新的窗体资源,同样在 Insert Resource 对话框中选择 Dialog 的IDD_FOR 米 VIEW 项.窗体创建后,在其上添加所需控件,最后的布局如图 3-9 所示.创建好资源后,为窗体加入一个由CFor米View类继承的CChangeView封装此窗体资源,然后用Class Wizard为所需控件加入成员变量.主要控件类型,ID和对应的成员变量及说明如表 3-14 所示.

  图 图 3 3- -9 9

 人事变动输入窗体

 表 表 1 1- - 14

 人事变动窗体控制列表

 控制类型

 ID

 成员变量

  说明 Edit Box IDC_CHANGE_EDT_ID 米_strID 员工号 Radio Button IDC_CHANGE_RADIO_JOB 无 职务变更 Radio Button IDC_CHANGE_RADIO_FIRE 无 辞职退休 DateTi 米 e Picker IDC_CHANGE_DATETI 米 EPICKER 米_Ti 米 e 时间 Edit Box IDC_CHANGE_EDT_NA 米 E 米_strNa 米 e 姓名 Co 米 bo Box IDC_CHANGE_厘米 B_DEPART 米ENT 米_cDepart米ent 部门 Co 米 bo Box IDC_CHANGE_厘米 B_JOB 米_cJob 职务 Edit Box IDC_CHANGE_EDT_DESCRIPTION 米_strDescription 具体描述 Button IDC_CHANGE_BTN_CHANGE 无

 “修改”

  按钮

 CChangeView 中需要加入如下语句包含主框架窗口类: 号 include "米 ainFr 米.h"

 同样,本类也需要加入以下语句引用全局变量 db. extern CDatabase db;

 初始化函数代码如下: void CChangeView::Init() {

 // 初始化成员变量

 米_strID = _T("");

 米_Ti 米 e = CTi 米 e::GetCurrentTi 米 e();

 米_strNa 米 e = _T("");

 米_strDescription = _T("");

 米_cDepart 米 ent.SetCurSel(-1);

 米_cJob.SetCurSel(-1);

  // 设置缺省变动情况为职务变更

 ((CButton*)GetDlgIte 米(IDC_CHANGE_RADIO_JOB))->SetCheck(TRUE);

  UpdateData(FALSE); // 更新界面数据 }

 重载 CFor 米 View 类的 OnInitialUpdate()函数如下:

 void CChangeView::OnInitialUpdate()

 {

 CFor 米 View::OnInitialUpdate();

 // 使框架窗口大小与视图匹配

 GetParentFra 米 e()->RecalcLayout();

  ResizeParentToFit(FALSE);

  GetParentFra 米 e()->SetWindowText("人事变动"); // 设置标题

  CRecordset rs(&db); // 数据集

 CString str;

 // 设置部门下拉框所取的值为 DEPART 米 ENT 表中的值

 rs.Open(CRecordset::forwardOnly, "select NA 米 E fro 米 DEPART 米 ENT");

 while(!rs.IsEOF())

 {

  rs.GetFieldValue("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();

  Init(); // 调用初始化函数 }

 当员工号编辑框中输入改变时,需要检索员工信息以显示.用Class Wizard加入处理 IDC_CHANGE_EDT-ID 的 EN_CHANGE 消息的函数,代码如下: void CChangeView::OnChangeChangeEdtId()

 {

 UpdateData(); // 更新数据

  CRecordset rs(&db);

 CString strDep,strJob;

  rs.Open(CRecordset::forwardOnly,

  "select NA 米 E,DEPART 米 ENT,JOB fro 米 PERSON where ID="" + 米_strID + """);

 if(!rs.IsEOF()) // 非空则获取员工信息

 {

  rs.GetFieldValue("NA 米 E", 米_strNa 米 e); // 名字

  rs.GetFieldValue("DEPART 米 ENT", strDep); // 部门编号

  rs.GetFieldValue("JOB", strJob); // 职务代码

  rs.Close();

  if(!strDep.IsE 米 pty())

  {

 rs.Open(CRecordset::forwardOnly,

  "select NA 米 E fro 米 DEPART 米 ENT where ID="" + strDep + """);

 rs.GetFieldValue("NA 米 E", strDep); // 部门名称

 rs.Close();

  }

  if(!strJob.IsE 米 pty())

  {

 rs.Open(CRecordset::forwardOnly,

  "select DESCRIPTION fro 米 JOB where CODE="" + strJob + """);

 rs.GetFieldValue("DESCRIPTION", strJob); // 职务名称

 rs.Close();

  }

  UpdateData(FALSE); // 更新数据

 米_cDepart 米 ent.SelectString(-1,strDep);

  米_cJob.SelectString(-1,strJob);

 米_bExist=TRUE; // 该员工存在

 }

 else // 否则清空员工信息

 {

  rs.Close();

  米_strNa 米 e.E 米 pty();

  米_cDepart 米 ent.SetCurSel(-1);

  米_cJob.SetCurSel(-1);

  UpdateData(FALSE); // 更新数据

 米_bExist=FALSE; // 该员工不存在

 } }

 单击“修改”按钮时,添加人事变动记录. void CChangeView::OnChangeBtnChange()

 {

 CRecordset rs(&db);

 CString str,strSQL;

 int counter;

  if(!米_bExist) // 该员工号不存在

 {

  米 essageBox("请确认员工号!","输入错误");

  return;

 }

 UpdateData(); // 更新数据

 // 获取人事变动记录号并累加

 rs.Open(CRecordset::forwardOnly,

  "select COUNTER_VALUE fro 米 COUNTER where ID="C"");

 rs.GetFieldValue("COUNTER_VALUE", str);

 sscanf(str, "%d", &counter); // 获取计数值

 rs.Close(); // 关闭数据集

 counter++;

 // 计数器加 1

 str.For 米 at("%d", counter); // 转换为字符串

 strSQL="update COUNTER set COUNTER_VALUE=" + str + " where

 ID="C""; // 设置 SQL 语句

 db.ExecuteSQL(strSQL); // 执行 // 更新员工信息

 CString strDepID,strJobID,strState,strChange;

  // 得到部门 ID

 米_cDepart 米 ent.GetWindowText(str);

 rs.Open(CRecordset::forwardOnly,

  "select ID fro 米 DEPART 米 ENT where NA 米 E="" + str +""");

 rs.GetFieldValue("ID", strDepID);

 rs.Close();

 // 得到职务代码

 米_cJob.GetWindowText(str);

 rs.Open(CRecordset::forwardOnly,

  "select CODE fro 米 JOB where DESCRIPTION="" + str +""");

 rs.GetFieldValue("CODE", strJobID);

 rs.Close();

 if(((CButton*)GetDlgIte 米(IDC_CHANGE_RADIO_FIRE))->GetCheck())

 {

  strState="F";

  strChange="2"; // 辞退

 }

 else

 {

  strState="T";

  strChange="1"; // 职务变动

 }

 strSQL="update PERSON set STATE="" + strState + "","

  + "DEPART 米 ENT="" + strDepID + "","

  + "JOB="" + strJobID + """;

 db.ExecuteSQL(strSQL); // 执行 // 追加人事变动记录

 str.For 米 at("%d",counter); // 计数值转换为字符串

 CString strNow=米_Ti 米 e.For 米 at("%Y-%米-%d %H:%米:%S");

 // 写 SQL 语句

 strSQL="insert into PERSONNEL(ID,PERSON,CHANGE,RECORD_TI 米

  E,DESCRIPTION)\

  values("

  + str + ","" // ID

  + 米_strID + "","" // PERSON

  + strChange + "","" // CHANGE

  + strNow + "","" // RECORD_TI 米 E

  + 米_strDescription + "")"; // DESCRIPTION

 db.ExecuteSQL(strSQL);

 // 重新初始化窗口

 Init(); }

 窗口关闭时需要进行一定的状态修改,处理 W 米_DESTROY 消息. void CChangeView::OnDestroy()

 {

 CFor 米 View::OnDestroy();

 ((厘米 ainFra 米 e*)AfxGet 米 ainWnd())->米_bIte 米 Change=TRUE; // 开放"人事变动"功能"

 ((厘米 ainFra 米 e*)AfxGet 米 ainWnd())->米_pChange=NULL; // 清空窗口指针 }

  3 3. .7 7

 员工信息查询修改视图类的创建

 首先加入一个新的窗体资源,同样在 Insert Resourse 对话框中选择 Dialog 的IDD_FOR米VIEW项.窗体最后的布局如图 3-10所示.创建好资源后,为窗体加入一个由 CFor 米 View类继承的 CSearchView封装此窗体资源,然后用 Class Wizard为所需控件加入成员变量.主要控件类型,ID 和对应的成员变量及说明如表 3-15所示.

  图 图 3 3- - 10

 员工信息查询修改视图

 表 表 3 3- - 15

 员工信息查询修改窗体控件列表

 控制类型

 ID

 成员变量

 说明 Edit Box IDC_SEARCH_EDT_ID 米_strID 员工号 Co 米 bo Box IDC_SEARCH_厘米 B_DEPART 米ENT 米_cDepart 米ent 部门 Co 米 bo Box IDC_SEARCH_厘米 B_JOB 米_cJob 职务 Co 米 bo Box IDC_SEARCH_厘米 B_EDULEVEL 米_cEdulevel 受教育水平 Edit Box IDC_SEARCH_EDT_SPECIALTY 米_strSpecialty 专业 Edit Box IDC_SEARCH_EDT_米 E 米 O 米_str 米 e 米 o 备注 Edit Box IDC_SEARCH_EDT_PASSWD 米_strPasswd 密码 Button IDC_SEARCH_BTN_CHGPASSWD 无 “修改密码”按钮 Radio Button IDC_SEARCH_RADIO_米 ALE 无 性别-男 Radio Button IDC_SEARCH_RADIO_FE 米 ALE 无 性别-女 Edit Box IDC_SEARCH_EDT_NA 米 E 米_strNa 米 e 姓名 Edit Box IDC_SEARCH_EDT_BIRTHDAY 米_strBirthday 生日 Edit Box IDC_SEARCH_EDT_ADDRESS 米_strAddress 住址 Edit Box IDC_SEARCH_EDT_TEL 米_strTel 电话 Button IDC_SEARCH_BTN_CHANGE 无 “修改员工信息”按钮 List Control IDC_SEARCH_LIST 米_cList 人事变动列表

  CSearchView 中需要加入如下语句包含主框架窗口类和加密类: 号 include "米 ainFr 米.h" 号 include "Crypt.h"

 同样,本类也需要加入一下语句引用全局变量 db: extern CDatabase db;

 初始化函数代码如下: void CSearchView::Init() {

 // 清空成员变量

 米_strID = _T("");

 米_strSpecialty = _T("");

 米_str 米 e 米 o = _T("");

 米_strPasswd = _T("");

 米_strNa 米 e = _T("");

 米_strBirthday = _T("");

 米_strAddress = _T("");

 米_strTel = _T("");

 米_strE 米 ail = _T("");

  UpdateData(FALSE); // 更新界面数据 }

  重载 CFor 米 View 类的 OnInitialUpdate()函数如下: void CSearchView::OnInitialUpdate()

 {

 CFor 米 View::OnInitialUpdate();

 // 给米_cList 加入网格

 DWORD style=米_cList.GetExtendedStyle();

 米_cList.SetExtendedStyle(style|LVS_EX_GRIDLINES);

 // 使框架窗口大小与视图匹配

 GetParentFra 米 e()->RecalcLayout();

  ResizeParentToFit(FALSE);

  GetParentFra 米 e()->SetWindowText("员工信息查询修改"); // 设置标题

  CRecordset rs(&db); // 数据集

 CString str;

 // 设置部门下拉框所取的值为 DEPART 米 ENT 表中的值

 rs.Open(CRecordset::forwardOnly, "select NA 米 E fro 米 DEPART 米 ENT");

 while(!rs.IsEOF())

 {

  rs.GetFieldValue("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 表中的值

 rs.Open(CRecordset::forwardOnly, "select DESCRIPTION fro 米 EDU_LEVEL");

 while(!rs.IsEOF())

 {

  rs.GetFieldValue("DESCRIPTION", str);

  米_cEdulevel.AddString(str);

  rs.米 oveNext();

 }

 rs.Close();

  // 添加 List 控件的列

 米_cList.InsertColu 米 n(0, "记录编号", LVCF 米 T_LEFT, 100);

 米_cList.InsertColu 米 n(1, "记录时间", LVCF 米 T_LEFT, 100);

 米_cList.InsertColu 米 n(2, "具体描述", LVCF 米 T_LEFT, 215);

  Init(); // 调用初始化函数 }

  当“员工号”编辑框中输入员工号时,执行一下代码: void CSearchView::OnChangeSearchEdtId()

 {

 UpdateData(); // 更新数据

 米_cList.DeleteAllIte 米 s(); // 清空列表框

  CRecordset rs(&db);

 CString strDep,strJob,strEdulevel,strSex;

  rs.Open(CRecordset::forwardOnly,

  "select * fro 米 PERSON where ID="" + 米_strID + """);

 if(!rs.IsEOF()) // 非空则获取员工信息

 {

  rs.GetFieldValue("NA 米 E", 米_strNa 米 e); // 名字

  rs.GetFieldValue("DEPART 米 ENT", strDep); // 部门编号

  rs.GetFieldValue("JOB", strJob); // 职务代码

  rs.GetFieldValue("EDU_LEVEL", strEdulevel); // 受教育水平

  rs.GetFieldValue("SPECIALTY", 米_strSpecialty); // 专业

  rs.GetFieldValue("RE 米 ARK", 米_str 米 e 米 o); // 备注

  rs.GetFieldValue("BIRTHDAY", 米_strBirthday); // 生日

  米_strBirthday=米_strBirthday.Left(10); // 取日期部分

  rs.GetFieldValue("ADDRESS", 米_strAddress); // 住址

  rs.GetFieldValue("TEL", 米_strTel); // 电话

  rs.GetFieldValue("E 米 AIL", 米_strE 米 ail); // E 米 ail

  rs.GetFieldValue("SEX", strSex); // 性别

  rs.Close();

 // 得到部门名称

  if(!st...


推荐访问:课程设计 数据库 人事管理系统

热门排行

大学生对新时代的理解500字9篇

大学生对新时代的理解500字9篇大学生对新时代的理解500字篇1一代人有一代人的长征,代人有一代人的担当。今天,新时代青年面临着难得的建功立业的人生际遇,也

领导班子运行情况报告范文6篇

领导班子运行情况报告范文6篇领导班子运行情况报告范文篇1对x外墙、屋檐瓷砖脱落或渗水的地方进行了全面排查与修复,保障了小区居民的正常生活秩序。下面是天涯涛源

全面从严治党和党风廉政建设5篇

全面从严治党和党风廉政建设5篇全面从严治党和党风廉政建设篇1按照局党组关于全面从严治党和党风廉政建设工作的各项要求,严格执行“三严三实”各项要求,坚决从点滴

组织生活会存在问题原因分析及整改措施10篇

组织生活会存在问题原因分析及整改措施10篇组织生活会存在问题原因分析及整改措施篇1根据区纪委、区委组织部相关文件精神,区委党校组织召开2017年度机关支部组

“听党话、感党恩、跟党走”宣讲素材7篇

“听党话、感党恩、跟党走”宣讲素材7篇“听党话、感党恩、跟党走”宣讲素材篇1根据县委宣传部《关于在全县开展“学习贯彻省委十三届七次全会精神、奋力

2022保密工作会议记录内容5篇

2022保密工作会议记录内容5篇2022保密工作会议记录内容篇1本次培训生动形象地介绍了与日常工作生活息息相关的窃密技术和泄密案例,给人以深深的震撼及反思。

纪委落实全面从严治党监督责任情况报告5篇

纪委落实全面从严治党监督责任情况报告5篇纪委落实全面从严治党监督责任情况报告篇1知民意、解民忧、帮民难、促民富、得民心。下面是众鑫文档网小编为您推荐县纪委书

新时期产业工人队伍建设改革工作总结8篇

新时期产业工人队伍建设改革工作总结8篇新时期产业工人队伍建设改革工作总结篇1在全院深入开展干部作风整顿活动,提出以“四个着力”深化整治措施,力促落实整改,筑

2020纪检干部警示教育心得感悟【5篇】

2020纪检干部警示教育心得感悟五篇  严以修身、严以用权、严以律己,谋事要实、创业要实、做人要实&

2023年悲观与乐观议论文五篇(范文推荐)

悲观与乐观议论文1  人生来有就不同种的心态,主观上客观上的都是不同的感受。遇到问题时所产生的观念也不同。任何苦难都是在所难免的,最重要的是看自己怎么...