《数据库原理》课程设计报告-综合人事管理系统.doc_第1页
《数据库原理》课程设计报告-综合人事管理系统.doc_第2页
《数据库原理》课程设计报告-综合人事管理系统.doc_第3页
《数据库原理》课程设计报告-综合人事管理系统.doc_第4页
《数据库原理》课程设计报告-综合人事管理系统.doc_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理课程设计报告课程设计题目:综合人事管理系统学 院:计算机与电子信息学院专 业:计算机与科学技术年 级:计科072姓 名:指导教师:2010 年1月 目 录第一节相关技术介绍3第二节需求分析3数据字典31)数据库内含下列表32)数据库表详细设计33)安全性和完整性要求3第三节概念结构设计3e-r图3第四节逻辑结构设计3系统总体设计3第五节代码设计3第六节数据库实施55第七节参考文献55第八节附录56第一节相关技术介绍本程序使用vc+6.0和sqlserver2000结合编写的。 visual c+是一个功能强大的可视化软件开发工具。自1993年microsoft公司推出visual c+1.0后,随着其新版本的不断问世,visual c+已成为专业程序员进行软件开发的首选工具。在实际应用中,是以visual c+6.0为平台。 visual c+6.0不仅是一个c+编译器,而且是一个基于windows操作系统的可视化集成开发环境(integrated development environment,ide)。visual c+6.0由许多组件组成,包括编辑器、调试器以及程序向导appwizard、类向导class wizard等开发工具。 这些组件通过一个名为developer studio的组件集成为和谐的开发环境。sql server 2000 是microsoft 公司推出的sql server 数据库管理系统。该版本,具有使用方便,可伸缩性好与相关软件集成程度高等优点,是开发数据库应用程序不错的选择。程序编写环境:数据管理系统:microsoft sql server 2000程序编写平台:microsoft visual c+ 6.0操作系统:microsoft xp sp3测试用帐号及密码:普通员工:qq学生密码:000000超级管理员帐号:admin管理员密码:1第二节需求分析数据字典数据库名:hrsys.mdb1)数据库内含下列表departments (部门表)employees (职员表)family (家庭成员表)checkin (员工考勤表)evaluation (员工考评表)users (用户表)2)数据库表详细设计departments,部门表字段名称数据类型说明长度dep_idint部门编号4dep_namevarchar部门名称40describevarchar部门职能描述400upperidint上级部门编号4employees,职员表字段名称数据类型说明长度emp_idint员工编号4emp_namevarchar员工姓名50sexchar性别2nationalityvarchar民族40birthvarchar生日20political_pratyvarchar政治面貌40culture_levelvarchar文化程度40family_placevarchar籍贯60marital_conditionvarchar婚姻状况20id_cardvarchar身份证号20badgeidvarchar工作证号40office_phonevarchar办公电话30mobilevarchar手机号码30files_keep_orgvarchar档案存放地100hukouvarchar户口所在地100hiredatavarchar到岗日期20dep_idint所在部门编号4positionvarchar工作岗位40titlevarchar职位20statetinyint员工状态1upperidint上级员工编号4contract_durationvarchar合同有效期20memovarchar备注30fillin_personvarchar 填表用户30fillin_timevarchar填表日期和时间20family,员工家庭成员记录表字段名称数据类型说明长度idtinyint编号1emp_namevarchar员工名字50emp_idint员工编号4sextinyint年龄1relationshipvarchar与本人关系20workingorg varchar工作单位40checkin,员工考勤表字段名称数据类型说明长度checkdatechar考勤月份10emp_idint 员工编号4qqdaysdecimal(4,1)全勤天数5ccdaysdecimal(4,1)出差天数5bjdaysdecimal(4,1)病假天数5sjdaysdecimal(4,1)事假天数5kgdaysdecimal(4,1)旷工天数5fdxjdaysdecimal(4,1)法定休假天数5nxjdaysdecimal(4,1)年休假天数5dxjdaysdecimal(4,1)倒休假天数5cdminutesdecimal(4,1)tinyint1ztminutesdecimal(4,1)tinyint1ot1decimal(4,1)一类加班天数5ot2decimal(4,1)二类加班天数5ot3decimal(4,1)三类加班天数5memovarchar备注200evaluation,员工考评表字段名称数据类型说明长度evamonthchar考评月份10emp_idint员工编号4ztevavarchar总体评价200jlreasonvarchar奖励事由200jlamountsmallint奖励金额2cfreasonvarchar处罚事由200cfamountsmallint处罚金额2memo varchar 备注200users,用户信息表字段名称数据类型说明长度usernamevarchar用户名40pwdvarchar密码40user_typetinyint用户类型13)安全性和完整性要求本程序实现普通员工与系统管理员的权限分离,同时实现管理员对职员有全面的资料管理功能。系统管理员拥有全部的权限,可以实现诸如添加、删除、修改等功能,而将普通员工只有查看权限。第三节概念结构设计e-r图第四节逻辑结构设计系统总体设计包括两大系统:一、普通员工系统查看其他员工信息和修改自己登录密码。二、管理员系统包括:1) 用户管理系统:(1) admin 用户可以创建管理员或普通用户、复位用户密码、删除系统管理员或普通用户,也可以修改自身密码(admin用户不能被删除);(2) 管理员可以创建普通用户、对普通用户的密码进行复位、删除普通用户,也可以修改自身密码;(3) 普通用户只能修改自身密码;2)部门管理(1)系统管理员可以添加、修改、删除和查看部门记录;(2)普通用户只能查看部门数据;3)员工基本管理管理(1)系统管理员可以添加、修改、删除、查看员工记录;(2)普通用户只能查看员工数据;4)家庭成员管理(1)添加、修改、删除和查看家庭成员信息(只用管理员才有的权限);5)员工考勤管理(1)系统管理员可以创建、修改、删除和查看考勤记录;(2)普通用户只能查看考勤数据;6)员工考评管理(1)系统管理员可以创建、修改、删除和查看考评记录;(2)普通用户只能查看考评记录数据。流程图:开始用户登录读取用户类型1. 管理自己的用户信息2. 管理普通系统用户的信息3. 管理普通用户的用户信息1. 管理普通系统管理员的用户信息2. 管理普通用户的用户信息管理自己的用户信息拥有所有的权限只有查询的权限失败重试admin用户系统管理员用户普通用户用户管理模块人事管理模块第五节主要源代码(因为员工是数据库的核心,很多内容都和员工有关系,所以当我们删除了一 个员工时,会删除和这个员工有联系的所有数据库内容,在此我用代码来具体 实现)连接数据库的类:/ adoconn.h: interface for the adoconn class./#import c:program filescommon filessystemadomsado15.dll no_namespace rename(eof,adoeof) rename(bof,adobof)#if !defined(afx_adoconn_h_6acc7e6f_4312_448e_9f6a_d0d17599fe61_included_)#define afx_adoconn_h_6acc7e6f_4312_448e_9f6a_d0d17599fe61_included_#if _msc_ver 1000#pragma once#endif / _msc_ver 1000class adoconn public:_connectionptr m_pconnection;_recordsetptr m_precordset;public:adoconn();virtual adoconn();void oninitadoconn();_recordsetptr& getrecordset(_bstr_t bstrsql);bool executesql(_bstr_t bstrsql);void exitconnect();#endif / !defined(afx_adoconn_h_6acc7e6f_4312_448e_9f6a_d0d17599fe61_included_)/ adoconn.cpp: implementation of the adoconn class./#include stdafx.h#include adoconn.h#include adoconn.h#include _recordset.h#ifdef _debug#undef this_filestatic char this_file=_file_;#define new debug_new#endif/ construction/destruction/adoconn:adoconn()adoconn:adoconn()void adoconn:oninitadoconn():coinitialize(null);trym_pconnection.createinstance(adodb.connection); /m_pconnection.createinstance(adocb.recordset);/_bstr_t strconnect=provider=sqloledb;server=freeskyc-f4975d;database=mrman;/_bstr_t strconnection=provider=sqloledb.1;data source=freeskyc-f4975d;initial catalog=mrman;_bstr_t strconnection=provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=hrsys;data source=freeskyc-f4975d;userid=sa;password=;/cstring str;/str.format(provider=sqloledb;network library=dbmssocn;initial catalog=mrman;user id=;password=;data source=mrman);m_pconnection-open(strconnection,admodeunknown);catch(_com_error e)afxmessagebox(e.description();_recordsetptr& adoconn:getrecordset(_bstr_t bstrsql)tryif(m_pconnection=null)oninitadoconn;m_precordset.createinstance(_uuidof(recordset);m_precordset-open(bstrsql,m_pconnection.getinterfaceptr(),adopendynamic,adlockoptimistic,adcmdtext);catch(_com_error e)afxmessagebox(e.description();return m_precordset;bool adoconn:executesql(_bstr_t bstrsql)tryif(m_pconnection=null)oninitadoconn();m_pconnection-execute(bstrsql,null,adcmdtext);return true;catch(_com_error e)afxmessagebox(e.description();return false;void adoconn:exitconnect()if(m_precordset!=null)m_precordset-close();m_pconnection-close();:couninitialize();在这个程序中因为登录的用户在各个模块中都有用到,所以我单独写了个用户 类,并且定义了一个全局变量users:class cusers private:cstring username;cstring pwd;int user_type;public:cusers();virtual cusers();cstring getusername();void setusername(cstring cusername);cstring getpwd();void setpwd(cstring cpwd);int getuser_type();void setuser_type(int iuser_type);void sql_insert();void sql_updatepwd(cstring cusername);void sql_delete(cstring cusername);void getdata(cstring cusername);int havename(cstring cusername);cusers:cusers()username=;pwd=;user_type=0;cusers:cusers()cstring cusers:getusername()return username;void cusers:setusername(cstring cusername)username=cusername;cstring cusers:getpwd()return pwd;void cusers:setpwd(cstring cpwd)pwd=cpwd;int cusers:getuser_type()return user_type;void cusers:setuser_type(int cuser_type)user_type=cuser_type;void cusers:sql_insert()adoconn m_adoconn;m_adoconn.oninitadoconn();cstring strtype;strtype.format(%d,user_type);_bstr_t vsql;vsql=insert into users values(+username+,+pwd+,+strtype+);m_adoconn.executesql(vsql);m_adoconn.exitconnect();void cusers:sql_updatepwd(cstring cusername)adoconn m_adoconn;m_adoconn.oninitadoconn();cstring strtype;strtype.format(%d,user_type);_bstr_t vsql;vsql=update users set pwd=+pwd+where username=+cusername+;m_adoconn.executesql(vsql);m_adoconn.exitconnect();void cusers:sql_delete(cstring cusername)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=delete from users where username=+cusername+;m_adoconn.executesql(vsql);m_adoconn.exitconnect();void cusers:getdata(cstring cusername)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=select *from users where username=+cusername+;_recordsetptr m_precordset;m_precordset=m_adoconn.getrecordset(vsql);if(m_precordset-adoeof)cusers:cusers();elseusername=cusername;pwd=(lpctstr)(_bstr_t)m_precordset-getcollect(pwd);user_type=atoi(lpctstr)(_bstr_t)m_precordset-getcollect(user_type);m_adoconn.exitconnect ();int cusers:havename(cstring cusername)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=select * from users where username=+cusername+;_recordsetptr m_precordset;m_precordset=m_adoconn.getrecordset(vsql);if(m_precordset-adoeof)return -1;elsereturn 1;m_adoconn.exitconnect();return 1;登录对话框:void clogindlg:onok() / todo: add extra validation hereupdatedata(true);if(m_username=)messagebox(请输入用户名);return;if(m_pwd=)messagebox(请输入密码);return;cusers user;user.getdata(m_username);if(user.getpwd()!=m_pwd)messagebox(不存在帐号或密码,请重试!);return;cdialog:onok();部门对话框:class cdepartments private:int dep_id;cstring dep_name;cstring describe;int upperid;public:cstringarray a_depname;cstringarray a_depid;cstringarray a_upperid;cdepartments();virtual cdepartments();int getdep_id();void setdep_id(int idep_id);cstring getdep_name();void setdep_name(cstring cdep_name);cstring getdescribe();void setdescribe(cstring cdescribe);int getupperid();void setupperid(int iupperid);int havename(cstring cdep_name);int haveson(cstring cdep_id);int haveemp(cstring cdep_id);void load_dep(cstring cname,int all);long sql_insert();void sql_update(cstring cdepid);void sql_delete(cstring cdepid);void getdata(cstring cdepid);long cdepartments:sql_insert()adoconn m_adoconn;m_adoconn.oninitadoconn();cstring strupperid;strupperid.format(%d,upperid);_bstr_t vsql;vsql=insert into departments(dep_name,describe,upperid)values(+dep_name+,+describe+,+strupperid+);m_adoconn.executesql(vsql);long ldepid;vsql=select max(dep_id)as maxid from departments;_recordsetptr m_precordset;m_precordset=m_adoconn.getrecordset(vsql);if(m_precordset-adoeof)ldepid=0;elseldepid=atol(lpctstr)(_bstr_t)m_precordset-getcollect(maxid);m_adoconn.exitconnect();return ldepid;void cdepartments:sql_update(cstring cdepid)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=update departments set dep_name=+dep_name+,describe=+describe+where dep_id=+cdepid;m_adoconn.executesql(vsql);m_adoconn.exitconnect();void cdepartments:sql_delete(cstring cdepid)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=delete from departments where dep_id=+cdepid;m_adoconn.executesql(vsql);m_adoconn.exitconnect();void cdepartments:getdata(cstring cdepid)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=select * from departments where dep_id=+cdepid;_recordsetptr m_precordset;m_precordset=m_adoconn.getrecordset(vsql);if(m_precordset-adoeof)cdepartments();elsedep_id=atoi(cdepid);dep_name=(lpctstr)(_bstr_t)m_precordset-getcollect(dep_name);describe=(lpctstr)(_bstr_t)m_precordset-getcollect(describe);upperid=atoi(lpctstr)(_bstr_t)m_precordset-getcollect(upperid);m_adoconn.exitconnect();部门添加功能(其他类似):void cdepmandlg:onaddbutton1() / todo: add your control notification handler code herehtreeitem node;node=m_tree.getselecteditem();cdepeditdlg dlg;dlg.m_upper=m_tree.getitemtext(node);dlg.upperid=m_tree.getitemdata(node);dlg.depid=0;if(dlg.domodal()=idok)htreeitem child;child=m_tree.insertitem(dlg.m_depname,node);m_tree.setitemdata(child,dlg.depid);m_tree.expand(node,tve_expand);选择部门对话框:void cdepseldlg:addtotree(htreeitem m_node,int upperid)int i;htreeitem m_child;for(i=0;iadoeof)/return ;return -1;else return 1;/return(lpctstr)(_bstr_t)m_precordset-getcollect(emp_name);m_adoconn.exitconnect();cstring cemployees:getname(cstring cemp_id)adoconn m_adoconn;m_adoconn.oninitadoconn();_bstr_t vsql;vsql=select emp_name from employees where emp_id=+cemp_id;_recordsetptr m_precordset;m_precordset=m_adoconn.getrecordset(vsql);if(m_precordset-adoeof)return -1;elsereturn (lpctstr)(_bstr_t)m_precordset-getcollect(emp_name);m_adoconn.exitconnect();void cemployees:sql_insert()adoconn m_adoconn;m_adoconn.oninitadoconn();cstring strdep_id;strdep_id.format(%d,dep_id);cstring strstate;strstate.format(%d,state);cstring strupperid;strupperid.format(%d,upperid);_bstr_t vsql;vsql=insert into employees(emp_name,sex,nationality,birth,political_party,;vsql=vsql+culture_level,marital_condition,family_place,id_card,badgeid,office_phone,;vsql=vsql+mobile,files_keep_org,hukou,hiredate,dep_id,position,title,stat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论