• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

数据结构-链表实现学生信息管理系统

武飞扬头像
Coding Peasant
帮助1

主函数

  1.  
    #include "fun.h"
  2.  
     
  3.  
    int main(int argc, const char *argv[])
  4.  
    {
  5.  
    Node *S = createlist();
  6.  
    menu();
  7.  
    while (1)
  8.  
    {
  9.  
    choice(S);
  10.  
    }
  11.  
    return 0;
  12.  
    }

函数声明

  1.  
    #ifndef __FUN_H__
  2.  
    #define __FUN_H__
  3.  
     
  4.  
    #include <stdio.h>
  5.  
    #include <stdlib.h>
  6.  
    #include <string.h>
  7.  
     
  8.  
    typedef struct Node
  9.  
    {
  10.  
    int id;
  11.  
    char name[10];
  12.  
    int score;
  13.  
    int len;
  14.  
    struct Node* next;
  15.  
    }Node;
  16.  
     
  17.  
    //创建一个学生链表
  18.  
    Node *createlist();
  19.  
     
  20.  
    //创建一个学生的结点
  21.  
    Node *createnode(Node *S,const int id,const char *name,const int score);
  22.  
     
  23.  
    //判空
  24.  
    int empty(Node *S);
  25.  
     
  26.  
    //在头部插入一个学生的信息
  27.  
    int ins_head(Node *S,const int id,const char *name,const int score);
  28.  
     
  29.  
    //在尾部插入一个学生的信息
  30.  
    int ins_tail(Node *S,int id,char *name,int score);
  31.  
     
  32.  
    //删除头部学生信息
  33.  
    int del_head(Node *S);
  34.  
     
  35.  
    //删除尾部学生信息
  36.  
    int del_tail(Node *S);
  37.  
     
  38.  
    //按姓名删除学生信息
  39.  
    int del_name(Node *S,char *name);
  40.  
     
  41.  
    //按学号删除学生信息
  42.  
    int del_id(Node *S,int id);
  43.  
     
  44.  
    //按学号修改学生信息
  45.  
    int change_id(Node *S,int id,int score);
  46.  
     
  47.  
    //按姓名修改学生信息
  48.  
    int change_name(Node *S,char *name,int score);
  49.  
     
  50.  
    //按学号查找学生的信息
  51.  
    int find_id(Node *S,int id);
  52.  
     
  53.  
    //按姓名查找学生的信息
  54.  
    int find_name(Node *S,char *name);
  55.  
     
  56.  
    //遍历所有学生信息
  57.  
    int tra(Node *S);
  58.  
     
  59.  
    //按学号排序
  60.  
    Node *sort_id(Node *S);
  61.  
     
  62.  
    //按成绩排序
  63.  
    Node *sort_score(Node *S);
  64.  
     
  65.  
    //菜单界面
  66.  
    void menu();
  67.  
     
  68.  
    //输入项选择
  69.  
    int input();
  70.  
     
  71.  
    //选择需要的操作 输入数据
  72.  
    int choice();
  73.  
     
  74.  
    #endif

被调函数

  1.  
    #include "fun.h"
  2.  
     
  3.  
    //------------------------------------------------------------
  4.  
    //创建一个学生链表
  5.  
    Node *createlist()
  6.  
    {
  7.  
    //申请链表
  8.  
    Node *S = (Node*)malloc(sizeof(Node));
  9.  
    if (NULL == S)
  10.  
    {
  11.  
    printf("学生列表申请失败\n");
  12.  
    return NULL;
  13.  
    }
  14.  
     
  15.  
    printf("学生列表申请成功\n");
  16.  
     
  17.  
    //初始化
  18.  
    S->id = 0;
  19.  
    strcpy(S->name,"");
  20.  
    S->score = 0;
  21.  
    S->next = NULL;
  22.  
    S->len = 0;
  23.  
    return S;
  24.  
    }
  25.  
     
  26.  
    //------------------------------------------------------------
  27.  
    //判空
  28.  
    int empty(Node *S)
  29.  
    {
  30.  
    return NULL == S->next ? 1 : 0; //1空 0非空
  31.  
    }
  32.  
     
  33.  
    //------------------------------------------------------------
  34.  
    //创建一个学生的结点
  35.  
    Node *createnode(Node *S,const int id,const char *name,const int score)
  36.  
    {
  37.  
    S = (Node*)malloc(sizeof(Node)); //给结点分配一个内存空间
  38.  
    if (NULL == S)
  39.  
    {
  40.  
    printf("节点申请失败\n");
  41.  
    return NULL;
  42.  
    }
  43.  
     
  44.  
    //放数据
  45.  
    S->id = id;
  46.  
    strcpy(S->name,name);
  47.  
    S->score = score;
  48.  
    S->next = NULL;
  49.  
    S->len ;
  50.  
    return S;
  51.  
    }
  52.  
     
  53.  
    //------------------------------------------------------------
  54.  
    //在头部插入一个学生的信息
  55.  
    int ins_head(Node *S,const int id,const char *name,const int score)
  56.  
    {
  57.  
    if (NULL == S)
  58.  
    {
  59.  
    printf("所给链表不合法\n");
  60.  
    return 0;
  61.  
    }
  62.  
    Node *p = createnode(S,id,name,score);
  63.  
    if (NULL == p)
  64.  
    {
  65.  
    printf("结点申请失败\n");
  66.  
    return 0;
  67.  
    }
  68.  
     
  69.  
    //完成头插
  70.  
    p->next = S->next;
  71.  
    S->next = p;
  72.  
     
  73.  
    //表的变化
  74.  
    S->len ;
  75.  
     
  76.  
    return 1;
  77.  
     
  78.  
    }
  79.  
     
  80.  
    //------------------------------------------------------------
  81.  
    //在尾部插入一个学生的信息
  82.  
    int ins_tail(Node *S,int id,char *name,int score)
  83.  
    {
  84.  
    if (NULL == S)
  85.  
    {
  86.  
    printf("所给链表不合法\n");
  87.  
    return 0;
  88.  
    }
  89.  
    Node *p = createnode(S,id,name,score);
  90.  
    if (NULL == p)
  91.  
    {
  92.  
    printf("结点申请失败\n");
  93.  
    return 0;
  94.  
    }
  95.  
    while (NULL != S->next)
  96.  
    {
  97.  
    S = S->next;
  98.  
    }
  99.  
     
  100.  
    //完成尾插
  101.  
    S->next = p;
  102.  
    p->next = NULL;
  103.  
     
  104.  
    //表的变化
  105.  
    S->len ;
  106.  
    return 1;
  107.  
    }
  108.  
     
  109.  
    //------------------------------------------------------------
  110.  
    //删除头部学生信息
  111.  
    int del_head(Node *S)
  112.  
    {
  113.  
    if (NULL == S || empty(S))
  114.  
    {
  115.  
    printf("删除失败\n");
  116.  
    return 0;
  117.  
    }
  118.  
    Node *p = S->next->next;
  119.  
    free(S->next);
  120.  
    S->next = p;
  121.  
    p = NULL;
  122.  
    S->len--;
  123.  
    return 1;
  124.  
    }
  125.  
     
  126.  
    //------------------------------------------------------------
  127.  
    //删除尾部学生信息
  128.  
    int del_tail(Node *S)
  129.  
    {
  130.  
    if (NULL == S || empty(S))
  131.  
    {
  132.  
    printf("删除失败\n");
  133.  
    return 0;
  134.  
    }
  135.  
    while (S->next->next != NULL)
  136.  
    {
  137.  
    S = S->next;
  138.  
    }
  139.  
    Node *p = S->next;
  140.  
    S->next = NULL;
  141.  
    free(p);
  142.  
    p = NULL;
  143.  
    S->len--;
  144.  
    return 1;
  145.  
    }
  146.  
     
  147.  
    //------------------------------------------------------------
  148.  
    //按姓名删除学生信息
  149.  
    int del_name(Node *S,char *name)
  150.  
    {
  151.  
    if (NULL == S || empty(S))
  152.  
    {
  153.  
    printf("删除失败\n");
  154.  
    return 0;
  155.  
    }
  156.  
    Node *p;
  157.  
     
  158.  
    while (S->next != NULL)
  159.  
    {
  160.  
    if (!strcmp(S->next->name,name))
  161.  
    {
  162.  
    p = S->next->next;
  163.  
    free(S->next);
  164.  
    S->next = p;
  165.  
    p = NULL;
  166.  
    S->len--;
  167.  
    return 1;
  168.  
    }
  169.  
    S = S->next;
  170.  
    }
  171.  
     
  172.  
    printf("没有该学生信息,无法删除\n");
  173.  
    return 0;
  174.  
    }
  175.  
     
  176.  
    //------------------------------------------------------------
  177.  
    //按学号删除学生信息
  178.  
    int del_id(Node *S,int id)
  179.  
    {
  180.  
    if (NULL == S || empty(S))
  181.  
    {
  182.  
    printf("删除失败\n");
  183.  
    return 0;
  184.  
    }
  185.  
    Node *p;
  186.  
     
  187.  
    while (S->next != NULL)
  188.  
    {
  189.  
    if (id == S->next->id)
  190.  
    {
  191.  
    p = S->next->next;
  192.  
    free(S->next);
  193.  
    S->next = p;
  194.  
    p = NULL;
  195.  
    S->len--;
  196.  
    return 1;
  197.  
    }
  198.  
    S = S->next;
  199.  
     
  200.  
    }
  201.  
     
  202.  
    printf("没有该学生信息,无法删除\n");
  203.  
    return 0;
  204.  
    }
  205.  
     
  206.  
    //------------------------------------------------------------
  207.  
    //按学号修改学生的信息
  208.  
    int change_id(Node *S,int id,int score)
  209.  
    {
  210.  
    while (S->next != NULL)
  211.  
    {
  212.  
    if (id == S->next->id)
  213.  
    {
  214.  
    S->next->score = score;
  215.  
    return 1;
  216.  
    }
  217.  
    S = S->next;
  218.  
    }
  219.  
    printf("修改失败\n");
  220.  
    return 0;
  221.  
     
  222.  
    }
  223.  
     
  224.  
    //------------------------------------------------------------
  225.  
    //按姓名修改学生的信息
  226.  
    int change_name(Node *S,char *name,int score)
  227.  
    {
  228.  
    while (S->next != NULL)
  229.  
    {
  230.  
    if (!strcmp(name,S->next->name))
  231.  
    {
  232.  
    S->next->score = score;
  233.  
    return 1;
  234.  
    }
  235.  
    S = S->next;
  236.  
    }
  237.  
    printf("查找失败\n");
  238.  
    return 0;
  239.  
     
  240.  
    }
  241.  
     
  242.  
    //------------------------------------------------------------
  243.  
    //按学号查找学生的信息
  244.  
    int find_id(Node *S,int id)
  245.  
    {
  246.  
    if (NULL == S || empty(S))
  247.  
    {
  248.  
    printf("查找失败\n");
  249.  
    return 0;
  250.  
    }
  251.  
    Node *p = S;
  252.  
     
  253.  
    printf("学号\t姓名\t成绩\n");
  254.  
    while (p->next != NULL)
  255.  
    {
  256.  
    if (p->next->id == id)
  257.  
    {
  258.  
    printf(" %d\t%s\t %d\n",p->next->id,p->next->name,p->next->score);
  259.  
    return 1;
  260.  
    }
  261.  
    p = p->next;
  262.  
    }
  263.  
    printf("未查询到该学生信息\n");
  264.  
    return 0;
  265.  
    }
  266.  
     
  267.  
    //------------------------------------------------------------
  268.  
    //按姓名查找学生的信息
  269.  
    int find_name(Node *S,char *name)
  270.  
    {
  271.  
    if (NULL == S || empty(S))
  272.  
    {
  273.  
    printf("查找失败\n");
  274.  
    return 0;
  275.  
    }
  276.  
    Node *p = S;
  277.  
     
  278.  
    printf("学号\t姓名\t成绩\n");
  279.  
    while (p->next != NULL)
  280.  
    {
  281.  
    if (!strcmp(p->next->name,name))
  282.  
    {
  283.  
    printf(" %d\t%s\t %d\n",p->next->id,p->next->name,p->next->score);
  284.  
    return 1;
  285.  
    }
  286.  
    p = p->next;
  287.  
    }
  288.  
    printf("未查询到该学生信息\n");
  289.  
    return 0;
  290.  
    }
  291.  
     
  292.  
    //------------------------------------------------------------
  293.  
    //遍历所有的信息
  294.  
    int tra(Node *S)
  295.  
    {
  296.  
    if (NULL == S || empty(S))
  297.  
    {
  298.  
    printf("遍历失败\n");
  299.  
    return 0;
  300.  
    }
  301.  
    printf("学号\t姓名\t成绩\n");
  302.  
    do
  303.  
    {
  304.  
    printf(" %d\t%s\t %d\n",S->next->id,S->next->name,S->next->score);
  305.  
    S = S->next;
  306.  
    }while(S->next != NULL);
  307.  
    return 1;
  308.  
    }
  309.  
     
  310.  
    //------------------------------------------------------------
  311.  
    //按学号排序
  312.  
    Node *sort_id(Node *S)
  313.  
    {
  314.  
    Node *X = S;
  315.  
    Node *head = X;
  316.  
    Node *p = X->next;
  317.  
    if (X->next == NULL)
  318.  
    {
  319.  
    printf("链表错误\n");
  320.  
    return NULL;
  321.  
    }
  322.  
    Node *q = p->next;
  323.  
    if (X->next->next == NULL)
  324.  
    {
  325.  
    printf("数据过少无需排序\n");
  326.  
    return NULL;
  327.  
    }
  328.  
    for (int i=1;i<S->len;i )
  329.  
    {
  330.  
    for (int j=0;j<S->len-i;j )
  331.  
    {
  332.  
    if (q->id > p->id)
  333.  
    {
  334.  
    if (p->next == q)
  335.  
    {
  336.  
    head->next = q;
  337.  
    if (q->next == NULL)
  338.  
    {
  339.  
    p->next = NULL;
  340.  
    }
  341.  
    else
  342.  
    {
  343.  
    p->next = q->next;
  344.  
    }
  345.  
    q->next = p;
  346.  
    }
  347.  
    else if (q->next == p)
  348.  
    {
  349.  
    head->next = p;
  350.  
    if (p->next == NULL)
  351.  
    {
  352.  
    q->next = NULL;
  353.  
    }
  354.  
    else
  355.  
    {
  356.  
    q->next = p->next;
  357.  
    }
  358.  
    p->next = q;
  359.  
    }
  360.  
    }
  361.  
    head = head->next;
  362.  
    q = q->next;
  363.  
    p = p->next;
  364.  
    }
  365.  
    }
  366.  
    tra(p);
  367.  
     
  368.  
    return X;
  369.  
    }
  370.  
     
  371.  
     
  372.  
    //------------------------------------------------------------
  373.  
    //按成绩排序
  374.  
    Node *sort_score(Node *S)
  375.  
    {
  376.  
    Node *X = S;
  377.  
    Node *head = X;
  378.  
    Node *p = X->next;
  379.  
    if (X->next == NULL)
  380.  
    {
  381.  
    printf("链表错误\n");
  382.  
    return NULL;
  383.  
    }
  384.  
    Node *q = p->next;
  385.  
    if (X->next->next == NULL)
  386.  
    {
  387.  
    printf("数据过少无需排序\n");
  388.  
    return NULL;
  389.  
    }
  390.  
    for (int i=1;i<S->len;i )
  391.  
    {
  392.  
    for (int j=0;j<S->len-i;j )
  393.  
    {
  394.  
    if (q->score > p->score)
  395.  
    {
  396.  
    if (p->next == q)
  397.  
    {
  398.  
    head->next = q;
  399.  
    if (q->next == NULL)
  400.  
    {
  401.  
    p->next = NULL;
  402.  
    }
  403.  
    else
  404.  
    {
  405.  
    p->next = q->next;
  406.  
    }
  407.  
    q->next = p;
  408.  
    }
  409.  
    else if (q->next == p)
  410.  
    {
  411.  
    head->next = p;
  412.  
    if (p->next == NULL)
  413.  
    {
  414.  
    q->next = NULL;
  415.  
    }
  416.  
    else
  417.  
    {
  418.  
    q->next = p->next;
  419.  
    }
  420.  
    p->next = q;
  421.  
    }
  422.  
    }
  423.  
    head = head->next;
  424.  
    q = q->next;
  425.  
    p = p->next;
  426.  
    }
  427.  
    }
  428.  
    tra(p);
  429.  
     
  430.  
    return X;
  431.  
     
  432.  
    }
  433.  
     
  434.  
     
  435.  
    //------------------------------------------------------------
  436.  
    //菜单界面
  437.  
    void menu()
  438.  
    {
  439.  
    printf(" ┌-----------------------------------------┐\n");
  440.  
    printf(" | |\n");
  441.  
    printf(" | 欢迎使用学生信息管理系统 |\n");
  442.  
    printf(" |_________________________________________|\n");
  443.  
    printf(" | 当前版本:V2.0 |\n");
  444.  
    printf(" | ┈━═☆ |\n");
  445.  
    printf(" | 1 菜单界面 |\n");
  446.  
    printf(" | 2 批量添加学生信息 |\n");
  447.  
    printf(" | 3 在头部插入一个学生的信息 |\n");
  448.  
    printf(" | 4 在尾部插入一个学生的信息 |\n");
  449.  
    printf(" | 5 删除头部学生信息 |\n");
  450.  
    printf(" | 6 删除尾部学生信息 |\n");
  451.  
    printf(" | 7 按姓名删除学生信息 |\n");
  452.  
    printf(" | 8 按学号删除学生信息 |\n");
  453.  
    printf(" | 9 按学号修改学生信息 |\n");
  454.  
    printf(" | 10 按姓名修改学生信息 |\n");
  455.  
    printf(" | 11 按学号查找学生的信息 |\n");
  456.  
    printf(" | 12 按姓名查找学生的信息 |\n");
  457.  
    printf(" | 13 查看所有学生信息 |\n");
  458.  
    printf(" | 14 按学号排序 |\n");
  459.  
    printf(" | 15 按成绩排序 |\n");
  460.  
    printf(" | 16 清屏 |\n");
  461.  
    printf(" | 0 退出 |\n");
  462.  
    printf(" └-----------------------------------------┘\n");
  463.  
    }
  464.  
     
  465.  
     
  466.  
     
  467.  
     
  468.  
    //------------------------------------------------------------
  469.  
    //选择需要的操作
  470.  
    int choice(Node *S)
  471.  
    {
  472.  
    int n = 0;
  473.  
    n = input();
  474.  
    switch(n)
  475.  
    {
  476.  
    case 1:
  477.  
    menu();
  478.  
    break;
  479.  
    case 2:
  480.  
    {
  481.  
    int sum;
  482.  
    printf("请输入添加的学生人数:");
  483.  
    scanf("%d",&sum);
  484.  
    for (int i = 0;i<sum;i )
  485.  
    {
  486.  
    int id,score;
  487.  
    char name[10];
  488.  
    printf("请输入第%d名同学学号:",i 1);
  489.  
    scanf("%d",&id);
  490.  
    printf("请输入第%d名同学姓名:",i 1);
  491.  
    scanf("%s",name);
  492.  
    printf("请输入第%d名同学成绩:",i 1);
  493.  
    scanf("%d",&score);
  494.  
    ins_tail(S,id,name,score);
  495.  
    }
  496.  
    }
  497.  
    break;
  498.  
    case 3:
  499.  
    {
  500.  
    int id,score;
  501.  
    char name[10];
  502.  
    printf("请输入学号:");
  503.  
    scanf("%d",&id);
  504.  
    printf("请输入姓名:");
  505.  
    scanf("%s",name);
  506.  
    printf("请输入成绩:");
  507.  
    scanf("%d",&score);
  508.  
    if(ins_head(S,id,name,score))
  509.  
    {
  510.  
    printf("头插成功\n");
  511.  
    }
  512.  
    }
  513.  
    break;
  514.  
    case 4:
  515.  
    {
  516.  
    int id,score;
  517.  
    char name[10];
  518.  
    printf("请输入学号:");
  519.  
    scanf("%d",&id);
  520.  
    printf("请输入姓名:");
  521.  
    scanf("%s",name);
  522.  
    printf("请输入成绩:");
  523.  
    scanf("%d",&score);
  524.  
    if(ins_tail(S,id,name,score))
  525.  
    {
  526.  
    printf("尾插成功\n");
  527.  
    }
  528.  
    }
  529.  
    break;
  530.  
    case 5:
  531.  
    {
  532.  
    if(del_head(S))
  533.  
    {
  534.  
    printf("头删成功\n");
  535.  
    }
  536.  
    }
  537.  
    break;
  538.  
    case 6:
  539.  
    {
  540.  
    if (del_tail(S))
  541.  
    {
  542.  
    printf("尾删成功\n");
  543.  
    }
  544.  
    }
  545.  
    break;
  546.  
    case 7:
  547.  
    {
  548.  
    char name[10];
  549.  
    printf("请输入要删除的学生姓名:");
  550.  
    scanf("%s",name);
  551.  
    if (del_name(S,name))
  552.  
    {
  553.  
    printf("删除成功\n");
  554.  
    }
  555.  
    }
  556.  
    break;
  557.  
    case 8:
  558.  
    {
  559.  
    int id;
  560.  
    printf("请输入要删除的学生学号:");
  561.  
    scanf("%d",&id);
  562.  
    if (del_id(S,id))
  563.  
    {
  564.  
    printf("删除成功\n");
  565.  
    }
  566.  
    }
  567.  
    break;
  568.  
    case 9:
  569.  
    {
  570.  
    int id;
  571.  
    printf("请输入要修改成绩的学生学号:");
  572.  
    scanf("%d",&id);
  573.  
    if (!find_id(S,id))
  574.  
    {
  575.  
    printf("没有该学生!\n");
  576.  
    }
  577.  
    else
  578.  
    {
  579.  
    int score;
  580.  
    printf("请输入修改的成绩:");
  581.  
    scanf("%d",&score);
  582.  
    if (change_id(S,id,score))
  583.  
    {
  584.  
    printf("修改成功\n");
  585.  
    }
  586.  
    }
  587.  
    }
  588.  
    break;
  589.  
    case 10:
  590.  
    {
  591.  
    char name[10];
  592.  
    printf("请输入要修改成绩的学生姓名:");
  593.  
    scanf("%s",name);
  594.  
    if (!find_name(S,name))
  595.  
    {
  596.  
    printf("没有该学生!\n");
  597.  
    }
  598.  
    else
  599.  
    {
  600.  
    int score;
  601.  
    printf("请输入修改的成绩:");
  602.  
    scanf("%d",&score);
  603.  
    if (change_name(S,name,score))
  604.  
    {
  605.  
    printf("修改成功\n");
  606.  
    }
  607.  
    }
  608.  
    }
  609.  
    break;
  610.  
    case 11:
  611.  
    {
  612.  
    int id;
  613.  
    printf("请输入要查找的学生学号:");
  614.  
    scanf("%d",&id);
  615.  
    if (find_id(S,id))
  616.  
    {
  617.  
    printf("查找成功\n");
  618.  
    }
  619.  
    }
  620.  
    break;
  621.  
    case 12:
  622.  
    {
  623.  
    char name[10];
  624.  
    printf("请输入要查找的学生姓名:");
  625.  
    scanf("%s",name);
  626.  
    if(find_name(S,name));
  627.  
    {
  628.  
    printf("查找成功\n");
  629.  
    }
  630.  
    }
  631.  
    break;
  632.  
    case 13:
  633.  
    {
  634.  
    if (tra(S))
  635.  
    {
  636.  
    printf("所有学生信息输出成功\n");
  637.  
    }
  638.  
    }
  639.  
    break;
  640.  
    case 14:
  641.  
    {
  642.  
    Node *L = sort_id(S);
  643.  
    if (L == NULL)
  644.  
    {
  645.  
    return -1;
  646.  
    }
  647.  
    printf("按学号排序成功\n");
  648.  
    tra(L);
  649.  
    }
  650.  
    break;
  651.  
    case 15:
  652.  
    {
  653.  
    Node *L = sort_score(S);
  654.  
    if (L == NULL)
  655.  
    {
  656.  
    return -1;
  657.  
    }
  658.  
    printf("按成绩排序成功\n");
  659.  
    }
  660.  
    break;
  661.  
    case 16:
  662.  
    system("clear");
  663.  
    break;
  664.  
    case 0:
  665.  
    system("clear");
  666.  
    exit(0);
  667.  
    break;
  668.  
    }
  669.  
    }
  670.  
     
  671.  
     
  672.  
    //------------------------------------------------------------
  673.  
    //输入
  674.  
    int input()
  675.  
    {
  676.  
    int num;
  677.  
    printf("请输入你的选项:");
  678.  
    scanf("%d",&num);
  679.  
    if (num >= 0 && num <= 17)
  680.  
    {
  681.  
    return num;
  682.  
    }
  683.  
    else
  684.  
    {
  685.  
    system("clear");
  686.  
    menu();
  687.  
    printf("输入错误请重新输入\n");
  688.  
    scanf("%*[^\n]%*c");
  689.  
    input();
  690.  
    }
  691.  
    }

测试

学新通

  1.  
    》》请输入你的选项:2
  2.  
    请输入添加的学生人数:2
  3.  
    请输入第1名同学学号:1002
  4.  
    请输入第1名同学姓名:hh
  5.  
    请输入第1名同学成绩:99
  6.  
    请输入第2名同学学号:1005
  7.  
    请输入第2名同学姓名:ll
  8.  
    请输入第2名同学成绩:55
  9.  
     
  10.  
    》》请输入你的选项:3
  11.  
    请输入学号:1009
  12.  
    请输入姓名:jj
  13.  
    请输入成绩:56
  14.  
    头插成功
  15.  
     
  16.  
    》》请输入你的选项:4
  17.  
    请输入学号:22
  18.  
    请输入姓名:pl
  19.  
    请输入成绩:85
  20.  
    尾插成功
  21.  
     
  22.  
    》》请输入你的选项:13
  23.  
    学号 姓名 成绩
  24.  
    1009 jj 56
  25.  
    1002 hh 99
  26.  
    1005 ll 55
  27.  
    22 pl 85
  28.  
    所有学生信息输出成功
  29.  
     
  30.  
    》》请输入你的选项:5
  31.  
    头删成功
  32.  
     
  33.  
    》》请输入你的选项:6
  34.  
    尾删成功
  35.  
     
  36.  
    》》请输入你的选项:13
  37.  
    学号 姓名 成绩
  38.  
    1002 hh 99
  39.  
    1005 ll 55
  40.  
    所有学生信息输出成功
  41.  
    请输入你的选项:7
  42.  
     
  43.  
    》》请输入要删除的学生姓名:hh
  44.  
    删除成功
  45.  
    请输入你的选项:8
  46.  
     
  47.  
    》》请输入要删除的学生学号:1005
  48.  
    删除成功
  49.  
     
  50.  
    》》请输入你的选项:13
  51.  
    遍历失败
  52.  
     
  53.  
    。。。。。。。。。。。。。。。。。。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcijif
系列文章
更多 icon
同类精品
更多 icon
继续加载