c语言课设-考勤管理程序
文件大小: 19k
源码售价: 10 个金币 积分规则     积分充值
资源说明:#include #include #include #define MAX 100 //最多学生人数 struct Stu1 //学生信息 { char no[10]; char name[20]; char sex[5]; int age; char classroom[20]; }; struct date //日期 { int year; int month; int day; }; struct Stu2 //考勤 { int late[MAX]; //迟到次数 int early[MAX]; //早退次数 int absence[MAX]; //旷课节数 struct date dat; }; typedef struct Stu3 //统计 { int late[MAX]; int early[MAX]; int absence[MAX]; }statistic; void input_stud() //学生信息初始化 { FILE *fp; struct Stu1 stu; int i,n; printf("\n学生人数(<=100): "); scanf("%d",&n); if((fp=fopen("student1.dat","wb+"))==NULL) { printf("\t>>不能建立student1.dat文件\n"); exit(0); } printf("\n******************************************************************************\n"); printf("学号 \t姓名\t性别\t年龄\t班级\n"); for(i=0;i>不能建立student1.bin文件\n"); exit(0); } fseek(fp,0,2); n=ftell(fp)/sizeof(struct Stu1); printf("\n******************************************************************************\n"); printf(" 输入信息: 学号 \t姓名\t性别\t年龄\t班级\n"); printf(" 学生信息: "); scanf("%s%s%s%d%s",stun.no,stun.name,stun.sex,&stun.age,stun.classroom); printf("1,确定 2,取消\n"); printf("请选择: "); scanf("%d",&t); switch(t) { case 1:rewind(fp); i=0; while(i>学号重复\n"); else { fseek(fp,0,2); fwrite(&stun,sizeof(struct Stu1),1,fp); }break; case 2:break; } printf("******************************************************************************\n"); fclose(fp); } void update_stud() //按学号修改学生信息 { FILE *fp; struct Stu1 stu; int i,n,t; char no[10]; if((fp=fopen("student1.dat","rb+"))==NULL) { printf("\t>>不能打开student1.dat文件\n"); exit(1); } fseek(fp,0,2); n=ftell(fp)/sizeof(struct Stu1); printf("\n******************************************************************************\n"); printf("要修改的学号: "); scanf("%s",no); i=0; rewind(fp); while(i>无该学号的学生\n"); printf("******************************************************************************\n"); fclose(fp); } void create_attend(int t) //考勤记录 { FILE *fp1,*fp2; int i,n,p; struct Stu1 stu; struct Stu2 attend; switch(t) { case 2:if((fp1=fopen("student2.dat","ab+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(0); } break; case 1:if((fp1=fopen("student2.dat","wb+"))==NULL) { printf("\t>>不能建立student2.dat文件\n"); exit(0); } } fseek(fp1,0,2); if((fp2=fopen("student1.dat","rb+"))==NULL) { printf("\t>>不能打开student1.dat文件\n"); exit(2); } fseek(fp2,0,2); n=ftell(fp2)/sizeof(struct Stu1); printf("\n年.月.日: "); scanf("%d%d%d",&attend.dat.year,&attend.dat.month,&attend.dat.day); printf("\n******************************************************************************\n"); printf("学号 \t姓名\t迟到\t早退\t旷课\n"); rewind(fp2); for(i=0;i>不能打开student1.dat文件\n"); exit(3); } fseek(fp1,0,2); n=ftell(fp1)/sizeof(struct Stu1); rewind(fp1); if((fp2=fopen("student2.dat","rb+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(4); } fseek(fp2,0,2); m=ftell(fp2)/sizeof(struct Stu2); if(m>0) rewind(fp2); printf("\n学号: "); scanf("%s",s); for(i=0;i>不能打开student1.dat文件\n"); exit(5); } fseek(fp1,0,2); n=ftell(fp1)/sizeof(struct Stu1); rewind(fp1); if((fp2=fopen("student2.dat","rb+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(6); } fseek(fp2,0,2); x=ftell(fp2)/sizeof(struct Stu2); if(x>0) rewind(fp2); printf("\n日期: "); scanf("%d%d%d",&y,&m,&d); while(x) { fread(&attend,sizeof(struct Stu2),1,fp2); if(y==attend.dat.year && m==attend.dat.month && d==attend.dat.day) break; x--; } if(x==0) printf("对不起,该日期不存在,谢谢!\n"); else { printf("\n******************************************************************************\n"); printf("学号 \t姓名\t性别\t年龄\t班级\t迟到\t早退\t旷课\t扣学分\n"); rewind(fp2); for(i=0;i>不能打开student1.dat文件\n"); exit(5); } fseek(fp,0,2); n=ftell(fp)/sizeof(struct Stu1); rewind(fp); printf("\n******************************************************************************\n"); printf("学号 \t姓名\t性别\t年龄\t班级\n"); for(i=0;i>不能打开student1.dat文件\n"); exit(7); } fseek(fp1,0,2); n=ftell(fp1)/sizeof(struct Stu1); rewind(fp1); if((fp2=fopen("student2.dat","rb+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(8); } fseek(fp2,0,2); x=ftell(fp2)/sizeof(struct Stu2); if(x>0) rewind(fp2); printf("请选择: "); while(scanf("%d",&t)==1) { if(t==0) break; p=x; printf("\n学号、日期: "); scanf("%s%d%d%d",s,&y,&m,&d); rewind(fp1); rewind(fp2); for(i=0;i>不能打开student1.dat文件\n"); exit(9); } fseek(fp1,0,2); n=ftell(fp1)/sizeof(struct Stu1); rewind(fp1); if((fp2=fopen("student2.dat","rb+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(10); } fseek(fp2,0,2); x=ftell(fp2)/sizeof(struct Stu2); if(x>0) rewind(fp2); for(i=0;i>不能打开student1.dat文件\n"); exit(11); } fseek(fp1,0,2); n=ftell(fp1)/sizeof(struct Stu1); rewind(fp1); if((fp2=fopen("student2.dat","rb+"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(12); } fseek(fp2,0,2); x=ftell(fp2)/sizeof(struct Stu2); if(x>0) rewind(fp2); printf("\n删除学号: "); scanf("%s",no); printf("1,确定 2,取消\n"); printf("请选择: "); scanf("%d",&p); switch(p) { case 1:if(n>0 && x>0) { for(i=0;i>不能打开student1.dat文件\n"); exit(13); } fclose(fp1); case 1:if((fp2=fopen("student2.dat","wb"))==NULL) { printf("\t>>不能打开student2.dat文件\n"); exit(13); } } printf("\t>>记录已删\n"); printf("\n1,仅删除考勤记录 2,全部删除 0,返回\n"); printf("请选择: "); } case 2:break; } printf("******************************************************************************\n"); fclose(fp2); } void main() { int t,p1,p2; system("color 3e"); printf("\n 欢迎使用\n"); printf("\n 考勤管理程序\n"); printf("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n"); printf("1,初始化(学生信息和考勤初始化) 2,添加(添加学生和考勤记录)\n\n"); printf("3,按学号显示考勤记录 4,按日期显示考勤记录\n\n"); printf("5,查找(修改和显示) 6,显示学生信息(含修改)\n\n"); printf("7,统计(单个显示和全显示) 8,删除\n\n"); printf("9,全删 0,返回\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n"); printf("请选择: "); while(scanf("%d",&t)==1) { if(t==0) { system("cls"); printf("\n\n\n\n\n\n\n\n\n 再见!\n\n\n\n"); printf("\n\n\n\n\n\n\n 设计者: 邱河成\n"); printf("\n 班级: 计算111班 \n\n\n\n"); break; } switch(t) { case 1:system("cls"); printf("\n1,学生信息初始化 2,考勤初始化 0,返回\n"); printf("请选择: "); while(scanf("%d",&p1)==1) { if(p1==0) break; switch(p1) { case 1:system("cls");input_stud();break; case 2:system("cls");create_attend(t);break; } system("cls"); printf("\n1,学生信息初始化 2,考勤初始化 0,返回\n"); printf("请选择: "); } break; case 2:system("cls"); printf("\n1,添加学生 2,添加考勤记录 0,返回\n"); printf("请选择: "); while(scanf("%d",&p2)==1) { if(p2==0) break; switch(p2) { case 1:system("cls");add_stud();break; case 2:system("cls");create_attend(t);break; } system("cls"); printf("\n1,添加学生 2,添加考勤记录 0,返回\n"); printf("请选择: "); } break; case 3:system("cls");get_attend();system("pause");break; case 4:system("cls");disp_attend();system("pause");break; case 5:system("cls");find_attend();system("pause");break; case 6:system("cls");disp_stud();system("pause");break; case 7:system("cls");total_attend();system("pause");break; case 8:system("cls");del_stud();system("pause");break; case 9:system("cls");dela_stud();system("pause");break; } system("cls"); printf("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n"); printf("1,初始化(学生信息和考勤初始化) 2,添加(添加学生和考勤记录)\n\n"); printf("3,按学号显示 4,按日期显示\n\n"); printf("5,查找(修改和显示) 6,显示学生信息(含修改)\n\n");; printf("7,统计(单个显示和全显示) 8,删除\n\n"); printf("9,全删 0,返回\n\n"); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n"); printf("请选择: "); } }
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。