用c语言编写了一个班级档案管理系统,完整代码如下,运行发现信息保存和信息修改两个函数功能都不能实现,而且有时会直接将程序终止,求教。

图片说明图片说明
#include
#include
#include
#include
#define N 3 //假设测试数据为3
struct student//定义结构体类型
{
char num[10];
char name[10];
char sex;
int age;
char bz[100];
};
void menu()//菜单函数
{
printf(" ~~~~~~~~~~~~~~~电子信息类921班~~~~~~~~~~~~~~~~\n\n");
printf("***************学生档案管理系统***************\n");
printf(" 1.学生基本信息录入\n");
printf(" 2.学生基本信息显示\n");
printf(" 3.学生基本信息保存\n");
printf(" 4.学生基本信息删除\n");
printf(" 5.学生基本信息修改\n");
printf(" 6.学生基本信息查询\n");
printf(" 7.退出系统\n");
printf("***************谢谢使用***********************\n");

}
int password()//密码验证函数
{
int i=3;
char ch[]={"123"};
char pass[20];
do
{
printf("请输入你的登录密码:\n");
scanf("%s",pass);
if(!strcmp(ch,pass))
{
return 0;
}
else
{
i--;
printf("输入有误,剩余输入次数为%d\n",i);
}
}while(i);
if(i==0)
{return -1;}

}
void get(struct student*stu,int n)//信息录入
{
int i;
for(i=0;i<n;i++)
{
printf("请输入学生基本信息:学号 姓名 性别 年龄(M/W) 备注\n");
scanf("%s%s %c%d%s",stu[i].num,stu[i].name,&stu[i].sex,&stu[i].age,stu[i].bz);

}

}
void display(struct student*stu,int n)//信息显示
{
int i;
printf("学生信息:学号 姓名 性别 年龄 备注\n");
for(i=0;i<n;i++)
{
printf("%15s%15s%15c%15d%15s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
}
}
void store(struct student*stu,int n)//信息保存
{
int i;
FILE*fp;
fp=fopen("c:\课程设计2.student.txt","w+");
if(fp==NULL)
{
printf("文件不存在!\n");
exit(0);
}
fwrite(stu,sizeof(struct student)*n,n,fp);
fclose(fp);
}
void modify(struct student*stu,int n)//信息修改
{
int i=3;
char ch[]={"123"};
char pass[20];
printf("请输入你的修改密码:\n");
scanf("%s",pass);
if(!strcmp(ch,pass))
{
int i,ch;
char num[10];

    printf("----------------1-修改学号------------------\n");
    printf("----------------2-修改姓名------------------\n");
    printf("----------------3-修改性别------------------\n");
    printf("----------------4-修改年龄------------------\n");
    printf("----------------5-退出----------------------\n\n\n");
    printf("请输入选项(1-5):\n");
    scanf("%d",&ch);
    switch(ch)
    {
    case 1:
        {
            printf("修改学生学号:\n");
            printf("请输入学号:\n");
            scanf("%s",num);
            for(i=0;i<n;i++)
            {
                if(!strcmp(num,stu[i].num))
                {
                    printf("学生信息:学号   姓名   性别   年龄   备注\n");
                    printf("%4s%4s%4c%4d%4s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
                    printf("重新输入该学生的学号:\n");
                    scanf("%s",stu[i].num);
                    store(stu,n);//保存修改
                }
                else
                    printf("查无此人!\n");

            }


        }break;
      case 2:
          {
             printf("修改学生姓名:\n");
             printf("请输入学号:\n");
             scanf("%s",num);
             for(i=0;i<n;i++)
             {
                if(!strcmp(num,stu[i].num))
                {
                    printf("学生信息:学号   姓名   性别   年龄   备注\n");
                    printf("%4s%4s%4c%4d%4s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
                    printf("重新输入该学生的姓名:\n");
                    scanf("%s",stu[i].name);
                    store(stu,n);
                }
                 else
                    printf("查无此人!\n");
             }
          }break;
      case 3:
        {
             printf("修改学生性别:\n");
             printf("请输入学号:\n");
             scanf("%s",num);
             for(i=0;i<n;i++)
             {
                if(!strcmp(num,stu[i].num))
                {
                    printf("学生信息:学号   姓名   性别   年龄   备注\n");
                    printf("%4s%4s%4c%4d%4s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
                    printf("重新输入该学生的性别:\n");
                    scanf(" %c",&stu[i].sex);
                    store(stu,n);
                }
                else
                    printf("查无此人!\n");


            }
        }break;
      case 4:
        {
             printf("修改学生年龄:\n");
             printf("请输入学号:\n");
             scanf("%s",num);
             for(i=0;i<n;i++)
             {
                if(!strcmp(num,stu[i].num))
                {
                    printf("学生信息:学号   姓名   性别   年龄   备注\n");
                    printf("%4s%4s%4c%4d%4s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
                    printf("重新输入该学生的年龄:\n");
                    scanf("%d",&stu[i].age);
                    store(stu,n);
                }
                else
                    printf("查无此人!\n");

        }
}break;

}

}
else printf("密码错误!\n");
}
void dele(struct student*stu,int n)//信息删除
{
int i;
char num[10];
int check=1;
printf("删除学生信息:\n");
printf("请输入学号\n");
scanf("%s",num);
for(i=0;i {
if(!strcmp(num,stu[i].num))
{
strcpy(stu[i].name," ");
strcpy(stu[i].bz," ");
strcpy(stu[i].num," ");
stu[i].age=0;
stu[i].sex=' ';
store(stu,n);
check=0;
}
}
if(check==1)
printf("该学生不存在!\n");
}
void search(struct student*stu,int n)//信息查询
{
int ch,i;
int check=1;
printf("----------------1-学号查询------------------\n");
printf("----------------2-姓名查询------------------\n");
printf("----------------3-性别查询------------------\n");
printf("----------------4-年龄查询------------------\n");
printf("----------------5-退出----------------------\n\n\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
{
char num[10];
printf("请输入学号:\n");
scanf("%s",num);
for(i=0;i {
if(!strcmp(num,stu[i].num))
{
printf("%12s%12s%12c%12d%12s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
check=0;
}
}
if(check==1)
printf("该学生不存在!\n");
}break;
case 2:
{
char name[10];
printf("请输入姓名:\n");
scanf("%s",name);
for(i=0;i {
if(!strcmp(name,stu[i].name))
{
printf("%12d%12s%12c%12d%12s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
check=0;
}
}
if(check==1)
printf("该学生不存在!\n");
}break;
case 3:
{
char sex;
printf("请输入性别:\n");
scanf(" %c",&sex);
for(i=0;i {
if(sex==stu[i].sex)
{
printf("%12d%12s%12c%12d%12s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
check=0;
}
}
if(check==1)
printf("该学生不存在!\n");
}break;
case 4:
{
int age;
printf("请输入年龄:\n");
scanf("%d",&age);
for(i=0;i {
if(age==stu[i].age)
{
printf("%12d%12s%12c%12d%12s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bz);
check=0;
}
}
if(check==1)
printf("该学生不存在!\n");
}break;
default:break;
}
}
void main()//主函数
{ struct student stu[N];//定义结构体数组
int password();//调用密码验证函数
if(password()==0)
{
menu();/*调用菜单函数*/
int n;
char m;
int check;/*输入有效性检测*/
do
{
printf("请选择你即将进行的操作(1-7):\n");
scanf("%d",&n);
if(n>=1&&n<=7)
{
check=1;
break;
}
else
{check=0;
printf("输入无效!请重新选择!");
}
}while(check==0);
while(check==1)
{
switch(n)
{
case 1:printf("***输入学生基本信息***\n\n");
get(stu,N);/*调用输入函数*/
break;
case 2:printf("***显示学生基本信息***\n\n");
display(stu,N);/*调用显示函数*/
break;
case 3:printf("***保存学生基本信息***\n\n");
store(stu,N);/*调用保存函数*/
break;
case 4:printf("***删除学生基本信息***\n\n");
dele(stu,N);/*调用删除函数*/
break;
case 5:printf("***修改学生基本信息***\n\n");
modify(stu,N);/*调用修改函数*/
break;
case 6:printf("***查询学生基本信息***\n\n");
search(stu,N);/*调用查询函数*/
break;
case 7:exit(0);
break;
default:break;
}
printf("\n");
printf("是否继续?(y or n)\n");
getchar();
m=getchar();
if(m=='y')
{
check=1;
system("cls");/*清屏*/
menu();/*再次调用菜单函数*/
printf("请再次选择你即将进行的步骤(1-7):\n");
scanf("%d",&n);
}
else exit(0);
}
}
else
printf("输入次数已经用尽,系统将自动退出!\n");
}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐