qq_54411365 2021-04-24 23:11 采纳率: 50%
浏览 23
已结题

加粗代码的功能(修改功能)运行不了

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int n=0;
typedef struct student
{
    char sno[12];
    char name[8];
    int chinese;
    int math;
    int english;
} stud;

void input(stud*b);
void output(stud*b);
void insert(stud*b,int j);
int find (stud*b);
void readfile(stud*b,FILE*fp);
void savefile(stud*b,FILE*fp);
int del(stud*b);
void display(stud*b);
void add_stu(stud*b);
void menu();
void modify(stud*b);

int main()
{
    system("color 31");
    FILE *fp;
    stud stu[50];
    char user[10],ps[7];
    int choice,j;
    printf("\n");
    printf("请输入用户名:\n");
    gets(user);
    printf("请输入密码:\n");
    j=0;
    while((ps[j]=getch())!='\r')
    {
        printf("*");
        j++;
    }
    ps[j]='\0';
    printf("\n");
    if((strcmp(user,"admin")==0)&&(strcmp(ps,"123")==0))
    {


    while(1)
    {
        system("cls");
        menu();
        printf("输入选择:\n");
        scanf("%d",&choice);
         switch(choice)
        {
            case 1:if((fp=fopen("stu_list","r"))==NULL){
            printf("文件不存在");}
            else
             readfile(stu,fp); system("pause");break;

            case 2:add_stu(stu);system("pause");break;
            case 3:getchar();
             j=find(stu);
             if(j==-1)printf("查无此人!\n");
             else
          {
              printf("该同学信息是");
              output(stu+j);}system("pause");break;
            case 4:fflush(stdin);j=del(stu);
             if(j==-1)printf("查无此人!\n");
             else
       {
           printf("删除成功");
           display(stu);}system("pause");break;
            case 5:fflush("stdin");modify(stu);system("pause");break;
            case 6:savefile(stu,fp);system("pause");break;
            case 7:display(stu);system("pause");break;
            case 0:exit(1);break;
               default: printf("输入有误\n");system("pause");
        }
    }
    }
    else printf("用户名或密码错误,无法登录\n");
    return 0;
}
void menu()
{
    printf("\n\n\n");
    printf("\t\t\t|#||#||#||#||#||#||#||#||#||#||#||#||#||#|\n");
    printf("\t\t\t|#|       1------信息加载              |#|\n");
    printf("\t\t\t|#|       2------添加记录              |#|\n");
    printf("\t\t\t|#|       3------信息查询              |#|\n");
    printf("\t\t\t|#|       4------删除记录              |#|\n");
    printf("\t\t\t|#|       5------信息修改              |#|\n");
    printf("\t\t\t|#|       6------信息保存              |#|\n");
    printf("\t\t\t|#|       7------信息浏览              |#|\n");
    printf("\t\t\t|#|       0------退出                  |#|\n");
    printf("\t\t\t|#||#||#||#||#||#||#||#||#||#||#||#||#||#|\n");
}


void readfile(stud*b,FILE*fp)//读文件
{  int j=0;
       if((fp=fopen("stu_list","r"))==NULL)
    {
        printf("Error opening file !\n");
        exit(1);
       }
       while(!feof(fp))//判断是否读到文件尾
    {
        fread(b+j,sizeof(stud),1,fp);
        j++;
    }
   fclose(fp);
    n=j-1;
}

void savefile(stud*b,FILE*fp)//保存文件
{
    if((fp=fopen("stu_list","w"))==NULL)
    {
        printf("Error opening file !\n");
        exit(1);
    }
    fwrite(b,sizeof(stud),n,fp);
     fclose(fp);
}

void input(stud *b)
{
    scanf("%s%s%d%d%d",b->name,b->sno,&b->chinese,&b->math,&b->english);
}
void output(stud *b)
{
    printf("%-8s%-8s%5d%5d%5d\n",b->name,b->sno,b->chinese,b->math,b->english);
}

void display(stud *b)
{
    int j;
    printf("全部学生的信息:\n");
     printf("%-8s%-8s%-8s%-8s%-8s\n","姓名","学号","语文","数学","英语");
      for(j=0; j<n; j++)
        output(b+j);
}

void insert(stud*b,int j)
{
    stud snew;int k;
    printf("请输入新同学的信息:\n");
    input(&snew);
    for(k=n-1;k>=j-1;k--)*(b+k+1)=*(b+k);
    *(b+j-1)=snew;
    n++;
}
void add_stu(stud*b)
{
    stud snew;
    printf("请输入新同学的信息:\n");
    input(&snew);
    *(b+n)=snew;
    n++;
}

int find(stud *b)
{
    char name[8];
    int j;
    printf("请输入要查找的学生姓名:\n");
    gets(name);
    for(j=0; j<n; j++)
        if(strcmp((b+j)->name,name)==0)
            return j;
            return -1;
}

int del(stud *b)
{
    char name[8];
    int j,k;
     printf("请输入要删除的学生姓名:\n");
     gets(name);
     for(j=0; j<n; j++)
        if(strcmp((b+j)->name,name)==0)
     {
         for(k=j;k<n;k++)*(b+k)=*(b+k+1);
         n--;
         return 1;
     }
     return -1;
}
void modify(stud *b)
{
    char name[8];
    int j;
     printf("请输入要修改的学生姓名:\n");
      gets(name);
       for(j=0; j<n; j++)
        if(strcmp((b+j)->name,name)==0)
       {
           printf("该同学原来的信息是:\n");
           output(b+j);
           printf("请输入新的姓名:\n");
            gets((b+j)->name);
            printf("请输入新的学号:\n");
            gets((b+j)->sno);
            printf("请输入新的语文成绩:\n");
            gets((b+j)->chinese);
            printf("请输入新的数学成绩:\n");
            gets((b+j)->math);
            printf("请输入新的英语成绩:\n");
            gets((b+j)->english);
            printf("修改成功!\n");
            break;
       }
       if(j==n)printf("此人不存在\n");

}


 

  • 写回答

1条回答 默认 最新

  • 源代码大师 博客专家认证 2021-04-26 19:38
    关注

    C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题