- 993.50 KB
- 2022-05-17 12:55:04 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
基于VC++的考勤管理系统毕业论文目录1绪论………………………………………………………………41.1开发背景………………………………………………………………41.2管理信息系统的发展历史……………………………………………………42系统的总体设计………………………………………………………………42.1系统功能分析………………………………………………………………52.2系统功能模块设计…………………………………………………………52.3数据库设计…………………………………………………………72.3.1数据库需求分析………………………………………………………72.3.2数据库概念结构设计…………………………………………………72.3.3数据库逻辑结构设计…………………………………………………93系统详细设计………………………………………………………………103.1系统登录界面………………………………………………………………103.2主界面设计………………………………………………………………133.3功能界面………………………………………………………………223.3.1基本信息管理方面…………………………………………………223.3.2考勤信息管理方面…………………………………………………413.3.3统计查询模块方面…………………………………………………743.3.4系统用户管理方面…………………………………………………854程序使用说明……………………………………………………………88结束语……………………………………………………………89[参考文献]……………………………………………………………89致谢……………………………………………………………901绪论以前的数据处理主要用人工管理,工作量大,出错率高,出错后也不易更改。而本管理系统使用起来,效率高,速度快,也方便使用和修改。本系统是Windows2000XP操作系统下,以英文版VC++6.0为前台开发工具,用英文版的SQLserver2000为后台数据库来实现的。89
1.1开发背景考勤管理系统可以有效地管理企事业单位员工的出勤情况,规范人事制度管理,保证企事业单位的正常动作,是人事管理的重要组成部分。是现代企业管理的一个重要内容,随着时代的进步,企业考勤工作也逐渐变的复杂起来。如何管理好企业考勤工作员工的信息,成为企业考勤管理中的一个大问题。在这种情况下,一个可以规范化,自动化的考勤管理系统的开发与应用就显得非常必要。1.2管理信息系统的发展历史管理信息系统的概念起源很早。早在20世纪30年代,柏德就强调了决策在组织管理中的作用。50年代,西蒙提出了管理依赖于信息和决策的概念。同一时代维纳发表了控制论与管理,他把管理过程当成一个控制过程。50年代计算机已用于会计工作,1958年盖尔写道:管理将以较低的成本得到及时准确的信息,做到较好的控制。"这时数据处理一词已经出现。管理信息系统已经逐步成为一个独立的学科分支,它继承了其他众多学科的理论、方法与应用技术,它与信息科学、系统科学、控制理论、运筹学、会计学、统计学、经济学、管理科学、计算机科学有着十分密切的联系。同时,管理信息系统作为一种应用工具,又广泛地应用于工业、农业、交通、运输、文化、教育、卫生、体育以及各种社会经济活动的信息管理之中,并起着日益重要的作用,显示出强大的生命力。4系统的总体设计考勤管理是考勤管理中的一个重要内容,随着时代的进步,企业考勤工作也逐渐变得庞大起来。如何管理好企业内部后勤员工的信息,成为企业内部考勤管理中的一个大问题。在这种情况下,开发一个企业考勤管理系统就显得非常必要。本管理系统具有如下功能:基本信息的添加,修改,删除和查询,基本信息管理包括节假日日期设置,部门信息管理和员工信息管理。考勤信息管理包括出勤管理,加班管理和出差管理等功能,统计查询功能包括日考勤统计表,月考勤统计表和当日缺勤人员统计表等服务,基本上能够满足现代各企业对考勤管理的需要。4.1系统功能分析系统开发的总体任务是实现考勤89
信息管理的系统化、规范化和合理化。系统功能分析是在系统开发的总体任务的基础上实现的。因此考勤信息管理系统需要完成的功能主要有:a.基本信息管理功能1).员工信息管理:包括员工姓名,性别,生日,身份证号,办公电话,移动电话,所在部门等;2).部门信息管理:包括部门名称和部门功能描述等;3).节假日日期设置管理:包括具体的日期数据等;b.考勤信息管理主要功能1).出勤信息管理:包括全勤,休息,矿工,迟到和早退等信息;2).加班信息管理:包括员工信息,加班时间,加班类型和加班描述等;3).请假信息管理:包括员工信息,请假类型和请假原因等;4).出差信息管理:包括员工信息和出差原因等;c.统计查询模块主要功能1).日考勤统计表:包括员工姓名,考勤日期,是否全勤,是否出差,是否事假,是否病假,是否旷工,是否休息,是否迟到,是否早退和备注等信息,用户可以选择日期查看当日各员工的考勤信息;2).月考勤统计表:包括员工姓名,考勤月份,全勤天数,出差天数,事假天数,病假天数,旷工天数,休息天数,迟到天数,早退天数等信息;3).当日缺勤人员列表:包括系统当前日期缺勤员工的姓名,所在部门和联系电话等信息;d.系统管理1).用户信息管理:包括管理自身和普通用户的信息;2).修改用户密码:包括输入旧密码和新密码4.2系统功能模块设计对上述各项功能,按照结构化设计的要求,如图1系统功能模块图:89
4.3数据库设计设计数据库系统时应该首先充分了解用户各个方面的需求,包括现在有的以及将来可能要增加的需求。数据库的设计一般包括如下几个步骤:a.数据库需求分析b.数据库概念结构设计c.数据库逻辑结构设计4.3.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程.针对企业考勤管理系统的需求,通过对考勤管理工作的内容和数据流程分析,设计如下面的数据项和数据结构:登陆信息:包括的数据项有:用户名、密码、用户类别。考勤信息:出勤管理,加班管理和出差管理基本信息:节假日日期设置,部门信息管理和员工信息管理统计信息模块:日考勤统计表,月考勤统计表和当日缺勤人员统计表4.3.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体以及它们之间的关系,为后面的逻辑设计打下基础。根据上面列出的设计规划出的实体有:加班信息,节假日信息,员工信息,考勤信息,部门信息实体的描述,如下E-R所示:89
加班类型加班日期节假日日期加班日期节假日名称员工编号加班信息身份证号节假日信息生日记录编号性别员工信息记录编号姓名部门名称员工编号部门信息上级部门编号是否早退考勤日期部门功能部门名称考勤信息是否迟到是否事假是否休息是否病假是否出差是否全勤是否旷工图2系统E-R图89
4.3.3数据库逻辑结构设计现在需要将上面的数据库概念结构转化为数据库系统所支持的实际数据结构,也就是数据库的逻辑结构。考勤管理系统的数据库中数据表的设计包括6个表,他们分别是:节假日信息表,部门信息表,员工信息表,考勤信息表,加班信息表和用户信息表等。表1节假日信息表编号字段名称数据类型是否为空1记录编号int不可为空2节假日日期char10可为空3节假日名称varchar50可为空表2部门信息表编号字段名称数据类型是否为空1记录编号int不可为空2部门名称varchar50可为空3部门功能描述varchar250可为空4上级部门编号int可为空表3员工信息表编号字段名称数据类型是否为空1记录编号int不可为空2员工姓名varchar50可为空3性别char2可为空4生日varchar20可为空5身份证号varchar20可为空6办公电话varchar30可为空7移动电话varchar30可为空8到岗日期varchar20可为空9所在部门int可为空10工作岗位varchar40可为空11职务varchar20可为空12备注信息varchar200可为空表4考勤信息表编号字段名称数据类型是否为空1考勤日期char10可为空2员工编号int可为空3是否全勤char2可为空4是否出差char2可为空5是否病假char2可为空89
6是否事假char2可为空7是否旷工char2可为空8是否休息char2可为空9是否迟到char2可为空10是否早退char2可为空11备注信息char200可为空表5加班信息表编号字段名称数据类型是否为空1加班日期char10可为空2员工编号int可为空3加班时间smallint可为空4加班类型varchar50可为空5描述类型varchar200可为空表6用户信息表编号字段名称数据类型是否为空1用户名varchar20可为空2密码varchar30可为空3用户类型int可为空5系统详细设计建立好了数据库后,我们就将通过后考勤管理信息系统中各个功能模块的实现,来详细说明如何用VisualC++来编写数据库系统的客户端程序5.1系统登陆界面首先是系统登陆界面的设计,为了数据库的安全,用户类型有管理员和用户之分,主要功能是提供系统安全。根据登录类型的不同权限也有所不同,如图所示:其中代码如下:#include"stdafx.h"#include"CheckManage.h"#include"LoginDlg.h"89
#include"UserInfo.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CLoginDlgdialogCLoginDlg::CLoginDlg(CWnd*pParent/*=NULL*/):CDialog(CLoginDlg::IDD,pParent){//{{AFX_DATA_INIT(CLoginDlg)m_User=_T("");m_Passwd=_T("");//}}AFX_DATA_INITcount=0;}voidCLoginDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CLoginDlg)DDX_Text(pDX,IDC_USER_EDIT,m_User);DDX_Text(pDX,IDC_PASSWD_EDIT,m_Passwd);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CLoginDlg,CDialog)//{{AFX_MSG_MAP(CLoginDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CLoginDlgmessagehandlersvoidCLoginDlg::OnOK(){89
//将对话框中编辑框的数据读取到成员变量中UpdateData(TRUE);//没有输入用户名if(m_User==""){MessageBox("请输入用户名","信息提示");GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}//定义用户信息表变量CUserInfoUser;//判断用户是否存在if(!User.IsExistUser(m_User)){count++;if(count<3){MessageBox("用户名不存在,请重新输入!","用户名错误",MB_ICONINFORMATION);m_User="";m_Passwd="";UpdateData(FALSE);GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}else{MessageBox("重试次数已到,不能再输入用户名和密码,即将退出系统!","用户名错误",MB_ICONEXCLAMATION);exit(0);return;}}//判断密码是否正确User.GetInfo(m_User);if(User.Passwd!=m_Passwd){count++;if(count<3){89
MessageBox("用户名或密码错误,请重新输入!","用户名或密码错误",MB_ICONINFORMATION);m_User="";m_Passwd="";UpdateData(FALSE);GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}else{MessageBox("重试次数已到,不能再输入用户名和密码,即将退出系统!","用户名或密码错误",MB_ICONEXCLAMATION);exit(0);return;}}//关闭对话框CDialog::OnOK();}5.2主界面设计登录进入系统后,为了方便用户的操作性,主界面设计如下图所示:89
图-界面信息其中代码如下:#include"stdafx.h"#include"CheckManage.h"#include"CheckManageDlg.h"#include"LoginDlg.h"#include"HolidayManDlg.h"#include"DepManDlg.h"#include"EmpManDlg.h"#include"OnDutyManDlg.h"#include"OvertimeManDlg.h"#include"LeaveManDlg.h"#include"ErrandManDlg.h"#include"TimeSelDlg.h"#include"DepDlg.h"#include"AbsenceDlg.h"#include"UserManDlg.h"#include"PasswdDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILE89
staticcharTHIS_FILE[]=__FILE__;#endifexternCUserInfocurUser;///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public:CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP89
}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CCheckManageDlgdialogCCheckManageDlg::CCheckManageDlg(CWnd*pParent/*=NULL*/):CDialog(CCheckManageDlg::IDD,pParent){//{{AFX_DATA_INIT(CCheckManageDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCCheckManageDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCheckManageDlg)//NOTE:theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCheckManageDlg,CDialog)//{{AFX_MSG_MAP(CCheckManageDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND(IDR_HOLIDAY,OnHoliday)ON_COMMAND(IDR_USER,OnUser)ON_COMMAND(IDR_PASSWD,OnPasswd)ON_COMMAND(IDR_DEP,OnDep)ON_COMMAND(IDR_EMP,OnEmp)ON_COMMAND(IDR_EXIT,OnExit)ON_COMMAND(IDR_ON_DUTY,OnOnDuty)ON_COMMAND(IDR_OVERTIME,OnOvertime)89
ON_COMMAND(IDR_LEAVE,OnLeave)ON_COMMAND(IDR_ERRAND,OnErrand)ON_COMMAND(IDR_TIME_SEL,OnTimeSel)ON_COMMAND(IDR_DEP_SEL,OnDepSel)ON_COMMAND(IDR_ABSENCE,OnAbsence)ON_COMMAND(IDR_ENTER,OnEnter)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CCheckManageDlgmessagehandlersBOOLCCheckManageDlg::OnInitDialog(){CDialog::OnInitDialog();//Add"About..."menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication"smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:AddextrainitializationhereCLoginDlgdlg;//启动登陆窗体89
if(dlg.DoModal()!=IDOK)OnOK();else//读取用户信息到curUser对象中curUser.GetInfo(dlg.m_User);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCCheckManageDlg::OnSysCommand(UINTnID,LPARAMlParam){if((nID&0xFFF0)==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID,lParam);}}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCCheckManageDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;89
//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CDialog::OnPaint();}}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.HCURSORCCheckManageDlg::OnQueryDragIcon(){return(HCURSOR)m_hIcon;}//节假日日期设置voidCCheckManageDlg::OnHoliday(){//TODO:Addyourcommandhandlercodehereif(curUser.UserType!=1){MessageBox("你没有权限打开此对话框");return;}CHolidayManDlgdlg;dlg.DoModal();}//部门管理voidCCheckManageDlg::OnDep(){//TODO:AddyourcommandhandlercodehereCDepManDlgdlg;dlg.DoModal();}//员工管理voidCCheckManageDlg::OnEmp(){//TODO:AddyourcommandhandlercodehereCEmpManDlgdlg;dlg.DoModal();89
}//退出系统voidCCheckManageDlg::OnExit(){OnOK();}//出勤管理voidCCheckManageDlg::OnOnDuty(){//TODO:AddyourcommandhandlercodehereCOnDutyManDlgdlg;dlg.DoModal();}//加班管理voidCCheckManageDlg::OnOvertime(){//TODO:AddyourcommandhandlercodehereCOvertimeManDlgdlg;dlg.DoModal();}//请假管理voidCCheckManageDlg::OnLeave(){//TODO:AddyourcommandhandlercodehereCLeaveManDlgdlg;dlg.DoModal();}//出差管理voidCCheckManageDlg::OnErrand(){//TODO:AddyourcommandhandlercodehereCErrandManDlgdlg;dlg.DoModal();}//根据时间查询voidCCheckManageDlg::OnTimeSel(){//TODO:Addyourcommandhandlercodehere89
CTimeSelDlgdlg;dlg.DoModal();}//根据部门查询voidCCheckManageDlg::OnDepSel(){//TODO:AddyourcommandhandlercodehereCDepDlgdlg;dlg.DoModal();}//当日缺勤人员列表voidCCheckManageDlg::OnAbsence(){//TODO:AddyourcommandhandlercodehereCAbsenceDlgdlg;dlg.DoModal();}//用户管理voidCCheckManageDlg::OnUser(){//TODO:Addyourcommandhandlercodehereif(curUser.UserType!=1){MessageBox("你没有权限打开此对话框");return;}CUserManDlgdlg;dlg.DoModal();}//修改密码voidCCheckManageDlg::OnPasswd(){//TODO:AddyourcommandhandlercodehereCPasswdDlgdlg;dlg.m_user=curUser.UserName;dlg.DoModal();}//重新登录voidCCheckManageDlg::OnEnter()89
{//TODO:AddyourcommandhandlercodehereCLoginDlgdlg;if(dlg.DoModal()!=IDOK){OnOK();}else{//读取用户信息到curUser对象中curUser.GetInfo(dlg.m_User);}}5.3功能界面在前面的功能分析中考勤管理系统是由几大功能模块构成的,在主界面用户可根据需要选择相应功能,下面将一一介绍:5.3.1基本信息管理功能 其主要功能是节假日日期管理,部门管理和员工信息管理,其主要代码如下:图——节假日日期管理其代码如下:#include"stdafx.h"#include"CheckManage.h"89
#include"HolidayManDlg.h"#include"HolidayEditDlg.h"#include"HolidaySet.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CHolidayManDlgdialogCHolidayManDlg::CHolidayManDlg(CWnd*pParent/*=NULL*/):CDialog(CHolidayManDlg::IDD,pParent){//{{AFX_DATA_INIT(CHolidayManDlg)//}}AFX_DATA_INIT}voidCHolidayManDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CHolidayManDlg)DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CHolidayManDlg,CDialog)//{{AFX_MSG_MAP(CHolidayManDlg)ON_BN_CLICKED(IDC_ADD_BUTTON,OnAddButton)ON_BN_CLICKED(IDC_MODI_BUTTON,OnModiButton)ON_BN_CLICKED(IDC_DEL_BUTTON,OnDelButton)//}}AFX_MSG_MAPEND_MESSAGE_MAP()89
///////////////////////////////////////////////////////////////////////////////CHolidayManDlgmessagehandlers//初始化BOOLCHolidayManDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:AddextrainitializationhereRefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//更新数据voidCHolidayManDlg::RefreshData(){UpdateData(TRUE);//设置Select语句CStringcSource="SELECTId,HolidayDateAS节假日,HolidayNameAS名称""FROMHolidaySet";//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(130);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(130);}//添加按钮voidCHolidayManDlg::OnAddButton(){//TODO:Addyourcontrolnotificationhandlercodehere89
UpdateData(TRUE);//初始化HolidayEditDlg对话框中的变量CHolidayEditDlgdlg;dlg.cId="";dlg.cTime="";dlg.m_name="";dlg.m_time=CTime::GetCurrentTime();//打开HolidayEditDlg对话框if(dlg.DoModal()==IDOK)RefreshData();}//修改按钮voidCHolidayManDlg::OnModiButton(){//TODO:Addyourcontrolnotificationhandlercodehereif(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择要修改的记录");return;}//设置HolidayEditDlg对话框中的变量CHolidayEditDlgdlg;dlg.cId=m_Datagrid.GetItem(0);dlg.cTime=m_Datagrid.GetItem(1);CStringcYear=dlg.cTime.Left(4);CStringcMonth=dlg.cTime.Mid(5,2);CStringcDay=dlg.cTime.Right(2);dlg.m_time=CTime::CTime(atoi(cYear),atoi(cMonth),atoi(cDay),0,0,0);dlg.m_name=m_Datagrid.GetItem(2);//打开HolidayEditDlg对话框if(dlg.DoModal()==IDOK)RefreshData();}//删除按钮voidCHolidayManDlg::OnDelButton(){89
//TODO:Addyourcontrolnotificationhandlercodehereif(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择要删除的记录!");return;}if(MessageBox("是否删除当前记录?","请确认",MB_YESNO+MB_ICONQUESTION)==IDYES){//删除CHolidaySetcur;cur.SqlDelete(m_Datagrid.GetItem(0));RefreshData();}}图-部门信息管理其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"DepManDlg.h"#include"DepEditDlg.h"#include"DepInfo.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;89
#endifexternCUserInfocurUser;///////////////////////////////////////////////////////////////////////////////CDepManDlgdialogCDepManDlg::CDepManDlg(CWnd*pParent/*=NULL*/):CDialog(CDepManDlg::IDD,pParent){//{{AFX_DATA_INIT(CDepManDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT}voidCDepManDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDepManDlg)DDX_Control(pDX,IDC_TREE1,m_tree);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDepManDlg,CDialog)//{{AFX_MSG_MAP(CDepManDlg)ON_BN_CLICKED(IDC_ADD_BUTTON,OnAddButton)ON_BN_CLICKED(IDC_MODI_BUTTON,OnModiButton)ON_BN_CLICKED(IDC_DEL_BUTTON,OnDelButton)ON_NOTIFY(TVN_SELCHANGED,IDC_TREE1,OnSelchangedTree1)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CDepManDlgmessagehandlersBOOLCDepManDlg::OnInitDialog(){CDialog::OnInitDialog();89
//TODO:Addextrainitializationhere//权限控制,如果不是管理员则添加、修改和删除按钮置灰if(curUser.UserType!=1){GetDlgItem(IDC_ADD_BUTTON)->EnableWindow(FALSE);GetDlgItem(IDC_MODI_BUTTON)->EnableWindow(FALSE);GetDlgItem(IDC_DEL_BUTTON)->EnableWindow(FALSE);}//装入部门信息dep.LoadDep();//添加根节点m_treeImageList.Create(16,16,FALSE,1,0);//创建CImageList控件//装入ICON资源HICONhIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));m_treeImageList.Add(hIcon);//将ICON资源添加到CImageList控件中//将CImageList控件与Tree控件相关联m_tree.SetImageList(&m_treeImageList,LVSIL_NORMAL);m_root=m_tree.InsertItem("部门信息");//添加根节点//调用AddtoTree()函数,将所有部门信息添加到Tree控件中AddtoTree(m_root,0);m_tree.Expand(m_root,TVE_EXPAND);//展开根节点returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCDepManDlg::OnSelchangedTree1(NMHDR*pNMHDR,LRESULT*pResult){NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;//TODO:Addyourcontrolnotificationhandlercodehere*pResult=0;}voidCDepManDlg::AddtoTree(HTREEITEMm_node,intUpperId){//使用递归方法将部门添加到TreeView控件中inti;HTREEITEMm_child;89
//依次访问dep对象中的部门数组,查找满足条件的记录添加到Tree控件中for(i=0;iEnableWindow(FALSE);GetDlgItem(IDC_MODI_BUTTON)->EnableWindow(FALSE);GetDlgItem(IDC_DEL_BUTTON)->EnableWindow(FALSE);}//装入部门信息dep.LoadDep();//添加根节点m_treeImageList.Create(16,16,FALSE,1,0);//创建CImageList控件//装入ICON资源HICONhIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));m_treeImageList.Add(hIcon);//将ICON资源添加到CImageList控件中//将CImageList控件与Tree控件相关联m_tree.SetImageList(&m_treeImageList,LVSIL_NORMAL);m_root=m_tree.InsertItem("部门信息");//添加根节点//调用AddtoTree()函数,将所有部门信息添加到Tree控件中AddtoTree(m_root,0);m_tree.Expand(m_root,TVE_EXPAND);//展开根节点//选中根节点m_tree.SelectItem(m_root);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCEmpManDlg::RefreshData(){UpdateData(TRUE);//从Tree控件中读取部门编号信息intiDepId;HTREEITEMnode;node=m_tree.GetSelectedItem();iDepId=m_tree.GetItemData(node);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTEmpId,NameAS姓名,SexAS性别,""BirthdayAS生日,IdCardAS身份证号,OfficePhoneAS办公电话,"89
"MobileAS手机号码,HireDateAS到岗日期,MissionAS工作岗位,""DutyAS职务,MemoAS备注FROMEmpInfoe,DepInfod""WHEREe.DepId=d.DepId";//若选择的不是根节点if(m_tree.GetItemData(node)!=0)//不是根节点{//第2级节点if(m_tree.GetItemData(m_tree.GetParentItem(node))!=0){cSource+="ANDd.DepId="+cDepId;}//第1级节点else{cSource+="AND(d.UID="+cDepId+"ORd.DepId="+cDepId+")";}}//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(30);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(45);vIndex=long(4);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(75);vIndex=long(5);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(75);vIndex=long(6);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(75);vIndex=long(7);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(8);89
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(120);vIndex=long(9);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(45);vIndex=long(10);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);}voidCEmpManDlg::AddtoTree(HTREEITEMm_node,intUpperId){//使用递归方法将部门添加到TreeView控件中inti;HTREEITEMm_child;//依次访问dep对象中的部门数组,查找满足条件的记录添加到Tree控件中for(i=0;iEnableWindow(FALSE);m_checkdate=CheckDate;UpdateData(FALSE);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据voidCOnDutyEditDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTEmpIdAS员工编号,NameAS姓名""FROMEmpInfoWHEREDepId="+cDepId;if(EmpId!="")cSource+="ANDEmpId="+EmpId;//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}//选择部门89
voidCOnDutyEditDlg::OnSelDepButton(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//打开选择部门对话框CDepSelDlgdlg;dlg.DoModal();//从对话框中读取选择部门的信息iDepId=dlg.DepId;m_DepName=dlg.DepName;UpdateData(FALSE);//根据选择的部门信息,刷新表格数据RefreshData();}//全勤voidCOnDutyEditDlg::OnQuanQinRadio(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);m_chidao=false;m_zaotui=false;UpdateData(FALSE);}//休息voidCOnDutyEditDlg::OnXiuXiRadio(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);m_chidao=false;m_zaotui=false;UpdateData(FALSE);}//旷工voidCOnDutyEditDlg::OnKuangGongRadio(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);m_chidao=false;89
m_zaotui=false;UpdateData(FALSE);}//迟到voidCOnDutyEditDlg::OnChiDaoCheck(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);m_quanqin=-1;UpdateData(FALSE);}//早退voidCOnDutyEditDlg::OnZaoTuiCheck(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);m_quanqin=-1;UpdateData(FALSE);}voidCOnDutyEditDlg::OnOK(){//TODO:AddextravalidationhereUpdateData(TRUE);//是否选择人员if(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择人员");return;}//是否进行添加考勤状态if(m_quanqin==-1&&m_chidao==false&&m_zaotui==false){MessageBox("请选择出勤状态");return;}//赋值到CCheckInfo对象中CCheckInfocur;cur.CheckDate=CheckDate;89
cur.EmpId=atol(m_Datagrid.GetItem(0));switch(m_quanqin){case0:cur.QuanQin="是";cur.XiuXi="否";cur.KuangGong="否";cur.ChuChai="否";cur.BingJia="否";cur.ShiJia="否";break;case1:cur.QuanQin="否";cur.XiuXi="是";cur.KuangGong="否";cur.ChuChai="否";cur.BingJia="否";cur.ShiJia="否";break;case2:cur.QuanQin="否";cur.XiuXi="否";cur.KuangGong="是";cur.ChuChai="否";cur.BingJia="否";cur.ShiJia="否";break;default:cur.QuanQin="否";cur.XiuXi="否";cur.KuangGong="否";}if(m_chidao){cur.ChiDao="是";cur.ChuChai="否";cur.BingJia="否";cur.ShiJia="否";}elsecur.ChiDao="否";if(m_zaotui){cur.ZaoTui="是";89
cur.ChuChai="否";cur.BingJia="否";cur.ShiJia="否";}elsecur.ZaoTui="否";cur.Memo="";if(EmpId==""){//在添加时,若人员有出勤记录,则不允许添加if(cur.HaveEmp(CheckDate,m_Datagrid.GetItem(0))){MessageBox("已经有此员工的出勤信息,不能添加");return;}//插入记录cur.SqlInsert();}else{//修改CheckInfo表记录cur.UpdateOnDuty(cur.CheckDate,EmpId);}CDialog::OnOK();}89
图-加班管理#include"stdafx.h"#include"CheckManage.h"#include"OvertimeManDlg.h"#include"OvertimeEditDlg.h"#include"EmpInfo.h"#include"Overtime.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////COvertimeManDlgdialogCOvertimeManDlg::COvertimeManDlg(CWnd*pParent/*=NULL*/)89
:CDialog(COvertimeManDlg::IDD,pParent){//{{AFX_DATA_INIT(COvertimeManDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT}voidCOvertimeManDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(COvertimeManDlg)DDX_Control(pDX,IDC_TREE1,m_tree);DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COvertimeManDlg,CDialog)//{{AFX_MSG_MAP(COvertimeManDlg)ON_NOTIFY(TVN_SELCHANGED,IDC_TREE1,OnSelchangedTree1)ON_BN_CLICKED(IDC_ADD_BUTTON,OnAddButton)ON_BN_CLICKED(IDC_MODI_BUTTON,OnModiButton)ON_BN_CLICKED(IDC_DEL_BUTTON,OnDelButton)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////COvertimeManDlgmessagehandlersBOOLCOvertimeManDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationhere//装入部门信息dep.LoadDep();//添加根节点m_treeImageList.Create(16,16,FALSE,1,0);//创建CImageList控件//装入ICON资源HICONhIcon=::LoadIcon(AfxGetResourceHandle(),89
MAKEINTRESOURCE(IDI_ICON1));m_treeImageList.Add(hIcon);//将ICON资源添加到CImageList控件中//将CImageList控件与Tree控件相关联m_tree.SetImageList(&m_treeImageList,LVSIL_NORMAL);m_root=m_tree.InsertItem("部门信息");//添加根节点//调用AddtoTree()函数,将所有部门信息添加到Tree控件中AddtoTree(m_root,0);m_tree.Expand(m_root,TVE_EXPAND);//展开根节点//选中根节点m_tree.SelectItem(m_root);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCOvertimeManDlg::RefreshData(){UpdateData(TRUE);//从Tree控件中读取部门编号信息intiDepId;HTREEITEMnode;node=m_tree.GetSelectedItem();iDepId=m_tree.GetItemData(node);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTo.EmpIdAS员工编号,e.NameAS姓名,o.otDateAS加班日期,""o.otHourAS加班时数,o.otTypeAS加班类型,o.DescribesAS描述""FROMOvertimeo,EmpInfoe,DepInfod""WHEREo.EmpId=e.EmpIdANDe.DepId=d.DepId";//若选择的不是根节点if(m_tree.GetItemData(node)!=0)//不是根节点{//第2级节点if(m_tree.GetItemData(m_tree.GetParentItem(node))!=0){cSource+="ANDd.DepId="+cDepId;89
}//第1级节点else{cSource+="AND(d.UID="+cDepId+"ORd.DepId="+cDepId+")";}}//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(80);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(80);vIndex=long(5);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}voidCOvertimeManDlg::AddtoTree(HTREEITEMm_node,intUpperId){//使用递归方法将部门添加到TreeView控件中inti;HTREEITEMm_child;//依次访问dep对象中的部门数组,查找满足条件的记录添加到Tree控件中for(i=0;iEnableWindow(FALSE);m_checkdate=otDate;RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据voidCOvertimeEditDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTEmpIdAS员工编号,NameAS姓名""FROMEmpInfoWHEREDepId="+cDepId;if(EmpId!="")cSource+="ANDEmpId="+EmpId;//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}89
//选择部门voidCOvertimeEditDlg::OnSelDepButton(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//打开选择部门对话框CDepSelDlgdlg;dlg.DoModal();//从对话框中读取选择部门的信息iDepId=dlg.DepId;m_DepName=dlg.DepName;UpdateData(FALSE);//根据选择的部门信息,刷新表格数据RefreshData();}//确定按钮voidCOvertimeEditDlg::OnOK(){//TODO:AddextravalidationhereUpdateData(TRUE);//是否选择人员if(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择人员");return;}//是否进行添加考勤状态if(m_overtime==-1){MessageBox("请选择加班类型");return;}//赋值到COvertime对象中COvertimecur;cur.otDate=otDate;cur.EmpId=atol(m_Datagrid.GetItem(0));cur.otHour=m_hour;89
cur.Describes=m_describe;switch(m_overtime){case0:cur.otType="法定节假日加班";break;case1:cur.otType="周六日加班";break;case2:cur.otType="日常加班";break;}if(EmpId==""){//在添加时,若人员有加班记录,则不允许添加if(cur.HaveEmp(otDate,m_Datagrid.GetItem(0))){MessageBox("已经有此员工的加班信息,不能添加");return;}//插入记录cur.SqlInsert();}else{//修改CheckInfo表记录cur.SqlUpdate(cur.otDate,m_Datagrid.GetItem(0));}CDialog::OnOK();}89
图-出勤信息其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"OnDutyManDlg.h"#include"OnDutyEditDlg.h"#include"EmpInfo.h"#include"CheckInfo.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////COnDutyManDlgdialog89
COnDutyManDlg::COnDutyManDlg(CWnd*pParent/*=NULL*/):CDialog(COnDutyManDlg::IDD,pParent){//{{AFX_DATA_INIT(COnDutyManDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT}voidCOnDutyManDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(COnDutyManDlg)DDX_Control(pDX,IDC_TREE1,m_tree);DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(COnDutyManDlg,CDialog)//{{AFX_MSG_MAP(COnDutyManDlg)ON_NOTIFY(TVN_SELCHANGED,IDC_TREE1,OnSelchangedTree1)ON_BN_CLICKED(IDC_ADD_BUTTON,OnAddButton)ON_BN_CLICKED(IDC_MODI_BUTTON,OnModiButton)ON_BN_CLICKED(IDC_DEL_BUTTON,OnDelButton)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////COnDutyManDlgmessagehandlersBOOLCOnDutyManDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationhere//装入部门信息dep.LoadDep();//添加根节点89
m_treeImageList.Create(16,16,FALSE,1,0);//创建CImageList控件//装入ICON资源HICONhIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));m_treeImageList.Add(hIcon);//将ICON资源添加到CImageList控件中//将CImageList控件与Tree控件相关联m_tree.SetImageList(&m_treeImageList,LVSIL_NORMAL);m_root=m_tree.InsertItem("部门信息");//添加根节点//调用AddtoTree()函数,将所有部门信息添加到Tree控件中AddtoTree(m_root,0);m_tree.Expand(m_root,TVE_EXPAND);//展开根节点//选中根节点m_tree.SelectItem(m_root);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCOnDutyManDlg::RefreshData(){UpdateData(TRUE);//从Tree控件中读取部门编号信息intiDepId;HTREEITEMnode;node=m_tree.GetSelectedItem();iDepId=m_tree.GetItemData(node);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTc.EmpIdAS员工编号,e.NameAS姓名,c.CheckDateAS出勤日期,""c.QuanQinAS是否全勤,c.XiuXiAS是否休息,c.KuangGongAS是否旷工,""c.ChiDaoAS是否迟到,c.ZaoTuiAS是否早退FROMCheckInfoc,EmpInfoe,DepInfod""WHEREc.EmpId=e.EmpIdANDe.DepId=d.DepId";//若选择的不是根节点if(m_tree.GetItemData(node)!=0)//不是根节点{89
//第2级节点if(m_tree.GetItemData(m_tree.GetParentItem(node))!=0){cSource+="ANDd.DepId="+cDepId;}//第1级节点else{cSource+="AND(d.UID="+cDepId+"ORd.DepId="+cDepId+")";}}//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(80);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(5);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(6);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(7);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);}voidCOnDutyManDlg::AddtoTree(HTREEITEMm_node,intUpperId){//使用递归方法将部门添加到TreeView控件中inti;HTREEITEMm_child;89
//依次访问dep对象中的部门数组,查找满足条件的记录添加到Tree控件中for(i=0;iEnableWindow(FALSE);m_checkdate=CheckDate;RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据voidCLeaveEditDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTEmpIdAS员工编号,NameAS姓名""FROMEmpInfoWHEREDepId="+cDepId;if(EmpId!="")cSource+="ANDEmpId="+EmpId;//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);89
m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}//选择部门voidCLeaveEditDlg::OnSelDepButton(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//打开选择部门对话框CDepSelDlgdlg;dlg.DoModal();//从对话框中读取选择部门的信息iDepId=dlg.DepId;m_DepName=dlg.DepName;UpdateData(FALSE);//根据选择的部门信息,刷新表格数据RefreshData();}voidCLeaveEditDlg::OnOK(){//TODO:AddextravalidationhereUpdateData(TRUE);//是否选择人员if(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择人员");return;}//是否进行添加考勤状态if(m_shijia==-1){89
MessageBox("请选择出勤状态");return;}//赋值到CCheckInfo对象中CCheckInfocur;cur.CheckDate=CheckDate;cur.EmpId=atol(m_Datagrid.GetItem(0));switch(m_shijia){case0:cur.ShiJia="是";cur.BingJia="否";cur.QuanQin="否";cur.ChuChai="否";cur.KuangGong="否";cur.XiuXi="否";cur.ChiDao="否";cur.ZaoTui="否";break;case1:cur.ShiJia="否";cur.BingJia="是";cur.QuanQin="否";cur.ChuChai="否";cur.KuangGong="否";cur.XiuXi="否";cur.ChiDao="否";cur.ZaoTui="否";break;}cur.Memo=m_memo;if(EmpId==""){//在添加时,若人员有出勤记录,则不允许添加if(cur.HaveEmp(CheckDate,m_Datagrid.GetItem(0))){MessageBox("已经有此员工的出勤信息,不能添加");return;}//插入记录cur.SqlInsert();}89
else{//修改CheckInfo表记录cur.UpdateLeave(cur.CheckDate,EmpId);}CDialog::OnOK();}图-出差信息其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"ErrandEditDlg.h"#include"DepSelDlg.h"#include"CheckInfo.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif89
///////////////////////////////////////////////////////////////////////////////CErrandEditDlgdialogCErrandEditDlg::CErrandEditDlg(CWnd*pParent/*=NULL*/):CDialog(CErrandEditDlg::IDD,pParent){//{{AFX_DATA_INIT(CErrandEditDlg)m_DepName=_T("");m_memo=_T("");m_checkdate=_T("");//}}AFX_DATA_INIT}voidCErrandEditDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CErrandEditDlg)DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);DDX_Text(pDX,IDC_DEPNAME_STATIC,m_DepName);DDX_Text(pDX,IDC_MEMO_EDIT,m_memo);DDX_Text(pDX,IDC_CHECKDATE_STATIC,m_checkdate);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CErrandEditDlg,CDialog)//{{AFX_MSG_MAP(CErrandEditDlg)ON_BN_CLICKED(IDC_SEL_DEP_BUTTON,OnSelDepButton)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CErrandEditDlgmessagehandlersBOOLCErrandEditDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationhere89
//修改状态下不用选择部门信息if(EmpId!="")GetDlgItem(IDC_SEL_DEP_BUTTON)->EnableWindow(FALSE);m_checkdate=CheckDate;UpdateData(FALSE);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据voidCErrandEditDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcDepId;cDepId.Format("%d",iDepId);//设置SELECT语句CStringcSource="SELECTEmpIdAS员工编号,NameAS姓名""FROMEmpInfoWHEREDepId="+cDepId;if(EmpId!="")cSource+="ANDEmpId="+EmpId;//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(0);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}//选择部门voidCErrandEditDlg::OnSelDepButton(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//打开选择部门对话框89
CDepSelDlgdlg;dlg.DoModal();//从对话框中读取选择部门的信息iDepId=dlg.DepId;m_DepName=dlg.DepName;UpdateData(FALSE);//根据选择的部门信息,刷新表格数据RefreshData();}voidCErrandEditDlg::OnOK(){//TODO:AddextravalidationhereUpdateData(TRUE);//是否选择人员if(m_Adodc.GetRecordset().GetEof()){MessageBox("请选择人员");return;}//赋值到CCheckInfo对象中CCheckInfocur;cur.CheckDate=CheckDate;cur.EmpId=atol(m_Datagrid.GetItem(0));cur.ChuChai="是";cur.QuanQin="否";cur.BingJia="否";cur.ShiJia="否";cur.KuangGong="否";cur.XiuXi="否";cur.ChiDao="否";cur.ZaoTui="否";cur.Memo=m_memo;if(EmpId==""){//在添加时,若人员有出勤记录,则不允许添加if(cur.HaveEmp(CheckDate,m_Datagrid.GetItem(0))){MessageBox("已经有此员工的出勤信息,不能添加");89
return;}//插入记录cur.SqlInsert();}else{//修改CheckInfo表记录cur.UpdateErrand(cur.CheckDate,m_Datagrid.GetItem(0));}CDialog::OnOK();}5.3.3统计查询信息管理方面其主要功能包括:日考勤统计表,月考勤统计表和当日缺勤人员列表等,主要代码如下:图-按日查询其代码如下:#include"stdafx.h"#include"CheckManage.h"89
#include"TimeSelDlg.h"#include"CheckInfo.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CTimeSelDlgdialogCTimeSelDlg::CTimeSelDlg(CWnd*pParent/*=NULL*/):CDialog(CTimeSelDlg::IDD,pParent){//{{AFX_DATA_INIT(CTimeSelDlg)m_time=0;//}}AFX_DATA_INIT}voidCTimeSelDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTimeSelDlg)DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);DDX_DateTimeCtrl(pDX,IDC_DATETIMEPICKER1,m_time);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CTimeSelDlg,CDialog)//{{AFX_MSG_MAP(CTimeSelDlg)ON_BN_CLICKED(IDC_RESERCH_BUTTON,OnReserchButton)//}}AFX_MSG_MAPEND_MESSAGE_MAP()89
///////////////////////////////////////////////////////////////////////////////CTimeSelDlgmessagehandlersBOOLCTimeSelDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationherem_time=CTime::GetCurrentTime();UpdateData(FALSE);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCTimeSelDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcTime;cTime=m_time.Format("%Y-%m-%d");//设置SELECT语句CStringcSource="SELECTc.EmpIdAS员工编号,e.NameAS姓名,c.CheckDateAS出勤日期,""c.QuanQinAS是否全勤,c.ChuChaiAS是否出差,c.ShiJiaAS是否事假,""c.BingJiaAS是否病假,c.KuangGongAS是否旷工,c.XiuXiAS是否休息,""c.ChiDaoAS是否迟到,c.ZaoTuiAS是否早退,c.MemoAS备注""FROMCheckInfoc,EmpInfoeWHEREc.EmpId=e.EmpIdANDc.CheckDate=""+cTime+""";//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(1);89
m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(80);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(5);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(6);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(7);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(8);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(9);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(10);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(11);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(100);}//查询按钮voidCTimeSelDlg::OnReserchButton(){//TODO:AddyourcontrolnotificationhandlercodehereRefreshData();}89
图-按月查询其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"DepDlg.h"#include"DepSelDlg.h"#include"CheckInfo.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CDepDlgdialogCDepDlg::CDepDlg(CWnd*pParent/*=NULL*/):CDialog(CDepDlg::IDD,pParent){89
//{{AFX_DATA_INIT(CDepDlg)m_DepName=_T("");//}}AFX_DATA_INIT}voidCDepDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDepDlg)DDX_Control(pDX,IDC_MONTH_COMBO,m_month);DDX_Control(pDX,IDC_YEAR_COMBO,m_year);DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);DDX_Text(pDX,IDC_DEPNAME_STATIC,m_DepName);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CDepDlg,CDialog)//{{AFX_MSG_MAP(CDepDlg)ON_BN_CLICKED(IDC_SEL_DEP_BUTTON,OnSelDepButton)ON_CBN_SELCHANGE(IDC_YEAR_COMBO,OnSelchangeYearCombo)ON_CBN_SELCHANGE(IDC_MONTH_COMBO,OnSelchangeMonthCombo)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CDepDlgmessagehandlersBOOLCDepDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationhereinti;for(i=1980;i<=2050;i++){cYear.Format("%d",i);m_year.AddString(cYear);}m_year.SetCurSel(0);for(i=1;i<=9;i++)89
{cMonth.Format("%d",i);m_month.AddString("0"+cMonth);}for(i=10;i<=12;i++){cMonth.Format("%d",i);m_month.AddString(cMonth);}//设置为当前日期CTimet=CTime::GetCurrentTime();m_year.SetCurSel(t.GetYear()-1980);m_month.SetCurSel(t.GetMonth()-1);iDepId=-1;UpdateData(FALSE);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据voidCDepDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcStrCnd,cDepId;cDepId.Format("%d",iDepId);if(iDepId>0)cStrCnd="Andd.DepId="+cDepId;elsecStrCnd="";CStringcTime;//查询日期//得到年份和月份m_year.GetLBText(m_year.GetCurSel(),cYear);m_month.GetLBText(m_month.GetCurSel(),cMonth);//得到日期cTime=cYear+"-"+cMonth;//设置SELECT语句CStringcSource="SELECTe.NameAS姓名,""ISNULL(v1.CountQuanQin,0)AS全勤天数,ISNULL(v2.CountChuChai,0)AS出差天数,""ISNULL(v3.CountShiJia,0)AS事假天数,ISNULL(v4.CountBingJia,0)AS事假天数,"89
"ISNULL(v5.CountKuangGong,0)AS旷工天数,ISNULL(v6.CountXiuXi,0)AS休息天数,""ISNULL(v7.CountChiDao,0)AS迟到次数,ISNULL(v8.CountZaoTui,0)AS早退次数""FROMv_QuanQinv1,v_ChuChaiv2,v_ShiJiav3,v_BingJiav4,DepInfod,""v_KuangGongv5,v_XiuXiv6,v_ChiDaov7,v_ZaoTuiv8,EmpInfoe""WHEREe.EmpId*=v1.EmpIdANDe.EmpId*=v2.EmpIdAnde.DepId=d.DepId""ANDe.EmpId*=v3.EmpIdANDe.EmpId*=v4.EmpIdANDe.EmpId*=v5.EmpId""ANDe.EmpId*=v6.EmpIdANDe.EmpId*=v7.EmpIdANDe.EmpId*=v8.EmpId""ANDv1.CheckMonth=""+cTime+""ANDv2.CheckMonth=""+cTime+""ANDv3.CheckMonth=""+cTime+""ANDv4.CheckMonth=""+cTime+""ANDv5.CheckMonth=""+cTime+""ANDv6.CheckMonth=""+cTime+""ANDv7.CheckMonth=""+cTime+""ANDv8.CheckMonth=""+cTime+"""+cStrCnd;//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(80);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(4);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(5);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(6);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);vIndex=long(7);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);89
vIndex=long(8);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(60);}//选择部门voidCDepDlg::OnSelDepButton(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//打开选择部门对话框CDepSelDlgdlg;dlg.DoModal();//从对话框中读取选择部门的信息iDepId=dlg.DepId;m_DepName=dlg.DepName;UpdateData(FALSE);RefreshData();}voidCDepDlg::OnSelchangeYearCombo(){RefreshData();}voidCDepDlg::OnSelchangeMonthCombo(){RefreshData();}89
图-当日缺勤人员其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"AbsenceDlg.h"#include"HolidaySet.h"#include"COMDEF.H"#include"Columns.h"#include"Column.h"#include"_Recordset.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAbsenceDlgdialogCAbsenceDlg::CAbsenceDlg(CWnd*pParent/*=NULL*/):CDialog(CAbsenceDlg::IDD,pParent){//{{AFX_DATA_INIT(CAbsenceDlg)89
//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT}voidCAbsenceDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAbsenceDlg)DDX_Control(pDX,IDC_ADODC1,m_Adodc);DDX_Control(pDX,IDC_DATAGRID1,m_Datagrid);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAbsenceDlg,CDialog)//{{AFX_MSG_MAP(CAbsenceDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CAbsenceDlgmessagehandlersBOOLCAbsenceDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:AddextrainitializationhereCurrentTime=CTime::GetCurrentTime();CHolidaySetholiday;if(holiday.HaveHoliday(CurrentTime.Format("%Y-%m-%d"))){MessageBox("今天是节假日,无缺勤人员");}else{RefreshData();}returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//刷新数据89
voidCAbsenceDlg::RefreshData(){UpdateData(TRUE);//根据部门编号设置SELECT语句CStringcTime;cTime=CurrentTime.Format("%Y-%m-%d");//设置SELECT语句CStringcSource="SELECTe.EmpIdAS员工编号,e.NameAS姓名,d.DepNameAS部门名称,""e.MobileAS联系电话FROMDepInfod,EmpInfoe""WHEREe.DepId=d.DepIdANDe.EmpIdIN""(SELECTEmpIdFROMCheckInfoWHERE(ShiJia="是"ORBingJia="是"ORKuangGong="是")""ANDCheckDate=""+cTime+"")";//刷新ADOData控件的记录源m_Adodc.SetRecordSource(cSource);m_Adodc.Refresh();//设置列宽度_variant_tvIndex;vIndex=long(0);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(00);vIndex=long(1);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(130);vIndex=long(2);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(130);vIndex=long(3);m_Datagrid.GetColumns().GetItem(vIndex).SetWidth(140);}5.3.4系统用户管理方面其主要功能是系统管理,包括新用户的注册,旧用户的销户与改密,主要代码如下:89
图-用户信息其代码如下:#include"stdafx.h"#include"CheckManage.h"#include"UserEditDlg.h"#include"UserInfo.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CUserEditDlgdialogCUserEditDlg::CUserEditDlg(CWnd*pParent/*=NULL*/):CDialog(CUserEditDlg::IDD,pParent){//{{AFX_DATA_INIT(CUserEditDlg)m_user=_T("");m_confirm=_T("");m_passwd=_T("");//}}AFX_DATA_INIT}89
voidCUserEditDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CUserEditDlg)DDX_Control(pDX,IDC_TYPE_COMBO,m_type);DDX_Text(pDX,IDC_USER_EDIT,m_user);DDX_Text(pDX,IDC_CONFIRM_EDIT,m_confirm);DDX_Text(pDX,IDC_PASSWD_EDIT,m_passwd);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CUserEditDlg,CDialog)//{{AFX_MSG_MAP(CUserEditDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CUserEditDlgmessagehandlersBOOLCUserEditDlg::OnInitDialog(){CDialog::OnInitDialog();//TODO:Addextrainitializationhereif(cId==""){m_type.SetCurSel(1);}else{GetDlgItem(IDC_USER_EDIT)->EnableWindow(FALSE);GetDlgItem(IDC_PASSWD_EDIT)->EnableWindow(FALSE);GetDlgItem(IDC_CONFIRM_EDIT)->EnableWindow(FALSE);m_type.SetCurSel(iType-1);}returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}//确定按钮voidCUserEditDlg::OnOK(){89
//TODO:AddextravalidationhereUpdateData(TRUE);CUserInfocur;//用户名有效性操作if(cId==""){//密码一致性if(m_passwd!=m_confirm){MessageBox("请确认密码输入是否正确,请重新输入");m_passwd="";m_confirm="";UpdateData(FALSE);GetDlgItem(IDC_PASSWD_EDIT)->SetFocus();return;}//用户名为空if(m_user==""){MessageBox("请输入用户名");GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}//用户名是否存在if(cur.IsExistUser(m_user)){MessageBox("此用户名已经存在,请换个密码来注册");m_user="";UpdateData(FALSE);GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}}else{if(m_user=="admin"){MessageBox("此用户为默认用户,不能修改");m_user="";UpdateData(FALSE);GetDlgItem(IDC_USER_EDIT)->SetFocus();return;}89
}//给cur赋值cur.UserName=m_user;cur.Passwd=m_passwd;cur.UserType=m_type.GetCurSel()+1;//添加if(cId==""){cur.SqlInsert();}else{cur.SqlUpdate(m_user);}CDialog::OnOK();}以上主要是本系统的一些主要界面,其下还有很多功能模块,但由于篇幅原因,在这不作详细介绍,详见系统文件.6程序使用说明登陆初始密码:用户名:admin 密码:xbsoft用户类型:管理员用户名:yf 密码:xbsoft用户类型:普通用户结束语经过了几个月的学习和调试,在不断的摸索和思考中,以及指导老师的悉心指导下,这套基于VC的考勤89
管理系统已基本完成,预期功能已基本达到。从论文的开题到论文的完成,从对VC的空白到对VC具有一定的了解,从数据库知识的一知半解到基本掌握,一方面每一步都是新的挑战和尝试,新的困难和挫折,另一方面是每解决一个问题带来的喜悦和信心,在这期间,我学到了很多东西,不仅仅是学科知识上的,同时在面对困难和挫折时也颇有收获,每当我被一个问题困扰几天时,有时总想放弃这种功能,但却也想不到比这个更好的功能,这时我就不得不查阅资料,想尽一切方法去解决它,当我解决了时,才发现它是多么不值得一提,从中我得到一点小小的启示,不要认为一些事很难很难,只不过你没有深入思考。但是由于时间的关系,我的论文作品还很不成熟,还有很多不足之处,比如功能不够强大,数据库设计不够周全等多方面的问题有待进一步改善。【参考文献】[1]牛永鹏.数据库及其应用.[M].北京:经济科学出版社.2000年[2]刘云生.数据库系统概论.[M].北京:高等教育出版社.1999[3]郑阿奇.SQL实用教程.[M].北京:电子工业出版社.1999[4][英]Sommerville.软件工程.[M].北京:机械工业出版社.第二版.2003[5]曾庆伟.现代信息管理系统.[M].武汉:湖北科学技术出版社.第一版.2002[6]张海藩.软件工程导论.[M].北京:清华大学出版社.第二版.1998[7]苏选良.管理信息系统.[M].北京:电子工业出版社.2003「8」[美].JamesR.Groff,PaulN.Weinberg.SQL完全手册.[M].北京:电子工业出版社.第二版.2003「9」[美].DejanSunderic,TomWoodhead.SQLserver2000高级编程技术.[M].北京:清华大学出版社「10」郑莉.C++语言程序设计.[M].北京:清华大学出版社.第二版「11」张立科.VC++6.0MFC类库参考手则.北京.人民邮电出版社「12」官章全.标准C++库大全.北京.电子工业出版社.200289
89
89
您可能关注的文档
- 法学院学生考勤管理办法(修订)
- 腾讯科技(深圳)有限公司考勤管理规定
- 调试公司员工考勤管理办法
- 中控科技web考勤管理系统解决方案-2011
- 项目管理部考勤管理制度
- 基于vfp考勤管理系统论文
- 建驰贸易有限公司考勤管理系统设计与实现论文
- 考勤管理系统论文
- 企业考勤管理系统设计论文
- 基于vfp考勤管理系统设计论文
- 学生考勤管理系统的设计与实现论文
- 小型企业考勤管理系统 论文
- 考勤管理系统设计与实现论文
- 用人单位考勤管理在劳动管理中重要位置
- 毕业设计(论文)-基于c++的企业考勤管理系统的设计与开发
- 业员工考勤管理制度
- 效考核《某塑胶公司考勤管理制度》(doc 15页)
- 学生考勤管理系统课程设计报告1