#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void menu(); /*主菜单,显示各种功能界面*/
void addnew(); /*添加新学生成绩*/
void disp(); /*查看所有学生成绩*/
void fname(); /*按学号查找*/
void delname(); /*按学号删除*/
void Open_File(); //打开文件
void Save_File(); //保存文件
void init(); //初始化界面
void modfi(); //修改学生信息
void find();
void fmax();
void sort();
/*结构体 姓名 学号 成绩 人数*/
struct student
{
char number[20];
char name[20];
int score[4];
}p[100];
int NUM=0;
/*主函数*/
int main()
{
int n;
init();
Open_File();
do
{
system("cls");
menu();
scanf("%d",&n);
switch(n)
{
case 0:
break;
case 1:
system("cls");
addnew();
Save_File();
system("cls");
break;
case 2:
system("cls");
disp();
system("cls");
break;
case 3:
system("cls");
delname();
Save_File();
system("cls");
break;
case 4:
system("cls");
find();
system("cls");
break;
case 5:
system("cls");
modfi();
Save_File();
system("cls");
break;
case 6:
system("cls");
sort();
Save_File();
system("cls");
break;
}
}while(n!=0);
return 0;
}
/*初始化界面*/
void init()
{
printf("**********************************\n");
printf("*******欢迎使用学生管理系统*******\n");
printf("**********************************\n");
system("pause");
system("cls");
}
/*主菜单*/
void menu()
{
printf("------------------------------\n");
printf("1:学生信息录入\n");
printf("2:学生信息浏览\n");
printf("3:信息删除\n");
printf("4:信息查询\n");
printf("5:信息修改\n");
printf("6:信息排序\n");
printf("0:退出\n");
printf("------------------------------\n");
printf("请输入编号进行操作!\n");
}
/*新增*/
void addnew()
{
printf("请输入新增学生学号\n");
scanf("%s",&p[NUM].number);
printf("请输入新增学生姓名\n");
scanf("%s",&p[NUM].name);
printf("请输入新增学生语文成绩\n");
scanf("%d",&p[NUM].score[0]);
printf("请输入新增学生数学成绩\n");
scanf("%d",&p[NUM].score[1]);
printf("请输入新增学生英语成绩\n");
scanf("%d",&p[NUM].score[2]);
p[NUM].score[3]=p[NUM].score[0]+p[NUM].score[1]+p[NUM].score[2];
NUM++;//学生人数+1
printf("新增学生成绩成功!\n");
system("pause");
}
/*显示全部联系人*/
void disp()
{
int i=0;
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
for(i=0;i<NUM;i++)
{
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
}
system("pause");
}
/*按学号查找*/
void fname()
{
int i;
char n[20];
printf("请输入查找学生学号\n");
scanf("%s",n);
for(i=0;i<NUM;i++)
{
if(!strcmp(n,p[i].number))
{
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
break;
}
}
if(i==NUM)
printf("无此学生信息!\n");
system("pause");
}
/*按学号删除*/
void delname()
{
int i,j;
char number[20];
printf("请输入要删除的学生学号\n");
scanf("%s",number);
for(i=0;i<NUM;i++)
{
if(!strcmp(number,p[i].number))
{
for(j=i;j<NUM-1;j++)
{
p[j]=p[j+1];
}
break;
}
}
if(i==NUM)
{
printf("无此学生信息!删除失败!\n");
system("pause");
system("cls");
}
else
{
NUM--;
printf("删除成功!\n");
system("pause");
system("cls");
}
}
/*保存文件*/
void Save_File()
{
FILE *fp;
int i;
if((fp=fopen("student.txt","wb"))==NULL)
{
printf("文件打开失败!");
system("pause");
return;
}
for(i=0;i<NUM;i++)
{
fwrite(&p[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
/*读取文件*/
void Open_File()
{
int i=0;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
;
}
else
{
while(fread(&p[i],sizeof(struct student),1,fp))
{
i++;
NUM++;
}
fclose(fp);
printf("文件数据读取成功!\n");
system("pause");
}
}
void modfi()
{
int i;
char n[20];
printf("请输入查找学生学号\n");
scanf("%s",n);
for(i=0;i<NUM;i++)
{
if(!strcmp(n,p[i].number))
{
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
printf("请输入新语文成绩\n");
scanf("%d",&p[i].score[0]);
printf("请输入新数学成绩\n");
scanf("%d",&p[i].score[1]);
printf("请输入新英语成绩\n");
scanf("%d",&p[i].score[2]);
p[i].score[3]=p[i].score[0]+p[i].score[1]+p[i].score[2];
printf("修改成功\n");
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3]);
break;
}
}
if(i==NUM)
printf("无此学生信息!\n");
system("pause");
}
void find()
{
int n;
printf("请选择查找方式:\n");
printf("1:按学号查\n");
printf("2:按最高分查\n");
scanf("%d",&n);
switch(n)
{
case 1:
fname();
break;
case 2:
fmax();
break;
}
}
void fmax()
{
int n,i,j;
printf("请选择查找科目:\n");
printf("1:语文\n");
printf("2:数学\n");
printf("3:英语\n");
printf("4:总分\n");
scanf("%d",&n);
switch(n)
{
case 1:
j=0;
for(i=0;i<NUM;i++)
{
if(p[j].score[0]<p[i].score[0])
j=i;
}
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
system("pause");
break;
case 2:
j=0;
for(i=0;i<NUM;i++)
{
if(p[j].score[1]<p[i].score[1])
j=i;
}
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
system("pause");
break;
case 3:
j=0;
for(i=0;i<NUM;i++)
{
if(p[j].score[2]<p[i].score[2])
j=i;
}
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
system("pause");
break;
case 4:
j=0;
for(i=0;i<NUM;i++)
{
if(p[j].score[3]<p[i].score[3])
j=i;
}
printf("学号\t\t姓名\t\t语文\t数学\t英语\t总分\n");
printf("%s\t\t%s\t\t%d\t%d\t%d\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[3]);
system("pause");
break;
}
}
void sort()
{
struct student temp;
int i,j;
for(i=0;i<NUM;i++)
{
for(j=i;j<=NUM;j++)
{
if(p[i].score[3]<p[j].score[3])
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}
}
printf("排序成功!\n");
system("pause");
}