学生证管理系统.docx
《学生证管理系统.docx》由会员分享,可在线阅读,更多相关《学生证管理系统.docx(15页珍藏版)》请在冰豆网上搜索。

学生证管理系统
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineJ30
inti;
structdate
{intyear;
intmonth;//出生年月日
intday;
};
structclass1
{chargrade[10];//班级
charcollege[40];//学院
charmajor[40];//专业
};
structstudent//学生信息
{charnum[20];//学号
charname[40];//姓名
charsex[2];//性别
structdatebirthday;//出生日期
structclass1classroom;//
charclass_num[20];//班级序号
charnation[10];
charnative[40];//家庭住址
intave;
}st[100];
voidsave();/*功能保存函数*/
voidscanf_stu();//输入模块
intload();/*调用加载文件函数*/
voidinput(inti);/*调用确认学号不重复函数*/
voidsearch();//查询模块
voidsearch_num();/*按学号查询函数*/
voidsearch_class();/*按班号查询函数*/
voidprintf_face();
voidprintf_one(inti);
voidrevise();//修改模块
intqueren();/*确认修改或删除函数*/
voidrevise_one(inti);/*修改一个学生信息函数*/
voiddelete_stu();//删除模块
voidstat();//统计模块
voidstat_class();/*按班号统计函数*/
voidstat_sex();/*按性别统计函数*/
voidstat_nation();/*按民族统计函数*/
voidstat_native();/*按籍贯统计函数*/
voidstat_born();/*按出生年份统计*/
voidmenu();
voidprintf_back();
voidsave(intn)
{
FILE*fp;
inti;
if((fp=fopen("E:
\\学生证管理信息.txt","w"))==NULL)
{
printf("\nCannotopenfile\n");
exit(0);
}
for(i=0;iif(st[i].ave!
=0)
fprintf(fp,"%s%s%s%s%s%s%s%s%s%d%d%d%d",st[i].num,st[i].class_num,st[i].classroom.grade,st[i].classroom.college,st[i].classroom.major,st[i].name,st[i].sex,st[i].nation,st[i].native,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day,st[i].ave);
fclose(fp);
}
voidprintf_back()
{
inta;
printf("\n输入1回主菜单,0退出程序:
");
scanf("%d",&a);
if(a==0)
exit(0);
else
menu();
}
voidscanf_stu()//输入模块
{
intn,m,i;
n=load();/*调用加载文件函数*/
printf("需要添加新用户的个数:
");
scanf("%d",&m);
printf("\n");
for(i=0;iinput(i);/*调用添加记录函数*/
save(n+m);/*调用保存函数*/
printf_back();/*调用选择返回或结束函数*/
}
intload()/*加载文件记录并计算学生个数函数*/
{
FILE*fp;
inti;
if((fp=fopen("E:
\\学生证管理信息.txt","r"))==NULL)
{
printf("\nCannotopenfile\n");
returnNULL;
}
for(i=0;!
feof(fp);i++)
fscanf(fp,"%s%s%s%s%s%s%s%s%s%d%d%d%d",st[i].num,st[i].class_num,st[i].classroom.grade,st[i].classroom.college,st[i].classroom.major,st[i].name,st[i].sex,st[i].nation,st[i].native,&st[i].birthday.year,&st[i].birthday.month,&st[i].birthday.day,&st[i].ave);
fclose(fp);
return(i);
}
voidinput(inti)
{
printf("\n学号:
");
scanf("%s",st[i].num);
printf("\n班级序号:
");
scanf("%s",st[i].class_num);
printf("\n班级:
");
scanf("%s",st[i].classroom.grade);
printf("\n学院:
");
scanf("%s",st[i].classroom.college);
printf("\n专业:
");
scanf("%s",st[i].classroom.major);
printf("\n姓名:
");
scanf("%s",st[i].name);
printf("\n性别:
");
scanf("%s",st[i].sex);
printf("\n民族:
");
scanf("%s",st[i].nation);
printf("\n籍贯:
");
scanf("%s",st[i].native);
printf("\n出生年月:
");
scanf("%d%d%d",&st[i].birthday.year,&st[i].birthday.month,&st[i].birthday.day);
st[i].ave=1;
}
voidsearch()//查询模块
{
intn,q;
do
{
printf("\t\t***********************MENU*************************\n\n");
printf("\t\t\t\t1.按学号查询\n");
printf("\t\t\t\t2.按班号查询\n");
printf("\t\t\t\t3.返回\n");
printf("\n\t\t****************************************************\n");
printf("请选择你需要做什么(1-3):
[]\b\b");
scanf("%d",&n);
if(n<1||n>3)
{
q=1;
getchar();
}
elseq=0;
}
while(q==1);
switch(n)
{
case1:
search_num();break;/*调用按学号查询函数*/
case2:
search_class();break;/*调用按班号查询函数*/
case3:
menu();/*调用主菜单函数*/
}
}
voidsearch_num()/*按学号查询函数*/
{
intn,i;
n=load();
printf("\n请输入要查询学生的学号:
");
scanf("%s",st[n+1].num);
for(i=0;iif(strcmp(st[n+1].num,st[i].num)==0)
break;
if(i==n+1)
printf("没有找到你输入的学号的学生!
!
请确认无误后重新输入!
");
else
{printf_face();/*调用显示数据结构项目函数*/
printf_one(i);/*输出该学生信息*/
}
printf_back();
}
voidprintf_face()
{
printf("\n学号班级序号班号学院专业姓名性别民族籍贯出生年份\n");
}
voidprintf_one(inti)
{
printf("%s%s%s%s%s%s%s%s%s%d%d%d\n",st[i].num,st[i].class_num,st[i].classroom.grade,st[i].classroom.college,st[i].classroom.major,st[i].name,st[i].sex,st[i].nation,st[i].native,st[i].birthday.year,st[i].birthday.month,st[i].birthday.day);
}
voidsearch_class()/*按班号查询函数*/
{
intn,i,k=0;
n=load();
printf("\n请输入要查询学生的班号:
");
scanf("%s",st[n+1].classroom.grade);
for(i=0;iif(strcmp(st[n+1].classroom.grade,st[i].classroom.grade)==0)
break;
if(i==n+1)
printf("没有找到你输入的班号的学生!
!
请确认无误后重新输入!
");
else
{printf_face();/*调用显示数据结构项目函数*/
printf_one(i);/*输出该学生信息*/
}
printf("\n共查找到该班学生%d个",k);
printf_back();
}
voidrevise()//修改模块
{
intn,m;
n=load();/*调用加载文件函数*/
m=queren();/*调用确认修改函数*/
printf("\n学号:
");
scanf("%s",st[i].num);
printf("\n班级序号:
");
scanf("%s",st[i].class_num);
printf("\n班级:
");
scanf("%s",st[i].classroom.grade);
printf("\n学院:
");
scanf("%s",st[i].classroom.college);
printf("\n专业:
");
scanf("%s",st[i].classroom.major);
printf("\n姓名:
");
scanf("%s",st[i].name);
printf("\n性别:
");
scanf("%s",st[i].sex);
printf("\n民族:
");
scanf("%s",st[i].nation);
printf("\n籍贯:
");
scanf("%s",st[i].native);
printf("\n出生年月:
");
scanf("%d%d%d",&st[i].birthday.year,&st[i].birthday.month,&st[i].birthday.day);/*调用修改一个学生信息函数*/
save(n);/*调用保存函数*/
printf_back();
}
intqueren()/*确认修改或删除函数*/
{
inti,n,c;
n=load();
printf("\n请输入要修改或删除学生的学号:
");
scanf("%s",st[n+1].num);
for(i=0;iif(strcmp(st[n+1].num,st[i].num)==0)
break;
if(i==n+1)
printf("没有找到你输入的学号的学生!
!
请确认无误后重新输入!
");
else
{printf_face();/*调用显示数据结构项目函数*/
printf_one(i);/*输出该学生信息*/
}
printf("输入1确认修改或删除\n输入0返回主菜单:
");
/*确认修改*/
scanf("%d",&c);
if(c==1)
return(i);
else
printf_back();}
voiddelete_stu()
{
intm,n;
n=load();
m=queren();
st[m].ave=0;/*表示该记录要删除*/
save(n);
printf_back();
}
voidstat()
{intn,q;
do
{
printf("\t\t***********************MENU*************************\n\n");
printf("\t\t\t\t1.按班号统计\n");
printf("\t\t\t\t2.按性别统计\n");
printf("\t\t\t\t3.按民族统计\n");
printf("\t\t\t\t4.按籍贯统计\n");
printf("\t\t\t\t5.按出生时间\n");
printf("\t\t\t\t6.返回\n");
printf("\n\t\t****************************************************\n");
printf("请选择你需要做什么(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)
{
q=1;
getchar();
}
elseq=0;
}
while(q==1);
switch(n)
{
case1:
stat_class();break;
case2:
stat_sex();break;
case3:
stat_nation();break;
case4:
stat_native();break;
case5:
stat_born();break;
case6:
menu();
}
}
voidstat_class()/*按班号统计函数*/
{
inti,n,j=0,b,d[J];
n=load();
printf("\n请输入要统计的班号:
");
scanf("%s",st[n+1].classroom.grade);
for(i=0;iif(strcmp(st[n+1].classroom.grade,st[i].classroom.grade)==0)
d[j++]=i;
printf("共查找到%d位符合要求的学生\n",j);
printf("输入1查看详细信息\n输入0返回主菜单:
");
scanf("%d",&b);
if(b==1)
{
printf_face();
for(i=0;iprintf_one(d[i]);
}
printf_back();
}
voidstat_sex()/*按性别统计函数*/
{
inti,n,j=0,b,d[J];
n=load();
printf("\n请输入要统计的性别:
");
scanf("%s",st[n+1].sex);
for(i=0;iif(strcmp(st[n+1].sex,st[i].sex)==0)
d[j++]=i;
printf("共查找到%d位符合要求的学生\n",j);
printf("输入1查看详细信息\n输入0返回主菜单:
");
scanf("%d",&b);
if(b==1)
{
printf_face();
for(i=0;iprintf_one(d[i]);
}
printf_back();
}
voidstat_nation()/*按民族统计函数*/
{
inti,n,j=0,b,d[J];
n=load();
printf("\n请输入要统计的民族:
");
scanf("%s",st[n+1].nation);
for(i=0;iif(strcmp(st[n+1].nation,st[i].nation)==0)
d[j++]=i;
printf("共查找到%d位符合要求的学生\n",j);
printf("输入1查看详细信息\n输入0返回主菜单:
");
scanf("%d",&b);
if(b==1)
{
printf_face();
for(i=0;iprintf_one(d[i]);
}
printf_back();
}
voidstat_native()/*按籍贯统计函数*/
{
inti,n,j=0,b,d[J];
n=load();
printf("\n请输入要统计的籍贯:
");
scanf("%s",st[n+1].native);
for(i=0;iif(strcmp(st[n+1].native,st[i].native)==0)
d[j++]=i;
printf("共查找到%d位符合要求的学生\n",j);
printf("输入1查看详细信息\n输入0返回主菜单:
");
scanf("%d",&b);
if(b==1)
{
printf_face();
for(i=0;iprintf_one(d[i]);
}
printf_back();
}
voidstat_born()/*按出生年份统计*/
{
inti,n,j=0,b,d[J];
n=load();
printf("\n请输入要统计的出生年份:
");
scanf("%d",&st[n+1].birthday.year);
for(i=0;iif(st[n+1].birthday.year==st[i].birthday.year)
d[j++]=i;
printf("共查找到%d位符合要求的学生\n",j);
printf("输入1查看详细信息\n输入0返回主菜单:
");
scanf("%d",&b);
if(b==1)
{
printf_face();
for(i=0;iprintf_one(d[i]);
}
printf_back();
}
voidmain()//主函数
{
FILE*fp;
fp=fopen("E:
\\学生证管理信息.txt","a");//以添加的方式打开文件
fclose(fp);
menu();
}
voidmenu()//主菜单函数
{
intn,q;
do
{
printf("************************亲,欢迎您的光临************************\n\n");
printf("***************************O(∩_∩)O****************************\n\n");
printf("1.录入\n");
printf("2.查询\n");
printf("3.修改\n");
printf("4.删除\n");
printf("5.统计\n");
printf("6.退出\n");
printf("\n***************************************************************\n");
printf("请根据您的需要选择(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)
{
q=1;
getchar();
}
elseq=0;
}
while(q==1);
switch(n)
{
case1:
scanf_stu();break;
case2:
search();break;
case3:
revise();break;
case4:
delete_stu();break;
case5:
stat();break;
case6:
exit(0);
}
}