(考勤管理)考勤系统
目录
一、系统开发的背景 ..................1
二、系统分析与设计 ..................1
(一)系统功能要求 ..................1
(二)系统模块结构设计 ..............1
三、系统的设计与实现 ................2
(一)学生基本信息浏览:BASIC_B().....2
(二)……………… ..................2
四、系统测试 ........................2
(一)测试 MAIN_FORM()函数 ............2
(二)…………. .....................3
五、总结 ............................3
六、附件(代码、部分图表) ..........3
学生综合测评系统
一、系统开发的背景
为了方便快捷的记录学生的考勤信息,因此用 C语言设计了一个方便
的考勤系统。
二、系统分析与设计
(一) 系统功能要求
功能:设计一考勤系统。考勤信息记录了学生的缺课情况,它包
括:缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类
型(迟到、早退、请假及旷课)。系统具有以下要求:
(1)录入学生的缺课记录;
(2)修改某个学生的缺课记录;
(3)查询某个学生的缺课情况;
(4)统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由
多到少排序;
(5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课人
次由多到少排序;
(6)系统以菜单方式工作。
(二) 系统模块结构设计
通过对系统功能的分析,学生考勤系统功能如下图所示。
修
改
模
块
统
计
模
块
1
图 1 学生考勤系统功能图
通过上图的功能分析,把整个系统划分为 5个模块:
1、 学生基本信息录入,该模块主要实现:学生基本信息(缺课日期、
第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请
假及旷课)的输出,借助函数 void enter()来实现;
2、修改,该模块主要实现:对某个学生的基本信息(缺课日期、第几
节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及
旷课)的修改,借助函数 void modify()来实现;
3、查询,该模块主要实现:对某个学生的基本信息(缺课日期、第几
节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及
旷课)的查询,借助函数 void search()来实现;
4、统计 1,该模块主要实现:统计某段时间内,旷课学生姓名及旷课
次数,按旷课次数由多到少排序;借助函数 void Statistic_1()来实现;
5、统计 2,该模块主要实现:统计某段时间内,有学生旷课的课程及
旷课人次,按旷课人次由多到少排序;借助函数 void Statisti_2()来实
现;
三、系统的设计与实现
(一) 学生基本信息的录入 void enter()
该模块的具体代码如下所示。
void enter()
{
int i,j,n;
printf("\n***********************录入***********************\n");
printf("请输入日期:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("请输入学号初值:");
scanf("%d",&n);
printf("\n-----注:在姓名栏输入 # 返回上一层\n");
for(i=n-1;i<43;i++)
{
STUDENT[i].num=i+1;
printf("\n\n学号:%.2d\n",STUDENT[i].num);
printf("请输入姓名:");
scanf("%s",&STUDENT[i].name);
if(STUDENT[i].name[0]=='#')
{
STUDENT[i].name[0]=0;
printf("\n\n\n");
printf(" 返回 \n");
printf(" \n");
break;/*作用:if语句执行结束 break到 main函数*/
}
for(j=0;;j++)
{
printf("注:已到请输入 0,迟到请输入 1,早退请输入 2,旷课请输入 3,请假请输
入 4,无课请输入 5!\n");
printf("节数:");
scanf("%d",&STUDENT[i].C1);
printf("请输入数学考勤情况:");
scanf("%d",&STUDENT[i].math);
if(STUDENT[i].math<=5&&STUDENT[i].math>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C2);
printf("请输入英语考勤情况:");
scanf("%d",&STUDENT[i].english);
if(STUDENT[i].english<=5&&STUDENT[i].english>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C3);
printf("请输入计算机考勤情况:");
scanf("%d",&STUDENT[i].computer);
if(STUDENT[i].computer<=5&&STUDENT[i].computer>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C4);
printf("请输入马原考勤情况:");
scanf("%d",&STUDENT[i].my);
if(STUDENT[i].my<=5&&STUDENT[i].my>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C5);
printf("请输入体育考勤情况:");
scanf("%d",&STUDENT[i].pe);
if(STUDENT[i].pe<=5&&STUDENT[i].pe>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
/* {
if (STUDENT[i].math==3)
++;
if (STUDENT[i].english==3)
++;
if (STUDENT[i].computer==3)
++;
if (STUDENT[i].my==3)
++;
if (STUDENT[i].pe==3)
++;
}*/
{
if(STUDENT[i].math==3)
STUDENT[i].sum++;
if(STUDENT[i].english==3)
STUDENT[i].sum++;
if(STUDENT[i].computer==3)
STUDENT[i].sum++;
if(STUDENT[i].my==3)
STUDENT[i].sum++;
if(STUDENT[i].pe==3)
STUDENT[i].sum++;
printf("旷课次数:%d",STUDENT[i].sum);
}
} }分析:首先输出菜单,然后依次按照条件录入每位同学信息。
输入日期 DATE
输入学号初值 n
i<43
Y N
输入学号
STUDENT[i].num
输入姓名
STUDENT[i].name
输入节数、数学出勤
STUDENT[i].c1
STUDENT[i].math
输入节数、英语出勤
STUDENT[i].c2
STUDENT[i].englis
h
输入节数、计算机出勤
STUDENT[i].c3
STUDENT[i].compute
r
开 始
}
}
(二) 修改某个学生的缺课记录 void modify();
分析:首先输出菜单,然后依次按照条件修改每位同学的基
本信息。流程图如下图所示。
输入节数、马原出勤
STUDENT[i].c4
STUDENT[i].my
输 入 修 改 日 期
DATE
修改学号初值 n
i<43
Y N
修改学号
STUDENT[i].num
修改姓名
STUDENT[i].name
修改节数、数学出勤
STUDENT[i].c1
STUDENT[i].math
修改节数、英语出勤
STUDENT[i].c2
STUDENT[i].englis
h
修改节数、计算机出勤
STUDENT[i].c3
STUDENT[i].compute
r
开 始
该模块的具体代码如下所示
void modify()
{
int i,j,n;
printf("\n");
printf("\n***********************修改***********************\n");
printf("注:已到 0,迟到 1,早退 2,旷课 3,请假 4,无课 5!\n");
for(i;;i++)
{
printf("请输入修改的时间:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("请输入需要修改出勤情况的学生的学号:");
scanf("%d",&n);
printf("\n学号:%.2d\n姓名:%s\n节次:%d\n数学出勤:%d\n节次:%d\n英语出勤:%d\n节
次 :%d\n计 算 机 出 勤 :%d\n节 次 :%d\n体 育 出 勤 :%d\n节 次 :%d\n马 原 出
修改节数、马原出勤
STUDENT[i].c4
STUDENT[i].my
勤 :%d\n",STUDENT[n-1].num,STUDENT[n-1].name,STUDENT[n-1].C1,STUDENT[n-1].math,STUDENT[
n-1].C2,STUDENT[n-1].english,STUDENT[n-1].C3,STUDENT[n-1].computer,STUDENT[n-1].C5,STU
DENT[n-1].pe,STUDENT[n-1].C4,STUDENT[n-1].my);
printf("请输入要修改的姓名:");
scanf("%s",&STUDENT[n-1].name);
for(j=0;;j++)
{
printf("请输入需要修改的数学节次:");
scanf("%d",&STUDENT[n-1].C1);
printf("请输入需要修改的数学考勤:");
scanf("%d",&STUDENT[n-1].math);
if(STUDENT[n-1].math<=5&&STUDENT[n-1].math>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的英语节次:");
scanf("%d",&STUDENT[n-1].C2);
printf("请输入需要修改的英语考勤:");
scanf("%d",&STUDENT[n-1].english);
if(STUDENT[n-1].english<=5&&STUDENT[n-1].english>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的计算机节次:");
scanf("%d",&STUDENT[n-1].C3);
printf("请输入需要修改的计算机考勤:");
scanf("%d",&STUDENT[n-1].computer);
if(STUDENT[n-1].computer<=5&&STUDENT[n-1].computer>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的数学节次:");
scanf("%d",&STUDENT[n-1].C4);
printf("请输入需要修改的体育考勤:");
scanf("%d",&STUDENT[n-1].pe);
if(STUDENT[n-1].pe<=5&&STUDENT[n-1].pe>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的马原节次:");
scanf("%d",&STUDENT[n-1].C5);
printf("请输入需要修改的马原考勤:");
scanf("%d",&STUDENT[n-1].my);
if(STUDENT[n-1].my<=5&&STUDENT[n-1].my>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
printf("\n\n----------是否继续修改请输入(y/n)\n");
if(getchar()=='y')
continue;
if(getchar()=='n')
break;
(三) 查询某个学生的缺课记录 void search();
分析:首先输出菜单,然后依次按照条件修改每位同学的基
本信息。流程图如下图所示。
程序如下:
void search()
{
int n,i;
开 始
输入查询时间 DATE
输入查询学号 n
输出所要查询的各种
信息
y
结 束
n
printf("\n***********************查询***********************\n");
for(i=0;;i++)
{
printf("请输入查询的时间:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("注:已到 0,迟到 1,早退 2,旷课 3,请假 4,无课 5!\n");
printf("\n-----请输入要查询的学号:");
scanf("%d",&n);
printf("\n学号:%.2d\n姓名:%s\n节次:%d\n数学出勤:%d\n节次:%d\n英语出勤:%d\n
节次:%d\n计算机出勤:%d\n节次:%d\n马原出勤:%d\n节次:%d\n体育出勤:%d\n旷课次数:
%d\n\n",STUDENT[n-1].num,STUDENT[n-1].name,STUDENT[n-1].C1,STUDENT[n-1].math,STUDENT[n
-1].C2,STUDENT[n-1].english,STUDENT[n-1].C3,STUDENT[n-1].computer,STUDENT[n-1].C4,STUD
ENT[n-1].my,STUDENT[n-1].C5,STUDENT[n-1].pe,STUDENT[n-1].sum);
printf("\n\n-----是否继续查询请输入(y/n)\n");
if(getchar()=='y')
continue;/*提前结束本次循环,接着执行下次循环*/
if(getchar()=='n')
break;/*break语句只能用于循环语句和 switch语句;switch中的 break语句使得流
程跳出 switch结构。循环语句中的 break语句提前结束循环接着执行下面的语句*/
}
}
(四) 统计某段时间内,旷课学生姓名及旷课次数,按旷课次数
由多到少排序 void Statistic_1();
程序如下:
void Statistic_1() /*统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序*/
{
int i,j;
for(i=0;i<43;i++)
STUDENT_0[i]=STUDENT[i];
for(i=0;i<42;i++)
for(j=0;j<42-i;j++)
if(STUDENT_0[j].sum>STUDENT_0[j+1].sum)
{
STUDENT_1=STUDENT_0[j];
STUDENT_0[j]=STUDENT_0[j+1];
STUDENT_0[j+1]=STUDENT_1;
}
printf("\n**********************************旷 课 排 名
*************************************\n");
printf("姓名 旷课次数\n");
for(i=42;i>=0;i--)
{
printf("%s",STUDENT_0[i].name);
if(STUDENT_0[i].sum>0)
printf(" %d\n",STUDENT_0[i].sum);
}
}
流程图如下:
四、系统测试
(一) 测试 void main()函数
测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测
试的结果。
(二) 测试 void enter()函数
(三) 测试 void search()函数
(四) 测试 void modify()函数
(五) 测试 void Statistic_1()函数
五、总结
系统完成了:
1、学生基本信息录入,该模块主要实现:学生基本信息(缺课日期、
第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请
假及旷课)的输出,借助函数 void enter()来实现;
2、修改,该模块主要实现:对某个学生的基本信息(缺课日期、第几
节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及
旷课)的修改,借助函数 void modify()来实现;
3、查询,该模块主要实现:对某个学生的基本信息(缺课日期、第几
节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及
旷课)的查询,借助函数 void search()来实现;
4、统计 1,该模块主要实现:统计某段时间内,旷课学生姓名及旷课
次数,按旷课次数由多到少排序;借助函数 void Statistic_1()来实现;
5、统计 2,该模块主要实现:统计某段时间内,有学生旷课的课程及
旷课人次,按旷课人次由多到少排序;借助函数 void Statisti_2()来实
现等 5个功能。
系统有
1、 时间没有做到与替他的功能的链接;
2、 第 5个部分因为自己不会处理不同函数名之间的排序,所以没有
做出来;
3、 界面还不美观;
4、 使用者应用还不方便;
等缺点。
我的收获:
刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感
受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老
师讲的多了,了解多了,渐渐的产生了兴趣。尤其这一学期学到语句和函
数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很
好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了一些自己
以前没有掌握的基本知识。开始编写修改和排序时,很头疼,去向其他人
寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,
修改后的内容将文本内的信息全部覆盖了。困难之时,我们班里的同学帮
助了我,完成了修改和排序,这让我认识到团结的力量。这样的话,整个
程序基本上全部完成了,但还有一个不会做。经过几天也没做出来,别人
的思路又要自己重做,所以不得已放弃了。
。
六、附件(代码、部分图表)
#include""
#include""/*字符串*/
struct date
{
int year;
int month;
int day;
}DATE[40];
struct student
{
int num; /*学号为整型*/
char name[20]; /*姓名为字符串*/
/* struct date Date; 缺课日期 Date属于 struct date*/
int C1; /*节数为整型*/
int C2;
int C3;
int C4;
int C5;
char Class[20]; /*课程名称为字符串*/
int math; /*数学*/
int english; /*英语*/
int computer; /*计算机*/
int my; /*马原*/
int pe; /*体育*/
int sum;
int summath;
int sumenglish;
int sumcomputer;
int summy;
int sumpe;
}STUDENT[43],STUDENT_0[43],STUDENT_1; /*定义结构体数组(变量)*/
void main()
{
int x,i;
void enter(); /*录入*/
void modify(); /*修改*/
void search(); /*查询*/
void Statistic_1(); /*统计某段时间内,旷课学生姓名及旷课次
数,按旷课次数由多到少排序*/
void Statistic_2(); /*统计某段时间内,有学生旷课的课程及旷
课人次,按旷课人次由多到少排序*/
for(i=0;;i++)
{
printf("\n***********************开始菜单**********************\n");
printf("请选择:\n");
printf("1------录入\n");
printf("2------修改\n");
printf("3------查询\n");
printf("4------统计某段时间内,旷课学生姓名及旷课次数\n");
printf("5------统计某段时间内,有学生旷课的课程及旷课人次\n");
printf("\n");
scanf("%d",&x);
switch(x)
{
case 1:enter();break;
case 2:modify();break;
case 3:search();break;
case 4:Statistic_1();break;
/* case 5:Statistic_2();break;*/
}
}
}
void enter()
{
int i,j,n;
printf("\n***********************录入***********************\n");
printf("请输入日期:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("请输入学号初值:");
scanf("%d",&n);
printf("\n-----注:在姓名栏输入 # 返回上一层\n");
for(i=n-1;i<43;i++)
{
STUDENT[i].num=i+1;
printf("\n\n学号:%.2d\n",STUDENT[i].num);
printf("请输入姓名:");
scanf("%s",&STUDENT[i].name);
if(STUDENT[i].name[0]=='#')
{
STUDENT[i].name[0]=0;
printf("\n\n\n");
printf(" 返回 \n");
printf(" \n");
break;/*作用:if语句执行结束 break到 main函数*/
}
for(j=0;;j++)
{
printf("注:已到请输入 0,迟到请输入 1,早退请输入 2,旷课请输入 3,请假请输
入 4,无课请输入 5!\n");
printf("节数:");
scanf("%d",&STUDENT[i].C1);
printf("请输入数学考勤情况:");
scanf("%d",&STUDENT[i].math);
if(STUDENT[i].math<=5&&STUDENT[i].math>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C2);
printf("请输入英语考勤情况:");
scanf("%d",&STUDENT[i].english);
if(STUDENT[i].english<=5&&STUDENT[i].english>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C3);
printf("请输入计算机考勤情况:");
scanf("%d",&STUDENT[i].computer);
if(STUDENT[i].computer<=5&&STUDENT[i].computer>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C4);
printf("请输入马原考勤情况:");
scanf("%d",&STUDENT[i].my);
if(STUDENT[i].my<=5&&STUDENT[i].my>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("节数:");
scanf("%d",&STUDENT[i].C5);
printf("请输入体育考勤情况:");
scanf("%d",&STUDENT[i].pe);
if(STUDENT[i].pe<=5&&STUDENT[i].pe>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
/* {
if (STUDENT[i].math==3)
++;
if (STUDENT[i].english==3)
++;
if (STUDENT[i].computer==3)
++;
if (STUDENT[i].my==3)
++;
if (STUDENT[i].pe==3)
++;
}*/
{
if(STUDENT[i].math==3)
STUDENT[i].sum++;
if(STUDENT[i].english==3)
STUDENT[i].sum++;
if(STUDENT[i].computer==3)
STUDENT[i].sum++;
if(STUDENT[i].my==3)
STUDENT[i].sum++;
if(STUDENT[i].pe==3)
STUDENT[i].sum++;
printf("旷课次数:%d",STUDENT[i].sum);
}
}
}
void search()
{
int n,i;
printf("\n***********************查询***********************\n");
for(i=0;;i++)
{
printf("请输入查询的时间:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("注:已到 0,迟到 1,早退 2,旷课 3,请假 4,无课 5!\n");
printf("\n-----请输入要查询的学号:");
scanf("%d",&n);
printf("\n学号:%.2d\n姓名:%s\n节次:%d\n数学出勤:%d\n节次:%d\n英语出勤:%d\n
节次:%d\n计算机出勤:%d\n节次:%d\n马原出勤:%d\n节次:%d\n体育出勤:%d\n旷课次数:
%d\n\n",STUDENT[n-1].num,STUDENT[n-1].name,STUDENT[n-1].C1,STUDENT[n-1].math,STUDENT[n
-1].C2,STUDENT[n-1].english,STUDENT[n-1].C3,STUDENT[n-1].computer,STUDENT[n-1].C4,STUD
ENT[n-1].my,STUDENT[n-1].C5,STUDENT[n-1].pe,STUDENT[n-1].sum);
printf("\n\n-----是否继续查询请输入(y/n)\n");
if(getchar()=='y')
continue;/*提前结束本次循环,接着执行下次循环*/
if(getchar()=='n')
break;/*break语句只能用于循环语句和 switch语句;switch中的 break语句使得流
程跳出 switch结构。循环语句中的 break语句提前结束循环接着执行下面的语句*/
}
}
void modify()
{
int i,j,n;
printf("\n");
printf("\n***********************修改***********************\n");
printf("注:已到 0,迟到 1,早退 2,旷课 3,请假 4,无课 5!\n");
for(i;;i++)
{
printf("请输入修改的时间:");
scanf("%d,%d,%d",&DATE[40].year,&DATE[40].month,&DATE[40].day);
printf("请输入需要修改出勤情况的学生的学号:");
scanf("%d",&n);
printf("\n学号:%.2d\n姓名:%s\n节次:%d\n数学出勤:%d\n节次:%d\n英语出勤:%d\n节
次 :%d\n计 算 机 出 勤 :%d\n节 次 :%d\n体 育 出 勤 :%d\n节 次 :%d\n马 原 出
勤 :%d\n",STUDENT[n-1].num,STUDENT[n-1].name,STUDENT[n-1].C1,STUDENT[n-1].math,STUDENT[
n-1].C2,STUDENT[n-1].english,STUDENT[n-1].C3,STUDENT[n-1].computer,STUDENT[n-1].C5,STU
DENT[n-1].pe,STUDENT[n-1].C4,STUDENT[n-1].my);
printf("请输入要修改的姓名:");
scanf("%s",&STUDENT[n-1].name);
for(j=0;;j++)
{
printf("请输入需要修改的数学节次:");
scanf("%d",&STUDENT[n-1].C1);
printf("请输入需要修改的数学考勤:");
scanf("%d",&STUDENT[n-1].math);
if(STUDENT[n-1].math<=5&&STUDENT[n-1].math>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的英语节次:");
scanf("%d",&STUDENT[n-1].C2);
printf("请输入需要修改的英语考勤:");
scanf("%d",&STUDENT[n-1].english);
if(STUDENT[n-1].english<=5&&STUDENT[n-1].english>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的计算机节次:");
scanf("%d",&STUDENT[n-1].C3);
printf("请输入需要修改的计算机考勤:");
scanf("%d",&STUDENT[n-1].computer);
if(STUDENT[n-1].computer<=5&&STUDENT[n-1].computer>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的数学节次:");
scanf("%d",&STUDENT[n-1].C4);
printf("请输入需要修改的体育考勤:");
scanf("%d",&STUDENT[n-1].pe);
if(STUDENT[n-1].pe<=5&&STUDENT[n-1].pe>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
for(j=0;;j++)
{
printf("请输入需要修改的马原节次:");
scanf("%d",&STUDENT[n-1].C5);
printf("请输入需要修改的马原考勤:");
scanf("%d",&STUDENT[n-1].my);
if(STUDENT[n-1].my<=5&&STUDENT[n-1].my>=0)
{
break;
}
else
printf("\n*********输入有误,请重新输入*********\n\n");
}
printf("\n\n----------是否继续修改请输入(y/n)\n");
if(getchar()=='y')
continue;
if(getchar()=='n')
break;
}
}
void Statistic_1() /*统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序*/
{
int i,j;
for(i=0;i<43;i++)
STUDENT_0[i]=STUDENT[i];
for(i=0;i<42;i++)
for(j=0;j<42-i;j++)
if(STUDENT_0[j].sum>STUDENT_0[j+1].sum)
{
STUDENT_1=STUDENT_0[j];
STUDENT_0[j]=STUDENT_0[j+1];
STUDENT_0[j+1]=STUDENT_1;
}
printf("\n**********************************旷 课 排 名
*************************************\n");
printf("姓名 旷课次数\n");
for(i=42;i>=0;i--)
{
printf("%s",STUDENT_0[i].name);
if(STUDENT_0[i].sum>0)
printf(" %d\n",STUDENT_0[i].sum);
}
}
/*void Statistic_2() 统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排
序;
{
int m,n,i,k;
int
t[5]={,,,,};
printf("\n**********************************排 名
*************************************\n");
for(m=0;m<5;m++)
for(n=0;n<5-m;n++)
if(t[i]>t[i+1])
{
k=t[i];
t[i]=t[i+1];
t[i+1]=k;
}
for(i=4;i>=0;i--)
{
if(t[i]>0)
printf(" %d\n",t[i]);
}
}*/