学生考勤管理系统报告.docx
《学生考勤管理系统报告.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统报告.docx(37页珍藏版)》请在冰豆网上搜索。
学生考勤管理系统报告
学院
《数据结构》
课程设计任务书
课程设计题目:
考勤管理程序的设计与实现
系别数学与计算机科学系班级信管1
学生姓名学号
指导教师职称讲师
课程设计进行地点:
任务下达时间:
2011年12月19日
起止日期:
2011年12月19日起——至2011年12月23日止
一、课程设计的目的
课程设计比教学实验复杂一些,涉及的深度广些并更加接近实用。
目的一方面是通过课程设计的综合训练,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务;另一方面,通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,培养学生的实际分析问题、编程和动手能力,提高学生用程序的思想来解决实际问题的能力。
二、课程设计要求
1、遵守课程设计时间安排,按时上机。
2、认真查找相关的资料,理解相关的知识内容。
3、认真调试程序,组员之间应加强团队合作,取长补短,共同分析问题解决问题。
4、根据设计题目规定的具体要求进行具体规范操作。
5、认真撰写课程设计报告,避免相互抄袭。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计报告是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、实验器材、设计原理及内容、设计具体步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、实验数据表、问题分析流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计报告打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距20磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计报告装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计题目
五、成绩评定
评定成绩根据系统功能、界面效果,系统操作的方便性、灵活性等方面进行,主要从三个方面进行考虑:
1、对问题的理解程度;
2、成果的好坏;
3、设计报告。
评定结果:
不及格、及格、中、良好、优秀。
六、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
2011.11.18——2011.11.19
确定设计课题
2
2011.11.20——2011.12.07
资料查询
3
2011.12.08——2011.12.09
概要设计
4
2011.12.10——2011.12.12
数据结构设计
5
2011.12.13——2011.12.19
功能模块开发
6
2011.12.20——2011.12.22
功能模块调试
7
2011.12.13——2011.12.24
系统运行和修改
七、主要参考文献
学院数学与计算机科学系
《考勤管理程序设计与实现》课程设计成绩评定表
教研室:
班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以12)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以8)
分
加权分合计
评阅教师签名:
年月日
课程设计总评成绩
分
摘要1
第一章绪论0
1.1课题背景0
1.2课题目的和要求0
1.3课题意义0
2.1功能需求1
2.2数据需求1
2.3性能需求1
3.1功能模块设计2
3.2系统设计方案2
4.1修改学生缺课记录子模块3
4.2修改学生缺课记录子模块4
4.3查看单科旷课记录子模块5
4.4查看学生旷课记录子模块5
4.5载入学生旷课记录子模块6
4.6储存学生旷课记录子模快7
第五章调试与测试9
5.1调试9
5.2测试9
结束语10
致谢11
参考文献12
附录1—用户手册0
附录2—源程序4
摘要
20世纪末,随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。
学生考勤管理程序是信息管理系统的一个子系统,一个基于单机版的系统。
因为随着计算机技术的不断进步与发展,计算机已经深入到人们日常生活的每个角落,例如:
政府部门,企事业单位,学校等等。
该系统开发功能主要包括:
管理员可以通过计算机设置学生考勤管理程序,打印供学校及个人使用。
该程序是使用C语言编写的学生考勤统计程序。
关键词:
考勤;姓名;缺课类型;课程名称
第一章绪论
1.1课题背景
程序实践是本科生重要教学环节之一。
通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力。
学生考勤管理程序是学校管理工作中一个比较重要的任务,过多的学生考勤管理程序工作给学校管理人员带来了很大麻烦的。
虽然原始的记录方法在一定的程度上可以解决问题,可是现在计算机已经走到了我们的生活,它的不足之处就显而易见了。
学生考勤管理程序,是一个对于学生考勤的管理系统,不仅大大减少了考勤管理人员的大量的工作,而且还方便了班级和学校对学生出课率的查询,只要通计算机登入本系统就能及时修改、更正学生的考勤信息,使信息真实、有效。
这样节省了大量人力物力,节省了宝贵的时间,大大提高了工作效率.用C语言进行了该系统的编写。
操作上力争实现人性化、合理化,满足学校、老师、非计算机管理人员的使用和查看。
1.2课题目的和要求
目的:
要求实现---“学生考勤管理程序”记录学生的缺课情况,它包括:
缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。
要求:
1.录入学生的缺课记录;
2.修改某个学生的缺课记录;
3.查询某个学生的缺课情况;
4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;
5.统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序。
1.3课题意义
程序实践是本科生重要教学环节之一。
通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力。
学生考勤管理程序可以大大减缓学生考勤人员的工作量,方便了平时上课学生的出勤率的管理。
第二章系统分析
需求分析是软件定义时期的最后一个阶段,它更是开发一个好的软件的基础。
它的基本任务是准确地回答“需要此软件的人都需要哪些功能?
”这个问题。
需求分析的主要任务是确定系统必须完成哪些工作,也就是对目标系统提出完整的﹑准确的﹑具体的﹑清晰的要求,确定系统必须具有的功能和性能,系统要求的运行环境,以及预测系统发展的前景开发一个好的软件,进行深入细致的可行性研究是极其必要的,而且还必须做大量的,全,并仔细分析系统中的数据,以便完善良好的软件环境。
在需求分析阶段系统分析员将仔细研究软件所需要完成的具体功能。
2.1功能需求
本系统主要是学校和老师对学生出课情况的统计系统。
该系统需要有建立,修改,查询,载入,储存,退出功能,利用查询功能分开查看某一门课程或者某一个学生的缺课记录,方便老师与学校统计。
2.2数据需求
本系统主要涉及的数据有学生缺课信息。
学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。
2.3性能需求
要求系统具有可靠性,速度要快。
第三章总体设计
3.1功能模块设计
根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。
数据管理中实现对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改,以及具体缺课缺课内容,是迟到、早退、请假、旷课。
查询管理通过根据学生姓名,课程姓名时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。
功能模块图如图1所示。
图1功能模块图
3.2系统设计方案
此程序是过程性语言设计的。
运用多种条件语句,主体采用的是链表指针。
系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。
程序使用了布尔函数。
选择语句多采用if多分支选择结构与switch语句。
首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。
循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。
do-while语句先循环后判断,Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。
保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。
第四章详细设计
4.1修改学生缺课记录子模块
根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项目进行单项修改,如图2所示。
图2找到相应的信息
4.2修改学生缺课记录子模块
根据人名可以查出该学生的所有缺课记录如图3所示。
图3查找缺课记录
4.3查看单科旷课记录子模块
根据学科名称和时间范围查出所有在该范围内旷课的学生以及次数如图4所示。
图4查看学生单科旷课记录
4.4查看学生旷课记录子模块
根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数如图5所示。
图5查看学生旷课记录
4.5载入学生旷课记录子模块
可以载入实现储存在当前文件夹中txt文件中所储存的数据如图6所示。
图6载入学生旷课记录
4.6储存学生旷课记录子模快
进入系统界面,顺序的完成各项操作,进行数据的输入,信息的保存调用相应的函数打开相应的地址,查询各项信息。
如图7所示。
图7储存学生旷课记录
第五章调试与测试
5.1调试
此程序是用VC程序编写,调试过程中在菜单中选择乍看学生旷课记录,程序不执行。
因为没有加入选择的case语句。
后在switch后加一个case就可以自动执行了。
5.2测试
由于程序的源代码是在记事本文本中复制到VC中的,有些printf后比较长的语句会被放到下一行,使程序出现多处类似的错误,经过在VC中的修改,程序得以正常的运行。
5.3结论
课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。
不过这个程序还有些不够完善,例如不能往当前文件夹中的txt文件中添加记录。
结束语
整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。
在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。
使我体会到设置中每一步的重要性。
所以在分析一个问题时,我们需要站在一个有远见的高度。
通过此次设计,我不但对C语言编程有了更深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。
虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,希望在日后的努力中能做出更完善的系统。
致谢
这次C语言的程序设计,对于我来说是一个挑战。
我在C语言的学习过程中的困难并不只在程序的设计中有所体现,每一个函数都设计好了,也调试好了,把它们分开运行并没有错误,但是当把它们组合成一个程序时,便是一个一个地出现错误;把这个问题解决了,另一个新问题又来了。
这不能不说是对知识的欠缺。
通过这次的程序设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。
对知识的学习,不能潜偿辄止,要深入去学习,去了解,这样才会有所收获。
有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。
同时,在这次课程设计的过程中,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,不能只是学习和重视书本上的理论知识,所以日后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机这门课程。
以前做实验题目的时候总是感觉很难,因为根本就不知道从哪里开始。
这次课程设计让我对编程有了新的认识,也是我知道了只有自己亲自动手才能学到更多东西。
拿到题目的时候也是很困惑但仔细琢磨后也不是想象中那么难,觉得就是上课讲到的一些内容,是自己先把自己吓住了。
后来,参照书上的和网上的诸多例子,一个模块一个模块的编写,调试,一个功能一个功能去完善。
发现越做越顺利,由于以前的实验中对于改错的经验积累和几个学得不错的同学的帮助,我的程序中的错误也一个一个的顺利解决。
再后来,等我的程序完全做好以后,我竟然可以独立的帮同学修改一些以前根本不知所以然的错误,其实,从这次实验中我认识到,我距离高手还很远,编程有很多的乐趣也有很多的技巧性和知识性。
我将在以后的日子里继续认真的学习知识,积累经验,让自己的编程能力提高。
总之,我决得编程就是要请自动手,孰能生巧,感谢学校给我们这次机会使我们通过这次试验学到了很多东西。
参考文献
[1]
谭浩强.C语言程序设计(第三版).北京:
清华大学出版社
[2]
林碧英.C语言程序设计教程.北京:
中国电力出版社,2006
[3]
美赫伯特.希尔特,王子恢等译.C语言大全.北京:
电子工业出版社.2006
[4]
姜灵芝,余健.C语言课程设计案例精选.北京:
清华大学出版社,2008
附录1—用户手册
主菜单
图1主菜单
1.建立学生缺课记录
图2建立学生缺课记录
2.修改学生缺课记录
图3修改学生缺课记录
3.查询学生缺课记录
图4查询学生缺课记录
4.查看单科旷课记录
图5查看单科旷课记录
5.查看学生旷课记录
图6查看学生旷课记录
6.储存学生旷课记录
图7储存学生旷课记录
7.载入学生旷课记录
图8载入学生旷课记录
8.退出程序
图9退出程序
附录2—源程序
#include
#include
#include
#defineNULL0
#defineLENsizeof(structstudent)
intstudent_num;
FILE*fp1;
structxueke
{charxueke_name[50];
intpeople_num;
};
structxuekea[10];
structstudent
{charname[50];
longtime;
intlesson_time;
charlesson_name[50];
intchidao_num;
intzaotui_num;
intqingjia_num;
intkuangke_num;
structstudent*next;
};
voidchaxun(structstudent*head)
{inti;
charchaxun_name[50];
printf("请输入要查询的人名【若没有这个人则不显示】:
");
scanf("%s",chaxun_name);
structstudent*p;
if(head==NULL)
printf("联系人为空");
p=head;
for(i=0;i{if(strcmp(chaxun_name,p->name)==0)
printf("缺课时间:
%ld学生姓名:
%s课程名称:
%s第%d节迟到次数:
%d早退次数:
%d请假次数:
%d旷课次数:
%d\n",p->time,p->name,p->lesson_name,p->lesson_time,p->chidao_num,p->zaotui_num,p->qingjia_num,p->kuangke_num);
p=p->next;}
}
structstudent*xiugai(structstudent*head)
{charxiugai_name[50];
charxiugai_xueke_name[50];
intk;
printf("请输入要修改的学生姓名与学科名称【格式:
学生姓名(空格)学科名称】:
");
scanf("%s%s",xiugai_name,xiugai_xueke_name);
structstudent*p1,*p2;
p2=(structstudent*)malloc(LEN);
p1=head;
if(head==NULL)
{printf("没有学生信息\n");
return(head);}
while(strcmp(xiugai_name,p1->name)!
=0&&(p1->next!
=NULL)&&strcmp(xiugai_xueke_name,p1->lesson_name)!
=0)
p1=p1->next;
if(strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0)
{printf("=======================================\n");
printf("1-修改缺课时间\n");
printf("2-修改学生姓名\n");
printf("3-修改课程名称\n");
printf("4-修改第几节缺课\n");
printf("5-修改迟到次数\n");
printf("6-修改早退次数\n");
printf("7-修改请假次数\n");
printf("8-修改旷课次数\n");
printf("=======================================\n");
scanf("%d",&k);
switch(k)
{case1:
printf("请输入新的缺课时间");
scanf("%ld",&p1->time);
break;
case2:
printf("请输入新的学生姓名");
scanf("%s",p1->name);
break;
case3:
printf("请输入新的课程名称");
scanf("%s",p1->lesson_name);
break;
case4:
printf("请输入新的第几节缺课");
scanf("%d",&p1->lesson_time);
break;
case5:
printf("请输入新的迟到次数");
scanf("%d",&p1->chidao_num);
break;
case6:
printf("请输入新的早退次数");
scanf("%d",&p1->zaotui_num);
break;
case7:
printf("请输入新的请假次数");
scanf("%d",&p1->qingjia_num);
break;
case8:
printf("请输入新的旷课次数");
scanf("%d",&p1->kuangke_num);
break;}
}
return(head);
}
structstudent*creat()
{
inti,b;
structstudent*head,*p1,*p2;
printf("请输入要建立资料的学生人数:
");
scanf("%d",&b);
head=p2=NULL;
p1=(structstudent*)malloc(LEN);
printf("【输入格式:
缺课时间(空格)学生姓名(空格)课程名称(空格)第几节(空格)迟到次数(空格)早退次数(空格)请假次数(空格)旷课次数】\n");
printf("请输入第1名学生信息:
");
scanf("%ld%s%s%d%d%d%d%d",&p1->time,p1->name,p1->lesson_name,&p1->lesson_time,&p1->chidao_num,&p1->zaotui_num,&p1->qingjia_num,&p1->kuangke_num);
head=p1;
p2=p1;
student_num++;
for(i=1;i
{
p1=(structstudent*)malloc(LEN);
printf("请输入第%d名学生信息:
",i+1);
scanf("%ld%s%s%d%d%d%d%d",&p1->time,p1->name,p1->lesson_name,&p1->lesson_time,&p1->chidao_num,&p1->zaotui_num,&p1->qingjia_num,&p1->kuangke_num);
p2->next=p1;
p2=p1;
student_num++;
}
p2->next=NULL;
return