开 始 输出界面 switch(item) 1 2 record() amend() search() goal() Look() 5 3 4
2. record() 函数
void record() { int i,j=0,jx=1; printf(\学 生 基 本 信 息 录 入*****************************\\n\ if((fp=fopen(\ { printf(\文件打开失败\\n\ exit(0); } for(i=0;jx==1;i++) //输入信息循环 { for(;j==0;) //输入确认循环 { getchar(); printf(\请输入第%d个学生的姓名 \ gets(stu[i].name); printf(\请输入第%d个学生的学号 \ gets(stu[i].number); printf(\请输入第%d个学生的性别(男:m 女:f) \
break 结束
stu[i].sex=getchar(); printf(\请输入第%d个学生的生日(格式:年 月 日) \ scanf(\ printf(\请输入第%d个学生的当前考勤次数 \ scanf(\ printf(\您输入的信息为 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日\\n 0 重输 1 确认\,stu[i].day); scanf(\输入确认 } j=0; if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf(\文件写入错误\\n\写入文件 printf(\是否继续输入下一个学生信息 0 终止 1 继续\\n\ scanf(\继续输入选择 } fclose(fp); printf(\返回主菜单\\n\ getchar(); a=getchar(); getchar(); if(a=='0') main(); //返回主菜单 } 流程图:
开始 0=>j 打开文件
3. amend()函数
结束 N 1=>jx 0=>i jx=1? Y j=0? Y 输入i+1个学生信输入j值选择是否确认 写入文件 i+1=>i 输入jx值选择是否继续 void amend() { int i=0,j=0,sway,t,x; char name[10],number[10]; printf(\学 生 考 勤 修 改**************************\\n\ if((fp=fopen(\将文件内容读入内存 { printf(\文件打开失败\\n\ exit(0);
} for(i=0;feof(fp)==0;i++) fread(&stu[i],sizeof(struct student),1,fp); //读取文件内容 fclose(fp); //关闭文件 printf(\选择查找方式 1 按照姓名查找 2 按照学号查找\ scanf(\ /**********************按照姓名查找开始*************************/// if(sway==1) { printf(\请输入需要修改学生的姓名 \ // printf(\ scanf(\ for(j=0;t!=0;j++) { t=strcmp(stu[j].name,name); if(j==i) { t=0; printf(\未找到您所查询的数据,请重新输入\\n\ } } if(j
写入错误\\n\写入文件 fclose(fp); //关闭文件 } } printf(\是否继续修改其他学生考勤 0 否 1 是\ scanf(\ if(x==1) amend(); } /**********************按照姓名查找结束*************************/// /**********************按照学号查找开始*************************/// if(sway==2) { printf(\请输入需要修改学生的学号 \ // printf(\ scanf(\ for(j=0;t!=0;j++) { t=strcmp(stu[j].number,number); if(j==i) { t=0; printf(\未找到您所查询的数据,请重新输入\\n\ } } if(j