(1)确定界面,使用户可选择操作项目
(2)录入功能:使用结构体,要求用户输入相应信息,并存入文件
(3)查询功能:通过姓名或学号查找,利用循环找到对应结构体数组元素,然后输出需 要的信息
(4)考勤评分:系统根据考勤文件中学生旷课次数按百分制输出学生分数,旷课一节减五分;
#include#include int SIZE; int CLASS; struct student { char name[9]; char sex[4]; int number; int count; int score; }stu[300]; int main() { void start(); printf("n"); printf("n"); printf("n"); printf("n"); printf("ttt######################################n"); printf("ttt# 学生考勤系统 #n"); printf("ttt# 欢 迎 您 #n"); printf("ttt######################################n"); printf("n"); printf("n"); printf("n"); printf("n"); printf("tt######################################n"); printf("ttt请输入班级人数:n"); printf("tt######################################n"); scanf("%d",&SIZE); printf("n"); printf("tt######################################n"); printf("ttt请输入课程节数:n"); printf("tt######################################n"); scanf("%d",&CLASS); printf("n"); printf("n"); printf("n"); printf("n"); start(); } void start() { char x; void found(); void search(); void add(); void mark(); printf("######################################n"); printf("# 请选择所需功能,输入对应数字: #n"); printf("# 1.建立学生列表 #n"); printf("# 2.查找学生信息 #n"); printf("# 3.模拟考勤过程 #n"); printf("# 4.计算考勤分数 #n"); printf("# 5.退出 #n"); printf("# #n"); printf("######################################n"); scanf("%S",&x); switch(x) { case'1':found();break; case'2':search();break; case'3':add1();break; case'4':mark();break; case'5':break; default :printf("****输入有误,请重输:n");start(); } } void found() { int a; printf("####################n"); printf(" 开始建表。n"); printf("####################n"); FILE *fp; for(a=0;a printf("请输入第%d个学生的个人信息:n",a+1); printf("姓名:"); scanf("%s",stu[a].name); printf("性别:"); scanf("%s",stu[a].sex); printf("学号:"); scanf("%d",&stu[a].number); stu[a].count=0; stu[a].score=0; } fp=fopen("stud","w"); for(a=0;a if(fwrite(&stu[a],sizeof(struct student),1,fp)!=1) printf("文件输入错误。n"); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("建表如下:n"); fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("----------------------------------------------n"); for(a=0;a fread(&stu[a],sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",stu[a].name,stu[a].sex,stu[a].number,stu[a].count,stu[a].score); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("#######################################n"); printf("# 记录完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#######################################n"); start(); } void search() { char b; void search1(); void search2(); printf("****************************************n"); printf(" 请选择:n"); printf(" 1.按姓名查找。n"); printf(" 2.按学号查找。n"); printf("****************************************n"); scanf("%s",&b); switch(b) { case'1':search1();break; case'2':search2();break; default :printf("****输入有误,请重输:");search(); } printf("n"); printf("n"); printf("n"); printf("n"); printf("#######################################n"); printf("# 查找完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#######################################n"); start(); } void search1() { int c; char student_name[9]; FILE *fp; fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("----------------------------------------------n"); for(c=0;c fread(&stu[c],sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",stu[c].name,stu[c].sex,stu[c].number,stu[c].count,stu[c].score); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("请输入要查询学生姓名:"); scanf("%s",student_name); printf("n"); printf("n"); printf("n"); printf("n"); for(c=0;c if(strcmp(student_name,stu[c].name)==0) { printf("已查到*******************************************n"); printf("姓名:%s 性别:%s 学号:%d 缺课数:%dn",stu[c].name,stu[c].sex,stu[c].number,stu[c].count); } } } void search2() { int c; int d; FILE *fp; fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("----------------------------------------------n"); for(c=0;c fread(&stu[c],sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",stu[c].name,stu[c].sex,stu[c].number,stu[c].count,stu[c].score); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("请输入要查询学生学号:"); scanf("%d",&d); printf("n"); printf("n"); printf("n"); printf("n"); for(c=0;c if(d==stu[c].number) { printf("已查到*********************************************n"); printf("姓名:%s 性别:%s 学号:%d 缺课数:%dn",stu[c].name,stu[c].sex,stu[c].number,stu[c].count); } } } int add1() { int e,f,y; struct name { char nam[9]; }na[300]; FILE *fp; fp=fopen("stud","r"); for(e=0;e fread(&stu[e],sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",stu[e].name,stu[e].sex,stu[e].number,stu[e].count,stu[e].score); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("***************************n"); printf(" 模拟考勤开始。n"); printf("***************************n"); for(e=0;e printf("请输入第%d节课未到的学生姓名并以'over'结束:",e+1); for(y=0;y<=SIZE;y++) { scanf("%s",na[y].nam); for(f=0;f if(strcmp(na[y].nam,stu[f].name)==0) stu[f].count++; } if(strcmp(na[y].nam,"over")==0) break; } } fp=fopen("stud","w"); for(e=0;e if(fwrite(&stu[e],sizeof(struct student),1,fp)!=1) printf("文件输入错误。n"); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("模拟考勤完毕,结果如下:n"); fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 n"); printf("-------------------------n"); for(f=0;f fread(&stu[f],sizeof(struct student),1,fp); printf("%s t%s t%d t%dn",stu[f].name,stu[f].sex,stu[f].number,stu[f].count); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("#######################################n"); printf("# 考勤完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#######################################n"); start(); } void mark() { int g; FILE *fp; fp=fopen("stud","r+"); printf("姓名 t性别 t学号 t缺课数n"); printf("----------------------------------------------n"); for(g=0;g fread(&stu[g],sizeof(struct student),1,fp); printf("%s t%s t%d t%dn",stu[g].name,stu[g].sex,stu[g].number,stu[g].count); } printf("n"); printf("n"); printf("n"); printf("n"); printf("********************************n"); printf(" 评分开始。n"); printf("********************************n"); for(g=0;g stu[g].score=(100-stu[g].count*5); if(stu[g].score<0) stu[g].score=0; } fclose(fp); fp=fopen("stud","w"); for(g=0;g if(fwrite(&stu[g],sizeof(struct student),1,fp)!=1) printf("文件输入错误。n"); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("结果如下:n"); fp=fopen("stud","r"); printf("姓名 t性别 t学号 t缺课数 t考勤分数 n"); printf("----------------------------------------------n"); for(g=0;g fread(&stu[g],sizeof(struct student),1,fp); printf("%s t%s t%d t%d t%dn",stu[g].name,stu[g].sex,stu[g].number,stu[g].count,stu[g].score); } fclose(fp); printf("n"); printf("n"); printf("n"); printf("n"); printf("#######################################n"); printf("# 评分完毕 #n"); printf("# 欢迎下次再来。 #n"); printf("#######################################n"); start(); }
大家可以点个关注后续会持续更新0.0(在此先谢过各位了)



