学生考勤管理系统.docx
- 文档编号:30725808
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:37
- 大小:366.77KB
学生考勤管理系统.docx
《学生考勤管理系统.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
学生考勤管理系统
攀枝花学院
学生课程设计(论文)
题目:
学生考勤管理系统设计
学生姓名:
学号:
所在院(系):
专业:
班级:
指导教师:
职称:
讲师
2014年6月27日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
题 目
学生考勤管理系统设计
1、课程设计的目的
通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
1、问题描述
学生信息包括:
学号、姓名、性别、年龄、班级等信息。
考勤信息包括:
缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。
2、功能要求
(1)添加功能:
程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。
添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:
可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
还可以按课程名、学生姓名对缺课记录进行查询。
(3)显示功能:
可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。
(4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:
主要实现对已添加的学生记录进行删除。
如果当前系统中没有相应的记录,则提示“记录为空!
”并返回操作。
(6)统计功能:
能根据多种参数进行统计。
能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。
需要排序。
(7)保存功能:
可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:
可将保存在文件中的信息读入到当前系统中,供用户进行使用。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
3、主要参考文献
[1]谭浩强.C++语言程序设计(第二版).清华大学出版社.
[2]谭浩强.C语言程序设计(第四版).清华大学出版社.
[3].
4、课程设计工作进度计划
序号
时间(天)
内容安排
备注
1
1
分析设计准备
周一
2
2
编程调试阶段
周二至周三
至周三
3
1
编写课程设计报告
周四
4
1
考核
周五
总计
5(天)
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
年月日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
学生考勤管理系统设计
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
学生考勤管理程序是学校管理工作中一个比较重要的任务,过多的学生考勤管理程序工作给学校管理人员带来了很大麻烦的。
虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,它的不足之处就显而易见了。
学生考勤管理程序,是一个对于学生考勤的管理系统,不仅大大减少了考勤管理人员的大量的工作,而且还方便了班级和学校对学生出课率的查询,只要通计算机登入本系统就能及时修改、更正学生的考勤信息,使信息真实、有效。
这样节省了大量人力物力,节省了宝贵的时间,大大提高了工作效率.用C++语言进行了该系统的编写。
操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看。
关键词考勤,姓名,缺课类型,课程名称。
1需求分析
1.1需求来源
本系统主要是学校和老师对学生出课情况的统计系统。
1.1.1功能需求
1、录入学生的缺勤记录;
2、修改某个学生的缺勤记录;
3、查询某个学生的缺勤情况;
4、统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行排序;
5、统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;
6、系统以菜单方式工作
1.1.2数据需求
本系统主要涉及的数据有学生缺课信息类和有关信息排序类。
学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。
有关信息排序类包括对课程排序和对姓名排序。
1.1.3性能需求
要求系统具有可靠性,速度要快
1.2设计目的
要求实现---“学生考勤管理程序”记录学生的缺课情况,它包括:
缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。
1.3设计要求
1.录入学生的缺课记录;
2.修改某个学生的缺课记录;
3.查询某个学生的缺课情况;
4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;
5.统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序。
2总体设计
学生考勤管理系统包含五个大的功能,分别是:
录入学生缺课信息、修改学生缺课信息、查询某个学生的缺课情况、统计某段时间内(以天为单位),旷课学生姓名及旷课节数和统计某段时间内,有学生旷课的课程及旷课人次。
学生的缺课信息主要包含缺课日期,第几节课、课程名称,学生姓名,缺课类型。
在录入学生缺课信息时根据系统提示逐一输入。
每输入完一条信息,系统会提示是否继续输入,用户可以选择继续或返回主菜单。
在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。
如果系统中没有该学生的相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓名或选择退出返回主菜单。
在查询学生缺课信息时,用户先输入要查询的学生姓名,系统检索判断是否存在该学生的信息然后做出相应的提示。
总之,用户可以方便的在系统提示下进行使用。
功能模块图:
3详细设计
3.1类的设计
本程序包含5个类,类与类之间的关系如下:
类的部分代码:
classxinxi:
publictime,student//信息类
{public:
xinxi():
student(),time(){tiaoshu++;}
~xinxi(){tiaoshu--;}
voidsetname(char*na){strcpy(name,na);}
//voidsetname(char*n){strcpy(name,n);}
voidsettime(inty,intm,intd){year=y;month=m;day=d;}
voidsetqklx(char*qk){strcpy(queke,qk);}
voidsetjieci(char*jc){strcpy(jieci,jc);}
voidsetkechen(char*kc){strcpy(kechen,kc);}
char*getname(){returnname;}
//char*getname(){char*n;n=name;returnn;}
char*getqklx(){char*qk=queke;returnqk;}
char*getjieci(){char*jc;jc=jieci;returnjc;}
char*getkechen(){char*gk;gk=kechen;returngk;}
int*gettime();
private:
//charname[20];//姓名
charjieci[3],kechen[10],queke[10];
inttm[3];
staticinttiaoshu;
};
intxinxi:
:
tiaoshu=0;
int*xinxi:
:
gettime()
{int*t;
t=tm;
tm[0]=year;
tm[1]=month;
tm[2]=day;
returnt;
}
3.2函数的实现
函数名
描述
函数名
描述
shuru()
实现对学生缺课情况的录入
caidan()
修改学生信息
xiugai()
实现对学生缺课情况的修改
xianshi()
实现对学生缺课情况的显示
chaxun()
实现对学生缺课情况的查询
setqstn()
设置缺课学生名
tongji1()
统计某段时间内旷课学生姓名及旷课节数功能
setqkn()
设置有缺课学生的课程名
tongji2()
统计某段时间内,有学生旷课的课程及旷课人次功能
main()
主函数
用到的知识点有:
函数的作用域、函数的调用、数组赋值、函数循环、排序以及类的定义,另外还用到了for函数、switch函数、等等。
4运行结果及分析
4.1运行结果
运行开始时,主菜单显示如图4.1.1.
图4.1.1
录入学生缺课记录。
选择菜单1.依次输入张三、C++、2014624、迟到、1、n。
输入一个项目按回车。
出现如图4.1.2的情况。
图4.1.2
修改学生缺课记录。
选择菜单2.输入张三。
之后选择数字2,修改节次,输入新节次2.按0退出。
出现如图4.1.3情况。
图4.1.3
查询学生缺课记录。
选择菜单3.输入张三,系统自动显示出张三的缺课情况。
如图4.1.4.
图4.1.4
统计某段时间内缺课学生姓名及旷课节数。
选择菜单4,系统显示缺课显示姓名及缺课节数:
张三1.如图4.1.5.
图4.1.5
统计某段时间内缺课的课程及旷课人次。
选择菜单5,系统自动调用统计二函数,显示出缺课课程名称及人次。
如图4.1.6.
图4.1.6
退出系统。
选择菜单7,退出系统。
如图4.1.7.
图4.1.7
4.2结果分析
这次的课程设计,用到类与继承派生的知识。
另外对指针,引用也有很多的使用。
程序中通过建立对象数组来实现对函数的调用。
我认为这是一个亮点。
虽然程序中没有其他的优点,都是平常的函数及排序等。
由于我对继承的知识掌握不好,在派生类中不知道如何使用基类的数据成员。
在信息类中我不清楚如何调用基类student中的name数据成员。
后来通过老师的帮助,我知道了需要在基类构造没有参数的函数。
在派生类的构造函数中会自动调用基类的构造函数。
自然name就在信息类可以很好的使用了。
另外,在开始的时候我将student的成员变量设为protected类型,但是在调试的时候显示信息类构造函数有错。
而将它改为public之后就正确了。
至于是什么原因,我也不清楚。
5总结
这次的程序设计相对于上学期还是有了进步的。
虽然大部分是通过看网上的资料来完成自己的程序,但是我编了几个函数,并且自己改掉了在网上所找程序的错误。
最后,课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。
整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。
在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。
使我体会到设置中每一步的重要性。
所以在分析一个问题时,我们需要站在一个有远见的高度。
最后,通过完成编程,我达到了:
1、加深对本课程理论知识的理解,提高实际应用能力;
2、树立自身对理论联系实际的工作作风、严肃认真的科学态度;
3、进一步训练和提高自身的分析设计能力、理论计算能力、实验研究能力、外文阅读、查阅文献资料和文字表达等基本技能;
4、培养自身独立分析、解决实际问题的能力,培养自身的创新意识和创新能力。
虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。
参考文献
[1]谭浩强.C++语言程序设计(第二版).清华大学出版社.
[2]谭浩强.C语言程序设计(第四版).清华大学出版社.
[3].
附录:
程序源代码
#include
#include
#include
usingnamespacestd;
//学生信息类
classstudent
{
public:
student(){}
student(stringno,chars,inta,stringc,char*na):
number(no),sex(s),age(a),clas(c)
{strcpy(name,na);}
voidset(){cin>>number;cin>>sex;cin>>age;cin>>clas;cin>>name;}
//学号、姓名、性别、年龄、班级
public:
stringnumber,clas;
charname[20];
charsex;
intage;
};
//时间类
classtime
{public:
time(inty=0,intm=0,intd=0)
{year=y;month=m;day=d;}
~time(){}
protected:
intyear,month,day;
};
//信息类
classxinxi:
publictime,student
{public:
xinxi():
student(),time(){tiaoshu++;}
~xinxi(){tiaoshu--;}
voidsetname(char*na){strcpy(name,na);}
//voidsetname(char*n){strcpy(name,n);}
voidsettime(inty,intm,intd){year=y;month=m;day=d;}
voidsetqklx(char*qk){strcpy(queke,qk);}
voidsetjieci(char*jc){strcpy(jieci,jc);}
voidsetkechen(char*kc){strcpy(kechen,kc);}
char*getname(){returnname;}
//char*getname(){char*n;n=name;returnn;}
char*getqklx(){char*qk=queke;returnqk;}
char*getjieci(){char*jc;jc=jieci;returnjc;}
char*getkechen(){char*gk;gk=kechen;returngk;}
int*gettime();
private:
//charname[20];//姓名
charjieci[3],kechen[10],queke[10];
inttm[3];
staticinttiaoshu;
};
intxinxi:
:
tiaoshu=0;
int*xinxi:
:
gettime()
{int*t;
t=tm;
tm[0]=year;
tm[1]=month;
tm[2]=day;
returnt;
}
//缺课课程类
classqkechen:
publicxinxi
{public:
qkechen(){kcshu++;}
~qkechen(){kcshu--;}
intgetrc(xinxist1[],intn,intj);
charqkn[20];//公有数据成员
private:
intrenci;
staticintkcshu;//静态数据成员
};
intqkechen:
:
kcshu=0;
intqkechen:
:
getrc(xinxist1[],intn,intj)
{renci=0;
renci++;
for(inti=0;i if(*(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++; returnrenci; } //缺课学生类 classqstu: publicxinxi {public: qstu(){qst++;} ~qstu(){qst--;} voidprint(xinxi&st1); intgetjs(xinxist1[],intn,intj); intsetjs(intjs=0) {jieshu=js;} charqstn[20]; private: intjieshu; staticintqst;//静态数据成员 }; intqstu: : qst=0; //类的实现 voidqstu: : print(xinxi&st1) { cout<<"|缺课日期|"<<"第几节课|"<<"课程名称|"<<"缺课类型|"< cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<"|"< < } intqstu: : getjs(xinxist1[],intn,intj) {inti=0,js=0; xinximin; if(*(st1[j].getjieci()+2)! ='\0') js=+2; else js++; for(i=0;i if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2)) if(strcmp(st1[i+1].getname(),st1[j].getname())==0) { if(*(st1[i].getjieci()+2)! ='\0') js=+2; else js++; } jieshu=js; returnjieshu; } //函数声明 intshuru(xinxist1[]); voidchaxun(xinxist1[],qstuqt[]); voidxiugai(xinxist1[],intn); voidtongji1(xinxist1[],qstuqt1[]); voidtongji2(xinxist1[],qkechenqk1[]); voidcaidan(); voidxiansi(xinxi&st1); voidsetqstn(xinxist1[],qstuqt1[],intn); voidsetqkn(xinxist1[],qkechenqk[],intn); //全局变量 intg,k=1,b=1; intq=-1; charname[20],kechen[10],queke[10],jieci[3]; inty,m,d; //主函数 intmain() {xinxitl[15];//定义15条信息类对象 qstuqt[10]; qkechenqk[6]; intch; while (1) {cout<<"********欢迎进入学生考勤管理系统! *********"< caidan(); cout<<"--------请选择菜单项: "< cin>>ch; switch(ch) {case1: g=shuru(tl);break; case2: xiugai(tl,g);break; case3: chaxun(tl,qt);break; case4: tongji1(tl,qt);break; case5: tongji2(tl,qk);break; case6: exit(0); } } return0; } //菜单函数 voidcaidan() {system("c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 管理 系统