C语言程序 学生信息管理.docx
《C语言程序 学生信息管理.docx》由会员分享,可在线阅读,更多相关《C语言程序 学生信息管理.docx(21页珍藏版)》请在冰点文库上搜索。
C语言程序学生信息管理
#defineN100/*指定结构体数组的长度*/
#include
#include
inti=0,count=0;/*用count记录实际存放的条数*/
charpassword[10];
structstudent
{
intnum;
charname[20];
charsex[2];
intEnglish;
intMath;
intCprogram;
floatTotal;
floatAverage;
}stu[N];
voidinput_grade();
voidoutput_grade();
intpass();
voidsort();
voidsort_total();
voidsort_name();
voidsort_num();
voidinsert();
voidsave();
voidload();
voidchaxun();
voidchaxunnum();
voidchaxunname();
voiddel_data();
voiddel_num();
voiddel_name();
voidamend();
voidexitout();
main()
{
intsel;
intq;
do{
printf("\n**Pleaseinputthepassword:
");
scanf("%s",password);
q=pass();
}while(q==0);
while
(1)
{
printf("\n");
printf("********************\n");
printf("*=====================*\n");
printf("*1.inputgrade*\n");
printf("*2.loaddata*\n");
printf("*3.outputgrade*\n");
printf("*4.sortstudent'grade*\n");
printf("*5.seekstudent'information*\n");
printf("*6.deletestudent'information*\n");
printf("*7.insertnewstudent'grade*\n");
printf("*8.amenddata*\n");
printf("*9.exit*\n");
printf("*=====================*\n");
printf("********************\n");
printf("Pleasechoose(1~8):
");
scanf("%d",&sel);
switch(sel)
{
case1:
input_grade();break;
case2:
load();break;
case3:
output_grade();break;
case4:
sort();break;
case5:
chaxun();break;
case6:
del_data();break;
case7:
insert();break;
case8:
amend();break;
case9:
exitout();break;
default:
printf("Nooptionselected!
\n");
}
}
}
/**********************************登陆函数**********************************/
intpass()/*功能:
输入正确的密码后进入用户界面*/
{
staticcharkey[10]="nicaicai";
if(strcmp(password,key)==0)
{printf("\n");
printf("*******youarewelcome!
*******");
return1;
}
else
{printf("\n");
printf("*******youarewrong!
Pleaseagain****");
return0;
}
}
/***********************************输入函数**********************************/
voidinput_grade()/*输入学生信息*/
{
printf("Inputdata:
\n");
for(i=0;i{
printf("Enter%dstudentdate:
\n",N);
printf("number?
");
scanf("%d",&stu[i].num);
if(stu[i].num==-1)break;
count++;
printf("name?
");
scanf("%s",stu[i].name);
printf("sex?
");
scanf("%s",stu[i].sex);
printf("English?
");
scanf("%d",&stu[i].English);
printf("Math?
");
scanf("%d",&stu[i].Math);
printf("Cprogram?
");
scanf("%d",&stu[i].Cprogram);
stu[i].Total=stu[i].English+stu[i].Math+stu[i].Cprogram;/*计算总成绩*/
stu[i].Average=stu[i].Total*1.0/3;/*计算平均成绩,将int型转换成float型*/
}
save();
}
/**********************************输出函数**********************************/
voidoutput_grade()/*在屏幕上显示输入的学生信息*/
{
if(count==0)
printf("noinformation!
\n");
else{
printf("\nAllstudentsinformationasfollows:
\n");
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
for(i=0;iprintf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
}
/***********************************排序函数**********************************/
voidsort()/*将学生信息排序*/
{
intsel2;
if(count==0)
printf("nomessage!
");
else
{
while
(1)
{printf("\n");
printf("********************\n");
printf("1.sortbytotal\n");/*按总成绩排序*/
printf("2.sortbyname\n");/*按姓名排序*/
printf("3.sortbynum\n");/*按学号排序*/
printf("4.return\n");
printf("********************\n");
printf("Pleasechoose(1~4):
");
scanf("%d",&sel2);
switch(sel2)
{
case1:
sort_total();break;
case2:
sort_name();break;
case3:
sort_num();break;
case4:
return;
default:
printf("Nooptionchoose!
\n");
}
}
}
}
voidsort_total()
{
intj;
intt;
intl;
for(i=0;ifor(i=1;i{
l=i-1;
for(j=i;jif(stu[j].Total>stu[l].Total)l=j;/*如果j位同学的总成绩大于i位,将j的值赋值于l*/
if((i-1)!
=l)
{
stu[t]=stu[i-1];
stu[i-1]=stu[l];
stu[l]=stu[t];/*j位和i位交换位置*/
}
}
if(count==0)
printf("noinformation!
\n");
else{
printf("\nAllstudentsinformationasfollows:
\n");
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
for(i=0;iprintf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
}
voidsort_name()
{
intj;
into;
intl;
for(i=0;ifor(i=1;i{
l=i-1;
for(j=i;jif(strcmp(stu[j].name,stu[l].name)<0)l=j;/*用字符串比较函数比较j位和l位的大小*/
if((i-1)!
=l)
{
stu[o]=stu[i-1];
stu[i-1]=stu[l];
stu[l]=stu[o];
}
}
if(count==0)
printf("noinformation!
\n");
else{
printf("\nAllstudentsinformationasfollows:
\n");
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
for(i=0;iprintf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
}
voidsort_num()
{
intj;
intm;
intl;
for(i=0;ifor(i=1;i{
l=i-1;
for(j=i;jif(stu[j].numif((i-1)!
=l)
{
stu[m]=stu[i-1];
stu[i-1]=stu[l];
stu[l]=stu[m];
}
}
if(count==0)
printf("noinformation!
\n");
else{
printf("\nAllstudentsinformationasfollows:
\n");
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
for(i=0;iprintf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
}
/***********************************写入函数**********************************/
voidsave()/*定义save函数存储数据到文件中*/
{
FILE*fp;
inti;
if((fp=fopen("c:
\\123\\new3.dat","wb"))==NULL)
{
printf("Cannotopenfile\n");
exit(0);
}
for(i=0;ifwrite(&stu[i],sizeof(structstudent),1,fp);/*fwrite函数向文件里输入一个数据块*/
fclose(fp);
}
/*********************************存放出函数**********************************/
voidload()/*定义load函数从文件中读取数据到内存中*/
{
FILE*fp;
if((fp=fopen("c:
\\123\\new3.dat","wb"))==NULL)
{
printf("Cannotopenfile\n");
exit(0);
}
fread(&stu[i],sizeof(structstudent),1,fp);/*fread函数从文件中读入数据块*/
while(!
feof(fp))
{
i++;
fread(&stu[i],sizeof(structstudent),1,fp);
count++;
}
fclose(fp);
}
/**********************************查询函数**********************************/
voidchaxun()/*查询学生信息*/
{
intsel1;
if(count==0)
printf("nomessage!
");
else
{
while
(1)
{printf("\n");
printf("********************\n");
printf("1.choosenumberfind\n");/*按学号查询*/
printf("2.choosenamefind\n");/*按姓名查询*/
printf("3.outputgrade\n");
printf("4.return\n");
printf("********************\n");
printf("Pleasechoose(1~4):
");
scanf("%d",&sel1);
switch(sel1)
{
case1:
chaxunnum();break;
case2:
chaxunname();break;
case3:
output_grade();break;
case4:
return;
default:
printf("Nooptionchoose!
\n");
}
}
}
}
voidchaxunnum()
{
intstu_num;
printf("Pleaseinputquerystudent'number:
");
scanf("%d",&stu_num);
for(i=0;i{
if(stu[i].num==stu_num)break;
}
if(i{
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
printf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
if(i==count)
{
printf("Nofindthisstudent!
");
}
}
voidchaxunname()
{
intf=0;
charstu_name[20];
printf("Pleaseinputquerystudent'name:
");
scanf("%s",stu_name);
for(i=0;i{
if(strcmp(stu[i].name,stu_name)==0)
{f++;
printf("number\tname\tsex\tEnglish\tMath\tCprogram\tTotal\tAverage\n");
printf("%d\t%s\t%s\t%d\t%d\t%d\t\t%0.2f\t%0.2f\t\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].English,stu[i].Math,stu[i].Cprogram,stu[i].Total,stu[i].Average);
}
}
if(f>0)
{
printf("Successfulfind!
\n");
}
if(f==0)
{
printf("Nofindthisstudent!
");
}
}
/**********************************删除函数**********************************/
voiddel_data()/*删除学生信息*/
{
intsign;
if(count==0)
printf("nomessage!
");
else
{
while
(1)
{printf("\n");
printf("********************\n");
printf("1.choosenumberdelete\n");/*按学号删除*/
printf("2.choosenamedelete\n");/*按姓名删除*/
printf("3.outputgrade\n");
printf("4.return\n");
printf("********************\n");
printf("Pleasechoose(1~4):
");
scanf("%d",&sign);
switch(sign)
{
case1:
del_num();break;
case2:
del_name();break;
case3:
output_grade();break;
case4:
return;
default:
printf("Nooptionchoose!
\n");
}
}
}
}
voiddel_num()
{
intj=0,delnum;
printf("Pleaseinputthenumberthatyouwanttodelete:
\n");
scanf("%d",&delnum);
for(i=0;i{
if(stu[i].num==delnum)break;
}
if(i{
for(j=i;jstu[j]=stu[j+1];
count--;
printf("Successfuldelete!
");
}
if(i==count)
{
printf("Nofindthisstudent!
");
}
}
voiddel_name()
{
intk=0;
intr=0;
intc=0;
chardelname[20];
printf("Pleaseinputthenamethatyouwanttodelete:
");
scanf("%s",delname);
for(i=0;i{
if(strcmp(stu[i].name,delname)==0)
{
k=i;
c++;
for(r=k;rstu[r]=stu[r+1];
count--;
i=k-1;
}
}
if(c>0)
{printf("Successfuldelete!
");
}
i