




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统课程设计报告 题目: 人事管理系统 年级专业: 12网络工程 学 号: 姓 名: 陈嘉升 小组成员: 贺锦鹏 田野 指导老师: 完成时间: 2014.06.08 评分:湖南科技大学计算机科学与工程学院1系统需求分析1.1系统功能分析 人事管理系统主要有以下几项功能要求:l 新员工资料的输入l 自动分配员工,并且设置初始的用户密码l 人事变动的详细记录,包括岗位和部门的调整l 员工信息的查询和修改,包括员工个人信息和密码等l 查询人事变更记录1.2 系统功能模块设计 根据系统功能需求,可以将系统分解成几个模块来分别设计应用程序设计界面,如下图所示: 人事管理系统 新员工档案输入增加人事变更记录员工档案查询查询人事记录1.3 与其它系统的关系 本系统是公司管理信息系统的基础部分。为其他子系统,如考勤管理系统、工资管理系统和员工培训系统,提供员工的基本信息。同时为其它的系统提供了员工登录的密码认定和权限分配功能。1.4 数据流程图 人事信息管理系统的数据流程如图所示,所有数据有人事科管理员输入。人事科招聘新员工分配员工号员工信息数据员工辞退人事变更记录岗位调整个人信息查询个人信息查询结果1.5 数据库需求分析 根据数据流程图,可以列出以下数据项和数据结构:l 员工信息:员工号、密码、权限、姓名、性别、生日、所在部门、职务、受教育程度、专业、家庭住址、电话、电子邮箱、当前状态、备注l 人事变更记录:记录号、员工号、变动、详细记录。 所需的外部数据支持:l 部门信息:部门编号、名称、部门经理、简介l 受教育程度代码表:代码、说明l 职务代码表:职务编号、 名称l 人事变动代码:代码、描述2概念结构设计2.1 概念结构设计的步骤概念结构的设计可分为两步:第一步是抽象数据并设计局部视图。第二步是集成局部视图,得到全局的概念结构。员工实体E-R图:员工 备注员工号性别生日当前状态密码姓名所在部门职务电子邮箱联系电话家庭住址专业技能受教育程度用户权限部门实体E-R图:部门编号部门名称简介部门部门经理职务代码表E-R图:职务职务编号职务名称教育程度代码表E-R图 :教育程度代码说明人事变动代码表E-R图 代码描述 人事变动代码人事变更记录表E-R图:人事变更记录记录编号员工号详细记录变更代码实体E-R总图: 1员工教育程度人事变更记录部门拥有存在工作存在职务m111m1m拥有113逻辑结构设计 3.1 E-R图向关系模型的转换将总体关系的E-R图转换为关系模型: 员工(员工号、密码、用户权限、姓名、性别、生日、所在部门、职务、受教育程度、专业技能、家庭住址、联系电话、电子邮箱、当前状态、 备注)部门(部门号,部门名称, 部门经理, 简介) 职务(职务号、职务名称) 教育程度(代码,说明)人事变更记录(记录编号,员工号,变更代码,详细记录)人事变动代码(代码, 描述)4物理结构设计4.1数据表的物理结构 根据系统E-R图,本系统需要有两个数据分别来存放工人个人信息和人事变动记录。并且需要一个外部数据表(部门信息)的支持。同时部分记录字段需要用代码来表示,因此需要3个代码来分别记录教育程度、职务和人事变更的代码。这个6个数据表的结构如表1到表6所示。 表1 PERSON 员工个人信息表 字段名数据类型长度是否为空说明IDint4NOT NULL员工号(主关键字) PASSWDvarchar50NOT NULL密码AUTHORITYvarchar50NOT NULL用户权限NAMEvarchar50NOT NULL姓名SEXvarchar 50NOT NULL性别BIRTHDAYvarchar50NULL生日DEPARTMENTvarchar 50NOT NULL所在部门JOBvarchar50NOT NULL职务EDU_LEVEL varchar50NOT NULL受教育程度SPCIALTYvarchar50NULL专业技能ADDRESSvarchar50NULL家庭住址TELvarchar50NULL联系电话 EMAILvarchar50NULL电子邮箱 STATEvarchar50NOT NULL当前状态(T-员工、F-非员工) REMARKvarchar50NULL备注 表2 PERSONNEL 人事变更记录表 字段名数据类型长度是否为空说明IDint4NOT NULL记录编号PERSONvarchar4NOT NULL员工号CHANGEvarchar4NOT NULL变更代码DESCRIPTIONvarchar16NULL详细记录 表3 EDU_LEVEL受教育程度代码表字段名数据类型长度是否为空说明CODEint 4NOT NULL代码DESCRIPTIONvarchar50 NULL描述 表4 JOB 职务代码表 字段名 数据类型 长度是否为空说明CODE int4NOT NULL 代码DESCRIPTIONvarchar50NULL描述 表5 PERSONNEL_CHANGE 人事变动代码表字段名数据类型长度是否为空说明CODEint 4NOT NULL代码DESCRIPTIONvarchar50 NULL描述 表6DEPANTMENT 部门信息表 字段名 数据类型长度 是否为空说明IDint4NOT NULL部门编号NAMEvarchar50NOT NULL部门名称MANAGERvarchar4NOT NULL部门经理INTROvarchar50NULL简介表 7受教育程度代码代码说明0小学1初中2高中3职高4大本5大专6硕士7博士8博士后表 8 人事变更代码代码说明0新员工加入1职务变动2辞退5各功能模块的设计与实现5.1各功能说明n 增加新员工n 人事变动n 员工信息查询和修改n 加密模块5.2用户界面设计 完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。我们把人事信息系统的窗口分成4个主要部分。1. 登录模块的创建2. 增加新员工窗体的创建3. 人事变动窗体的创建4. 员工信息查询修改窗体的创建5. 加密模块的创建5.3各功能模块的实现1加密模块窗口设计:由于时间关系只实现了固定的用户名和密码,为实现数据库验证的用户名和密码相关代码:/*以下实现管理员密码登陆*/未实现管理员密码的可修改性void CMyDlg:OnLoad() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString ID = admin;CString PASSWD = 123;if(m_ID = )MessageBox(请输入用户名);return;if(m_PASSWD = )MessageBox(请输入密码);return;if(ID != & PASSWD != )if(ID = m_ID & PASSWD = m_PASSWD)AfxMessageBox(欢迎使用!);CAdminBox a;/调用管理员窗口的一个对象a.DoModal();/调用函数elseAfxMessageBox(用户信息不正确,重新登录!);/*time+;if(time2)exit(0);*/ /*/2 主窗口的设计主窗口只实现相关功能窗口的调用按钮,不实现具体功能/*/以下实现员工信息修改窗口void CAdminBox:OnBUTTONUpdateName() / TODO: Add your control notification handler code hereCUpdateName a;a.DoModal();/*/调用人事变动窗口void CAdminBox:OnBUTTONPersonnel() / TODO: Add your control notification handler code hereCPERSONNEL a;a.DoModal();/*/提供退出系统的功能void CAdminBox:OnButtonExit() / TODO: Add your control notification handler code hereif(MessageBox(确定退出?,_T(),MB_YESNO|MB_ICONSTOP)=IDYES)exit(0);n 3.人事变动窗口设计:实现的功能是在往数据库人事变更表中添加数据的时候同时修改员工信息表中的相关信息代码如下:void CPERSONNEL:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);/在ADO操作中建议语中要常用try.catch()来捕获错误信息/因为他有时会经常出现一些想不到的错误trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn = Provider = SQLOLEDB;Data Sourse = (local); Initial Catalog =人事管理系统;UID=sa;PWD=;m_pConnection-Open(strConn,adModeUnknown);if(m_pConnection-State = adStateOpen)MessageBox(成功连接数据库);catch(_com_error e):CoUninitialize();AfxMessageBox(e.ErrorMessage();return;/以下插入人事变更记录_variant_t ra;_bstr_t strAdd = INSERT INTO PERSONNEL VALUES(;/strAdd = strAdd + m_ID + ,;strAdd = strAdd + m_PERSON + ,;strAdd = strAdd + m_CHANGE + ,;strAdd = strAdd + m_DESCRIPTION + );/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);/m_pConnection-Close();/下面同样涉及对其他表数据修改故不能关闭数据库连接strAdd = UPDATE PERSON SET STATE =;if(m_CHANGE=0)strAdd=strAdd+T where ID=+m_PERSON;/AfxMessageBox(strAdd);else if(m_CHANGE=2)strAdd=strAdd+F where ID=+m_PERSON;/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);m_pConnection-Close();m_adodc1.SetRecordSource(select * from PERSONNEL);m_adodc1.Refresh();UpdateData(FALSE);n 3.员工信息查询修改窗口设计如下:实现功能:可以在所有记录上进行相关信息的查询和修改各部分功能的代码如下l 增加新员工信息/*/以下实现按钮触发添加员工信息功能void CUpdateName:OnBUTTONAddName() / TODO: Add your control notification handler code hereUpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);/在ADO操作中建议语中要常用try.catch()来捕获错误信息/因为他有时会经常出现一些想不到的错误trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn = Provider = SQLOLEDB;Data Sourse = (local); Initial Catalog =人事管理系统;UID=sa;PWD=;Persist Security Info=FALSE;m_pConnection-Open(strConn,adModeUnknown);/if(m_pConnection-State = adStateOpen) MessageBox(成功连接数据库);catch(_com_error e):CoUninitialize();/AfxMessageBox(e.ErrorMessage();return;_variant_t ra;m_PASSWD = 12345;m_AUTHORITY = 2;_bstr_t strAdd = INSERT INTO PERSON VALUES (;/ strAdd = strAdd + m_ID + ,;strAdd = strAdd + m_PASSWD + ,;strAdd = strAdd + m_AUTHORITY + ,;strAdd = strAdd + m_NAME + ,;strAdd = strAdd + m_SEX + ,;strAdd = strAdd + m_BIRTHDAY + ,;strAdd = strAdd + m_DEPARTMENT + ,;strAdd = strAdd + m_JOB + ,;strAdd = strAdd + m_EDU_LEVEL + ,;strAdd = strAdd + m_SPCIALTY + ,;strAdd = strAdd + m_ADDRESS + ,;strAdd = strAdd + m_TEL + ,;strAdd = strAdd + m_EMAIL + ,;strAdd = strAdd + m_STATE + ,;strAdd = strAdd + m_REMARK + );/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);m_pConnection-Close();m_adodc1.SetRecordSource(select * from PERSON);m_adodc1.Refresh();UpdateData(FALSE);l 查询功能/*/连接上面两个组合框的输入值来响应相应的查询信息void CUpdateName:OnBUTTONCheck() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(m_SelectYes=1 & m_CheckName = ) | (m_SelectYes =2 & m_CheckID = )CString str = select * from PERSON;m_adodc1.SetRecordSource(str);m_adodc1.Refresh();UpdateData(FALSE);return;elseif(m_SelectYes=1)CString str = select * from PERSON where NAME= + m_CheckName +;/AfxMessageBox(str);m_adodc1.SetRecordSource(str);m_adodc1.Refresh();UpdateData(FALSE);else if(m_SelectYes=2)CString str = select * from PERSON where ID= + m_CheckID +;/AfxMessageBox(str);m_adodc1.SetRecordSource(str);m_adodc1.Refresh();UpdateData(FALSE);l 删除选定记录/*/以下实现按钮触发删除当前列表所选择的记录void CUpdateName:OnBUTTONDeleteName() / TODO: Add your control notification handler code hereUpdateData(TRUE);int ColNum = 2;CString colVal;/要包含头文件Columns.hCColumns cols;/要包含头文件Column.hCColumn col;VARIANT v_ColNum,v_Value;cols = m_datagrid1.GetColumns();/调用 GetColumns返回CDataGrid对应的CColumns对象v_ColNum.vt = VT_I2;/读取IDv_ColNum.iVal = 0;/设置列编号col = cols.GetItem(v_ColNum);/根据列编号返回CColumn对象v_Value = col.GetValue();/读取列植CString tmp = v_Value.bstrVal;/ int curRow = atoi(tmp);CString tmp2 = 确认要删除编号为 +tmp+ 的记录吗?;if(MessageBox(tmp2,_T(数据删除提示),MB_YESNO|MB_ICONSTOP) != IDYES)return;UpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn = Provider = SQLOLEDB;Data Sourse = (local); Initial Catalog =人事管理系统;UID=sa;PWD=;m_pConnection-Open(strConn,adModeUnknown);if(m_pConnection-State = adStateOpen)MessageBox(成功连接数据库);catch(_com_error e):CoUninitialize();AfxMessageBox(e.ErrorMessage();return;/以下删除当前数据_variant_t ra;_bstr_t strAdd = DELETE FROM PERSON WHERE ID =+tmp+;/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);m_pConnection-Close();/以下显示当前数据m_adodc1.SetRecordSource(SELECT * FROM PERSON);m_adodc1.Refresh();UpdateData(FALSE);l 通过双击复制员工信息功能/*/通过双击Datagrid实现列表数据进行数据复制void CUpdateName:OnClickDatagrid1() / TODO: Add your control notification handler code hereUpdateData(TRUE);int ColNum = 2;CString colVal;/要包含头文件Columns.hCColumns cols;/要包含头文件Column.hCColumn col;VARIANT v_ColNum,v_Value;cols = m_datagrid1.GetColumns();/调用 GetColumns返回CDataGrid对应的CColumns对象v_ColNum.vt = VT_I2;/读取ID0v_ColNum.iVal = 0;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_ID = v_Value.bstrVal;/读取密码1v_ColNum.iVal = 1;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_PASSWD = v_Value.bstrVal;/读取权限2v_ColNum.iVal =2 ;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_AUTHORITY = v_Value.bstrVal;/读取姓名3v_ColNum.iVal = 3;/设置列编号col = cols.GetItem(v_ColNum);/根据列编号返回CColumn对象v_Value = col.GetValue();/读取列植m_NAME = v_Value.bstrVal;/读取性别4v_ColNum.iVal = 4;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_SEX = v_Value.bstrVal;/读取生日5v_ColNum.iVal = 5;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_BIRTHDAY = v_Value.bstrVal;/读取所在部门6v_ColNum.iVal = 6;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_DEPARTMENT = v_Value.bstrVal;/读取职务7v_ColNum.iVal =7;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_JOB = v_Value.bstrVal;/读取受教育程度8v_ColNum.iVal = 8;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_EDU_LEVEL = v_Value.bstrVal;/读取专业技能9v_ColNum.iVal = 9;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_SPCIALTY = v_Value.bstrVal;/读取家庭住址10v_ColNum.iVal = 10;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_ADDRESS = v_Value.bstrVal;/读取联系电话11v_ColNum.iVal = 11;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_TEL = v_Value.bstrVal;/读取电子邮箱12v_ColNum.iVal = 12;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_EMAIL = v_Value.bstrVal;/读取当前状态13v_ColNum.iVal = 13;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_STATE = v_Value.bstrVal;/读取备注14v_ColNum.iVal = 14 ;col = cols.GetItem(v_ColNum);v_Value = col.GetValue();m_REMARK = v_Value.bstrVal;UpdateData(FALSE);l 修改员工信息/*/以下实现按钮触发修改列表所选信息功能void CUpdateName:OnBUTTONUpdateName() / TODO: Add your control notification handler code hereUpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);/在ADO操作中建议语中要常用try.catch()来捕获错误信息/因为他有时会经常出现一些想不到的错误trym_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn = Provider = SQLOLEDB;Data Sourse = (local); Initial Catalog =人事管理系统;UID=sa;PWD=;m_pConnection-Open(strConn,adModeUnknown);/if(m_pConnection-State = adStateOpen)MessageBox(成功连接数据库);catch(_com_error e):CoUninitialize();AfxMessageBox(e.ErrorMessage();return;/以下插入数据_variant_t ra;_bstr_t strAdd = UPDATE PERSON SET PASSWD=;strAdd = strAdd + m_PASSWD + ,AUTHORITY=;strAdd = strAdd + m_AUTHORITY + ,NAME=;strAdd = strAdd + m_NAME + ,SEX=;strAdd = strAdd + m_SEX + ,BIRTHDAY=;strAdd = strAdd + m_BIRTHDAY + ,DEPARTMENT=;strAdd = strAdd + m_DEPARTMENT + ,JOB=;strAdd = strAdd + m_JOB + ,EDU_LEVEL=;strAdd = strAdd + m_EDU_LEVEL + ,ADDRESS=;strAdd = strAdd + m_ADDRESS + ,TEL=;strAdd = strAdd + m_TEL + ,EMAIL=;strAdd = strAdd + m_EMAIL + ,STATE=;strAdd = strAdd + m_STATE + ,REMARK=;strAdd = strAdd + m_REMARK + ;strAdd = strAdd + where ID= + m_ID;AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);m_pConnection-Close();/以下显示数据m_adodc1.SetRecordSource(select * from PERSON);m_adodc1.Refresh();AfxMessageBox(修改信息成功!);UpdateData(FALSE);4 系统实现5 系统的编译和发行设计人事管理系统中所出现的相关错误:1_Connection未定义之类问题解决办法:需要在总的软件头文件stdafx.h需要包含相应的ADO库控件,同时在相应的CPP文件了包含ADO库控件调用的初始化函数。2数据库链接不成功之类问题解决办法:需要验证用户之类的问题,确定Sa包含在数据库管理员里面,同时确定在源代码中数据库链接函数的编写正确,必要的时候在固定处编写窗口程序来确定代码的正确执行3部分变量提示未定义解决办法:通过查看view中的类向导来查看变量是否定义正确,以及相关控件的变量设计无误。4操作数据库数据出错Runtime Error解决办法:通过窗口显示代码执行过程中SQL语言传递函数中strAdd的字符串来验证确定执行的SQL语言无误,同时注意一些变量类型定义不同的错误,这类错误不易发现(具体表现在SQL语言中将其表现为字符型,但是数据库中相应的变量或者列名变量为整形之类的)5.SQL操作成功后相关的Datagrid无法显示操作后的结果解决方法:在相关代码中加入控件刷新的代码即可解决。更多的问题可以查询百度。课程设计总结两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础在设计过程中,体现了自己单独设计程式的能力以及综合运用知识的能力,体会了学以致用,突出自己劳动果实的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。由于本人能力有限,在设计调试程序过程中难免会出现一些错误,在此感谢指导老师和同学的帮助。我十分乐意接受你们的批评与指正,本人将万分感谢。-陈嘉升党支部定期召开全体党员会议,学理论,明方向。统一思想,振奋精神,找差距,重落实。全校34名党员分布到各部门、各年租,重点抓思想建设the Department during a visit to the camp, a few shells of explosions were heard in the distance. Back to Headquarters, Zhu Xi staff was informed by the Department to strengthen alert, watch, place to rest, for night operations. Near 9 oclock, attack the elves have on the formation of Zhong Jia DUN encirclement. Southeast corner of sudden intense machine gunfire were heard, energize s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节能知识培训课件
- 合作赋能:探究中学生合作学习对问题解决水平的提升效应
- 合作学习:职业学校英语教学创新与实践探索
- 国际交流项目大学生就业实习合作备忘录
- 2025年教师招聘之《幼儿教师招聘》通关练习题和答案含答案详解(培优a卷)
- 教师招聘之《幼儿教师招聘》强化训练题型汇编及参考答案详解一套
- 2025年教师招聘之《幼儿教师招聘》综合提升练习题及参考答案详解(培优b卷)
- 教师招聘之《小学教师招聘》题库检测题型必考题附答案详解
- 2025年教师招聘之《幼儿教师招聘》练习试题含答案详解(预热题)
- 押题宝典教师招聘之《小学教师招聘》模考模拟试题含答案详解【模拟题】
- DB13(J)-T 8389-2020 被动式超低能耗建筑节能工程施工及质量验收标准
- 月嫂 考试题及答案
- 物质安全资料脱模剂MSDS
- 2025年中国过敏性鼻炎市场研究报告
- 2025年电测仪表工技能竞赛参考试题库500题(含答案)
- 2025-2030中国酒店行业深度发展研究与“”企业投资战略规划报告
- 《肺结核理论课》课件
- 中国心力衰竭基层诊断与治疗指南(2024年)更新解读(完整版)
- 部编语文三年级上册教案教学设计
- 2023年中小学“学宪法 讲宪法”应知应会知识竞赛题库及答案
- 慢性肾脏病的用药指导
评论
0/150
提交评论