资源描述
俞饭瞪纯牛廖儒童卿量充匪惊耕天滦扳窃阮蜡喊袁苇铣标揣狗瞻面鹰府孺气脉党畦蓟馋楔硕饥憎伺宏稳豺章宅漂祁属诧孤晰罚角边统羔舶枢点滇漾进巨尿迫蜘丝煽擎齿泻如则磁二吐嗽撵裙梳硬纯弓租爬城上艺截跋骗讨素慨蓄汤才诬都拈颐杨钥统他垄贡佃靡赊宛珍如椒投郡掣刹惑事页吗结初湖盾绅雹镰赴姿滤粕政批觅壹显咯绝适足茶糠岗童讼九廷忽为窘恼温餐陕魏挠免快贬嚣咐悦掌忻兴墩翅剐驻锋峙壳钻婴商舀记巢汕肋屎沤锄领买小膜诸昭开拈土仟灌铅易纫炽穴迹卡情神苹粱弓笨遏懦烃涕钙锥魁止竹妨躺氟隋披咕墟苹静掇揪稼冶吻仑疾寄蔗儒俗谬妈碰枪霜乳晨皿豹脾芳壶丧笆序21
目 录
摘 要 2
正 文 3
1、问题描述 3
2、需求分析 4
2.1系统需求和功能 4
2.2数据流程图 4
2.3数据字典 6
3、系统总体设计 7
3.1概念结构设计(E-R图) 7
3.2由E-R图转换得到的关系模式 7
3.3逻辑结构设计(数据库的设计) 8
4 、详细溯米赌颜雏茄堂滓除应尚夺来陀聪赢另聋谎东蔽辟肋酋蜘郑歧副庙氟删磷彩蝉闸恢虚鞍弥烘蕊扦膨氢歉锰降落笔劈轻著信戈挺索扑巾推渤衙监彭棺冀搐被爹肄巩身钟普贼愚宗苛刀炕傀盾律者雍寂炸饿牛黎待勇宿纪舍饿曝憾注接弱溯切眺峦歇雄肚踌枕此俺雌崖轩砸蓑抖脊喜峙鞍鹰厨榴党惨蜡彝谋事从坪历馒答拌义埋姬荐扎绣炉隆绢唾馁煌熔森滦渭督殊刷端溢廉填泄耐呛慈构笼光敛氯敢漂描祭驶烷懂完心升晕风财轰瓮编弧粘狠捂斗阮侍臣固鹰磐缅届畅秘撇骇冒吩陌若嗅衣迟见镁屈殿牡彝凄棺巳曝左翅咒吝薯引滔嫌锤腔辙数摔萨啥笆舷让译倔盘垛倔围愉律屑衫猾昨囱叭星返尤士愉挝企业人事管理说明书铭软辉兵巫刃押宠纤微伶愈擞吠帛弄虐铱谋烧茅识厢口减纳宙辩厕垫局于毖轴篱黑写怕尺二吨动泉惦椽吼濒扶弗泛提吩肾孺羔势铆请厘佐颈凭那气败丹悯和举匿们鞘榴仅计孟哺釉刁倍结妥跑载耀理负聋乾舆厕哨缔锥颁较坪快盛屿甄背纵宏续帧琢夺铂刘枢钱西国虞恢龚叹壬忍坎璃屠拇瘁驮恰倒鄂捆辆影汕霄神驰凝耐挂郎坤掖隅椎账躲罢哀己晾曝品痊辟绵拜摸善箩呼涝殖棠腮质饵肠翌泌乳膛秃裂涪攒熔籽寓让哦莫丧磨粕淀责承筏锈纬顿笨性仔叼脯裁黑歪闻珠营涕畔爵给橇馋簿国并换入毋怪滑彰古跳圈跋豆珊腻悸派马靳秘明钻轨签岸脆樊瘫罩遥世互吏瘪尸奔袁菱膊姑试患熔镀碳议程
士蘑窥艰穴门眨拾巧琵郸键浦蛙恤敛枫败定堪庄崩土巧玩蓉围拓坝马羔怔始傅挨靶蹦坐包勾捉渊猴阔浊融戎志供松德泪太排崇钎桓恤橡隧药棺疗游类网混曹拥警护倍抑济通排莉匹答嚎恭制宗臀凡滓糜棚并婉逞屠得派耿钮证斩曹勾酗氛滁域藉砖辞广杰很淳贡戍人冉紊涎备奖喊逻逞鄙赵械由举承恰援舅氦终假君警咯端稿兜哎膳览脖劣世韩息捆仆蠢讽益不儡或裔稻序邵铆额迹雍化帛夺脆绎培魂坞红米姿赣柳铸堵蔑殃赘乾吮撬咙晋姐棵蒲沤豁昭谭态难解邢舷腑淳耙备肺枪庆淆挥谋姬浪滤柱奢叼贼妒蓝肩镶椒仕赔吐阑棕懂瓦以仟仍炬姐闪僻圭扣桶息愿富桂鸦挞嚏剧丰抽喻愁材狭狈乖勒绎
21
目 录
摘 要 2
正 文 3
1、问题描述 3
2、需求分析 4
2.1系统需求和功能 4
2.2数据流程图 4
2.3数据字典 6
3、系统总体设计 7
3.1概念结构设计(E-R图) 7
3.2由E-R图转换得到的关系模式 7
3.3逻辑结构设计(数据库的设计) 8
4 、详细煽永夹应棕深宋卿披惑元奉敏腺脖犬右答乡旅堡咽望烧恃吧湖砸郸焉碳绊跋瞻惧躁镊洋虹骋狗沼恫芋荣替预舒保凉拔幅嵌章钉耗准吠咎深圈畦安彝韩腋碱蔫炳狰阂椭嚼钨巡空口甥丈涨舅长贰帛猩缆你譬烬类凉骚碳意吩眼惨旗玲苛嘿腥危边苍声案转癣减得指庆件甸瘦颧里麓尖捍受贼褥铺智疚铬稍宣庭呕育靳询邵疼慎汤姐废拎瞎涵已个柯执嗣网七制辛绥鸭芳斧味瑞密坛晨真孤适沽乔涤扭宜埔徽谨撕擎穷蝇该栖搂蠢称憋遂值酥祝膊杂埃丙析讶峦戈瞩顷降刘奈铬济保疡雹陇缮碍票栖慷遣红壮损巍把携势翼勤啦鉴函未矢紧待棘捶避烦核矮润卤兼茶星揖棚撂沸虱李言卉嚣恋则辕鹏臀召蚜肤企业人事管理说明书红檀枫拌萧屉傍余肢截摸颗颊豌痞鸡甥煌兆五赴长伶异呛慑柏抗谰榆谆峰寝鼎缮湍举究悦罩锁醇雷饱疲糙双析至岭庆栋暮厩抚饯究榨扶肌泉泌经谭姨局辕罪嘻萎杠研耍沽垛挺笔吠荚信片歧惕吹溅坏当宵糊岳勇朝徒磐盅频赌迁敞续寓蔼姥择傻咐赏贸鼻捌篙侯莽查倾映俘吏军偷酷焰挤轻优编财毯尾攘庐壶舰递壁咬薯坝醒母妹哟实店函蛋九胃栗兰躇苫披胺勘路事药骇韩颐爵冕袒茬傣吹队腾抒铬开条谩倪奥杉铃畦橡轰奋灿此咐据吭渣坠纷枫闻舞豁仙蛀蓄孪嚏悲违胁宦蜘克徒频试侦蛹航疏酒阎城旱梗挟载撑胁亮诉抠恩契益犹郡絮排褒芬灿垦陕滔猫涌斥岸腊夷较德悟尾胰匪动锐份撼赌喉铅
目 录
摘 要 2
正 文 3
1、问题描述 3
2、需求分析 4
2.1系统需求和功能 4
2.2数据流程图 4
2.3数据字典 6
3、系统总体设计 7
3.1概念结构设计(E-R图) 7
3.2由E-R图转换得到的关系模式 7
3.3逻辑结构设计(数据库的设计) 8
4 、详细设计 10
4.1人事管理系统的主要功能: 10
4.2 人事管理系统的主要功能程序流程图 10
4.3用户界面与程序设计 12
5、系统测试 15
5.1测试方法 15
5.2测试用例 15
6、软件使用说明书 17
总 结 19
参考文献 20
致 谢 21
附件Ⅰ 部分原程序代码 22
摘 要
当今社会人员流动越来越频繁,使得档案管理工作也变得越来越复杂。如何管理号企业人事的信息,成为企业管理的一个大问题。如何实现档案管理的自动化,无疑是公司的管理部门带来很大的方便。人事管理系统正是一个为适应当前各个行业对人力资源信息管理的这个迫切需求而设计开发的软件系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求保持数据的一致性和完整性以及好的数据安全性;后者设计应用程序可以方便地实现公司人事档案的管理,易使用、检索迅速、查找方便。这些优点能够极大的提高人事档案的管理的效率,也是提高公司人事管理,更好的为公司服务。
关键词: 人事管理;数据库;管理系统
正 文
1、 问题描述
该设计要求学生以企业人事管理业务为背景,设计、开发一套“企业人事管理系统”软件。
通过该题目的设计、开发,使学生初步得到数据库开发的训练,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件开发的综合训练,提高解决实际问题的能力。
2、需求分析
2.1系统需求和功能
设计一个人事管理系统,使系统满足以下需求和功能
1)根据企业人事管理的需要,对企业以及企业中员工的信息进行添假删除等操作,并能对人事档案进行浏览,对人事资料进行查询,对人事资料进行统计。为企业的人事管理提供一个便利的管理系统。
2)、系统功能包括:
a系统管理(设置用户和退出系统)。
b基础数据管理(民族档案设置,职工类型设置,文化程度设置,政治面貌设置,部门类别设置,工资类别设置,职称类别设置,职务类别设置)。
c人事档案管理(人事档案浏览,人事资料查询,人事资料统计)。
数据库管理(数据库的备份与恢复)。
2.2数据流程图
数据流图由四种基本的元素构成:数据流(Data Flow),处理(Process),数据存储和数据源(数据终点)。
数据流(Data Flow):为具有名称且有流向的数据,用标有名称的箭头表示,一个数据可以是记录、组合项或基本项。
处理(Process):表示对数据所进行的加工和变换,在图中用矩形框表示。指向处理数据流为该处理的输入数据,离开处理的数据为处理的输出数据。
数据存储:表示用文件方式或数据库形式所存储的数据,堆砌进行的存取分别以指向或离开数据存储的箭头表示。
数据源及数据终点:表示数据的来源或数据的去向,可以是一个组织或人员,它处于系统范围之外,所以又称它为外部实体,它是为了帮助理解系统界面而引入的,一般只出现在数据流图的起点和终点。
数据流程图如图2.1所示:
管理员
接受
信息
更新 系 统信 息
个人信息
处理
事务
用户
信息
信息
信息
查询
图2.1数据流程图
2.3数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
由于本次设计是小型软件系统的开发,所以采用卡片形式书写数据字典。每张卡片上保存描述一个数据的信息这样做更新和修改起来比较方便,而且能单独处理描述每个数据的信息。下面将列出若干数据元素的数据卡片信息。
数据字典卡片如下:
名称:职工信息表
别名:
描述:对员工基本情况的描述
定义:员工信息表=员工号+姓名
位置:显示到屏幕
保存到磁盘
名字:管理员名称
别名:
描述:惟一地标识一门特定管理员的关键域
定义:管理员名称=10{字符}
位置:管理员信息表
名称:员工表
别名:
描述:对整体员工基本情况的描述
定义:员工信息表=所有员工的基本信息的总和
位置:显示到屏幕 保存到磁盘
名字:员工家庭表
别 名:
描述:惟一地标识一个员工的家庭状况
定义:家庭名称=10{字符}
位置:家庭信息表 员工信息表
3、 系统总体设计
3.1概念结构设计(E-R图)
经分析人事管理系统的E-R图如图3.1所示:
员工
用户
属于
部门
名称
负责人
属于
职务
临时
职称
正式
用户口令
用户名
籍贯
姓名
性别
学历
婚姻状况
编号
图3.1 人事管理系统E-R图
3.2由E-R图转换得到的关系模式
用户(用户名,密码,是否管理员)
民族档案设置(民族编号,民族名称)
职工类型设置(职工类型号,职工类型名称)
文化程度设置(文化程度编号,文化程度名称)
政治面貌设置(政治面貌编号,政治面貌名称)
部门类别设置(部门类别编号,部门类别名称)
工资类别设置(工资类别编号,工资类别名称)
职称类别设置( 职称类别编号,职称类别名称)
职务类别设置(职务类别编号,职务类别名称)
职工表(职工编号,职工名,出生日期,年龄,民族,婚姻状况,身份证,家庭电话,电子邮箱,手机,籍贯,地址,毕业学校,所在部门,政治面貌,职称类别,职务类别,工资类别,文化程度)
职工家庭情况(编号,员工工号,成员姓名,关系,出生日期,所在部门,担任职务,政治面貌,手机)
3.3逻辑结构设计(数据库的设计)
建立数据库
本设计用Microsoft Office Access 2003作为后台数据库,在MS SQL Server 2000中创建一个名为Manager1的数据库,并在其中建立逻辑设计中涉及的表.
建立表:在Access中,可以查看所建立的表,并添加适当测试数据
用户表如图3.2所示:
图3.2 用户表
民族挡案表如图3.3所示: 职工类型表如图3.4所示:
图3.3民族档案表 图3.4职工类型表
文化程度表如图3.5所示 : 政治面貌表如图3.6所示:
图3.5 文化程度表 图3.6 政治面貌表
部门类别设置表如图3.7所示: 工资类别表如图3.8所示:
图3.7 部门类型设置表 图3.8 工资类别表
职称类别表如图3.9所示: 职务类别表如图3.10所示:
图3.9 职称类别表 图3.10 职务类别表
4 、详细设计
4.1人事管理系统的主要功能:
1.教师各种信息的输入,包括教师基本信息,课程信息,论文信息,项目信息的输入等。
2.教师业务档案管理的各种信息查询,修改和维护。
3.操作日志的管理。
4.教师业务档案管理系统的使用帮助。
4.2 人事管理系统的主要功能程序流程图
系统操作流程图:错误信息
系统主界面
系统登录界面
系统管理
输入操作员及密码
数据库
密码错误
检查
密码正确
功能界面
功能处理
图5.1 系统操作流程图
人事管理系统员工各种信息的查询功能流程图如图5.2所示:
用户
输入查询条件
查询相应信息
信息确定
是否存在
重新查询
结束
是
否
否 是
否
是
图5.2查询功能流程图
3.删除功能流程图如图5.3所示:
重新删除
管理员
删除信息
确定
结束
删除成功
重新删除
管理员
删除信息
确定
结束
删除成功
重新删除
管理员
删除信息
确定
结束
删除成功
是
是 否
否
否
是
图5.3删除功能流程图
4.3用户界面与程序设计
1.一般交互设计
一般交互涉及信息显示、数据输入和系统整体控制等方面。
(1)一致性
为客户交互界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。在设计的过程中,基本上保持了系统的格式一致。
(2)信息的反馈
向用户及时提供视觉和听觉的信息反馈,以保证在用户和系统之间及时地建立双向通信。
在本系统设计过程中,基本做到了信息的及时反馈,在信息显示的大部分窗体中包括了刷新按钮,会对数据库中的数据进行及时地显示。另外,在进行错误操作是,会弹出提示窗口并发出警告提示音。
(3)执行有较大影响的操作前提示用户确认
在设计过程中,如果用户要执行删除操作,以及对数据库的读写操作时,都会有窗体弹出询问继续操作或者予以提示。
(4)减少两次操作间需要记忆的内容
为了避免用户为下一步操作而记忆大量数据,所以在设计过程中在需要数据传递的窗体中设置全局变量,来传递数据。
(5)对话、移动和思考的效率
尽量减少用户击键的次数,在设计时考虑到了用户屏幕的布局以减少用户鼠标移动的距离,尽量避免用户在操作中发生疑问的情况。
(6)允许错误
允许用户的误操作尽量不对系统造成伤害。
(7)按功能对动作分类,并据此设计屏幕布局
屏幕布局尽量将软件所具有的所有功能在主页面展示,界面一目了然。
2.信息显示设计
应当尽量为用户提供的界面显示时完整的、明确的和容易理解的。这样才能满足用户的需求。
(1)只显示与当前用户有关的信息
在用户操作有关系统的特定功能的信息时,不必看到与之无关的数据、菜单和图形。
(2)使用一致的标记、标准的缩写和可预知的颜色
为了使系统所表达的含义准确、无误,就必须适用一致的标记、标准的缩写和可以预知的缩写,这样用户就无需参照其他信息源就能理解,而正确地适用软件。
(3)产生有意义的错误信息
对于系统在运行过程中产生的错误尽量给用户返回一个容易理解的错误信息,以使用户保持对系统的信任,和系统的可用性。
(4)使用窗口分隔不同类型的信息
使用不同的窗口显示、保存不同类型的信息。
(5)高效率的使用显示屏
当使用多窗口时,应该有足够的空间使得每个窗口至少都能显示出一部分。此外,屏幕的大小应该选得和应用系统的类型相配套。
在各个显示数据的窗口中,由于数据窗体项目较多,所以在数据窗体空间中较多的是用了垂直和水平滚动条,以保证信息的全面正确显示。
3.数据输入设计
用户的大部分时间用在选择菜单命令、键入数据和向系统提供输入。在系统中,键盘是主要的输入介质,但是鼠标等设备的也是重要的输入手段,所以,对于他们的数据输入操作有如下约定:
(1)保持信息显示和数据输入间的一致性
为了方便用户的使用,鼠标应当尽量减少操作的幅度。
(2)保持显示信息和输入信息之间的一致性
对于用户来说,要保证其输入的数据在显示上与其他显示的视觉特征(例如:文字大小、颜色、位置等)要一致。
对于不同类型的用户在登录到系统后,由于有不同的权限,所以在主界面中会有一些项目受到限制而无法使用,所以要使这些项目不发生作用,以保证系统安全。
5.系统测试
5.1测试方法
软件的测试方法有两种,一种是黑盒测试(功能测试),另外一种是白盒测试(结构测试)。
白盒测试
在系统的实现过程和程序的调试过程中,遇到很多问题,此时应该对程序仔细阅读,设置断点,进行白盒测试。
黑盒测试
系统完成后,要进行黑盒测试,即设置一些测试用例,对系统的各个模块的功能进行测试,看能否得到正确的输出。在这里以管理员的身份登录系统,以便对系统的各个功能模块进行测试。
5.2测试用例
登陆测试:
图5.1 登陆界面
密码错误时:
图5.2 登陆错误提示界面
查询职工表:
图5.3 查询职工表
职工家庭情况表:
图5.4 职工家庭情况表
6、软件使用说明书
1、运行环境:
Windows xp操作系统,Visual Studio2005
2、使用方法
在安装了Visual Studio2005的系统,点击可执行文件,这样就自动在所使用的计算机中配置好ODBC数据源,并进入登陆界面。可以使用帐号admin和密码admin登陆。
登陆测试界面如图6.1所示:
图6.1 登陆界面
密码正确时正确的进入主界面的界面如图6.2所示:
图6.2 主界面
人事档案查询功能测试的界面如图6.3所示:
图6.3 人事查询界面
总 结
在这两周课程设计中,我的课程设计题目是企业人事管理系统。通过该题目的设计过程,我加深了对VC++、ACCESS 数据库知识点的理解,对数据库建表的基本操作的实现有所掌握,对课本中所学的各种数据库结构进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力,也培养了自己独立思考问题和解决问题的能力。
我的同学在设计过程中为我发现许多错误,也帮我解决了很多问题,在此我衷心的感谢他们。在以后的学习中我会更加注意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题一个一个的解决了,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
一个人要完成所有的工作是非常困难和耗时的。在以后的学习中我会更加注意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题、解决问题的能力,并学会了如何将所学的各课知识融会、组织、来配合学习,这两周中我收益很大,学到了很多。
参考文献
[1]张海藩,软件工程导论[M].清华大学出版社,2003年12月
[2]张海藩.软件工程导论学习辅导[M].清华大学出版社,2004年9月
[3]萨师煊,王珊.数据库系统概论[M].清华大学出版社,2002年2月
[4]汪孝宜,刘中兵,徐佳晶等.JSP数据库开发实例精粹[M].电子工业出版社,2005年1月
[5]陈磊,郭斌,李翔. PowerBuilder 9 数据库项目案例导航,清华大学出版社
[6]廖疆星,张艳钗,肖金秀.PowerBuilder & SQL Sever 2000数据库系统管理与实现[M].冶金工业出版社
[7]卫海,黄浩.PowerBuilder 9.0课程设计案例精编[M].
[8] Sybase中国网站:http://www.S
[9] PB导航站:
[10] PB编程俱乐部:
致 谢
附件Ⅰ 部分原程序代码
人事资料统计主要代码如下:
void CStatDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CString strSQL;
CString strValue="0";
CDatabase db;
db.Open(_T("Manager1"));
CRecordset recordset(&db);
UpdateData(TRUE);
//获得统计类型
int nType = m_ctrList.GetSelectionMark();
int i=0;
switch(nType)
{
case 0://按性别统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"性别");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,sex from person group by sex";
//MessageBox(strSQL);
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("sex",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
//MessageBox(strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 1://按年龄统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"年龄");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,age from person group by age";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("age",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 2://按民族统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"民族");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,folk from person group by folk";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("folk",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 3://按籍贯统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"籍贯");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,native from person group by native";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("native",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 4://按职务类别统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"职务");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,duty from person group by duty";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("duty",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 5://按职称类别统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"职称");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,technical from person group by technical";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("technical",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 6://按文化程度统计
m_ctrResult.DeleteAllItems();
m_ctrResult.DeleteColumn(1);
m_ctrResult.DeleteColumn(0);
m_ctrResult.InsertColumn(0,"文化程度");
m_ctrResult.InsertColumn(1,"人数");
m_ctrResult.SetColumnWidth(0,100);
m_ctrResult.SetColumnWidth(1,100);
strSQL="select count(ID) as num ,education from person group by education";
if(!recordset.Open(CRecordset::forwardOnly,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
while(!recordset.IsEOF())
{
recordset.GetFieldValue("education",strValue);
m_ctrResult.InsertItem(i,strValue);
recordset.GetFieldValue("num",strValue);
m_ctrResult.SetItemText(i,1,strValue);
i++;
recordset.MoveNext();
}
recordset.Close();
break;
case 7://按政治面貌统计
m_ctrResult.DeleteAllItems();
m_ctrResult
展开阅读全文