学生考勤管理系统报告1Word文档下载推荐.docx
- 文档编号:22109139
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:29
- 大小:610.67KB
学生考勤管理系统报告1Word文档下载推荐.docx
《学生考勤管理系统报告1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统报告1Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
在需求分析阶段系统分析员将仔细研究软件所需要完成的具体功能。
2.1功能需求
本系统主要是学校和老师对学生出课情况的统计系统。
该系统需要有建立,修改,查询,载入,储存,退出功能,利用查询功能分开查看某一门课程或者某一个学生的缺课记录,方便老师和学校统计。
2.2数据需求
本系统主要涉及的数据有学生缺课信息。
学生缺课信息包括缺课时间,学生姓名,课程名称,第几节,学生迟到次数,早退次数,请假次数,旷课次数。
2.3性能需求
要求系统具有可靠性,速度要快。
3.总体设计
3.1功能模块设计
根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。
数据管理中实现对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改,以及具体缺课缺课内容,是迟到、早退、请假、旷课。
查询管理通过根据学生姓名,课程姓名时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。
功能模块图如图1所示。
、
图1功能模块图
3.2系统设计方案
此程序是过程性语言设计的。
运用多种条件语句,主体采用的是链表指针。
系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。
程序使用了布尔函数。
选择语句多采用if多分支选择结构和switch语句。
首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。
循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。
do-while语句先循环后判断,Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。
保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。
4.详细设计
4.1建立学生缺课记录子模块
要建立的学生人数,学生基本信息(包括缺课时间、学生姓名、课程名称、第几节、迟到次数、早退次数、请假次数、旷课次数)可用creat()函数如图1.
图1
4.2修改学生缺课记录子模块
根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项目进行单项修改如图2
图2
4.3修改学生缺课记录子模块
根据人名可以查出该学生的所有缺课记录如图3
图3
4.4查看单科旷课记录子模块
根据学科名称和时间范围查出所有在该范围内旷课的学生以及次数如图4
图4
4.5查看学生旷课记录子模块
根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数如图5
图5
4.6载入学生旷课记录子模块
可以载入实现储存在当前文件夹中txt文件中所储存的数据如图6
图6
4.7储存学生旷课记录子模快
进入系统界面,顺序的完成各项操作,进行数据的输入,信息的保存调用相应的函数打开相应的地址,查询各项信息。
如图7
图7
5.调试和测试
5.1调试
(1)此程序是用VC程序编写,调试过程中在菜单中选择乍看学生旷课记录,程序不执行。
因为没有加入选择的case语句。
后在switch后加一个case就可以自动执行了。
5.2测试
(2)由于程序的源代码是在记事本文本中复制到VC中的,有些printf后比较长的语句会被放到下一行,使程序出现多处类似的错误,经过在VC中的修改,程序得以正常的运行
6.结论
课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。
不过这个程序还有些不够完善,例如不能往当前文件夹中的txt文件中添加记录。
结束语
整个系统的设计过程对于我来说算是个学习、探索的过程,通过实践和对比别人开发程序的过程。
在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。
使我体会到设置中每一步的重要性。
所以在分析一个问题时,我们需要站在一个有远见的高度。
通过此次设计,我不但对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<
stdio.h>
malloc.h>
string.h>
#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<
student_num;
i++)
{if(strcmp(chaxun_name,p->
name)==0)
缺课时间:
%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;
请输入要修改的学生姓名和学科名称【格式:
学生姓名(空格)学科名称】:
%s%s"
xiugai_name,xiugai_xueke_name);
structstudent*p1,*p2;
p2=(structstudent*)malloc(LEN);
p1=head;
{printf("
没有学生信息\n"
return(head);
while(strcmp(xiugai_name,p1->
name)!
=0&
&
(p1->
next!
=NULL)&
strcmp(xiugai_xueke_name,p1->
lesson_name)!
=0)
p1=p1->
if(strcmp(xiugai_name,p1->
name)==0&
lesson_name)==0)
{printf("
=======================================\n"
1-修改缺课时间\n"
2-修改学生姓名\n"
3-修改课程名称\n"
4-修改第几节缺课\n"
5-修改迟到次数\n"
6-修改早退次数\n"
7-修改请假次数\n"
8-修改旷课次数\n"
scanf("
%d"
&
k);
switch(k)
{case1:
printf("
请输入新的缺课时间"
scanf("
%ld"
p1->
time);
break;
case2:
请输入新的学生姓名"
p1->
name);
case3:
请输入新的课程名称"
lesson_name);
case4:
请输入新的第几节缺课"
lesson_time);
case5:
请输入新的迟到次数"
chidao_num);
case6:
请输入新的早退次数"
zaotui_num);
case7:
请输入新的请假次数"
qingjia_num);
case8:
请输入新的旷课次数"
return(head);
structstudent*creat()
{
inti,b;
structstudent*head,*p1,*p2;
请输入要建立资料的学生人数:
b);
head=p2=NULL;
p1=(structstudent*)malloc(LEN);
【输入格式:
缺课时间(空格)学生姓名(空格)课程名称(空格)第几节(空格)迟到次数(空格)早退次数(空格)请假次数(空格)旷课次数】\n"
请输入第1名学生信息:
%ld%s%s%d%d%d%d%d"
time,p1->
name,p1->
lesson_name,&
lesson_time,&
chidao_num,&
zaotui_num,&
qingjia_num,&
head=p1;
p2=p1;
student_num++;
for(i=1;
b;
{
p1=(structstudent*)malloc(LEN);
请输入第%d名学生信息:
i+1);
p2->
next=p1;
p2=p1;
student_num++;
}
p2->
next=NULL;
voidprint(structstudent*head)
{structstudent*p;
if(p==NULL)
while(p!
=NULL)
%d旷课次数:
}
structstudent*tongji_lesson(structstudent*head)
{structstudent*p1,*p2,*p3;
charlesson[50];
longlook_time1,look_time2;
intxunhuan_num=0;
p3=(structstudent*)malloc(LEN);
没有学生信息"
p2=p1->
while(xunhuan_num<
student_num)
{while(p2!
if(p2->
kuangke_num>
kuangke_num)
{
p3->
chidao_num=p2->
chidao_num;
kuangke_num=p2->
kuangke_num;
qingjia_num=p2->
qingjia_num;
zaotui_num=p2->
zaotui_num;
lesson_time=p2->
lesson_time;
time=p2->
time;
strcpy(p3->
lesson_name,p2->
name,p2->
p2->
chidao_num=p1->
kuangke_num=p1->
qingjia_num=p1->
zaotui_num=p1->
lesson_time=p1->
time=p1->
strcpy(p2->
lesson_name,p1->
p1->
chidao_num=p3->
kuangke_num=p3->
qingjia_num=p3->
zaotui_num=p3->
lesson_time=p3->
time=p3->
strcpy(p1->
lesson_name,p3->
name,p3->
}
p1=p2;
p2=p2->
p1=head;
p2=p1->
xunhuan_num++;
请输入要查看的学科名称:
lesson);
请输入要查看的时间范围【输入格式:
时间(空格)时间】"
%ld%ld"
look_time1,&
look_time2);
while(p1!
{if(strcmp(lesson,p1->
lesson_name)==0&
look_time1<
=p1->
time&
time<
=look_time2)
学生姓名%s旷课次数%d\n"
structstudent*tongji_student(structstudent*head)
intn,i,j,zhongjian;
structstudent*p1;
charzhongjian_name[50];
请输入一共的学科数:
n);
n;
请输入第%d个学科名称:
a[i].xueke_name);
a[i].people_num=0;
请输入要查看的时间范围由小到大【输入格式:
{while(p1!
=NULL&
look_time1<
time&
p1->
{if(strcmp(a[i].xueke_name,p1->
a[i].people_num+=p1->
p1=p1->
for(j=0;
j<
n-1;
j++)
for(i=0;
n-1-j;
{if(a[i].people_num<
a[i+1].people_num)
{zhongjian=a[i+1].people_num;
a[i+1].people_num=a[i].people_num;
a[i].people_num=zhongjian;
strcpy(zhongjian_name,a[i+1].xueke_name);
strcpy(a[i+1].xueke_name,a[i].xueke_name);
strcpy(a[i].xueke_name,zhongjian_name);
学科名称%s旷课人%d\n"
a[i].xueke_name,a[i].people_num);
structstudent*zairu()
{structstudent*p1=NULL,*p2=NULL,*head=NULL;
structstudentstuden
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 管理 系统 报告