转载:http://hi.baidu.com/fire_man/blog/item/18816b1ff58a3dc9a6866975.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void guanli();//管理员文件
void zhu();//查询主函数
void nianca();
void mingca();
void banca();
void xingca();
void xueca();
void zhucaidan();
void tianjia();
void shezhixinxi();
void cunxinxi();
void tian();
void quanbushanchu();
void xingbieshanchu();
void banjishanchu();
void mougeshanchu();
void fugai();
void wenjian();
void shanchu();
int quanbuxianshi();
struct xuesheng
{
char name[8]; //姓名
char xingbie[3]; //性别
int age; //年龄
char banji[20]; //班级
char fenshu[3]; //分数
char hao[9]; //学号
};
typedef struct xuesheng XUE;
XUE str;
FILE *fp=NULL;
int no=1;
void main()
{
int a;
printf("/t/t简易学生档案库/n确认您的身份:/n");
while(1)
{
printf("/t1 管理员/n/t2 用户/n/t3 退出/n请选择:");
scanf("%d",&a);
switch(a)
{
case 1:guanli();
zhucaidan();
break;
case 2:zhu();
break;
case 3:
exit(0);
default:
printf("请重新选择!/n");
}
}
}
void guanli()
{
char mima[6];
char mi[6];
strcpy(mima,"000000");
for(int i=0;i<3;i++)
{
printf("请输入你的管理员密码(6位):");
scanf("%s",mi);
if(strcmp(mima,mi)==0)
{
printf("密码正确!/n");
return;
}
else
{
printf("密码不正确,请重新输入:/n");
}
}
printf("三次密码错误,系统即将退出。/n");
exit(0);
}
void zhucaidan()
{
int a;
while(1)
{
printf("/n/n/t 主菜单/n/t1 输出所有学生信息/n/t2 查找学生信息/n/t3 输入一个学生信息/n/t4 删除学生信息/n/t5 退出/n请选择:");
scanf("%d",&a);
switch(a)
{
case 1:quanbuxianshi();
break;
case 2:zhu();
break;
case 3:tian();
break;
case 4:shanchu();
break;
case 5:
exit(0);
default:
printf("请重新选择!/n");
}
}
}
void zhu()
{
int a,b;
b=quanbuxianshi();
while(b)
{
printf("/n/t请问你想按什么来查询:/n");
printf("/t1 年龄/n/t2 姓名/n/t3 班级/n/t4 性别/n/t5 学号/n/t 6 返回上一层/n/t 7 退出系统/n");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:nianca();
break;
case 2:mingca();
break;
case 3:banca();
break;
case 4:xingca();
break;
case 5:xueca();
break;
case 6:return;
case 7:exit(0);
default:
printf("请重新选择!/n");
break;
}
}
}
void nianca()
{
int nianling,a=0;
printf("请输入你要查询的年龄:/n");
fflush(stdin);
scanf("%d",&nianling);
fp=fopen("wenjian.txt","rb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(str.age==nianling)
{
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("没有你要找的学生信息。/n");
}
}
void mingca()
{
char xm[20];
int a=0;
printf("请输入你要查询的姓名:/n");
fflush(stdin);
scanf("%s",xm);
fp=fopen("wenjian.txt","rb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.name,xm)==0)
{
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("没有你要找的学生信息。/n");
}
}
void banca()
{
char bj[20],a=0;
printf("请输入你要查询的班级:/n");
fflush(stdin);
scanf("%s",bj);
fp=fopen("wenjian.txt","rb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.banji,bj)==0)
{
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("没有你要找的学生信息。/n");
}
}
void xingca()
{
char xb[3];
int a=0;
printf("请输入你要查询的性别/n");
fflush(stdin);
scanf("%s",xb);
fp=fopen("wenjian.txt","rb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.xingbie,xb)==0)
{
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("没有你要找的学生信息。/n");
}
}
void xueca()
{
char xh[9];
int a=0;
printf("请输入你要查询的学号/n");
fflush(stdin);
scanf("%s",xh);
fp=fopen("wenjian.txt","rb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.hao,xh)==0)
{
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("没有你要找的学生信息。/n");
}
}
void tian()
{
while(1)
{
char xuanze;
printf("/ta 添加/n/tb 返回/n/t请选择服务/n");
fflush(stdin);
scanf("%c",&xuanze);
switch(xuanze)
{
case'a':
case'A':
{
printf("/t你选择添加服务/n");
shezhixinxi();
cunxinxi();
break;
}
case'b':
case'B':
{
return;
}
}
}
}
void shezhixinxi()
{
printf("/t请输入姓名/n");
fflush(stdin);
scanf("%s",str.name);
printf("/t请输入年龄/n");
fflush(stdin);
scanf("%d",&str.age);
printf("/t请输入性别(男/女)/n");
fflush(stdin);
scanf("%s",str.xingbie);
printf("/t请输入班级/n");
fflush(stdin);
scanf("%s",str.banji);
printf("/t请输入分数/n");
fflush(stdin);
scanf("%s",str.fenshu);
printf("/t请输入学号/n");
fflush(stdin);
scanf("%s",str.hao);
printf("/t添加成功!/n");
printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%s/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
}
void cunxinxi()
{
fp=fopen("wenjian.txt","ab+");
if(fp==NULL)
{
printf("/t文件失败/n");
exit(0);
}
fwrite(&str,sizeof(XUE),1,fp);
fclose(fp);
}
void shanchu()
{
char xuanze;
for (;;)
{
printf("/n/ta 全部删除/n");
printf("/tb 按性别删除/n");
printf("/tc 按班级删除/n");
printf("/td 删除某一个/n");
printf("/te 返回上级菜单/n");
printf("/t请输入您的选择:/n");
fflush(stdin);
scanf("%c",&xuanze);
switch(xuanze)
{
case 'a':
case 'A':
{
quanbushanchu();
printf("/n删除成功!");
break;
}
case 'b':
case 'B':
{
xingbieshanchu();
printf("/n删除成功!");
break;
}
case 'c':
case 'C':
{
banjishanchu();
printf("/n删除成功!");
break;
}
case 'd':
case 'D':
{
mougeshanchu();
printf("/n删除成功!");
break;
}
case 'e':
{
return;
}
default:
{
printf("/t您的输入有误,请重新输入/n/n");
}
}
}
}
void quanbushanchu()
{
printf("/t全部删除/n");
fugai();
return;
}
void xingbieshanchu()
{
for(int i=0;i<3;i++)
{
char xingbie;
wenjian();
char name[20]={0};
char xingbie1[3]={0};
int age=0;
char banji[20];
char fenshu[3]={0};
fread(&str,sizeof(XUE),1,fp);
printf("/t请输入要删除人的性别(m:男/f:女)");
fflush(stdin);
scanf("%c",&xingbie);
while(!feof(fp))
{
if(xingbie=='m'||xingbie=='M')
{
if(strcmp(str.xingbie,"男")==0)
{
strcpy(str.name,name);
strcpy(str.xingbie,xingbie1);
str.age=age;
strcpy(str.banji,banji);
strcpy(str.fenshu,fenshu);
}
return;
}
else if(xingbie=='f'||xingbie=='F')
{
if(strcmp(str.xingbie,"女")==0)
{
strcpy(str.name,name);
strcpy(str.xingbie,xingbie1);
str.age=age;
strcpy(str.banji,banji);
strcpy(str.fenshu,fenshu); ;
}
return;
}
else
{
printf("/t您的输入有误,请重新输入/n");
}
}
}
}
void banjishanchu()
{
char banji[20];
wenjian();
char name[20]={0};
char xingbie1[3]={0};
int age=0;
char banji1[20]={0};
char fenshu[3]={0};
fread(&str,sizeof(XUE),1,fp);
printf("/t请输入您要删除的班级:/n");
fflush(stdin);
scanf("%s",banji);
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(banji,str.banji)==0)
{
strcpy(str.name,name);
strcpy(str.xingbie,xingbie1);
str.age=age;
strcpy(str.banji,banji1);
strcpy(str.fenshu,fenshu); ;
}
return;
}
}
void mougeshanchu()
{
char name1[20]={0};
char xingbie1[3]={0};
int age=0;
char banji[20]={0};
char fenshu[3]={0};
char name[20];
wenjian();
printf("/t请输入该学生的姓名");
fflush(stdin);
scanf("%s",name);
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.name,name))
{
strcpy(str.name,name1);
strcpy(str.xingbie,xingbie1);
str.age=age;
strcpy(str.banji,banji);
strcpy(str.fenshu,fenshu); ;
}
return;
}
}
void fugai()
{
fp=fopen("wenjian.txt","wb+");
if(fp==NULL)
{
printf("/tSorry!!!文件打开失败,系统即将退出。/n");
exit(0);
}
fclose(fp);
}
void wenjian()
{
fp=fopen("wenjian.txt","rb+");
if(fp==NULL)
{
printf("/tSorry!!!文件打开失败,系统即将退出。/n");
exit(0);
}
fclose(fp);
}
int quanbuxianshi()
{int a=0;
if(!(fp=fopen("wenjian.txt","rb+")))
fp=fopen("wenjian.txt","wb+");
while(!feof(fp))
{
fread(&str,sizeof(XUE),1,fp);
if(strcmp(str.name,""))
{printf("%s/t/t%s/t学号:%s/t年龄:%d /t班级:%s/n/t分数:%d/n",str.name,str.xingbie,str.hao,str.age,str.banji,str.fenshu);
a=1;
}
}
if(a==0)
{
printf("/n目前没有学生信息。/n");
}
return a;
}