您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > 西科大数据库课程设计VC考勤管理系统
数据库课程设计报告题目:考勤管理系统班级:计科学号:姓名:2013年12月摘要这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、VC++的控件、如何访问数据库等方面的知识。本系统采用了可视化的集成开发环境VisualC++6.0编辑用户操作界面、以SQLSever为后台数据库的考勤系统,考勤制度是每个企事业单位所必需的,计算机的出现使员工出勤情况的记录和统计工作变得十分简单。关键字:SQL数据库、SQL语言、VC++、考勤管理-1-1.系统设计1.1系统功能分析考勤管理系统的主要功能如下:上班时间的设定。上下班时间相对固定,可保存在客户端的设置文件中。员工出入单位的情况记录。出入情况主要由考勤机来记录,但是需要设置人工添加的功能,以备特殊情况的处理。请假、加班和出差情况的记录。1.2系统功能模块的设计图1-1系统功能模块图1.3与其他系统的关系考勤管理系统记录了员工上下班的情况,为工资管理系统直接提供每个月工作时间的统计结果,用以计算工资。同时考勤系统也需要其他系统提供的员工、部门等信息。1.4数据流程图系统流程图如图1-2所示,出勤的原始记录主要来源于考勤机,并且以固定格式保存在数据库中。考勤管理系统的任务是如何处理这些数据。考勤管理系统上下班时间设置工作情况记录考勤统计请假记录出差记录手工补计出勤加班记录-2-图1-2考勤管理系统数据流程图2.数据库设计2.1数据需求分析根据数据流程,可以列出以下管理系统所需的数据项和数据结构。出勤记录:记录号、员工、出入情况和出入时间,如图3-1所示。月度考勤统计:记录号、员工、年月、累计正常工作时间、累计请假时间、累计加班时间、累计出差时间、迟到次数、早退次数和旷工次数如图3-2所示。请假记录:记录号、员工、假期起始时间/结束时间和请假缘由,如图3-3所示。加班记录:记录号、员工、加班时间长度和日期,如图3-4所示。出差记录:记录号、员工、出差起始时间/结束时间和具体描述,如图3-5所示。所需的外部支持:人员信息:员工号、密码、权限、姓名、部门和当前状态等。部门设置:部门编号、名称等。图1-3ATTENDANCE出勤记录表员工记录出勤时间员工出勤记录请假、值班、出差记录上下班时间安排各种统计信息管理人员考勤员经理审批月度员工考勤统计表-3-图1-4ATTENDANCE_STAT月度考勤统计表图1-5LEAVE请假记录表图1-6OVERTIME加班记录表图1-7ERRAND出差记录表-4-2.2数据库概念结构设计考勤管理系统的E-R图如下:3.系统实现3.1系统开发环境软件:SQLSever2000,VC++6.0操作系统:Window73.2各个功能模块的创建3.2.1生成程序框架用AppWizard生成程序框架,加入数据库支持。在MFCAppWizard-Step1中选择Dialogbased选项,其余均采用缺省配置。3.2.2登陆认证对话框登陆窗口的封装类为CLoginDlg员工月度考勤统计记录编号年月累计工作时间累计请假时间累计加班时间累计出差时间迟到次数早退次数旷工次数请假记录记录编号起始时间结束时间缘由加班记录记录编号加班时间日期出勤记录记录编号出入状态出入时间员工号员工密码职权姓名所在部门…….记录编号起始时间结束时间具体描述-5-控件类型ID成员变量说明ComboBoxIDC_CMB_DSNm_strDSNODBC数据源EditBoxIDC_EDT_USERm_strUser用户名EditBoxIDC_EDT_PASSWDm_strPasswd密码ButtonIDOK无“登陆”按钮ButtonIDCANCEL无“取消”按钮为了改变标题“登陆人事管理系统”的字体大小,需要改变其ID为IDC_STATIC_LOGINTEXT(缺省为IDC_STATIC),为CAboutDlg类加入一个CFont类的成员函数m_font,然后在OnInitialDialog()函数中加入以下代码://改变登录人事管理系统字体大小LOGFONTLogFont;GetFont()-GetLogFont(&LogFont);LogFont.lfHeight+=LogFont.lfHeight/2;LogFont.lfWidth+=LogFont.lfWidth/2;m_font.CreateFontIndirect(&LogFont);GetDlgItem(IDC_STATIC_LOGINTEXT)-SetFont(&m_font);//如数据库为打开状态,则关闭if(db.IsOpen())db.Close();用户认证过程在“登陆”按钮的处理程序中:voidCLoginDlg::OnOK(){BOOLbLogin=FALSE;CStringstrPasswd,strCount;UpdateData();//更新数据变量if(!db.Open(m_strDSN))return;//连接数据库strPasswd=CCrypt::Encrypt(m_strPasswd,123);//加密密码CRecordsetrs(&db);//构造记录集rs.Open(CRecordset::forwardOnly,selectCOUNT(ID)asCOUNTfromPERSONwhereID='+m_strUser+'andPASSWD='+strPasswd+'andAUTHORITY='4');//执行查询-6-rs.GetFieldValue(COUNT,strCount);rs.Close();//关闭数据集if(strCount==1)//判断认证是否通过{EndDialog(IDOK);//结束对话框,返回IDOK}else{MessageBox(请确认用户名和密码,注意大小写!,认证失败);db.Close();//关闭数据库}}3.2.3主对话框窗口的设计主对话框控件列表控件类型ID成员变量说明StaticTextIDC_STATIC_HEAD无“考勤管理系统”静态文本ButtonIDC_BTN_CONFIG无“设置”按钮ButtonIDC_BTN_RECORD无“出勤记录”按钮ButtonIDC_BTN_STATISTICS无“统计”按钮ButtonIDC_BTN_RELOGIN无“重新登录”按钮ButtonIDC_BTN_EXIT无“退出”按钮在CAttendanceDlg中定义以下成员变量:public:CBrushm_brush;CStatDlg*m_pStatDlg;CAttDlg*m_pAttDlg;CFontm_font;}对话框初始化时需要改变标题字体大小,改变背景颜色等,因此在OnInitDialog()中加入以下代码:-7-//改变标题字体大小LOGFONTLogFont;GetFont()-GetLogFont(&LogFont);LogFont.lfHeight+=LogFont.lfHeight/2;LogFont.lfWidth+=LogFont.lfWidth/2;m_font.CreateFontIndirect(&LogFont);GetDlgItem(IDC_STATIC_HEAD)-SetFont(&m_font);//初始化对话框指针为空m_pAttDlg=NULL;m_pStatDlg=NULL;//创建背景画刷m_brush.CreateSolidBrush(RGB(0,255,255));对话框中5个按钮的功能主要就是显示相应的功能对话框。各按钮的BN_CLICKED事件的处理和退出代码如下:voidCAttendanceDlg::OnBtnExit(){EndDialog(IDCANCEL);//退出主对话框,关闭程序}voidCAttendanceDlg::OnBtnRelogin(){//隐藏主对话框ShowWindow(SW_HIDE);//显示登录对话框CLoginDlgdlg;if(dlg.DoModal()==IDOK){ShowWindow(SW_SHOW);//显示对话框}elseEndDialog(IDCANCEL);//退出程序}voidCAttendanceDlg::OnBtnConfig(){//显示工作时间设置对话框CWorkplanDlgdlg;dlg.DoModal();}voidCAttendanceDlg::OnBtnRecord(){//非模态显示出勤记录对话框-8-if(!m_pAttDlg)//指针为空,创建对话框{m_pAttDlg=newCAttDlg();m_pAttDlg-Create(IDD_DLG_ATTENDANCE,this);m_pAttDlg-ShowWindow(SW_SHOW);}else//对话框已创建m_pAttDlg-ShowWindow(SW_SHOW);//显示窗口}voidCAttendanceDlg::OnBtnStatistics(){//非模态显示考勤统计对话框if(!m_pStatDlg)//指针为空,创建对话框{m_pStatDlg=newCStatDlg();m_pStatDlg-Create(IDD_DLG_STAT,this);m_pStatDlg-ShowWindow(SW_SHOW);}else//对话框已创建m_pStatDlg-ShowWindow(SW_SHOW);//显示窗口}3.2.4上班时间设置对话框的创建设置对话框控件列表控件类型ID成员变量说明DateTimePickerIDC_WORKSTAT_DAETIMEPICKER1m_Time1上午上班时间DateTimePickerIDC_WORKSTAT_DAETIMEPICKER2m_Time2中午下班时间DateTimePickerIDC_WORKSTAT_DAETIMEPICKER3m_Time3下午上班时间DateTimePickerIDC_WORKSTAT_DAETIMEPICKER4m_Time4下午下班时间ButtonIDC_WORKPLAN_MODIFY无“修改”按钮ButtonIDC_WORKPLAN_RESET无“恢复默认设置”按钮“恢复默认设置”按钮的BN_CLICKED事件处理程序用于恢复原来的设置。这个函数也同时被OnInitDialog()函数引用,以实现初始化操作。-9-voidCWorkplanDlg::OnWorkplanReset(){CStringcstr[4];charstr[4][9];inti;intnHour,nMinute,nSecond;//时,分,秒CStringstrFileName=.\\workplan.ini;//INI文件名//读取INI文件GetPrivateProfileString(WorkPlan,Time1,08:00:00,str[0],9,strFileName);GetPrivateProfileString(WorkPlan,Time2,12:00:00,str[1],9,strFileName);GetPrivateProfileString(WorkPlan,Time3,14:00:00,str[2],9,strFileName);GetPrivateProfileString(WorkPlan,Time4,18:00:00,str[3],9,strFileName);for(i=0;i4;i++)cstr[i]=str[i];//定义四个时间变量并初始化为INI文件中的值sscanf(cstr[0].Left(2),%d,&nHour);//得到时sscanf(cstr[0].Mid(3,2),%d,&nMinute);//得到分sscanf(cstr[0].Mid(6,2),%d,&nSecond);//得到秒CTimet1(2002,1,1,nHour,nMinute,nSecond);//初始化t1sscanf(cstr[1
本文标题:西科大数据库课程设计VC考勤管理系统
链接地址:https://www.777doc.com/doc-940621 .html