学生信息管理系统C语言版---精品模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//交流学习
//QQ:1194758555
#include<stdio。
h>
#include<string.h〉
#include<stdlib。
h〉
#include<ctype。
h>
#include〈windows.h〉
int k,n;
struct student
{
double yuwen;
double shuxue;
double yingyu;
double zong;
double pingjun;
char name[20];
char num[20];
} stu[1000];
void jiazai(struct student stu[],int *num1);
void baocun(struct student stu[],int n);
void find(struct student stu[],int n);
int findnum(struct student stu[],int n,char *num);//查找学号;
void shanchu(struct student stu[],int *num1);
void shanchuyi(struct student stu[],int *num1);//删除一条记录;
void shanchuquanbu(struct student stu[],int *num1);
void tianjiayi(struct student stu[],int i);//添加一记录;
void tianjia(struct student stu[],int *num1);//添加记录;
void xiugai(struct student stu[],int n);//修改一条记录;
void output(struct student stu[],int n,int x);//打印信息;
void paixu(struct student stu[],int n);//排序;
int jianchaxuehao(struct student stu[],char *num);//检查学号的合法性;int jianchachengji(double num);//检查成绩的合法性;
void outputone(struct student *stu,int i,int x);//输出一条信息
void caidan();
int main()
{
int q;
jiazai(stu,&n);
caidan();
scanf(”%d”,&q);
while(q〉6)
{
printf("输入错误请重新输入\n请输入0—6的数字\n");
scanf(”%d”,&q);
}
Sleep(300);
system(”cls”);
switch(q)
{
case 1 :
tianjia(stu,&n);
break;
case 2:
xiugai(stu,n);
break;
case 3:
paixu(stu,n);
break;
case 4:
find(stu,n);
break;
case 5:
shanchu(stu,&n);
break;
case 6:
output(stu,n,0);
break;
case 0:
exit(0);
}
return 0;
}
void caidan()
{
printf(”┌────────────────────────┐\n”); printf(”├───────欢迎进入学生信息管理系统─────┤\n"); printf("├────────────────────────┤\n"); printf("│ 1添加学生成绩│\n”);
printf(”├────────────────────────┤\n"); printf(”│ 2修改学生成绩│\n");
printf(”├────────────────────────┤\n"); printf("│ 3排序│\n”);
printf(”│ 4查找│\n”);
printf("├────────────────────────┤\n"); printf("│ 5删除│\n");
printf("├────────────────────────┤\n"); printf(”│ 6输出│\n");
printf("├────────────────────────┤\n"); printf(”│ 0退出│\n”);
printf("├────────────────────────┤\n”); printf("└────────────────────────┘\n"); printf("请输入选择:\n");
}
void jiazai(struct student stu[],int *num1)
{
FILE *fp;
int i;
if((fp=fopen(”d:\\student。
dat","r"))==NULL)
{
*num1=0;
return;
}
for(i=0; fread(&stu[i],sizeof(struct student),1,fp)!=0; i++) *num1=i;
fclose(fp);
}
void paixu(struct student stu[],int n)
{
int xuehao(const void *a,const void *b);
int yuwen(const void *a,const void *b);
int shuxue(const void *a,const void *b);
int yingyu(const void *a,const void *b);
int zongchengji(const void *a,const void *b);
int (*cmp[])(const void *a,const void *b)= {xuehao,yuwen,shuxue,yingyu,zongchengji};
int a;
printf("┌───────────────────────┐\n"); printf(”│欢迎进入学生信息排序页面│\n"); printf(”└───────────────────────┘\n");
printf(”│ 0:按学号降序排序│\n"); printf("├───────────────────────┤\n”); printf(”│ 1:按语文成绩降序排序│\n”); printf("├───────────────────────┤\n"); printf("│ 2:按数学成绩降序排序│\n"); printf("├───────────────────────┤\n"); printf(”│ 3:按英语成绩降序排序│\n”); printf("├───────────────────────┤\n"); printf(”│ 4:安总成绩降序排序│\n"); printf(”└───────────────────────┘\n"); printf(”请输入选择:\n");
scanf("%d",&a);
Sleep(300);
system("cls”);
qsort(stu,n,sizeof(stu[0]),cmp[a]);
output(stu,n,0);
}
int xuehao(const void *a,const void *b)
{
if(strcmp(((struct student *)a)-〉num,((struct student *)b)->num)〉0)
return -1;
else
return 1;
}
int yuwen(const void *a,const void *b)
{
return ((struct student *)a)—〉yuwen < ((struct student *)b)—〉yuwen ? 1 : -1;
}
int shuxue(const void *a,const void *b)
{
return ((struct student *)a)-〉shuxue 〈((struct student *)b)—>shuxue ? 1 :—1;
}
int yingyu(const void *a,const void *b)
{
return ((struct student *)a)->yingyu < ((struct student *)b)—〉yingyu ? 1 :—1;
}
int zongchengji(const void *a,const void *b)
{
return ((struct student *)a)—>zong < ((struct student *)b)—〉
zong ? 1 : —1;
}
void shanchuyi(struct student stu[],int *num1)
{
int i,in,c;
char y[20];
FILE *fp;
char str[20];
printf(”┌───────────────────────┐\n"); printf(”│欢迎进入学生信息删除页面│\n”); printf("└───────────────────────┘\n”); printf(”请输入需要删除的学号\n");
scanf(”%s",str);
c=jianchaxuehao(stu,str);
while(c==0)
{
printf("输入的学号不合法请重新输入\n”);
scanf("%s”,str);
c=jianchaxuehao(stu,str);
}
Sleep(300);
system(”cls”);
printf("┌───────────────────────┐\n"); printf("│欢迎进入学生信息删除页面│\n”); printf("└───────────────────────┘\n”); in=findnum(stu,*num1,str);
while(in<0)
{
printf(”该学生的信息不存在\n");
printf(”重新输入(yes——y)返回主菜单(no-—n)\n”);
scanf(”%s”,y);
while(strcmp(y,”y”)&&strcmp(y,”n"))
{
printf("请输入y或n\n");
s canf(”%s”,y);
}
if(!strcmp(y,”n"))
{
Sleep(300);
system("cls”);
main();
}
Sleep(300);
system("cls");
printf(”┌───────────────────────┐\n");
printf("│欢迎进入学生信息删除页面│\n");
printf(”└───────────────────────┘\n");
printf(”请输入需要删除的学号\n”);
scanf("%s”,str);
in=findnum(stu,*num1,str);
}
for(i=in; i<*num1-1; i++)
stu[i]=stu[i+1];
(*num1)-—;
if((fp=fopen(”d:\\student.dat”,”w"))==NULL)
{
printf(”打开失败\n”);
exit(0);
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n”); printf("│欢迎进入学生信息删除页面│\n"); printf("└───────────────────────┘\n"); printf("删除成功\n");
baocun(stu,*num1);
printf("继续删除(yes—-y)返回上主菜单(no—-n)\n");
getchar();
scanf("%s",y);
while(strcmp(y,”y")&&strcmp(y,"n”))
{
printf("请输入y或n\n”);
getchar();
scanf(”%s",y);
}
Sleep(300);
system(”cls”);
if(!strcmp(y,"n"))
main();
if(!strcmp(y,”y"))
shanchuyi(stu,num1);
}
void shanchuquanbu(struct student stu[],int *num1)
{
char y[20],a[20];
FILE *fp;
printf("┌───────────────────────┐\n”); printf(”│欢迎进入学生信息删除页面│\n”); printf(”└───────────────────────┘\n"); printf(”是否全部删除?(yes-—y)返回主菜单(no-—n)\n”);
scanf(”%s",y);
while(strcmp(y,”y")&&strcmp(y,”n”))
{
printf("请输入y或n\n");
scan f("%s”,y);
}
Sleep(300);
system(”cls");
printf("┌───────────────────────┐\n"); printf(”│欢迎进入学生信息删除页面│\n”); printf(”└───────────────────────┘\n”); if(!strcmp(y,”y"))
{
fp=fopen(”d:\\student.dat",”w");
*num1=0;
printf("删除完成\n”);
fclose(fp);
printf(”返回主菜单(yes--y)结束(no--n)\n");
scanf(”%s",a);
while(strcmp(a,”y”)&&strcmp(a,"n"))
{
printf("请输入y或n\n”);
scanf(”%s",a);
}
Sleep(300);
system(”cls");
if(!strcmp(a,”y"))
main();
else
{
Sleep(300);
system(”cls");
return;
}
}
else
{
Sleep(300);
system(”cl s");
main();
}
}
void shanchu(struct student stu[],int *num1)
{
int q;
printf(”┌─────────────────┐\n”); printf(”├───────删除────────┤\n”); printf("├─────────────────┤\n"); printf("├─────1:删除指定信息─────┤\n”); printf(”├─────────────────┤\n”); printf(”├─────2:删除全部信息─────┤\n”); printf("├─────────────────┤\n”); printf(”└─────────────────┘\n”); printf(”请输入选择:\n");
getchar();
scanf(”%d”,&q);
system(”cls");
switch(q)
{
case 1:
shanchuyi(stu,num1);
break;
case 2:
shanchuquanbu(stu,num1);
break;
}
}
int findnum(struct student stu[],int n,char *num)
{
int i;
for(i=0; i〈n; i++)
{
if(strcmp(stu[i]。
num,num)==0)
{
return i;
}
}
return -1;
}
void baocun(struct student stu[],int n)
{
FILE *fp;
if((fp=fopen("d:\\student。
dat”,”w”))==NULL)
{
printf(”打开失败\n");
exit(0);
}
fwrite(stu,(n+1)*sizeof(stu[0]),1,fp);
fclose(fp);
}
void output(struct student stu[],int n,int x)
{
int i;
char y[20];
if(n〉0)
{
printf("┌─────┬───┬───┬───┬───┬───┬───┐\n");
printf("│%—10s│%—6s│%—6s│%-6s│%-6s│%—6s│%—6s”,"学号",”姓名",”语文","数学”,”英语",”平均",”总成绩\n”); //printf(”└────┘┴\n”);
for(i=0; i〈n; i++)
{
outputone(&stu[i],n,x);
}
printf("└─────┴───┴───┴───┴───┴───┴───┘\n”);
if(x)
{
char q[10];
printf("返回主菜单(yes-y)返回上级菜单(no-n)\n”);
scanf(”%s",q);
while(strcmp(q,"y")&&strcmp(q,"n"))
{
printf(”请输入y或n\n");
scanf("%s”,q);
}
Sleep(300);
system(”cls");
if(!strcmp(q,”y”))
{
main();
}
while(!strcmp(q,”n"))
{
paixu(stu,n);
}
}
}
else
printf("没有任何记录,请先添加信息\n”);
printf("返回主菜单(yes-—y)结束(no--n)\n");
scanf(”%s”,y);
while(strcmp(y,"y")&&strcmp(y,”n"))
{
printf("请输入y或n\n");
scanf("%s”,y);
}
Sleep(300);
system(”cls”);
if(!strcmp(y,”y”))
{
main();
}
else
return;
}
void outputone(struct student *stu,int n,int x)
{
if(!x)
{
printf(”├─────┼───┼───┼───┼───┼───┼───┤\n”);
printf(”│%-10s│%-6s│%—6。
2lf│%—6.2lf│%-6.2lf│%-6。
2lf│%—6.2lf│\n",stu-〉num,stu—>name,stu-〉yuwen,stu->shuxue,stu-〉yingyu,stu—〉pingjun,stu->zong);
}
else
{
printf(”┌────┬───┬───┬───┬───┬───┬───┐\n");
printf(”│%—8s│%-6s│%-6s│%-6s│%-6s│%—6s│%-6s",”学号”,"姓名","语文”,"数学”,”英语",”平均",”总成绩\n");
printf(”├────┼───┼───┼───┼───┼───┼───┤\n");
printf(”│%—8s│%—6s│%-6。
1lf│%-6。
1lf│%-6。
1lf│%—6.1lf│%-6.1lf│\n”,stu->num,stu-〉name,stu—>yuwen,stu->shuxue,stu->yingyu,stu—>pingjun,stu—〉zong);
printf(”└────┴───┴───┴───┴───┴───┴
───┘\n”);
}
}
void tianjiayi(struct student stu[],int i)
{
int a,b;
printf(”请输入学生学号\n");
getchar();
scanf(”%s”,st u[i].num);
a=jianchaxuehao(stu,stu[i]。
num);
while(a==0||a==2)
{
if(a==0)
printf("输入的学号不合法请重新输入\n");
if(a==2)
printf("输入的学号与已有的重复请重新输入\n");
scanf(”%s”,stu[i].num);
a=jianchaxuehao(stu,stu[i].num);
Sleep(300);
system(”cls");
printf("┌───────────────────────┐\n”);
printf("│欢迎进入学生信息添加页面│\n");
printf("└───────────────────────┘\n”);
}
printf("请输入该学生姓名\n");
scanf("%s",stu[i].name);
printf(”请输入语文成绩\n");
scanf(”%lf”,&stu[i]。
yuwen);
b=jianchachengji(stu[i].yuwen);
while(b==0)
{
printf(”输入错误请重新输入\n");
scanf(”%lf”,&stu[i]。
yuwen);
b=jianchachengji(stu[i].yuwen);
}
printf("请输入数学成绩\n");
scanf("%lf",&stu[i]。
shuxue);
b=jianchachengji(stu[i].shuxue);
while(b==0)
{
printf(”输入错误请重新输入\n”);
scanf(”%lf",&stu[i]。
shuxue);
b=jianchachengji(stu[i].shuxue);
}
printf(”请输入英语成绩\n");
scanf("%lf",&stu[i]。
yingyu);
b=jianchachengji(stu[i]。
yingyu);
while(b==0)
{
printf(”输入错误请重新输入\n”);
scanf("%lf”,&stu[i].yingyu);
b=jianchachengji(stu[i]。
yingyu);
}
stu[i]。
pingjun=(stu[i]。
yuwen+stu[i].shuxue+stu[i]。
yingyu)/3; stu[i].zong=stu[i].yuwen+stu[i]。
shuxue+stu[i]。
yingyu;
}
void tianjia(struct student stu[],int *num1)
{
char p[10]=”y",y[10];
printf("┌───────────────────────┐\n”); printf("│欢迎进入学生信息添加页面│\n"); printf("└───────────────────────┘\n”); while(!strcmp(p,”y”))
{
tianjiayi(stu,*num1);
(*num1)+=1;
printf("是否继续添加(yes-—y,no—-—n)\n");
getchar();
scanf("%s”,p);
while(strcmp(p,"n")&&strcmp(p,"y”))
{
printf("请输入y或n\n”);
getchar();
scanf("%s”,p);
}
Sleep(300);
system("cls”);
}
baocun(stu,*num1);
printf("返回主菜单(yes-—y)结束(no——n)\n”);
getchar();
scanf(”%s”,y);
while(strcmp(y,”n”)&&strcmp(y,”y"))
{
printf("请输入y或n\n”);
getchar();
scanf(”%s”,y);
}
if(!strcmp(y,"y”))
{
Sleep(300);
system(”cls");
main();
}
else
return;
}
void xiugai(struct student stu[],int n)
{
int in,b,c;
char a[10],q[10];
char str[20],y[10];
printf("┌───────────────────────┐\n”); printf(”│欢迎进入学生信息修改页面│\n"); printf("└───────────────────────┘\n”); printf("请输入要修改学生的学号\n”);
getchar();
scanf("%s”,str);
c=jianchaxuehao(stu,str);
in=findnum(stu,n,str);
while(c==0||in<0)
{
if(in〈0||(in<0&&c==1))
printf(”此条信息不存在\n”);
if(c==0)
printf(”输入不合法请重新输入\n");
printf("重新输入(yes—-y)返回主菜单(no—-n)\n”);
scanf("%s",a);
while(strcmp(a,"y")&&strcmp(a,"n"))
{
printf("请输入y或n\n”);
getchar();
scanf("%s”,a);
}
Sleep(300);
system("cls");
printf(”┌───────────────────────┐\n”);
printf("│欢迎进入学生信息修改页面│
printf(”└───────────────────────┘\n");
if(!strcmp(a,”n”))
{
Sleep(300);
system("cls”);
main();
}
printf("请输入要修改学生的学号\n");
scanf("%s”,str);
c=jianchaxuehao(stu,str);
in=findnum(stu,n,str);
}
printf("修改前的信息如下:\n”);
outputone(&stu[in],n,1);
printf(”是否修改姓?(yes-—y,no--n)\n”);
getchar();
scanf(”%s”,y);
while(strcmp(y,”y")&&strcmp(y,"n”))
{
printf("请输入y或n\n");
getchar();
scanf(”%s",y);
}
Sleep(300);
system(”cls");
printf("┌───────────────────────┐\n"); printf(”│欢迎进入学生信息修改页面│\n"); printf(”└───────────────────────┘\n"); if(!strcmp(y,”y"))
{
printf(”请输入姓名\n”);
scanf(”%s",stu[in]。
name);
}
printf("是否修改%s的成绩?(yes-—y)返回主菜单(no—-n)\n",stu[in].num);
//getchar();
scanf(”%s”,q);
while(strcmp(q,"y")&&strcmp(q,”n"))
{
printf(”请输入y或n\n”);
getchar();
scanf("%s”,q);
if(!strcmp(q,"y”))
{
printf("请输入%s的语文成绩\n”,stu[in]。
num);
scanf(”%lf",&stu[in]。
yuwen);
b=jianchachengji(stu[in].yuwen);
while(b==0)
{
printf("输入错误请重新输入\n");
scanf(”%lf",&stu[in]。
yuwen);
b=jianchachengji(stu[in]。
yuwen);
}
printf(”请输入%s的数学成绩\n”,stu[in]。
num);
scanf("%lf”,&stu[in].shuxue);
b=jianchachengji(stu[in].shuxue);
while(b==0)
{
printf("输入错误请重新输入\n");
scanf(”%lf”,&stu[in].shuxue);
b=jianchachengji(stu[in].shuxue);
}
printf(”请输入%s的英语成绩\n”,stu[in]。
num);
scanf(”%lf",&stu[in].yingyu);
b=jianchachengji(stu[in]。
yingyu);
while(b==0)
{
printf("输入错误请重新输入\n”);
scanf(”%lf”,&stu[in].yingyu);
b=jianchachengji(stu[in]。
yingyu);
}
}
if(!strcmp(q,”n"))
{
Sleep(300);
system(”cls”);
main();
}
baocun(stu,n);
printf(”添加成功\n返回主菜单(yes-—y)结束(no—-n)\n"); getchar();
scanf(”%s”,y);
while(strcmp(y,"y")&&strcmp(y,”n"))
{
printf(”请输入y或n\n”);
getchar();
scanf(”%s”,y);
}
if(!strcmp(y,"y”))
{
Sleep(300);
system("cls");
main();
}
else
return;
}
void find(struct student stu[],int n)
{
int in,c;
char str[20],y[20],q[20];
printf("┌───────────────────────┐\n"); printf(”│欢迎进入学生信息查询页面│\n”); printf(”└───────────────────────┘\n”); printf("请输入需要查询的学号\n");
scanf("%s",str);
c=jianchaxuehao(stu,str);
while(c==0)
{
printf(”输入的学号不合法请重新输入\n");
scanf(”%s”,str);
c=jianchaxuehao(stu,str);
}
Sleep(300);
system(”cls”);
printf(”┌───────────────────────┐\n"); printf(”│欢迎进入学生信息查询页面│\n”); printf(”└───────────────────────┘\n”); in=findnum(stu,n,str);
while(in〈0)
{
printf(”此学号不存在请重新输入(yes——y)返回主菜单(no--n)\n”);
getchar();
scanf("%s”,q);
while(strcmp(q,"y”)&&strcmp(q,"n"))
{
printf("请输入y或n\n”);
getchar();
scanf("%s”,q);
}
Sleep(300);
system("cls”);
printf(”┌───────────────────────┐\n”);
printf("│欢迎进入学生信息查询页面│\n”);
printf("└───────────────────────┘\n”);
if(!strcmp(q,"n”))
{
Sleep(300);
system(”cls");
main();
}
printf("请输入要查询的学号\n”);
scanf(”%s",str);
in=findnum(stu,n,str);
}
Sleep(300);
system("cls");
printf("┌───────────────────────┐\n”); printf(”│欢迎进入学生信息查询页面│\n"); printf(”└───────────────────────┘\n”); if(in〉=0)
{
printf(” %s的信息如下:\n",str);
outputone(&stu[in],n,1);
printf("继续查询(yes-—y)返回主菜单(no—-n)\n”);
//getchar();
scanf("%s”,y);
while(strcmp(y,”y")&&strcmp(y,”n”))
{
printf(”请输入y或n\n");
//getchar();
scanf(”%s",y);
}
Sleep(300);
system("cls");
if(!strcmp(y,”y”))
{
find(stu,n);
}
if(!strcmp(y,”n"))
{
main();
}
}
}
int jianchaxuehao(struct student stu[],char *num){
int i,f=1,g=1;
for(i=0; num[i]!=’\0'; i++)
{
if(num[i]〈'0'||num[i]>’9')
{
f=0;
break;
}
}
for(i=0; i<n; i++)
{
if(strcmp(stu[i].num,num)==0)
{
g=0;
break;
}
}
if(f==1&&g==1)
return 1;
else if((g==0&&f==0)||(f==0&&g==1))
return 0;
else if(g==0&&f==1)
return 2;
return 0;
}
int jianchachengji(double num)
{
if(num〈=100&&num〉=0)
return 1;
else
return 0;
}
运行效果:。