学生管理系统,帮忙改错!小弟拜谢!
里面的删除,保存,读取有些问题,希望高手指教!这是小弟第一次也是独立做出的C程序,更是第一次在论坛发帖,希望前辈们指教!
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define STU_NUMBER 100
#define SCORE_NUMBER 3
int ZONGRENSHU=0;/*全局变量总人数*/
typedef struct{
char xuehao[20];
char name[20];
char sex[2];
float score[SCORE_NUMBER];
float sum;
float ave;
}student;
student stu[STU_NUMBER];/*最大学生人数*/
student temp_stu;/*临时排序学生变量*/
/*功能菜单*/
caidan()
{
printf("\t\t\t ☆学生管理系统☆\n\n");
printf("\t\t\t1. 录 入 学 生 信 息\n");
printf("\t\t\t2. 显 示 学 生 信 息\n");
printf("\t\t\t3. 排 序 学 生 信 息\n");
printf("\t\t\t5. 查 找 学 生 信 息\n");
printf("\t\t\t4. 追 加 学 生 信 息\n");
printf("\t\t\t6. 删 除 学 生 信 息\n");
printf("\t\t\t7. 修 改 学 生 信 息\n");
printf("\t\t\t8. 保 存 学 生 信 息\n");
printf("\t\t\t9. 读 取 学 生 信 息\n");
printf("\t\t\t0. 退 出 管 理 系 统\n");
}
/*输入学生信息*/
int input()
{ int i=0,j=0;
char ch;
for(i;;i++)
{ ZONGRENSHU++;
j=0;
printf("请输入学生学号:");fflush(stdin);gets(stu[i].xuehao);
printf("请输入学生姓名:");fflush(stdin);gets(stu[i].name);
printf("请输入学生性别:");fflush(stdin);gets(stu[i].sex);
printf("请输入语文成绩:");scanf("%f",&stu[i].score[j]);j++;
printf("请输入数学成绩:");scanf("%f",&stu[i].score[j]);j++;
printf("请输入英语成绩:");scanf("%f",&stu[i].score[j]);
for(j=0;j<3;j++){stu[i].sum+=stu[i].score[j];}
stu[i].ave=stu[i].sum/3;
printf("共有%d个学生的信息\n",ZONGRENSHU);
printf("是否继续输入?y/n:");
fflush(stdin);
scanf("%c",&ch);
if(ch=='n')
break;
}
return ZONGRENSHU;
}
/*输出学生信息*/
output(int ZONGRENSHU)
{ int i=0;
printf("学号\t姓名\t性别\t语文\t数学\t英语\t总分\t平均成绩\n");
for (i;i<ZONGRENSHU;i++)
{printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%s\t",stu[i].sex);
printf("%.2f\t",stu[i].score[0]);
printf("%.2f\t",stu[i].score[1]);
printf("%.2f\t",stu[i].score[2]);
printf("%.2f\t",stu[i].sum);
printf("%.2f\t",stu[i].ave);
printf("\n");}
printf("共有%d个学生的信息\n",ZONGRENSHU);
}
/*排序学生信息*/
sort(int ZONGRENSHU)
{ int i=0,j=0;
for (i;i<ZONGRENSHU-1;i++)
{
for (j;j<ZONGRENSHU-1-i;j++)
{if(stu[j].sum>stu[j+1].sum);
temp_stu=stu[j];stu[j]=stu[j+1];stu[j+1]=temp_stu;}
printf("共有%d个学生的信息\n",ZONGRENSHU);
}
printf("排序之后:\n");
i=0;
printf("学号\t姓名\t性别\t语文\t数学\t英语\t总分\t平均成绩\n");
for (i;i<ZONGRENSHU;i++)
{printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%s\t",stu[i].sex);
printf("%.2f\t",stu[i].score[0]);
printf("%.2f\t",stu[i].score[1]);
printf("%.2f\t",stu[i].score[2]);
printf("%.2f\t",stu[i].sum);
printf("%.2f\t",stu[i].ave);
printf("\n");}
}
/*添加学生信息*/
int add(int ZONGRENSHU)
{ int i,j=0;
char ch;
i=ZONGRENSHU;
for(i;;i++)
{ ZONGRENSHU++;
j=0;
printf("请输入学生学号:");fflush(stdin);gets(stu[i].xuehao);
printf("请输入学生姓名:");fflush(stdin);gets(stu[i].name);
printf("请输入学生性别:");fflush(stdin);gets(stu[i].sex);
printf("请输入语文成绩:");scanf("%f",&stu[i].score[j]);j++;
printf("请输入数学成绩:");scanf("%f",&stu[i].score[j]);j++;
printf("请输入英语成绩:");scanf("%f",&stu[i].score[j]);
for(j=0;j<3;j++){stu[i].sum+=stu[i].score[j];}
stu[i].ave=stu[i].sum/3;
printf("共有%d个学生的信息\n",ZONGRENSHU);
printf("是否继续追加?y/n:");
fflush(stdin);
scanf("%c",&ch);
if(ch=='n')
break;
}
return ZONGRENSHU;
}
/*查找学生消息*/
find(int ZONGRENSHU)
{ int i=0;
char find_name[20];
printf("请输入您所查找的学生姓名:");
fflush(stdin);
gets(find_name);
printf("系统为您搜索到的信息:\n");
for (i;i<ZONGRENSHU;i++)
{ if(strcmp(find_name,stu[i].name)==0)
{
printf("学号\t姓名\t性别\t语文\t数学\t英语\t总分\t平均成绩\n");
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%s\t",stu[i].sex);
printf("%.2f\t",stu[i].score[0]);
printf("%.2f\t",stu[i].score[1]);
printf("%.2f\t",stu[i].score[2]);
printf("%.2f\t",stu[i].sum);
printf("%.2f\t",stu[i].ave);}
else {printf("没有您所输入的学生");}
}
}
/*删除学生信息*/
delete_student(int ZONGRENSHU)
{ int i,k=0;
char delete_xuehao[20];
char ch,y;
printf("请输入您所删除学生的学号:");
fflush(stdin);
gets(delete_xuehao);
for(i=0;i<ZONGRENSHU;i++)
{if(strcmp(delete_xuehao,stu[i].xuehao)==0)
k=i;
printf("该学生的信息:\n");
printf("学号\t姓名\t性别\t语文\t数学\t英语\t总分\t平均成绩\n");
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%s\t",stu[i].sex);
printf("%.2f\t",stu[i].score[0]);
printf("%.2f\t",stu[i].score[1]);
printf("%.2f\t",stu[i].score[2]);
printf("%.2f\t",stu[i].sum);
printf("%.2f\t",stu[i].ave);
printf("\n确定删除(y)?\n");
fflush(stdin);
scanf("%c",&y);
if(y=='y')
{for(k;k<ZONGRENSHU-1;k++)
{stu[k]=stu[k+1];}
ZONGRENSHU--;/*总人数减一*/
}/*if*/
printf("是否继续删除学生信息?y/n");
fflush(stdin);
scanf("%c",&ch);
if(ch=='n')
break;
}
return ZONGRENSHU;
}
/*修改学生信息*/
modify(int ZONGRENSHU)
{ int i=0;
int XGXX;/*修改选项变量*/
char modify_xuehao[20];/*修改的学生学号*/
printf("请输入您所修改学生信息的学号:");
fflush(stdin);
gets(modify_xuehao);
for(i;i<ZONGRENSHU;i++)
{if(strcmp(modify_xuehao,stu[i].xuehao)==0)
{printf("该学生的信息:\n");
printf("学号\t姓名\t性别\t语文\t数学\t英语\t总分\t平均成绩\n");
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%s\t",stu[i].sex);
printf("%.2f\t",stu[i].score[0]);
printf("%.2f\t",stu[i].score[1]);
printf("%.2f\t",stu[i].score[2]);
printf("%.2f\t",stu[i].sum);
printf("%.2f\t\n",stu[i].ave);}
else
{printf("没有您所输入的学生\n");}
}/*for*/
printf("\t\t\t1.修改学生学号\n");
printf("\t\t\t2.修改学生姓名\n");
printf("\t\t\t3.修改学生性别\n");
printf("\t\t\t4.修改语文成绩\n");
printf("\t\t\t5.修改数学成绩\n");
printf("\t\t\t6.修改英语成绩\n");
printf("请输入修改选项:");
scanf("%d",&XGXX);
switch(XGXX)
{case 1:printf("请输入该生学号:");fflush(stdin);gets(stu[i].xuehao);break;
case 2:printf("请输入该生姓名:");fflush(stdin);gets(stu[i].name);break;
case 3:printf("请输入该生性别:");fflush(stdin);gets(stu[i].sex);break;
case 4:printf("请输入语文成绩:");scanf("%f",stu[i].score[0]);break;
case 5:printf("请输入数学成绩:");scanf("%f",stu[i].score[1]);break;
case 6:printf("请输入英语成绩:");scanf("%f",stu[i].score[2]);break;
default :printf("输入错误,请重新输入:\n");}/*swich*/
}
/*保存文件*/
save(ZONGRENSHU)
{ FILE *fp;
int i=0;
if ((fp=fopen("D:\\学生管理器.txt","wb"))==NULL)
{printf("保存文件失败!\n");
exit(0);}
for (i;i<ZONGRENSHU;i++)
{fwrite(&stu[i],sizeof(student),1,fp);}
printf("保存文件成功!\n");
fclose(fp);
return i-1;
}
/*读取文件*/
load(ZONGRENSHU)
{ int i=0;
FILE *fp;
if ((fp=fopen("D:\\学生管理器.txt","rb"))==NULL)
{printf("打开文件失败!\n");
exit(0);}
printf("打开文件成功!\n");
while(!feof(fp))
{fread(&stu[i],sizeof(student),1,fp);
i++;}
fclose(fp);
return i-1;
}
DENGLU()/*登录函数*/
{ char mima[20];
int i=0;
printf("请输入登录密码:");fflush(stdin);gets(mima);
if(mima!="xuejianqiang")
{printf("输入错误!退出!");exit(0);}
}/*DENGLU—END*/
main()
{ int XZGN;
printf("\t欢迎进入 |欢宝| 学生管理系统!\n");
DENGLU();/*调用登录函数!*/
for(;;)
{
caidan();
printf("请选择功能项:");
scanf("%d",&XZGN);
switch(XZGN){
case 1:ZONGRENSHU=input();break;
case 2:output(ZONGRENSHU);break;
case 3:sort(ZONGRENSHU);break;
case 4:ZONGRENSHU=add(ZONGRENSHU);break;
case 5:find(ZONGRENSHU);break;
case 6:ZONGRENSHU=delete_student(ZONGRENSHU);break;
case 7:modify(ZONGRENSHU);break;
case 8:save(ZONGRENSHU);break;
case 9:ZONGRENSHU=load(ZONGRENSHU);break;
case 0:exit(0);
default:printf("输入错误,请重新输入:\n");
}
}
return 0;
}