#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n=0;
typedef struct student
{
char sno[12];
char name[8];
int chinese;
int math;
int english;
} stud;
void input(stud*b);
void output(stud*b);
void insert(stud*b,int j);
int find (stud*b);
void readfile(stud*b,FILE*fp);
void savefile(stud*b,FILE*fp);
int del(stud*b);
void display(stud*b);
void add_stu(stud*b);
void menu();
void modify(stud*b);
int main()
{
system("color 31");
FILE *fp;
stud stu[50];
char user[10],ps[7];
int choice,j;
printf("\n");
printf("请输入用户名:\n");
gets(user);
printf("请输入密码:\n");
j=0;
while((ps[j]=getch())!='\r')
{
printf("*");
j++;
}
ps[j]='\0';
printf("\n");
if((strcmp(user,"admin")==0)&&(strcmp(ps,"123")==0))
{
while(1)
{
system("cls");
menu();
printf("输入选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1:if((fp=fopen("stu_list","r"))==NULL){
printf("文件不存在");}
else
readfile(stu,fp); system("pause");break;
case 2:add_stu(stu);system("pause");break;
case 3:getchar();
j=find(stu);
if(j==-1)printf("查无此人!\n");
else
{
printf("该同学信息是");
output(stu+j);}system("pause");break;
case 4:fflush(stdin);j=del(stu);
if(j==-1)printf("查无此人!\n");
else
{
printf("删除成功");
display(stu);}system("pause");break;
case 5:fflush("stdin");modify(stu);system("pause");break;
case 6:savefile(stu,fp);system("pause");break;
case 7:display(stu);system("pause");break;
case 0:exit(1);break;
default: printf("输入有误\n");system("pause");
}
}
}
else printf("用户名或密码错误,无法登录\n");
return 0;
}
void menu()
{
printf("\n\n\n");
printf("\t\t\t|#||#||#||#||#||#||#||#||#||#||#||#||#||#|\n");
printf("\t\t\t|#| 1------信息加载 |#|\n");
printf("\t\t\t|#| 2------添加记录 |#|\n");
printf("\t\t\t|#| 3------信息查询 |#|\n");
printf("\t\t\t|#| 4------删除记录 |#|\n");
printf("\t\t\t|#| 5------信息修改 |#|\n");
printf("\t\t\t|#| 6------信息保存 |#|\n");
printf("\t\t\t|#| 7------信息浏览 |#|\n");
printf("\t\t\t|#| 0------退出 |#|\n");
printf("\t\t\t|#||#||#||#||#||#||#||#||#||#||#||#||#||#|\n");
}
void readfile(stud*b,FILE*fp)//读文件
{ int j=0;
if((fp=fopen("stu_list","r"))==NULL)
{
printf("Error opening file !\n");
exit(1);
}
while(!feof(fp))//判断是否读到文件尾
{
fread(b+j,sizeof(stud),1,fp);
j++;
}
fclose(fp);
n=j-1;
}
void savefile(stud*b,FILE*fp)//保存文件
{
if((fp=fopen("stu_list","w"))==NULL)
{
printf("Error opening file !\n");
exit(1);
}
fwrite(b,sizeof(stud),n,fp);
fclose(fp);
}
void input(stud *b)
{
scanf("%s%s%d%d%d",b->name,b->sno,&b->chinese,&b->math,&b->english);
}
void output(stud *b)
{
printf("%-8s%-8s%5d%5d%5d\n",b->name,b->sno,b->chinese,b->math,b->english);
}
void display(stud *b)
{
int j;
printf("全部学生的信息:\n");
printf("%-8s%-8s%-8s%-8s%-8s\n","姓名","学号","语文","数学","英语");
for(j=0; j<n; j++)
output(b+j);
}
void insert(stud*b,int j)
{
stud snew;int k;
printf("请输入新同学的信息:\n");
input(&snew);
for(k=n-1;k>=j-1;k--)*(b+k+1)=*(b+k);
*(b+j-1)=snew;
n++;
}
void add_stu(stud*b)
{
stud snew;
printf("请输入新同学的信息:\n");
input(&snew);
*(b+n)=snew;
n++;
}
int find(stud *b)
{
char name[8];
int j;
printf("请输入要查找的学生姓名:\n");
gets(name);
for(j=0; j<n; j++)
if(strcmp((b+j)->name,name)==0)
return j;
return -1;
}
int del(stud *b)
{
char name[8];
int j,k;
printf("请输入要删除的学生姓名:\n");
gets(name);
for(j=0; j<n; j++)
if(strcmp((b+j)->name,name)==0)
{
for(k=j;k<n;k++)*(b+k)=*(b+k+1);
n--;
return 1;
}
return -1;
}
void modify(stud *b)
{
char name[8];
int j;
printf("请输入要修改的学生姓名:\n");
gets(name);
for(j=0; j<n; j++)
if(strcmp((b+j)->name,name)==0)
{
printf("该同学原来的信息是:\n");
output(b+j);
printf("请输入新的姓名:\n");
gets((b+j)->name);
printf("请输入新的学号:\n");
gets((b+j)->sno);
printf("请输入新的语文成绩:\n");
gets((b+j)->chinese);
printf("请输入新的数学成绩:\n");
gets((b+j)->math);
printf("请输入新的英语成绩:\n");
gets((b+j)->english);
printf("修改成功!\n");
break;
}
if(j==n)printf("此人不存在\n");
}