first commit

master
m85364912 6 years ago
parent 8d121a65e1
commit e19278c919

@ -0,0 +1,357 @@
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SIZE 50
FILE *fp;//定义文件
int n,m=0;//定义全局变量
struct student //定义学生缺课信息结构体
{
char name[100];
int number;
char course[20];
int di;
int time;
int chidao;
int zaotui;
int qingjia;
int kuangke;
}stu[SIZE];
struct kuangke//定义旷课结构体1学生姓名旷课次数
{
char name[20];
int number;
}kuangke[SIZE];
struct kuangke2//定义旷课结构体2课程名称旷课次数
{
char name[20];
int number;
}kuangke2[SIZE];
struct kuangke temp;//旷课信息交换1
struct kuangke2 temp2;//旷课信息交换2
void tongji1printf()//统计方法1排序函数
{
int i,j;
printf("统计后的结果为;\n");
printf("旷课学生姓名 旷课次数\n");
for(i=0;i<=m;i++)
{
for(j=i+1;j<=m+1;j++)
{
if(kuangke[i].number<kuangke[j].number)
{
temp=kuangke[i];
kuangke[i]=kuangke[j];
kuangke[j]=temp;
}
}
}
for(i=0;i<=m;i++)
printf("%s %d \n",kuangke[i].name,kuangke[i].number);
}
void tongji2printf()//统计方法2排序函数
{
int i,j,k;
printf("请输入课程门数\n");
scanf("%d",&k);
for(i=0;i<k;i++)
{
printf("请输入第%d门课程的名称\n",i+1);
scanf("%s",kuangke2[i].name);
}
for(j=0;j<k;j++)
{
for(i=0;i<=m;i++)
{
if(strcmp(kuangke2[j].name,kuangke[i].name)==0)
{
kuangke2[j].number=kuangke2[j].number+kuangke[i].number;
}
}
}
for(i=0;i<k;i++)
for(j=i+1;j<k+1;j++)
{
if(kuangke2[i].number<kuangke2[j].number)
{
temp2=kuangke2[i];
kuangke2[i]=kuangke2[j];
kuangke2[j]=temp2;
}
}
printf("统计后的结果\n");
for(j=0;j<k;j++)
{
printf(" 课程名称 旷课人次\n");
printf(" %s %d \n",kuangke2[j].name,kuangke2[j].number);
}
}
void save()//写入文件函数
{
FILE *fp;
int j;
if((fp=fopen("study","wb"))==NULL)//打开文件
{
printf("文件打开失败\n");
exit(0);
}
for(j=0;j<SIZE;j++)
{
if(fwrite(&stu[j],sizeof(struct student),1,fp)!=1)//写入文件
printf("文件写入失败\n");
}
fclose(fp); //关闭文件
}
void load()//读出文件函数
{
FILE *fp;
int j;
if((fp=fopen("study","rb"))==NULL)//打开文件
{
printf("文件打开失败\n");
exit(0);
}
for(j=0;feof(fp)==0;j++)
{
fread(&stu[j],sizeof(struct student),1,fp);//读出文件
}
fclose(fp);
}
void tongji1()//统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序
{
int time1,time2;
int i,flag=0,k;
printf("请输入起始时间和终止时间\n");
scanf("%d %d",&time1,&time2);
load();
for(i=0,k=0;i<SIZE;i++)
{
if(stu[i].time>=time1&&stu[i].time<=time2)
{
if(stu[i].kuangke>0)
{
strcpy(kuangke[k].name,stu[i].name);
kuangke[k].number=stu[i].kuangke;
m=k;//m记录旷课总人次
k++;
}
}
else
flag++;
}
if(flag==SIZE)
printf("输入信息有误\n");
else
tongji1printf();
}
void tongji2()//统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;
{
int time1,time2;
int i,flag=0,k;
printf("请输入起始时间和终止时间\n");
scanf("%d %d",&time1,&time2);
load();
for(i=0,k=0;i<SIZE;i++)
{
if(stu[i].time>=time1&&stu[i].time<=time2)
{
if(stu[i].kuangke>0)
{
strcpy(kuangke[k].name,stu[i].course);
kuangke[k].number=stu[i].kuangke;
m=k;//m记录旷课总人次
k++;
}
}
else
flag++;
}
if(flag==SIZE)
printf("输入信息有误\n");
else
tongji2printf();
}
void create()//录入学生缺课记录函数
{
void save();
int i,n;
printf("开始录入学生缺课记录\n");
printf("请输入学生总人数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的缺课信息\n",i+1);
printf("姓名 学号 课程名称 第几节课 缺课日期 迟到次数 早退次数 请假次数 旷课次数\n");
scanf("%s %d %s %d %d %d %d %d %d",stu[i].name,&stu[i].number,stu[i].course,&stu[i].di,&stu[i].time,&stu[i].chidao,&stu[i].zaotui,&stu[i].qingjia,&stu[i].kuangke);
}
save();
}
void xiugai()//修改函数
{
void save();
void load();
int i,k,flag=0;
int number;
load();
printf("以防学生出现重名现象造成的不必要麻烦\n");
printf("请输入需要修改信息的学生学号\n");
scanf("%d",&number);
for(i=0;i<SIZE;i++)
{
if(number==stu[i].number)
{
printf("该学生的缺课信息\n");
printf("姓名 学号 课程名称 第几节课 缺课日期 迟到次数 早退次数 请假次数 旷课次数\n");
printf("%s %d %s %d %d %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].course,stu[i].di,stu[i].time,stu[i].chidao,stu[i].zaotui,stu[i].qingjia,stu[i].kuangke);
do
{
printf("请选择需要修改的项目\n");
printf("1.课程名称 2.第几节课 3.缺课日期 4.迟到次数\n");
printf("5.早退次数 6.请假次数 7.旷课次数 8.退出\n");
scanf("%d",&k);
printf("请输入修改信息\n");
switch(k)
{
case 1:scanf("%s",stu[i].course);break;
case 2:scanf("%d",&stu[i].di);break;
case 3:scanf("%d",&stu[i].time);break;
case 4:scanf("%d",&stu[i].chidao);break;
case 5:scanf("%d",&stu[i].zaotui);break;
case 6:scanf("%d",&stu[i].qingjia);break;
case 7:scanf("%d",&stu[i].kuangke);break;
case 8: break;
default:printf("无该菜单选项,请重新输入\n\n");
}
}while(k!=8);
printf("%d号学生修改后的信息为\n",number);
printf("姓名 学号 课程名称 第几节课 缺课日期 迟到次数 早退次数 请假次数 旷课次数\n");
printf("%s %d %s %d %d %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].course,stu[i].di,stu[i].time,stu[i].chidao,stu[i].zaotui,stu[i].qingjia,stu[i].kuangke);
save();
}
}
}
void chaxun()//查询函数
{
void load();
int i,flag=0,number,item;
char name[20];
load();
do
{
printf("请输入查询方式\n");
printf("1.学号查询 2.姓名查询 3.退出\n");
scanf("%d",&item);
if(item==1)
{
printf("请输入学生学号:");
scanf("%d",&number);
for(i=0;i<SIZE;i++)
{
if(number==stu[i].number)
{
printf("姓名 学号 课程名称 第几节课 缺课日期 迟到次数 早退次数 请假次数 旷课次数\n");
printf("%s %d %s %d %d %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].course,stu[i].di,stu[i].time,stu[i].chidao,stu[i].zaotui,stu[i].qingjia,stu[i].kuangke);
}
else
flag++;
}
if(flag==SIZE)
printf("输入信息有误\n");
}
else if(item==2)
{
printf("请输入学生姓名\n");
scanf("%s",name);
for(i=0;i<SIZE;i++)
{
if(strcmp(name,stu[i].name)==0)
{
printf("姓名 学号 课程名称 第几节课 缺课日期 迟到次数 早退次数 请假次数 旷课次数\n");
printf("%s %d %s %d %d %d %d %d %d\n",stu[i].name,stu[i].number,stu[i].course,stu[i].di,stu[i].time,stu[i].chidao,stu[i].zaotui,stu[i].qingjia,stu[i].kuangke);
}
else
flag++;
}
if(flag==SIZE)
printf("输入信息有误\n");
else if(item==3)
break;
}
else
printf("请输入正确的查询方式\n");
}while(item!=3);
}
int main()
{
int x;
do
{
printf("\n");
printf("\n");
printf("\n");
printf("########################\n");
printf("# 学生考勤系统 #\n");
printf("# 欢迎您 #\n");
printf("########################\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("################################\n");
printf("#录入信息输入时间是请以月日格式#\n");
printf("#例如11月1日以1101形式输入 #\n");
printf("#请选择所需功能,输入对应数字:#\n");
printf("# 1.录入学生的缺课记录 #\n");
printf("# 2.修改某个学生的缺课记录 #\n");
printf("# 3.查询某个学生的缺课情况 #\n");
printf("# 4.旷课学生姓名及旷课次数 #\n");
printf("# 5.有学生旷课课程及旷课人次 #\n");
printf("# 6.退出系统 #\n");
scanf("%d",&x);
switch(x)
{
case 1:create();break;
case 2:xiugai();break;
case 3:chaxun();break;
case 4:tongji1();break;
case 5:tongji2();break;
case 6:break;
default:printf("***输入有误,请重输:\n");
}
} while (x != 6);
}
Loading…
Cancel
Save