qq_22860609 2021-07-02 08:21 采纳率: 42.9%
浏览 35
已采纳

求各位帮我看看 为什么只有录入的模块能正常使用??

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
#include<conio.h>
#define MAX_LEN 20
#define STU_tel 200
#define MAX_Add 20
#define N 30
typedef struct Student
{
_int64 id; //学号
char name[MAX_LEN]; //姓名
char sex[8]; //性别
int dorm; //宿舍号
char Class; //班级
char add[MAX_Add]; //院系
_int64 tel; //手机号码
}STU;
STU stu[STU_NUM];
int ch = -1;
int Menu(void);
int n = 0; /* 学生人数为n */

int Menu(); //主菜单
void choose(int ch); //选择
void ReadData(); //读入数据
void Searchbyid(); //通过学号搜索信息
void SortByid(); //按学号从小到大排序
void Modifydata(); //修改信息
void Deletedatd(); //删除信息

void main()
{
printf("请输入要录入的学生数量(n<=200):\n");
scanf("%d", &n);
while (1) {
ch = Menu();
choose(ch);
ch = -1;
}
}

int Menu()
{
int ch;
printf("*********************┍ -----------------------┑ \n");
printf("
欢迎使用学生通信管理系统 *********************\n");
printf("**********************┕------------------------┙ *********************\n");
printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx菜单xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
printf("======================================================================\n");
printf("....... 1.录入信息 ..... 2.查询信息 .......\n");
printf("....... 3.排序功能 ..... 4.删除信息 .......\n");
printf("....... 5.修改数据 ..... 0.退出系统 .......\n");

printf("请输入你的选择:\n");
scanf("%d", &ch);
return ch;

}

void choose(int ch)
{
switch (ch)
{
case 1:
printf("请输入 学号,姓名,性别,宿舍号,班级,院系,手机号码(Pause:0):\n");
ReadData();
break;
case 2:
printf("请输入你想要搜索的学生学号 : \n");
Searchbyid();
break;
case 3:
SortByid();
break;
case 4:
Modifydata();
break;
case 5:
Deletedatd();
break;
case 0:
printf("结束程序!");
exit(0);
default: printf("输出错误!\n");
}
}

void ReadData() //读入数据
{
int i;
for (i = 0; i < n; i++)
{
printf("学号:");
scanf("%lld", &stu[i].id);
if (stu[i].id == 0)break;
getchar();
printf("姓名:");
gets(stu[i].name);
printf("性别:");
scanf("%s", &stu[i].sex);
getchar();
printf("宿舍号:");
scanf("%d", &stu[i].dorm);
printf("班级:");
scanf("%s", &stu[i].Class);
printf("院系:");
scanf("%s", &stu[i].add);
getchar();
printf("手机号码:");
scanf("%lld", &stu[i].tel);
printf("\n");
}
}

void Searchbyid() //2.查找
{
_int64 term = -1;
int i;
scanf("%lld", &term);
for (i = 0; i < n; i++)
{
if (term == stu[i].id)
{
printf("学号:%lld\n", stu[i].id);
printf("姓名:%s\n", stu[i].name);
printf("性别:%s\n", stu[i].sex);
printf("宿舍号:%d\n", stu[i].dorm);
printf("班级:%s\n", stu[i].Class);
printf("院系:%s\n", stu[i].add);
printf("手机号码:%lld\n", stu[i].tel);
term = -2;
}
}
if (term != -2)
{
printf("查无此人!\n");
}
getch();
}

void SortByid() //3.排序
{
STU temp1 = { 0 };
int i, j;
for (i = 0; i < n - 1; i++)
{
if (stu[i].id > stu[i + 1].id)
{
temp1 = stu[i];
stu[i] = stu[i + 1];
stu[i + 1] = temp1;
}
}
for (j = 0; j < n; j++)
{
printf("学号:%lld\n", stu[j].id);
printf("姓名:%s\n", stu[j].name);
printf("性别:%s\n", stu[j].sex);
printf("宿舍号:%d\n", stu[j].dorm);
printf("班级:%s\n", stu[j].Class);
printf("院系:%s\n", stu[j].add);
printf("手机号码:%lld\n", stu[j].tel);
printf("\n");
}
getch();
}

void Deletedatd()//4.删除信息
{
int i, j, flag = 0;
_int64 id1;
printf("请输入学号:\n");
scanf("%lld", &id1);
for (i = 0; i < n; i++)
{
if (stu[i].id == id1)
{
flag = 1;
for (j = i; j < n - 1; j++)
{
stu[j] = stu[j + 1];
}

    }
}
getch();

}

void Modifydata() //5.修改信息
{

int i, item, j = -1;
_int64 s1;
printf("请输入想要修改的学生学号:\n");
scanf("%lld", &s1);
for (i = 0; i < n; i++)
{
    if (stu[i].id == s1)
    {
        j = i;
        printf("1.修改姓名:\n");
        printf("2.修改性别:\n");
        printf("3.修改宿舍号:\n");
        printf("4.修改班级:\n");
        printf("5.修改院系:\n");
        printf("6.修改手机号码:\n");
        printf("0.结束程序!\n");
        while (1)
        {
            printf("请选择:");
            scanf("%d", &item);
            switch (item)
            {
            case 1:
                printf("请输入新的名字:\n");
                scanf("%s", &stu[j].name);
                break;
            case 2:
                printf("请输入新的性别:\n ");
                scanf("%s", &stu[j].sex);
                break;
            case 3:
                printf("请输入新的宿舍号:\n");
                scanf("%d", &stu[j].dorm);
                break;
            case 4:
                printf("请输入新的班级:\n");
                scanf("%", &stu[j].Class);
                break;
            case 5:
                printf("请输入新的院系:\n");
                scanf("%s", &stu[j].add);
                break;
            case 6:
                printf("请输入新的手机号码:\n");
                scanf("%lld", &stu[j].tel);
                break;
            default: printf("输入错误!\n");
            }
            if (item == 0)
                break;
        }
    }
}
getch();

}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-07-02 09:46
    关注

    修改完善如下,供参考对照:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<Windows.h>
    #include<conio.h>
    
    #define MAX_LEN 20
    #define STU_tel 200
    //#define MAX_Add 20
    #define N 30
    
    typedef struct Student
    {
         __int64 id; //学号
         char    name[MAX_LEN]; //姓名
         char    sex[8]; //性别
         int     dorm; //宿舍号
         char    Class[MAX_LEN];//班级
         char    add[MAX_LEN]; //院系
         __int64 tel; //手机号码
    }STU;
    
    STU stu[STU_tel];
    int n = 0; /* 学生人数为n */
    
    int  Menu(void);
    int  Menu(); //主菜单
    void choose(int ch); //选择
    void ReadData(); //读入数据
    void Searchbyid(); //通过学号搜索信息
    void SortByid(); //按学号从小到大排序
    void Modifydata(); //修改信息
    void Deletedatd(); //删除信息
    
    void main()
    {
        int ch;
        while (1) {
                  ch = Menu();
                  choose(ch);
                  //ch = -1;
        }
    }
    
    int Menu()
    {
        int ch;
        printf("*********************┍ -----------------------┑ ********************\n");
        printf("                       欢迎使用学生通信管理系统                       \n");
        printf("*********************┕------------------------┙ ********************\n");
        printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx菜单xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
        printf("======================================================================\n");
        printf("\t....... 1.录入信息 ..... 2.查询信息 .......\n");
        printf("\t....... 3.排序功能 ..... 4.删除信息 .......\n");
        printf("\t....... 5.修改数据 ..... 0.退出系统 .......\n");
        printf("请输入你的选择:\n");
        scanf("%d", &ch);
        return ch;
    }
    
    void choose(int ch)
    {
        switch (ch){
               case 1:
                     printf("请输入 学号,姓名,性别,宿舍号,班级,院系,手机号码(Pause:0):\n");
                     ReadData();
                     break;
               case 2:
                    printf("请输入你想要搜索的学生学号 : \n");
                    Searchbyid();
                    break;
               case 3:
                    SortByid();
                    break;
               case 4:
                    Deletedatd();
                    break;
               case 5:
                    Modifydata();
                    break;
               case 0:
                    printf("结束程序!");
                    exit(0);
               default: printf("输出错误!\n");
        }
    }
    
    void ReadData() //读入数据
    {
       int i;
       printf("请输入要录入的学生数量(n<=200):");
       scanf("%d", &n);
       for (i = 0; i < n; i++)
       {
           printf("学号:");
           scanf("%lld", &stu[i].id);
           getchar();
           printf("姓名:");
           gets(stu[i].name);
           printf("性别:");
           scanf("%s",stu[i].sex);
           getchar();
           printf("宿舍号:");
           scanf("%d", &stu[i].dorm);
           printf("班级:");
           scanf("%s", stu[i].Class);
           printf("院系:");
           scanf("%s", stu[i].add);
           getchar();
           printf("手机号码:");
           scanf("%lld", &stu[i].tel);
           printf("\n");
       }
    }
    
    void Searchbyid() //2.查找
    {
        __int64 term = -1;
        int i;
        scanf("%I64d", &term);
        for (i = 0; i < n; i++)
        {
           if (term == stu[i].id)
           {
               printf("学号:%lld\n", stu[i].id);
               printf("姓名:%s\n", stu[i].name);
               printf("性别:%s\n", stu[i].sex);
               printf("宿舍号:%d\n", stu[i].dorm);
               printf("班级:%s\n", stu[i].Class);
               printf("院系:%s\n", stu[i].add);
               printf("手机号码:%I64d\n", stu[i].tel);
               term = -2;
               break;
           }
        }
        if (term != -2)
        {
            printf("查无此人!\n");
        }
        getch();
    }
    
    void SortByid() //3.排序
    {
        STU temp1;
        int i, j;
        for(j=0;j<n-1;j++)
        {
            for (i = 0; i < n-1-j; i++)
            {
                 if (stu[i].id > stu[i + 1].id)
                 {
                         temp1 = stu[i];
                        stu[i] = stu[i + 1];
                    stu[i + 1] = temp1;
                 }
            }
        }
        for (j = 0; j < n; j++)
        {
            printf("学号:%lld\n", stu[j].id);
            printf("姓名:%s\n", stu[j].name);
            printf("性别:%s\n", stu[j].sex);
            printf("宿舍号:%d\n", stu[j].dorm);
            printf("班级:%s\n", stu[j].Class);
            printf("院系:%s\n", stu[j].add);
            printf("手机号码:%I64d\n", stu[j].tel);
            printf("\n");
        }
        getch();
    }
    
    void Deletedatd()//4.删除信息
    {
       int i, j, flag = 0;
        __int64 id1;
        printf("请输入学号:\n");
        scanf("%I64d", &id1);
        for (i = 0; i < n; i++)
        {
            if (stu[i].id == id1)
            {
                flag = 1;
                for (j = i; j < n - 1; j++)
                {
                    stu[j] = stu[j + 1];
                }
                n--;
                printf("删除成功!\n");
                break;
            }
        }
        if(flag==0) printf("无此记录!\n");
        getch();
    }
    
    void Modifydata() //5.修改信息
    {
        int i, item, j = -1;
        __int64 s1;
        printf("请输入想要修改的学生学号:\n");
        scanf("%I64d", &s1);
        for (i = 0; i < n; i++)
        {
             if (stu[i].id == s1)
             {
                 j = i;
                 while (1)
                 {
                      printf("请选择:\n");
                      printf("1.修改姓名:\n");
                      printf("2.修改性别:\n");
                      printf("3.修改宿舍号:\n");
                      printf("4.修改班级:\n");
                      printf("5.修改院系:\n");
                      printf("6.修改手机号码:\n");
                      printf("0.结束修改!\n");
                      scanf("%d", &item);
                      switch (item)
                      {
                         case 1:
                                printf("请输入新的名字:\n");
                                scanf("%s", &stu[j].name);
                                break;
                         case 2:
                                printf("请输入新的性别:\n ");
                                scanf("%s", &stu[j].sex);
                                break;
                         case 3:
                                printf("请输入新的宿舍号:\n");
                                scanf("%d", &stu[j].dorm);
                                break;
                         case 4:
                                printf("请输入新的班级:\n");
                                scanf("%s", stu[j].Class);
                                break;
                         case 5:
                                printf("请输入新的院系:\n");
                                scanf("%s", stu[j].add);
                                break;
                         case 6:
                                printf("请输入新的手机号码:\n");
                                scanf("%I64d", &stu[j].tel);
                                break;
                         case 0:break;
                        default:printf("输入错误!\n");
                                break;
                      }
                      if (item == 0) break;
                 }
                 printf("完成修改信息!\n");
                 break;
             }
        }
        if(j == -1) printf("无此记录!\n");
        getch();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格