c++考勤管理课程设计报告

时间:2024.5.9

附件6:

北京理工大学珠海学院

课程设计说明书

_2011—_2012学年第_ 1_学期

题目: 考勤统计程序

学 院: 计算机学院

专业班级: 10数字媒体技术3班 学 号:100204031007

学生姓名: 罗威豪

指导教师: 夏力前

成 绩:

时 间: 2011-12-21

20xx年12月21日

北京理工大学珠海学院计算机学院课程设计

考勤统计程序

摘 要

学生考勤管理程序是作为学校考勤的基本管理,是学校对学生考勤管理的基本依据。开发考勤管理系统,正是完善学校信息化管理的重要环节。人工考勤已经很难满足学校规范化管理的要求,面对庞大的信息量,该放手现在存在很多弊病。因此,简历现代化的只能考情管理系统势在必行。这样也大大减轻了考勤工作人员的工作量,提高了工作效率,使原本复杂和鼓噪无味的工作变得简单而轻松。

本文以“考勤信息管理系统”的设计与实现为例,阐述了考勤系统的设计开发的全过程。该系统侧重于学生信息管理和学生考勤信息的登记与查询。本系统使用的开发工具是vc++开发程序,通过已编制好的程序,完成对学生信息的输入、输出、插入、修改、删除操作,以及学生迟到、早退、旷课考勤信息的登记和查询,完善学校管理现代化,方便管理人员统计,考勤学生出勤情况,方便学生管理部门查询,考核学生的出勤率,准确地掌握学生出勤情况和相关资料,有效管理、掌握学生各项情况。

关键词:考勤管理 visualC++ 文件保存 查询 统计

I

北京理工大学珠海学院计算机学院课程设计

目 录

1需求分析 ....................................................................................................................... 1

1.1问题描述 ............................................................................................................ 1

1.1.1基本要求 ......................................................................................................... 1

2概要分析 ....................................................................................................................... 2

2.1数据需求 ............................................................................................................ 2

2.1.1程序模块及之间的调用关系 ............................................................................. 2

3 详细设计 .................................................................................................................... 3

3.1类的设计 ............................................................................................................ 3

3.2学生考勤系统的显示模块 .................................................................................... 3

3.3学生考勤系统的查询模块 .................................................................................... 4

3.4学生考勤系统的修改模块 .................................................................................... 4

3.5学生考勤系统的删除模块 .................................................................................... 6

3.6学生考勤系统的录入模块 .................................................................................... 6

3.7学生管理系统的统计模块 .................................................................................... 8

4程序测试 ..................................................................................................................... 10

5参考文献 ..................................................................................................................... 13

心得 体会 .................................................................................................................... 14

教师 评语 .................................................................................................................... 15

III

北京理工大学珠海学院计算机学院课程设计

1需求分析

1.1问题描述

考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及 旷课)。试设计考勤管理系统,使之能提供以下功能:

1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时 可将数据存储在文件中,利用输入重定向功能读入),输入格式为:

缺课日期第几节课 课程名称学生姓名 缺课类型

每行一条纪录。

例如:

080429 4 C++程序设计实验 张三 迟到

080428 4 C++程序设计 李四 旷课

2).修改某个学生的缺课记录。

3).查询某个学生的缺课情况。

4). 某段时间内旷课情况的统计。

1.1.1基本要求

统要实现的是学生考勤管理系统,在设计时应该使系统便于考勤管理员、学生操作,系统应有的基本功能如下:

(1)、学生考勤管理相关信息的管理功能;

(2)、统计功能;

(3)、查询功能;

(4)、文件保存功能;

1

北京理工大学珠海学院计算机学院课程设计

2概要分析

2.1数据需求

本系统主要涉及的数据有学生缺课信息类和有关信息排序类:学生缺课信息包括缺课时间、学生姓名、课程名称、第几节、学生缺课类型(迟到、早退、旷课、请假)。有关信息排序类包括对课程排序和对姓名排序。

2.1.1程序模块及之间的调用关系

c考勤管理课程设计报告

图2.1 学生考勤管理系统中菜单函数的功能图

2

北京理工大学珠海学院计算机学院课程设计

3 详细设计

3.1类的设计

此系统设计了两个类,一个是record类,一个是records类。Record类完成对学生基本信息的声明与获取,包括学生姓名、缺课日期、缺课课程名称、缺课课程类型、缺课节次。

Record类的设计

class record

{

public:

void set(string d,int cno,string c,string s,int type)

{

date.assign(d);//缺课日期

cname.assign(c);//缺课课程名称

sname.assign(s);//学生姓名

this->cno=cno;//缺课节次

this->type=type;//缺课类型

}

void set(record re)

{

date.assign(re.date);//获取缺课日期

cname.assign(re.cname);//获取缺课课程名称

sname.assign(re.sname);//获取学生姓名

this->cno=re.cno;//获取缺课节次

this->type=re.type;//获取缺课类型

}

string date,cname,sname;//定义日期,课程名称,学生姓名

int cno,type;//定义缺课节次,缺课类型

};

3.2学生考勤系统的显示模块

void pri(records *r)//函数

{if(r->n==0)

{cout<<"记录为空!"<<endl;return;

}

3

北京理工大学珠海学院计算机学院课程设计

} cout<<"\n序号\t缺课日期 节次\t课程名称\t学生姓名\t缺课"<<endl; for(int i=0;i<r->n;i++) {cout<<i<<"\t"<<flush;prione(r->r[i]); }

3.3学生考勤系统的查询模块

void pri(records *r)//函数

{

if(r->n==0)

{

cout<<"记录为空!"<<endl;

return;

}

cout<<"\n序号\t缺课日期 节次\t课程名称\t学生姓名\t缺课类型"<<endl;

for(int i=0;i<r->n;i++)

{

cout<<i<<"\t"<<flush;

prione(r->r[i]);

}

}

3.4学生考勤系统的修改模块

void edt(records *r)//函数

{

if(r->n==0)

{

cout<<"记录为空!"<<endl;

return;

}

cout<<"请输入要修改缺课记录的学生姓名: "<<flush;

string t1,t3,t4;

char tmp[30];

int t2,t5,flag=0;

cin>>tmp;

t1.assign(tmp);

for(int i=0;i<r->n;i++)

if(r->r[i].sname==t1)

{

flag=7;

4

北京理工大学珠海学院计算机学院课程设计

break;

}

if(!flag)

{

cout<<"查无此学生!"<<endl;

return;

}

t1=r->r[i].date;

t2=r->r[i].cno;

t3=r->r[i].cname;

t4=r->r[i].sname;

t5=r->r[i].type;

cout<<"请输入要修改的项目:\n(1.缺课日期 2.缺课节次 3.缺课名称 4.学生姓名 5.缺课类型 6.全部) "<<flush;

e0:

cin>>flag;

switch(flag)

{

case 1:goto e1;

case 2:goto e2;

case 3:goto e3;

case 4:goto e4;

case 5:goto e5;

case 6:goto e1;

default:goto e0;

}

e1:

cout<<"请输入缺课日期: (例如100216) "<<flush;

cin>>t1;

if(flag!=6)goto e6;

e2:

cout<<"请输入缺第几节课: "<<flush;

cin>>t2;

if(flag!=6)goto e6;

e3:

cout<<"请输入缺课名称: "<<flush;

cin>>t3;

if(flag!=6)goto e6;

e4:

cout<<"请输入缺课学生姓名: "<<flush;

cin>>t4;

if(flag!=6)goto e6;

e5:

cout<<"请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) "<<flush;

5

北京理工大学珠海学院计算机学院课程设计

cin>>t5;

e6:

r->r[i].set(t1,t2,t3,t4,t5);

char yn;

cout<<"保存修改? (y/n) "<<flush;

cin>>yn;

if(yn=='y')wt(r);

else return;}

3.5学生考勤系统的删除模块

void del(records *r)//函数

{

if(r->n==0)

{

cout<<"记录为空!"<<endl;

return;

}

cout<<"请输入要删除的记录的序号: (输入-1删除全部) "<<flush; int flag;

cin>>flag;

if(flag>r->n-1&&flag<-1)

{

cout<<"不存在所要删除的记录!"<<endl;

return;

}

else if(flag==-1)r->n=0;

else

{

for(int i=flag;i<r->n-1;i++)

r->r[i].set(r->r[i+1]);

r->n--;

}

char yn;

cout<<"保存修改? (y/n) "<<flush;

cin>>yn;

if(yn=='y')wt(r);

else return;

}

3.6学生考勤系统的录入模块

void input(records *r)//录入

6

北京理工大学珠海学院计算机学院课程设计

{

string t1,t3,t4;

int t2,t5,flag=0;

char yn;

cout<<"请输入学生缺课记录:"<<endl;

m1:

cout<<"请输入缺课日期: (例如100216) "<<flush;

cin>>t1;

if(!(timechk(t1)))goto m1;

m2:

cout<<"请输入缺第几节课: "<<flush;

cin>>t2;

if(t2<1||t2>10)

{

cout<<"节次录入有误! 请重新录入: "<<endl;

goto m2;

}

cout<<"请输入缺课名称: "<<flush;

cin>>t3;

cout<<"请输入缺课学生姓名: "<<flush;

cin>>t4;

m3:

cout<<"请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) "<<flush; cin>>t5;

if(t5<1||t5>4)

{

cout<<"类型输入有误! 请重新录入: "<<endl;

goto m3;

}

for(int i=0;i<r->n;i++)

if(r->r[i].date==t1&&r->r[i].cno==t2&&r->r[i].cname==t3&&r->r[i].sname==t4&&r->r[i].type==t5)

{

cout<<"该条记录已存在,是否添加为新记录? (y/n) "<<flush; n1:

cin>>yn;

if(yn=='y')break;

else if(yn=='n')goto n2;

else goto n1;

}

r->r[r->n++].set(t1,t2,t3,t4,t5);

n2:

cout<<"是否继续输入? (y/n) "<<flush;

7

北京理工大学珠海学院计算机学院课程设计

n3:

cin>>yn;

if(yn=='y')goto m1;

else if(yn=='n')

{

cout<<"保存修改? (y/n) "<<flush;

cin>>yn;

if(yn=='y')wt(r);

else return;

}

else goto n3;}

3.7学生管理系统的统计模块

void search_s(records *r)//统计

{

if(r->n==0)

{

cout<<"记录为空!"<<endl;

return;

}

records *r1=new records();

g1:

cout<<"请输入要检索的时间范围: (例如080610-080612) "<<flush; string tmp,ld,hd;

cin>>tmp;

ld.assign(tmp.substr(0,6));

hd.assign(tmp.substr(7,6));

if(!timechk(ld)||!timechk(hd))goto g1;

for(int i=0;i<r->n;i++)

if(r->r[i].date.compare(ld)>=0&&r->r[i].date.compare(hd)<=0&&r->r

[i].type==4)

r1->r[r1->n++].set(r->r[i]);

cout<<"请选择统计方式: (1.学生旷课情况降序显示 2.课程旷课情况降序显示)"<<flush;

g2:

cin>>i;

switch(i)

{

case 1:

cout<<"\n在"<<ld<<"到"<<hd<<"期间学生旷课情况如下:"<<endl; r1->order_s();

break;

8

北京理工大学珠海学院计算机学院课程设计

} case 2: cout<<"\n在"<<ld<<"到"<<hd<<"期间课程旷课情况如下:"<<endl; r1->order_c(); break; default:goto g2; }

9

北京理工大学珠海学院计算机学院课程设计

4程序测试

1程序开始运行的界面

c考勤管理课程设计报告

2程序显示功能的界面

c考勤管理课程设计报告

3程序录入功能的界面

10

北京理工大学珠海学院计算机学院课程设计

c考勤管理课程设计报告

4程序查询功能的界面

c考勤管理课程设计报告

5程序修改功能的界面

11

北京理工大学珠海学院计算机学院课程设计

c考勤管理课程设计报告

6程序删除功能的界面

c考勤管理课程设计报告

12

北京理工大学珠海学院计算机学院课程设计

5参考文献

[1] 郑阿奇:《c++面向对象》[M],电子工业出版社20xx年版,第374页。

13

北京理工大学珠海学院计算机学院课程设计

心得 体会

经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。 首先,必须要有需求分析。就拿这次的题目来说,一个清晰的需求分析能让我省去很多工作,能让我把代码写的更清晰,让我的代码能有更好的重用性,以此简化程序。而这次的题目其实也算不上需求分析,只能算是功能分析吧。从界面到用户登陆判断,从增删改查基本功能到文件读写。如果能够把代码细化,把基本功能都封装成函数,这样应该会提高代码的重用性。

其次,有了清晰的需求分析,还要有注释。注释也很重要,特别是写过之后重用和测试代码时,都必须得看。否则就不得不将已写好的封装函数从头到尾再看一遍,再理解,这样很浪费时间。有了注释,就可以省去这些重新理解函数的时间,可以提高效率。

再次,写注释是为了使函数更简单的被理解。而写注释之前,必须要测试这段代码的可行性。必须要尽可能多的考虑会出现的情况,对不希望出现的情况予以相对的措施或者提示。这样在代码重用的时候也可以放心的重用,而不必因为代码写的不够完善而再来修改,这样也会浪费很多时间。

最后,程序的测试。一个完善的程序应该经得起测试。自己的程序写得好不好,最终得看测试。如果输入了非法的输入或者操作,程序是否能够正常运行?还是会像这次一输入错误就会死循环?这是程序的健壮性。做好以上几个方面,程序基本就做好了。但是任何一个程序都不可能没有BUG,金无足赤人无完人。如果要追求完美,就不得不锲而不舍,定期得到用户的反馈然后修复相关问题。就像微软一样,总是会在问题出现之后就发布漏洞补丁

14

北京理工大学珠海学院计算机学院课程设计

教师 评语

15

北京理工大学珠海学院计算机学院课程设计

16

北京理工大学珠海学院计算机学院课程设计

17

更多相关推荐:
考勤情况汇报表

Xx在岗情况统计表

考勤报告

报告事由关于公司推行指纹记录考勤的有关问题的建议公司董事会我们奥园广场项目部全体在岗人员一致认为加强劳动纪律的管理是合理合法也是非常必要的俗话说无规矩不成方圆所以均表示严格遵守和执行为使该制度长期有效执行并可产...

考勤报告表

部门公章后勤服务中心20xx年7月3日

考勤自查工作报告

附件1考勤自查工作报告一考勤工作现状部门共有员工人其中部门领导人员工人多年来部门领导严格要求部门员工遵守劳动纪律严格按照规定的要求按时上班不迟到不早退不旷工有事时严格遵守请假制度根据部的特殊工作要求按照特事特办...

考勤管理专项检查自查报告

xxx公司考勤管理专项检查自查报告为了贯彻落实《关于进一步加强考勤管理工作的通知》(xx人资[20xx]223号)文件精神,规范考勤管理,严明工作纪律和工作作风,维护良好的工作秩序,促进公司效能建设,特对我公司…

职工考勤管理系统设计报告

课程设计报告职工考勤管理系统的设计与实现课程数据库原理与应用班级软件技术111成员指导教师20xx1220前言20世纪90年代随着我国市场经济的快速发展职工考勤管理系统在企业的日常管理中发挥着越来越重要的作用职...

停止考勤申请报告

报告潜山县建设工程质量监督站我单位施工的南外环道路工程安置房3楼已施工完毕并于20xx年10月8日进行了预验收准备于近期竣工验收恳请贵站停止IFA考勤系统谢谢安徽泽州集团建设工程有限公司20xx年10月9日监理...

关于申请购买指纹考勤机的报告

关于申请购买指纹考勤机的报告区教育局我校20xx年购买脸部识别机用以对教师进行考勤在使用了近4年后机器故障频发造成很多老师无法考勤甚至有5位教师虽然多次录入但使用时却无法识别为了加强学校的考勤管理经学校行政会议...

考勤系统可行性分析研究报告

<考勤信息管理系统>可行性研究报告作者:完成日期:签收人:签收日期:目录1引言..................................................................…

学生考勤管理系统可行性研究分析报告

学生考勤管理信息系统建设可行性研究报告学生考勤管理系统可行性分析报告20xx级黄世反1引言11编写目的本可行性研究报告的编写是针对目前高校对学生的上课开会及早操出行状况等考勤情况的运行现状进行分析和总结通过采用...

09学年下学期天河区二年级语文教材分析活动考勤报告

09学年下学期天河区二年级语文教材分析活动考勤报告天河区教育局教研室20xx年3月4日

考勤异常情况说明

考勤异常情况说明尊敬的领导我是部门的现因原因导致上下班考勤异常特此说明领导签字年月日考勤异常情况说明尊敬的领导我是部门的现因因导致上下班考勤异常特此说明领导签字年月日考勤异常情况说明尊敬的领导我是部门的现因因导...

考勤报告(36篇)