1、#include #include #include #define N 100struct student char XUEHAO10; char BANJI6; char XINGMING6; char XINGBIE2; char SHENGRI8; char JIGUAN10; char XUEYUAN10; char TIANHUA10;void CAIDAN();void LURU();void SHAXUN();void sch_XUEHAO(FILE *fp);void sch_XINGMING(FILE *fp);void SHANCHU();void del_XUEHAO(
2、FILE *fp);void del_XINGMING(FILE *fp);void TIANJIA();void XIUGAI();void XIANZHI();void TONGJI();main() char choose,yes_no; do CAIDAN(); printf(n 请输入序号: (18) ); choose=getch(); switch(choose) case1: printf( %c,choose);LURU();break; case2: printf( %c,choose);SHAXUN();break; case3: printf( %c,choose);S
3、HANCHU();break; case4: printf( %c,choose);TIANJIA();break; case5: printf( %c,choose);XIUGAI();break; case6: printf( %c,choose);XIANZHI();break; case7: printf( %c,choose);TONGJI();break; case8: break; default:printf(n %c 序号不对!n,choose); if(choose=8)break; printf(n 要继续选择吗 ? (Y/N) n); do yes_no=getch()
4、; printf( %c,yes_no);while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n); while(yes_no=Y|yes_no=y);void CAIDAN() printf(nnn); printf( * n ); printf( * 请输入序号: (1 8) * n ); printf( * 1-录入学生信息 * n ); printf( * 2-查询学生信息 * n ); printf( * 3-删除学生信息 * n ); printf( * 4-添加学生信息 * n ); printf( * 5-修改学生信息 * n ); prin
5、tf( * 6-显示学生信息 * n ); printf( * 7-查找同一个学院的人数 * n ); printf( * 8-退出系统 * n ); printf( * n );/*定义录入学生信息的函数*/void LURU() int i=1; struct student temp; FILE *fp; fp=fopen(123.dat,w); if(fp=NULL) printf(n 打开文件失败! n);return; printf(n 请输入第1个学生信息:n); printf( 学号(用#结束输入): ); do gets(temp.XUEHAO); while(strcmp(
6、temp.XUEHAO, )=0); printf( 班级(用#结束输入): );gets(temp.BANJI); printf( 姓名(用#结束输入): );gets(temp.XINGMING); printf( 性别(用#结束输入): );gets(temp.XINGBIE); printf( 生日(用#结束输入): );gets(temp.SHENGRI); printf( 籍贯(用#结束输入): );gets(temp.JIGUAN); printf( 学院(用#结束输入): );gets(temp.XUEYUAN); printf( 电话(用#结束输入): );gets(temp
7、.TIANHUA); while(temp.XUEHAO0!=#&temp.BANJI0!=#&temp.XINGMING0!=#&temp.XINGBIE0!=#&temp.SHENGRI0!=#&temp.JIGUAN0!=#&temp.XUEYUAN0!=#&temp.TIANHUA0!=#) fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.BANJI,temp.XINGMING,temp.XINGBIE,temp.SHENGRI,temp.JIGUAN,temp.XUEYUAN,temp.TIANHUA); i+
8、; printf(n 请输入第 %d 个学生信息:n ,i); printf( 学号(用#结束输入): ); do gets(temp.XUEHAO); while(strcmp(temp.XUEHAO, )=0); printf( 班级(用#结束输入): );gets(temp.BANJI); printf( 姓名(用#结束输入): );gets(temp.XINGMING); printf( 性别(用#结束输入): );gets(temp.XINGBIE); printf( 生日(用#结束输入): );gets(temp.SHENGRI); printf( 籍贯(用#结束输入): );ge
9、ts(temp.JIGUAN); printf( 学院(用#结束输入): );gets(temp.XUEYUAN); printf( 电话(用#结束输入): );gets(temp.TIANHUA);fclose(fp);/*定义查询学生信息的函数*/void SHAXUN() char c; FILE *fp; fp=fopen(123.dat,r); if(fp=NULL) printf(n 打开文件失败! n);return; printf(n 按学号查询( 1 ),还是按姓名查询( 2 )? ); c=getch(); putch(c); if(c=1) sch_XUEHAO(fp);
10、 else if(c=2) sch_XINGMING(fp); else printf(n 非法字符!n); fclose(fp);/*定义按学号查询学生信息的函数*/void sch_XUEHAO(FILE *fp) int flag=0,n=0; char tempXUEHAO10; struct student temp; printf(n 请输入要查询学生信息的学号: ); gets(tempXUEHAO); while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&temp.XUEHAO,&temp.BANJI,&te
11、mp.XINGMING,&temp.XINGBIE,&temp.SHENGRI,&temp.JIGUAN,&temp.XUEYUAN,&temp.TIANHUA); if(strcmp(tempXUEHAO,temp.XUEHAO)=0) if(flag=0) printf( 学号 班级 姓名 性别 生日 籍贯 学院 电话n); printf(%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.BANJI,temp.XINGMING,temp.XINGBIE,temp.SHENGRI,temp.JIGUAN,temp.XUEYUAN,temp.T
12、IANHUA); flag=1; n+; if(n=0) printf(n 文件中无此信息!n); else if(flag=0) printf(n 文件中无此人!n);/*定义按姓名查询学生信息的函数*/void sch_XINGMING(FILE *fp) int flag=0,n=0; char tempXINGMING6; struct student temp; printf(n 请输入要查询学生信息的姓名: ); gets(tempXINGMING); while(feof(fp)=0) fscanf(fp, %5s%10s%10s%10s%10s%10s%10s%10sn,&te
13、mp.XUEHAO,&temp.BANJI,&temp.XINGMING,&temp.XINGBIE,&temp.SHENGRI,&temp.JIGUAN,&temp.XUEYUAN,&temp.TIANHUA); if(strcmp(tempXINGMING,temp.XINGMING)=0) if(flag=0) printf( 学号 班级 姓名 性别 生日 籍贯 学院 电话n); printf(%5s%10s%10s%10s%10s%10s%10s%10sn,temp.XUEHAO,temp.BANJI,temp.XINGMING,temp.XINGBIE,temp.SHENGRI,te
14、mp.JIGUAN,temp.XUEYUAN,temp.TIANHUA); flag=1; n+; if(n=0) printf(n 文件中无此信息!n); else if(flag=0) printf(n 文件中无此人!n);/*定义删除学生信息的函数*/void SHANCHU() char c; FILE *fp; fp=fopen(123.dat,r); if(fp=NULL) printf(n 文件打开失败!n );return; printf(n 按学号删除( 1 ),还是按姓名删除( 2 )? ); c=getch(); putch(c); if(c=1) del_XUEHAO(
15、fp); else if(c=2) del_XINGMING(fp); else printf(n 非法字符!n); fclose(fp);/*定义按学号删除学生信息的函数*/void del_XUEHAO(FILE *fp) char tempXUEHAO10; int n=0,i=0,k; struct student stuN; while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JI
16、GUAN,stui.XUEYUAN,stui.TIANHUA);i+;n+; fclose(fp); printf(n 请输入要删除的学生信息的学号:); scanf(%s,tempXUEHAO); for(i=0;in;i+) if(strcmp(tempXUEHAO,stui.XUEHAO)=0)break; if(in) for(k=i;kn;k+) stuk=stuk+1; else printf(n 无此人!n); fp=fopen(123.dat,w);if(fp=NULL) printf(n 文件打开失败!n);return; for(i=0;in-1;i+) fprintf(f
17、p,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA);/*定义按姓名删除学生信息的函数*/void del_XINGMING(FILE *fp) char tempXINGMING6; int n=0,i=0,k; struct student stuN; while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,
18、stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA);i+;n+; fclose(fp); printf(n 请输入要删除的学生信息的姓名:); scanf(%s,tempXINGMING); for(i=0;in;i+) if(strcmp(tempXINGMING,stui.XINGMING)=0)break; if(in) for(k=i;kn;k+) stuk=stuk+1; else printf(n 无此人!n); fp=fopen(
19、123.dat,w); if(fp=NULL) printf(n 文件打开失败!n);return; for(i=0;in-1;i+) fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA); /*定义添加学生信息的函数*/void TIANJIA() char c; int n=0,i=0; struct student temp,stuN; FILE *fp
20、; fp=fopen(123.dat,r); if(fp=NULL) printf(n 打开文件失败!n); return; while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA);i+;n+; fclose(fp); for(i=0;in;i+) printf(n %s %s %s %s %s %s %s %sn,stui.X
21、UEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA);do printf(n 请输入新学生信息的学号:); do scanf(%s,temp.XUEHAO); while(strcmp(temp.XUEHAO, )=0); printf( 请输入新学生信息的班级:);scanf(%s,temp.BANJI); printf( 请输入新学生信息的姓名:);scanf(%s,temp.XINGMING); printf( 请输入新学生信息的性别:);scanf(
22、%s,temp.XINGBIE); printf( 请输入新学生信息的生日:);scanf(%s,temp.SHENGRI); printf( 请输入新学生信息的籍贯:);scanf(%s,temp.JIGUAN); printf( 请输入新学生信息的学院:);scanf(%s,temp.XUEYUAN); printf( 请输入新学生信息的电话:);scanf(%s,temp.TIANHUA); for(i=0;in;i+) if(strcmp(temp.XUEHAO,stui.XUEHAO)=0) printf(n 学号重复,要重新输入吗(Y/N)?); do c=getch(); put
23、ch(c); while(c!=Y&c!=y&c!=N&c!=n); putchar(n); break; if(i=n) stui=temp; break; while(c=Y|c=y); fp=fopen(123.dat,w); if(fp=NULL) printf(n 文件打开失败!n); return; for(i=0;i=n;i+) fprintf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUE
24、YUAN,stui.TIANHUA); fclose(fp);/*定义修改学生信息的函数*/void XIUGAI() char c; int n=0,i=0; struct student *find,temp,stuN,*p; FILE *fp; fp=fopen(123.dat,rb); if(fp=NULL) printf(n 打开文件失败!n); return; while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,s
25、tui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA);i+;n+; fclose(fp); if(n=0) printf(n 文件中无此信息!n);return; printf(n 请输入要修改的学生信息的学号: );scanf(%s,temp.XUEHAO); for(p=stu;pXUEHAO)=0) find=p; break; if(p=stu+n) printf(n 无此信息!n);return; do printf(n 请输入新学生信息的学号:); do scanf(%s,temp.XUEHAO); while(strcmp(temp
26、.XUEHAO, )=0); printf( 请输入新学生信息的班级:);scanf(%s,temp.BANJI); printf( 请输入新学生信息的姓名:);scanf(%s,temp.XINGMING); printf( 请输入新学生信息的性别:);scanf(%s,temp.XINGBIE); printf( 请输入新学生信息的生日:);scanf(%s,temp.SHENGRI); printf( 请输入新学生信息的籍贯:);scanf(%s,temp.JIGUAN); printf( 请输入新学生信息的学院:);scanf(%s,temp.XUEYUAN); printf( 请输入
27、新学生信息的电话:);scanf(%s,temp.TIANHUA); for(p=stu;pXUEHAO)=0&p!=find) printf(n 学号重复,要重新输入吗(Y/n)?); do c=getch();putch(c); while(c!=Y&c!=y&c!=N&c!=n);putchar(n); break; if(p=stu+n) *find=temp; break; while(c=Y|c=y); fp=fopen(123.dat,wb); if(fp=NULL) printf(n 打开文件失败!n ); return; for(p=stu;pXUEHAO,p-BANJI,p
28、-XINGMING,p-XINGBIE,p-SHENGRI,p-JIGUAN,p-XUEYUAN,p-TIANHUA); fclose(fp); /*定义显示学生信息的函数*/void XIANZHI() int n=0,i=0; struct student stuN; FILE *fp; fp=fopen(123.dat,r); if(fp=NULL) printf(n 打开文件失败!n); return; printf(nn 学号 班级 姓名 性别 生日 籍贯 学院 电话n);while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%
29、10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA); +i; +n; if(n=0) printf(n 文件中无此信息!n);else for(i=0;in;i+) printf(%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIA
30、NHUA);printf(nn 文件中共有 %d 个信息!n,n);fclose(fp);/*定义在同一个学院的学生人数的函数*/void TONGJI() int i=0,n=0,k=0; char tempXUEYUAN10; struct student stuN; FILE *fp; fp=fopen(123.dat,r); if(fp=NULL) printf(n 打开文件失败!n); return; while(feof(fp)=0) fscanf(fp,%5s%10s%10s%10s%10s%10s%10s%10sn,&stui.XUEHAO,&stui.BANJI,&stui.
31、XINGMING,&stui.XINGBIE,&stui.SHENGRI,&stui.JIGUAN,&stui.XUEYUAN,&stui.TIANHUA);i+;n+; fclose(fp); printf(nn 请输入学院名称: ); scanf(%s,tempXUEYUAN); printf(nn 学号 班级 姓名 性别 生日 籍贯 学院 电话n); for(i=0;in;i+) if(strcmp(tempXUEYUAN,stui.XUEYUAN)=0) printf(n%5s%10s%10s%10s%10s%10s%10s%10sn,stui.XUEHAO,stui.BANJI,stui.XINGMING,stui.XINGBIE,stui.SHENGRI,stui.JIGUAN,stui.XUEYUAN,stui.TIANHUA); k+; printf(nn 共有%d个学生在这个学院!n,k);9