附件:《学生考勤系统》主要源程序代码#include<stdio.h>#include<string.h> /*头文件。
*/int SIZE; /*宏定义。
*/ int CLASS;struct student /*定义一个结构体数组,包含学生信息。
*/ {char name[9];char sex[4];int number;int count;int score;}stu[300];void main() /*主函数,选择界面。
*/ {void start();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("\t请输入班级人数:\n");printf("######################################\n");scanf("%d",&SIZE);printf("\n");printf("######################################\n");printf("\t请输入课程节数:\n");printf("######################################\n");scanf("%d",&CLASS);printf("\n");printf("\n");printf("\n");printf("\n");start();}void start() /*主函数的辅助函数——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) /*利用switch函数实现子函数的选择功能。
*/ {case'1':found();break;case'2':search();break;case'3':add();break;case'4':mark();break;case'5':break;default :printf("****输入有误,请重输:\n");start();}}void found() /*第一个子函数——found函数,用于建立学生列表。
*/ {int a;printf("####################\n");printf(" 开始建表。
\n");printf("####################\n");FILE *fp;for(a=0;a<SIZE;a++) /*运用for循环,逐次输入学生信息。
*/ {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函数将学生信息写入文件。
*/for(a=0;a<SIZE;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<SIZE;a++){fread(&stu[a],sizeof(struct student),1,fp);printf("%s \t%s \t%d \t%d \t%d\n",stu[a].name,stu[a].sex,stu[a].number,stu[a].count,stu[a].scor e);}fclose(fp);printf("\n");printf("\n");printf("\n");printf("\n");printf("#######################################\n");printf("# 记录完毕 #\n");printf("# 欢迎下次再来。
#\n");printf("#######################################\n");start(); /*返回主函数的辅助函数,即主菜单。
*/ }void search() /*第二个子函数——search函数,用于查询学生信息。
*/{char b;void search1();void search2();printf("****************************************\n");printf(" 请选择:\n");printf(" 1.按姓名查找。
\n");printf(" 2.按学号查找。
\n");printf("****************************************\n");scanf("%s",&b);switch(b) /*运用switch函数,构成选择结构,可供选择查询类型。
*/{case'1':search1();break; /*进入第1种查询类型的函数。
*/ case'2':search2();break; /*进入第2种查询类型的函数。
*/ default :printf("****输入有误,请重输:");search();}printf("\n");printf("\n");printf("\n");printf("\n");printf("#######################################\n");printf("# 查找完毕 #\n");printf("# 欢迎下次再来。
#\n");printf("#######################################\n");start(); /*返回主函数的辅助函数,即主菜单。
*/ }void search1() /*第1种查询类型的函数。
*/{int c;char student_name[9];FILE *fp; /*打开已建立的文件并将其输出到屏幕上。
*/ fp=fopen("stud","r");printf("姓名 \t性别 \t学号 \t缺课数 \t考勤分数 \n");printf("----------------------------------------------\n");for(c=0;c<SIZE;c++){fread(&stu[c],sizeof(struct student),1,fp);printf("%s \t%s \t%d \t%d \t%d\n",stu[c].name,stu[c].sex,stu[c].number,stu[c].count,stu[c].scor e);}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<SIZE;c++) /*运用for循环和strcmp函数逐个比较输入的姓名与列表中学生的姓名,找到相同的后输出该学生的信息。