您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C++期末论文

C++期末论文

来源:华佗小知识


滨江学院

面向对象程序设计

题 目 考勤管理系统

院 系 滨江学院理学系 专 业 信息与计算科学 学生姓名 岳珅 学 号 20122314035 指导教师 姜青山

二0 一四 年 十二 月 二十六 日

考勤管理系统

1.引言

我国中小企业信息化水平一直处在比较初级的阶段,有关统计表明,真正具备计算机信息化比较高应用水平的企业在全国1000多万中小企业中所占的比例还不足10%。然而,随着我国市场经济的不断成熟,企业的竞争也在不断的加剧,同时企业组织管理观念的变革以及业务流程标准化也在不断完善,中小企业信息化建设的热情近几年来有了显著的提高。因此开发一个高质量的考勤工资系统进行企业管理尤为重要。伴随着计算机技术在各行各业日益广泛和深入的应用,企业对员工的考勤管理不在像过去一样靠手工去做,在一些稍具规模的企事业单位内考勤也开始信息化。考勤规则的灵活定义,提供和多种考勤机的接口,并可以手工录入考勤记录。本系统就是为了适应这种要求而设计的。集信息的显示、输入、修改、删除、查询等各种处理为一体,信息维护起来非常方便。大大减少了公司的人力和物力,为公司的考勤以及工资的发放带来很大的便利。

2.需求分析

2.1 可行性分析

可行性分析的含义就是用最小的代价和尽可能少的时间来解决问题。而考勤管理系统正好实现了缩短时间、提高效率、减少财力的支出而完成任务的目的。

本系统采用C++语言实现了对数据的录入、修改、删除、查询、浏览、统计等功能的设计,从而实现了技术上的可行性。

在当今的信息时代,计算机已为日常办公所用,操作系统也为人们所熟悉。购买计算机所需费用也能够被人们所接受。只要一台电脑,一台打印机,这个系统就可以实现其功能。本系统可以减少工作人员的工作量,提高工作效率,而且操作方便。它有着简单、直观、安全、适用等优点,使企业的员工管理更上一层楼。

2.2 需求规定

该系统主要分为五大功能:系统管理、新增、修改、查询和系统维护。

员工信息管理功能模块包括新增员工的信息,修改员工信息,查询员工信息。该功能模块是对系统的初始化,对员工有基本信息进行管理和维护。考虑到单位人较多,设置了员工基本信息查询,操作人员可以按员工编号、姓名和部门进行查询,并对查询结果进行维护,从面减少了操作人员的工作强度。该模块的主要功能是对该单位的员工的基本信息进行管理,并能够对员工的基本信息进行查询,便于修改和删除。

- 1 -

3.软件总体设计

3.1 系统整体框架

本系统是实现对员工上下班时间的设定,员工出入单位情况的记录,请假、加班、出差情况的记录,还有每个月底进行整个月出勤情况的统计。考勤系统记录了员工上下班的情况,为工资管理直接提供每个月工作时间的统计结果,用以计算工资。同时考勤系统也需要其他系统提供的员工、部门信息。

3.2 基本模块介绍

员工考勤管理系统模块主要包括考勤管理、基本信息和考勤统计3个功能模块。

(1)基本信息:用于完成对员工基本信息资料的管理,包括对员工信息的添加,修改,删除等基本操作。或者用于查看员工的基本信息。还有工作时间的修改和默认。

(2)考勤统计:用于完成对员工的的各种信息的统计。统计出差时间,加班时间,缺勤时间和次数等。

(3)考勤管理:对员工考勤信息的进行记录和查询。出差,出勤,加班,缺勤情况是该功能的子功能,主要用于对员工的日常考勤的记录管理。

考勤管理系统 考勤管理基本信息考勤统计 加班记录请假记录出勤记录出差记录工作时间职工信息职员考勤统计搜索考勤记录

- 2 -

4.软件详细设计

4.1 登录窗体设计

登陆时,用户名有几个下拉的选择,可以选择用USER1或用USER2等,然后输入密码。密码正确,会出现“欢迎使用本系统”的提示。密码不正确时,会出现“没有该用户”的提示。若是没有输入用户名或密码,会出现“必须输入用户名和口令”提示。

4.2 系统主菜单窗体设计和退出窗体设计

主菜单窗体时,点哪一个命令,就会出现那个命令按钮的窗体。退出窗体相对来说就比较简单了。主要是提示用户是不是真的要退出,以防止用户不小心点了退出其余并不是想现在退出。 4.3职员信息窗体设计

职员信息主要是职员的信息进行添加、保存、修改、删除、查询。员工的信息主要包含工号、姓名、性别、年龄、部门、职位、备注。

单击职员信息窗体中的添加职员可进入员工信息的添加,添加成功会出现在职员列表的菜单中。如果操作错误,会弹出提示信息,指导操作人员的添加操作。还有一重要功能就是对员工信息的查询,这主要会在查询窗体中体现。 4.4出差记录窗体设计

出差记录窗体和出勤记录窗体,加班记录窗体,请假记录窗体一样,这里就不列举出来,用出差记录窗体代表,主要是对出差的的人员进行添加、保存、修改、删除。

4.5工作时间窗体设计

工作时间中的默认时间是一开始就设置的,而后的修改时间是自行输入的。

5.总结

本人结合企业管理人员对考勤信息的具体管理需求,开发了一套考勤管理系统。利用先进的计算机和网络技术对员工考勤信息进行管理,提高了工作管理人员的工作效率,减少了

- 3 -

人力资源的浪费。本系统经多次测试,能在Visual C++ 6.0的调试环境上正常运行,基本上实现了数据管理功能,目前试运行良好。

综上详细阐述了本系统的整个开发过程和实现功能,能够进行员工考勤信息录入、修改、查询、浏览、删除、统计等操作,整体界面美观大方,完成了工作人员对员工考勤管理工作的要求,适用于一系列的企业单位。本系统的应用,将会使员工和管理人员在第一时间内获得理想信息。

在设计时,由于时间和能力有限,还有部分的功能没有实现,希望以后能够慢慢地发现问题,改正问题,力求将系统做得越来越完美,实用。

六、参考文献

[1] 郑莉,董渊,何江舟.《C++语言程序设计》.清华大学出版社 2013-10

附件

源程序清单:

#include #include #include using namespace std;

//时间类

class time {public:

time(int y=0,int m=0,int d=0) {year=y;month=m;day=d;} ~time(){} protected:

int year,month,day; };

//信息类

class xinxi:public time { public:

xinxi(){ tiaoshu++;} ~xinxi(){tiaoshu--;}

void setname(char *n){strcpy(name,n);}

void settime(int y,int m,int d){year=y;month=m;day=d;}

- 4 -

void setqklx(char *qk){strcpy(queke,qk);} void setjieci(char *jc){strcpy(jieci,jc);}

void setkechen(char *kc){strcpy(kechen,kc);} char *getname(){char *n;n=name;return n;} char *getqklx(){char *qk=queke;return qk;} char *getjieci(){char *jc;jc=jieci;return jc;}

char *getkechen(){char *gk;gk=kechen;return gk;} int *gettime(); private:

char name[20];//姓名

char jieci[3],kechen[10],queke[10]; int tm[3];

static int tiaoshu; };

int xinxi::tiaoshu=0;

int *xinxi::gettime() { int *t; t=tm;

tm[0]=year; tm[1]=month; tm[2]=day; return t; }

//旷工工程类

class qkechen:public xinxi {public:

qkechen(){kcshu++;} ~qkechen(){kcshu--;}

int getrc(xinxi st1[],int n,int j); char qkn[20];//公有数据成员

private: int renci;

static int kcshu;//静态数据成员 };

int qkechen::kcshu=0;

int qkechen::getrc(xinxi st1[],int n,int j) { renci=0; renci++;

- 5 -

for(int i=0;iif(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)== *(st1[j].gettime()+2))

if(strcmp(qkn,st1[i].getkechen())==0) renci++; return renci; }

//旷工员工类

class qstu:public xinxi {public:

qstu(){qst++;} ~qstu(){qst--;}

void print(xinxi &st1);

int getjs(xinxi st1[],int n,int j); int setjs(int js=0) {jieshu=js;} char qstn[20]; private:

int jieshu;

static int qst; //静态数据成员 };

int qstu::qst=0;

//类的实现

void qstu::print(xinxi &st1) {

cout<<\"| 缺课日期 |\"<<\" 第几节课 |\"<<\" 课程名称 |\"<<\" 缺课类型|\"<cout<<\"|\"<<*st1.gettime()<<\"|\"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<\"|\"<<int qstu::getjs(xinxi st1[],int n,int j) { int i=0,js=0; xinxi min;

if(*(st1[j].getjieci()+2)!='\\0') js=+2; else js++;

- 6 -

for(i=0;iif(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2))

if(strcmp(st1[i+1].getname(),qstn)==0) { if(*(st1[i].getjieci()+2)!='\\0') js=+2; else js++; }

jieshu=js; return jieshu; }

// 函数声明

int shuru(xinxi st1[]);

void chaxun(xinxi st1[],qstu qt[]); void xiugai(xinxi st1[],int n);

void tongji1(xinxi st1[],qstu qt1[]); void tongji2(xinxi st1[],qkechen qk1[]); void caidan();

void xiansi(xinxi &st1);

void setqstn(xinxi st1[],qstu qt1[],int n); void setqkn(xinxi st1[],qkechen qk[],int n);

//全局变量

int g,k=1,b=1; int q=-1;

char name[20],kechen[10],queke[10],jieci[3]; int y,m,d;

//主函数 int main()

{ xinxi tl[15];//定义15条信息类对象 qstu qt[10]; qkechen qk[6]; int ch; while(1)

{cout<<\"********欢迎进入员工考勤管理系统!*********\"<cout<<\"--------请选择菜单项:\"<- 7 -

cin>>ch; switch(ch)

{case 1: g=shuru(tl); break; case 2: xiugai(tl,g); break; case 3: chaxun(tl,qt); break; case 4: tongji1(tl,qt); break; case 5: tongji2(tl,qk); break; case 6: exit(0); } }

return 0; }

//菜单函数

void caidan() { system(\"color A\");

cout<<\"*************************************************************\"<cout<<\"* 学生考勤管理系统 *\"<cout<<\"*************************************************************\"<cout<<\"4.--------统计某段时间内旷工员工姓名及旷课节数--------------*\"<//输入函数

int shuru(xinxi st1[]) { char a;

cout<<\"------输入开始!----\"<cout<<\"请输入员工姓名\"<>name;

st1[q].setname(name);

cout<<\"请输入工程名称\"<>kechen;

st1[q].setkechen(kechen);

cout<<\"请输入缺席日期\"<>y>>m>>d; st1[q].settime(y,m,d);

- 8 -

cout<<\"请输入缺席类型\"<>queke;

st1[q].setqklx(queke);

cout<<\"请输入缺席次数\"<>jieci;

st1[q].setjieci(jieci);

cout<<\"是否还要继续输入:(y/n)\"<>a;

}while(a=='y'); return q+1; }

// 查询函数

void chaxun(xinxi st1[],qstu qt[]) {

char n='y'; int u[10]; while(n=='y') { int j=0; cout<<\"输入你要查询的员工姓名:\"<>name; int i=0; for(;iif(strcmp(name,st1[i].getname())==0) { u[j]=i; j++; }

if(j==0) { cout<<\"没有你所要的员工名字!\";//没有找到 cout<<\"是否退出退出请按n\\n\"; cin>>n; } for(int a=0;acout<<\"| 旷工日期 |\"<<\" 具体时间 |\"<<\" 工程名称 |\"<<\" 旷工

类型|\"<cout<<\"| \"<<*st1[i].gettime()<<\"| \"<<*(st1[i].gettime()+1)<<\"|

\"<<*(st1[i].gettime()+2)<<\"| \"<<- 9 -

i=u[a]; if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)) qt[i].print(st1[i]); else

if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2))

qt[i].print(st1[i]);

else

if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1) qt[i].print(st1[i]); }

cout<<\"是否继续查询(y/n)继续请按y退出按n\"<>n; } } }

//统计某段时间内旷工员工姓名及缺席次数 void tongji1(xinxi st1[],qstu qt1[]) { int d1=0,js=0; xinxi min; if(g==0) cout<<\"没有你要统计的员工信息请返回菜单录入员工缺席信息\"<if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}

- 10 -

else

if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) d1++; }

for(int j=0;j<(g-d1);j++) {

cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<//统计某段时间内缺席的工程及缺席人次 void tongji2(xinxi st1[],qkechen qk1[]) { int d1=0,rc=0; xinxi min; if(g==0) cout<<\"没有你要统计的员工信息请返回菜单录入员工缺席信息\"<cout<<\"人数:\"<for(;iif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} else

- 11 -

if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2))

d1++; } for(int j=0;j<(g-d1);j++) {

cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<//显示函数

void xiansi(xinxi &st1)

{ cout<<\"| 缺席日期 |\"<<\" 具体时间 |\"<<\" 工程名称 |\"<<\" 员工姓名|\"<<\" 缺席类型|\"<cout<<\"|\"<<*(st1.gettime())<<\"|\"<<*(st1.gettime()+1)<<*(st1.gettime()+2)

<<\"|\"<//设置旷工员工名

void setqstn(xinxi st1[],qstu qt1[],int n) {

int i=0;

for(;istrcpy(qt1[0].qstn,st1[i].getname());

else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0) {strcpy(qt1[i].qstn,st1[i].getname()); k++; } } }

//设置有缺席员工的工程名

void setqkn(xinxi st1[],qkechen qk[],int n) {

int i=0; for(;istrcpy(qk[0].qkn,st1[i].getkechen());

else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0)

- 12 -

}

{strcpy(qk[i].qkn,st1[i+1].getkechen()); b++; } }

- 13 -

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

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务