#include<stdio.h>
#include<string.h>//使我可以调用strcmp进行自定义
#include<stdlib.h>//使我可以调用字符颜色库
typedef struct student//tupedef将结构体类型标识符进行自定义
{
char sno[20];//学号
char name[50];//姓名
char sex[10];//性别
int age;//年龄
char nation[10];//民族
char origin[30];//籍贯
char contact[20];//联系方式
} SD;
SD datas[5000];//定义了可存储500位学生的数组
int sl=0;//记录存储了多少位学生的信息
//
void printxinxi()//打印信息
{
if(sl==0)
printf("当前无学生信息\n") ;
printf("学号 姓名 性别 年龄 民族 籍贯 联系方式\n") ;
int i=0;
for(i=0;i<sl;i++)
{
printf("%s %s %s %d %s %s %s\n",datas[i].sno,datas[i].name,datas[i].sex,
datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);
}
}
/
void menu()//菜单
{
printf("\n");
printf(" ****************【菜单】*********************\n");
printf(" *** 《1》:增加一条学生信息 ***\n");
printf(" *** 《2》:修改一条学生信息 ***\n");
printf(" *** 《3》:查找一条学生信息 ***\n");
printf(" *** 《4》:删除一条学生信息 ***\n");
printf(" *** 《5》:从文件导入学生信息 ***\n");
printf(" *** 《6》:将学生信息导入文件 ***\n");
printf(" *** 《7》:打印所有学生信息 ***\n");
printf(" *** 《8》:退出 ***\n");
printf(" *********************************************\n");
printf(" >>>请输入1-8中你要进行的操作:");
}
//
void save()//保存内容到文件内
{
FILE *fp=NULL;//定义一个文件指针
char wenjianmin[100];
printf("请输入文件地址:");
scanf("%s",wenjianmin);
fp=fopen("Xueshengxinxi.txt","wb+");//为读/写新建一个二进制文件
if(fp==NULL)
{
printf("打开失败\n");
return;
}
int i=0;
for(i=0;i<sl;i++)
{
fprintf(fp,"%s %s %s %d %s %s %s\n",datas[i].sno,datas[i].name,datas[i].sex,
datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);//写入文件
fflush(stdin);//清除文件缓冲区
}
fclose(fp);//关闭文件
printf("保存成功!\n");
}
/
void read()//读取文件内容
{
FILE *fp=NULL;
char wenjianmin[100];
printf("请输入文件地址:");
scanf("%s",wenjianmin);
fp=fopen("Xueshengxinxi.txt","r");//以只读方式读取文件
if(fp==NULL)
{
printf("打开失败\n");
//return;
}
sl=0;
while(!feof(fp))//feof()检查文件是否结束,结束返回非0值,未结束返回0值;
{
fscanf(fp,"%s %s %s %d %s %s %s\n",datas[sl].sno,datas[sl].name,datas[sl].sex,
&datas[sl].age,datas[sl].nation,datas[sl].origin,datas[sl].contact); //从文件读取数据
sl++;
}
printf("读取成功!\n");
}
//
void add()//增加信息
{
SD data;//新定义一个结构体变量
printf("请按照顺序输入学生的学号:");
scanf("%s",data.sno);
printf("请输入学生的姓名:") ;
scanf("%s",data.name);
printf("请输入学生的性别:");
scanf("%s",data.sex);
printf("请输入学生的年龄:");
scanf("%d",&data.age);
printf("请输入学生的民族:");
scanf("%s",data.nation);
printf("请输入学生的籍贯:");
scanf("%s",data.origin);
printf("请输入学生的联系方式:");
scanf("%s",data.contact);
datas[sl]=data;
sl++;
printf("添加成功!\n");
}
void dele()//删除
{
printf("请输入要删除的学生学号:");
char sno[20];
scanf("%s",sno);
int flg,i;
flg=0;
for(i=0;i<sl;i++)
if(strcmp(datas[i].sno,sno)==0)
{
int j;
flg=1;
for(j=i;j<sl-1;j++)
datas[j]=datas[j+1];
}
if(flg==0)
{
printf("系统内没有该位学生的信息\n") ;
}
sl--;
printf("删除成功!\n");
}
//
void modify()//修改
{
printf("请输入你需要修改的学生的学生号");
char sno[20];
scanf("%s",sno);
int flg,i;
flg=0;
for(i=0;i<sl;i++)
if(strcmp(datas[i].sno,sno)==0)
{
flg=1;
printf("请输入需要修改的学生的姓名:") ;
scanf("%s",datas[i].name);
printf("请输入需要修改的学生的性别:");
scanf("%s",datas[i].sex);
printf("请输入需要需改的学生的年龄:");
scanf("%d",&datas[i].age);
printf("请输入需要修改的学生的民族:");
scanf("%s",datas[i].nation);
printf("请输入需要修改的学生的籍贯:");
scanf("%s",datas[i].origin);
printf("请输入需要修改的学生的联系方式:");
scanf("%s",datas[i].contact);
}
if(flg==0)
{
printf("系统内没有该位学生的信息\n") ;
}
printf("修改成功!\n");
}
///
void seek()//寻找
{
printf("请输入要查找的学生学号:");
char sno[20];
scanf("%s",sno);
int flg,i;
flg=0;
for(i=0;i<sl;i++)
if(strcmp(datas[i].sno,sno)==0)
{
flg=1;
printf("%s %s %s %d %s %s %s\n",datas[i].sno,datas[i].name,datas[i].sex,
datas[i].age,datas[i].nation,datas[i].origin,datas[i].contact);
}
if(flg==0)
{
printf("系统内没有该位学生的信息!\n") ;
}
}
///
int main()//主函数
{
system("color 1F");//改变输出颜色
int cmd;
do
{
menu();
scanf("%d",&cmd);
switch(cmd)
{
case 1:
printf("添加一条学生信息\n");
add();
break;
case 2:
printf("修改一条学生信息\n");
modify() ;
break;
case 3:
printf("查找一条学生信息\n");
seek();
break;
case 4:
printf("删除一条学生信息\n");
dele();
break;
case 5:
printf("从文件导入学生信息\n");
read();
break;
case 6:
printf("将学生信息导入文件\n");
save();
break;
case 7:
printf("打印所有学生信息\n");
printxinxi();
break;
case 8:printf("已退出学生信息管理系统!\n ");
break;
default:
printf("没有该项操作,请输入正确的操作!\n") ;
printf("\n");
break;
}
}
while(cmd!=8);
return 0;
}