搜索
您的当前位置:首页正文

职工考勤管理信息系统数据库课程设计设计

来源:意榕旅游网
数据库课程设计说明书

第一章 引言

1.1设计开发的意义

传统意义上的职工考勤管理都是采用原始的手工操作来完成的。人事部的管理人员或办公室人员要进行经常的繁琐的记录、修改、查询、统计等工作,不仅时间长、劳动强度大、工作效率低下,并且在这种管理模式下对职工的考勤信息不全且易造成混乱。

随着社会的进步,计算机科技的广泛应用,通过现代化的科学的方式对职工考勤信息进行管理已成为可能。基于此,我希望能通过开发这一管理系统,由计算机代替人工操作一系列职工基本信息的输入、修改、查询、统计等操作,既减轻了管理人员的工作强度,提高了工作效率,降低解企业的经营成本;同时,也对企业内部管理的科学化、规范化作出一点尝试。

1.2任务及目标

项目的提出者:天津理工大学计算机与通信工程学院课题开发组。 开发单位:08中加3-4班项目小组。

充分了解用户的需求,了解工作的流程,以及可能出现的问题。职工考勤信息管理系统中首先必须设置好职工基本信息,职工基本信息在本系统占据着很重要的地位。在对职工的出差、出勤、加班、请假这些信息管理的时候都需通过职工基本信息进行操作。本系统结合实际的职工考勤管理制度,经过实际的需求分析,采用功能强大的Visual Basic6.0作为开发工具而开发出来的职工考勤信息管理系统。职工考勤管理信息系统的具体功能包括:职工基本信息实体,职工出勤信息实体,管理员管理系统信息实体。

主要功能:管理员功能:签到,增加职工及职工信息,增加登录用户,设置用户权限,查看职工出勤信息,修改职工出勤信息。 签到用户功能:签到。

灵活性:本软件对变更的适应性较强,采用人工手动输入与系统自动输入相结合的形式,数据库文件可以单独转移到其他地方使用,可以保证数据的安全和高兼容性,当系统改变时可以自动调整精度与安全性

1.3开发环境

操作系统:windows 7

编译环境:使用Visual Studio 2010来进行系统汇编

使用Access 2007进行数据库管理

1

数据库课程设计说明书

第二章 系统分析与设计

2.1系统需求分析

2.1.1 处理需求

根据职工签到特性,设计了以下功能:

管理员功能:签到,增加职工及职工信息,增加登录用户,设置用户权限,查看职工出勤信息,修改职工出勤信息。

用户功能:职工签到。

一些基本的功能通常是必须具备的,如用户的管理与维护,基本数据的维护,灵活的信息查询等。

2.1.2信息需求

本系统需要的信息:

签到用户信息:职工姓名,职工编号等。

2.2数据库概念结构设计

职工信息表

签到表 职工 职工姓名 职工编号

签到状况 签到信息 签到职工 签到时间 管理员:

职工编号 2

数据库课程设计说明书

登录名 登录名 管理员 密码

2.3数据库逻辑结构设计

2.4数据库创建

签到信息表

3

数据库课程设计说明书

签到时间设置表

签到职工信息表

管理员信息表

2.5系统结构设计

2.5.1 功能图

2.5.2 模块图

职工信息E-R图

4

数据库课程设计说明书

职工签到表E-R图

管理员E-R图

第三章 系统开发及实现

3.1论述设计开发采用的技术及设计效果

5

数据库课程设计说明书

3.1.1登陆界面 实现用户输入用户名密码,当输入完成后,连接数据库查看数据库中管理

员表中的数据,当正确的时候返回登录成功。

实现代码

CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate(

CdlgLogOn dlg; int ret = dlg.DoModal(); if (ret == IDSUPER) { }

if (ret == IDCHECK){

}

isSuper = FALSE; isSuper = TRUE; IDR_MAINFRAME,

RUNTIME_CLASS(CCheckInDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CCheckInView));

AddDocTemplate(pDocTemplate);

3.1.2签到用户 实当以签到用户登录,则不能进行查询/修改、系统维护。

6

数据库课程设计说明书

职工签到界面

输入正确职工编码,提示签到成功

输入错误时提示不正确,重新输入

3.1.3管理员用户 增加职工,管理出勤,增加登录用户等功能

7

数据库课程设计说明书

增加、删除、修改职工信息

当职工编号存在,提示已经存在

实现代码

CUserRecordset rsUser;

if (rsUser.IsRepeatUser(this->m_strUserName)){ } else { }

pEditName->SetWindowText(\"\");

8

MessageBox(\"此用户已经存在!\提示\

CString strAuthority;

this->m_AuthorityCombo.GetWindowText(strAuthority);

if (rsUser.AddUser(this->m_strUserName,this->m_strPass1,strAuthority)){ } else

MessageBox(\"增加失败!\提示\MessageBox(\"增加成功!\提示his->UpdateUserListBox();

数据库课程设计说明书

pEditPass->SetWindowText(\"\"); pEditName->SetFocus(); }

当删除员工时,同时删除签到记录 实现代码

void CCheckRecordset::DeleteEmpCheck(CString EmployId){ } }

增加登录用户(设置用户权限)

if (!IsOpen())

Open(CRecordset::dynaset,_T(\"select * from tbCheckIn where EmployeeID

='\"+EmployId+\"'\"));

if(!IsBOF()){ }

MoveFirst(); while(!IsEOF()){ this->Delete(); MoveNext();

实现代码

void CdlgUser::OnButtonAdd() {

CEdit *pEditName = (CEdit*)this->GetDlgItem(IDC_EDIT_USERNAME); CEdit *pEditPass = (CEdit*)this->GetDlgItem(IDC_EDIT_PASSWORD1);

UpdateData(true);

if (this->m_strUserName == \"\"){

MessageBox(\"必须输入用户名!\提示\pEditName->SetFocus();

9

数据库课程设计说明书

return; }

if (this->m_AuthorityCombo.GetCurSel() == CB_ERR ){

MessageBox(\"必须选择用户权限!\提示\

MB_ICONINFORMATION|MB_OK);

pEditName->SetFocus(); return; }

CUserRecordset rsUser;

if (rsUser.IsRepeatUser(this->m_strUserName)){ } else { }

pEditName->SetWindowText(\"\"); pEditPass->SetWindowText(\"\"); pEditName->SetFocus(); }

void CdlgUser::OnSelchangeListUser() {

int iSel = this->m_ListBox.GetCurSel(); if (iSel!=0){ } }

10

MessageBox(\"此用户已经存在!\提示\

CString strAuthority;

this->m_AuthorityCombo.GetWindowText(strAuthority);

if (rsUser.AddUser(this->m_strUserName,this->m_strPass1,strAuthority)){ } else

MessageBox(\"增加失败!\提示\MessageBox(\"增加成功!\提示his->UpdateUserListBox();

CButton *pDelBtn = (CButton*)this->GetDlgItem(IDC_BUTTON_DELETE); pDelBtn->EnableWindow(true);

数据库课程设计说明书

void CdlgUser::OnButtonDelete() {

int iSel = this->m_ListBox.GetCurSel(); if (iSel == LB_ERR){ } else {

MessageBox(\"请选择要删除的用户!\提示\

MB_ICONINFORMATION|MB_OK);

if (MessageBox(\"真的要删除这个用户吗?(Y/N)\提示\

return;

CUserRecordset rsUser; CString strTmp;

else {

this->m_ListBox.GetText(iSel,strTmp); CString SelUserName; CString tmp; for(int i=0;;i++){ }

SelUserName = strTmp.Mid(0,i); BOOL bFind = FALSE; if (!rsUser.IsOpen()) } if (bFind) {

11

tmp = strTmp.Mid(i,1); if (tmp == \" \") break;

rsUser.Open(); rsUser.MoveFirst();

if (rsUser.m_UserName== SelUserName ){ }

bFind = TRUE; break;

if(!rsUser.IsBOF()) while(!rsUser.IsEOF()){

rsUser.MoveNext();

数据库课程设计说明书

} }

}

}

rsUser.Delete(); rsUser.Close();

this->m_ListBox.DeleteString(iSel);

else { }

MessageBox(\"找不到符合条件的用户!\提示\

MB_ICONINFORMATION|MB_OK);

设置上班时间及浮动时间

实现代码

void CdlgConfigSet::OnConfirm() {

CEdit *pHourEdit = (CEdit*)this->GetDlgItem(IDC_EDIT_HOUR); CEdit *pMinuteEdit = (CEdit*)this->GetDlgItem(IDC_EDIT_MINUTE); CEdit *pDeltaEdit = (CEdit*)this->GetDlgItem(IDC_EDIT_DELTA); this->UpdateData(true);

if ((m_iHour>24) || (m_iHour<0) || (m_iMinute >60) ||(m_iMinute< 0)){ }

CConfigRecordset rsConfig;

if (!(rsConfig.AddConfigToTable(this->m_iHour,this->m_iMinute,this->m_iDelta))){

12

MessageBox (\"设置不合法!\提示\pHourEdit->SetWindowText(\"\"); pMinuteEdit->SetWindowText(\"\"); pDeltaEdit->SetWindowText(\"\"); pHourEdit->SetFocus();

数据库课程设计说明书

}

MessageBox (\"设置失败!\提示\pHourEdit->SetWindowText(\"\"); pMinuteEdit->SetWindowText(\"\"); pDeltaEdit->SetWindowText(\"\"); pHourEdit->SetFocus();

else{ } }

查询职工出勤

CDialog::OnOK();

实现代码

void CdlgEditCheck::OnSee() {

if ((strY == \"\") && (strM == \"\")&&(strD == \"\")){

13

this->UpdateData(true);

CEdit *pEditYear,*pEditMonth,*pEditDay;

pEditYear = (CEdit*)this->GetDlgItem(IDC_EDIT_YEAR); pEditMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_MONTH); pEditDay = (CEdit*)this->GetDlgItem(IDC_EDIT_DAY); CString strY,strM,strD;

pEditYear->GetWindowText(strY); pEditMonth->GetWindowText(strM); pEditDay->GetWindowText(strD);

数据库课程设计说明书

}

MessageBox(\"日期必须输入!\提示\ return;

char year[10],month[10],day[10]; sprintf(year,\"%d\sprintf(month,\"%d\sprintf(day,\"%d\if (this->m_strEmpId==\"\"){ }

CCheckRecordset rsCheck; CEmployeeRecordset rsEmployee; try{

if(rsCheck.IsOpen()){ }

rsCheck.Close();

MessageBox(\"必须输入员工号!\提示\return;

rsCheck.Open(CRecordset::dynaset,_T(\"select * from tbCheckIn where EmployeeID =

'\"+this->m_strEmpId+\"'\")); catch(CDBException &e){ } }

MessageBox(e.m_strError,\"提示\

BOOL CdlgEditCheck::OnInitDialog() { CDialog::OnInitDialog();

this->m_CheckList.AddString(\"员工号 员工姓名 签到时间 结果\"); return TRUE; }

修改职工出勤

14

数据库课程设计说明书

第四章 总结

这次课程设计学校安排了几周时间让我们完成,我们选择了职工考勤信息系统的课题,并从图书管借了数据库程序设计和C++设计的资料书,对课程设计中会遇到的问题提前做了些准备,并到网上也找相关的系统的代码看了下,对这个系统有了一定的全局观,完成了初步的需求分析。稍作细化后,便开始设计数据库。而后做了界面设计,完成了程序大部分的主要界面。

而在编码方面,我从系统的功能、规模和实用方面考虑,采用C++技术。在数据库设计时,细致的考虑到了用户的全部需求,并用了大量的时间进行了信息的收集建立了比较完善的信息表,编码阶段,在设计接近完成的时候,我对部分代码做了优化,将一些重复工作加以封装调节;将批处理操作改为以事务方式处理。

这次课程设计,我更加深入的了解到软件工程的复杂性,以及前期规划分析的重要性。而且如果系统再稍微大型一些,以一人之力也难以完成。以后的学习中应该学习一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。

在编程中遇到了很多困难,通过不懈的努力,在网上查找资料,借阅资料,终于完成了!我发自内心的高兴。我赶到编程设计真的很辛苦,一个程序,哪怕只有一个小小的拼写错误,都不能成功运行,当写完程序测试时,心里都是在打鼓,怕出现错误,一次次的测试,一次次的更改,终于成功了!我感到十分的自豪!

通过这次的数据库课程,我学会了在制作程序时应仔细谨慎,因为细小的错误都会导致程序的失败。另外老师还教会了我们,在制作一个系统时,要有自己的思想,使自己制作的程序能锦上添花,做出属于自己的东西。我也会在以后的生活学习中尽量完善自己的工作,使自己做的更好!

15

数据库课程设计说明书

第五章 参考文献

《C++ Preimer》 中文版 第四版 人民邮电出版社

《Access数据库开发实例解析》 机械工业出版社 李俊民、高春燕等 《Visual C++工程应用与项目实践》 机械工业出版社 张雨、阮伟良等 《Visual C++ 从入门到精通》 第二版 清华大学出版社 《Visual C++ 管理信息系统完整项目实例剖析》

16

人民邮电出版社

因篇幅问题不能全部显示,请点此查看更多更全内容

Top