zoukankan      html  css  js  c++  java
  • #004 C语言大作业学生管理系统试着做

    链表不会用

    文件不会使

    在这种情况下就边写边做

    希望这个月能做完这个作业

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<string.h>
      4 
      5 #define StuIdlen 12//学生学号长度 
      6 #define StuNamelen 12//学生姓名长度 
      7 typedef struct Stu
      8 {
      9     char StuName[StuNamelen];
     10     char StuId[StuIdlen];
     11     int score;
     12     struct Stu* pNext;//下一个指针 
     13 }Stu_data; //学生数据类型 
     14 //声明链表的头和尾
     15 Stu_data* g_pHead =NULL; 
     16 Stu_data* g_pEnd =NULL; //初始化0
     17 
     18  //清空列表
     19  void FreeLinkData();
     20  //打印数据
     21  void showStu_data();
     22  //链表头添加一个节点
     23  void HeadAddStu(    char *iStuName,char *iStuId,int iscore);//添加学生信息 
     24 //查找指定学生
     25 Stu_data* FindStu(char* iStuId);
     26 void insert();
     27 int main()
     28 {
     29     void show_main();//展示功能面板 声明 
     30     void AddStu(    char *iStuName,char *iStuId,int iscore);//添加学生信息     
     31     
     32     
     33     int chose;
     34     int run =1;//永真run 
     35     show_main();//调用 
     36     while(run)//永真执行操作 
     37     {
     38         scanf("%d",&chose); 
     39     switch(chose) 
     40     {
     41         case 1:
     42             printf("*****************1.增加学生信息***************************
    ");
     43             char iStuName[StuNamelen];
     44             char iStuId[StuIdlen];
     45             int iscore;
     46             printf("输入学生姓名:");
     47             scanf("%s",iStuName); 
     48             getchar();
     49             printf("输入学生学号:");
     50             scanf("%s",iStuId); 
     51             printf("输入学生成绩:");
     52             scanf("%d",&iscore); 
     53             AddStu(iStuName,iStuId,iscore);
     54             printf("*******************增加信息成功***************************
    ");
     55             
     56             break;
     57         case 11:
     58             printf("*****************11.增加学生信息(头添加)******************
    ");
     59             /*char iStuName[StuNamelen];
     60             char iStuId[StuIdlen];
     61             int iscore;
     62             */
     63             printf("输入学生姓名:");
     64             scanf("%s",iStuName); 
     65             getchar();
     66             printf("输入学生学号:");
     67             scanf("%s",iStuId); 
     68             printf("输入学生成绩:");
     69             scanf("%d",&iscore); 
     70             HeadAddStu(iStuName,iStuId,iscore);
     71             printf("*******************增加信息成功***************************
    ");
     72             //头添加 
     73             break;
     74         case 111:
     75             {
     76         
     77             Stu_data* pTemp =NULL;
     78             printf("输入指定学号");
     79             scanf("%s",iStuId);
     80             pTemp=FindStu(iStuId);
     81             if(NULL==pTemp)
     82             {
     83                 
     84             }
     85             }
     86         case 9:
     87             printf("*****************9.显示所有的学生的信息*******************
    ");
     88             showStu_data();
     89             printf("*******************信息显示成功***************************
    ");
     90             break;
     91         case 0:
     92             printf("*****************0.退出系统*******************************
    ");
     93             run=0;
     94             break; 
     95         case 10:
     96             show_main();//调用     
     97             break; 
     98         default:
     99             printf("*****************!.输入错误*******************************
    ");
    100             break; 
    101     } 
    102         
    103         
    104     }
    105     FreeLinkData();    
    106     system("PAUSE");
    107     return 0;
    108 }
    109 
    110 
    111 
    112 void show_main()//展示功能面板 定义 
    113 {
    114     printf("*******************学生管理系统***************************
    ");
    115     printf("*******************系统功能如下***************************
    ");
    116     printf("*****************1.增加学生信息(尾添加)*******************
    ");
    117     printf("*****************11.增加学生信息(头添加)******************
    ");    
    118     printf("*****************111.增加学生信息(指定位置添加)***********
    ");
    119     printf("*****************2.查找指定的学生信息*********************
    ");
    120     printf("*****************3.修改指定的学生信息*********************
    ");
    121     printf("*****************4.保存业主的信息到文件中*****************
    ");
    122     printf("*****************5.读取文件中的业主的信息*****************
    ");
    123     printf("*****************6.删除指定的学生的信息*******************
    ");
    124     printf("*****************7.恢复删除的学生的信息*******************
    ");
    125     printf("*****************9.显示所有的学生的信息*******************
    ");
    126     printf("*****************10.查看面板******************************
    ");
    127     printf("*****************0.退出系统*******************************
    ");
    128     printf("**********************************************************
    ");
    129     
    130 }
    131 void AddStu(char *iStuName,char *iStuId,int iscore)
    132 {
    133     
    134     //检验合法性质
    135     if(NULL == iStuName||NULL == iStuId||iscore<0)
    136     {
    137         printf("输入学生信息错误");
    138         return ; 
    139     } 
    140     //逻辑判断-
    141     //创建一个节点
    142      
    143     Stu_data* pTemp=malloc(sizeof(Stu_data)); 
    144     //节点成员附初始值
    145     strcpy(pTemp->StuName,iStuName); 
    146     strcpy(pTemp->StuId,iStuId);
    147 
    148     
    149     pTemp->score=iscore;
    150     pTemp->pNext=NULL; 
    151     // 接在链表上
    152     if(g_pHead==NULL||g_pEnd==NULL) 
    153     {
    154         g_pHead =pTemp;//link
    155         g_pEnd =pTemp;//向后移动 
    156     }
    157     else
    158     {
    159         g_pEnd->pNext = pTemp;
    160         g_pEnd=pTemp; 
    161     } 
    162     
    163 }
    164 void FreeLinkData() //清空列表
    165  {
    166      Stu_data* pTemp = g_pHead;//记录节点 
    167      while(g_pHead !=NULL)
    168      {
    169          g_pHead=g_pHead->pNext;//向后移动了一个 
    170          
    171          free(pTemp);//删除节点 
    172          
    173      } 
    174  }
    175 void showStu_data()//展示链表 showStu_data();
    176   {
    177       Stu_data* pTemp = g_pHead;
    178       while(pTemp != NULL)
    179      {    
    180          printf("学号:%s,姓名:%s,分数:%d
    ",pTemp->StuName,pTemp->StuId,pTemp->score);
    181          pTemp=pTemp->pNext;//向后移动了一个 
    182      } 
    183   }
    184   //链表头添加一个节点
    185  void HeadAddStu(    char *iStuName,char *iStuId,int iscore)//添加学生信息  
    186  {
    187      //检测合法性
    188      if(NULL == iStuName||NULL == iStuId||iscore < 0) 
    189      {
    190          printf("学生信息输入错误");
    191          return ; 
    192      }
    193      //创建一个节点
    194      Stu_data* pTemp = malloc(sizeof(Stu_data));
    195      //成员赋值
    196      strcpy(pTemp->StuName,iStuName);
    197      strcpy(pTemp->StuId,iStuId); 
    198      pTemp->score = iscore;
    199      pTemp->pNext = NULL;
    200      if(NULL == g_pHead||NULL == g_pEnd)
    201      {//链表为空
    202          g_pHead = pTemp;
    203         g_pEnd =pTemp; 
    204          
    205      }
    206      else
    207      {
    208          //新节点的下一个指向头先连后断 
    209          pTemp->pNext = g_pHead;
    210         g_pHead=pTemp; 
    211      }
    212   } 
    213 //查找指定学生
    214 Stu_data* FindStu(char* iStuId)//201801013 12356 
    215 {
    216     //检测参数合法性
    217     if(NULL == iStuId)
    218     {
    219         printf("学号输入错误");
    220         return NULL; 
    221     } 
    222     //遍历链表
    223     Stu_data* pTemp=g_pHead; 
    224     while(pTemp)
    225     {
    226         if(0==strcmp(pTemp->StuId,iStuId))
    227         {
    228             return pTemp;
    229         }
    230         pTemp=pTemp->pNext;
    231     }
    232     printf("查无此节点");
    233     return NULL;
    234 }
  • 相关阅读:
    Python开发基础-Day11内置函数补充、匿名函数、递归函数
    Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分
    Python开发基础-Day9-生成器、三元表达式、列表生成式、生成器表达式
    Python开发基础-Day8-装饰器扩展和迭代器
    Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)
    Python开发基础-Day7-闭包函数和装饰器基础
    Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域
    Android网络课程笔记-----Actionbar的实现方式
    Android网络课程笔记-----自定义控件的方法和技巧
    浅谈android的selector背景选择器
  • 原文地址:https://www.cnblogs.com/hx97/p/10530001.html
Copyright © 2011-2022 走看看