歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言:結構體測試程序 -- 學生信息管理系統

1. 菜單功能

2. 添加學生信息功能

3. 學生姓名列表

4. 所有學生詳細列表功能

5. 按姓名查找功能

6. 按年齡查找功能

7. 按姓別查找功能

8. 按身高查找功能

9. 刪除學生信息功能

10. 退出功能

  1. /* 
  2.  *1. 菜單功能 
  3.  *2. 添加學生信息功能 
  4.  *3. 學生姓名列表 
  5.  *4. 所有學生詳細列表功能 
  6.  *5. 按姓名查找功能 
  7.  *6. 按年齡查找功能 
  8.  *7. 按姓別查找功能 
  9.  *8. 按身高查找功能 
  10.  *9. 刪除學生信息功能 
  11.  *10. 退出功能 
  12.  * 
  13.  * */  
  14.   
  15. #include <stdio.h>   
  16. #include <stdlib.h>   
  17. #include <string.h>   
  18.   
  19.   
  20. /*定義一個學生信息結構體*/  
  21. struct student  
  22. {  
  23.     char name[20];  
  24.     int age;  
  25.     int sex;  
  26.     int height;  
  27. };  
  28.   
  29. /*定義全局變量*/  
  30. int i;  
  31. struct student stu[100];  
  32.   
  33.   
  34. /*添加用戶*/  
  35. struct student addstu(void)  
  36. {  
  37.     struct student stu;  
  38.     char name[20];  
  39.       
  40.     printf("\n");  
  41.     printf("Add a student:\n");  
  42.       
  43.     printf("------------------------------\n");  
  44.   
  45.     printf("input name:\n");  
  46.     scanf("%s", name);  
  47.     strcpy(stu.name, name);  
  48.       
  49.     printf("input age:\n");  
  50.     scanf("%d", &stu.age);  
  51.   
  52.     printf("input sex(0:male;1:female)\n");  
  53.     scanf("%d", &stu.sex);  
  54.   
  55.     printf("input height:\n");  
  56.     scanf("%d", &stu.height);  
  57.   
  58.     printf("------------------------------\n\n");  
  59.       
  60.     return stu;  
  61. }  
  62.   
  63. /*顯示用戶信息*/  
  64. void showstu(struct student stu)  
  65. {  
  66.     printf("------------------------------\n");  
  67.   
  68.     printf("Name: %s\n", stu.name);  
  69.     printf("Age: %d\n", stu.age);  
  70.     printf("Sex(0:male;1:female): %d\n:", stu.sex);  
  71.     printf("Height: %d\n", stu.height);  
  72.       
  73.     printf("------------------------------\n\n");  
  74.   
  75. }  
  76.   
  77.   
  78. /*刪除用戶 
  79.  * 
  80.  *說明: 
  81.  *依用戶名來查找需要刪除的用戶, 
  82.  *找到相對應的用戶信息後, 
  83.  *將它後面一位學生的信息賦值給它, 
  84.  *依次將後面的的學生信息都向前移一位, 
  85.  *這樣就算是刪掉了一位用戶 
  86.  * */  
  87. void delstu()  
  88. {  
  89.     char name[20];  
  90.     int j,k,t;  
  91.     t=0;  
  92.      
  93.   
  94.     printf("please input a name:\n");  
  95.     scanf("%s", name);  
  96.   
  97.     for(j=0;j<i;j++)  
  98.     {  
  99.         if(!strcmp(stu[j].name, name))  
  100.         {  
  101.             if(j==i) //如果刪除的是最後一次,直接將i減一就行   
  102.             {  
  103.                 i--;  
  104.                 t++;  
  105.             }  
  106.             else  
  107.             {  
  108.                 for(k=j;k<i-1;k++)  
  109.                 {  
  110.                     stu[k] = stu[k+1]; /*如果刪除的不是最後一次,依次將後面用戶賦值給前一次用戶*/    
  111.                 }  
  112.             t++;  
  113.             i--;  
  114.             }  
  115.         }  
  116.     }  
  117.     if(t==0)  
  118.     {  
  119.         printf("------------------------------\n");  
  120.         printf("There is not such student!\n\n");  
  121.         printf("------------------------------\n]n");  
  122.     }  
  123.     else  
  124.     {  
  125.         printf("------------------------------\n");  
  126.         printf("刪除成功!\n");  
  127.         printf("------------------------------\n\n");  
  128.     }  
  129. }  
  130.   
  131.   
  132. /*依姓名查找學生信息*/  
  133. void selbyname()  
  134. {  
  135.     char name[20];  
  136.     int j,t;  
  137.     t=0;  
  138.   
  139.     printf("please input a name:\n");  
  140.     scanf("%s", name);  
  141.   
  142.     for(j=0;j<i;j++)  
  143.     {  
  144.         if(!strcmp(stu[j].name, name))/*strcmp()比較後,如果相同返回0,而我們需要的是1,所以取反*/  
  145.         {  
  146.             showstu(stu[j]);  
  147.             t++;  
  148.         }  
  149.     }  
  150.   
  151.     if(t==0)  
  152.     {  
  153.         printf("------------------------------\n");  
  154.         printf("There is no such student!\n");  
  155.         printf("------------------------------\n\n");  
  156.     }  
  157. }  
  158.   
  159. /*依年齡查找學生信息*/  
  160. void selbyage()  
  161. {  
  162.     int j,k,t,n;  
  163.     n=0;  
  164.   
  165.     printf("input a top age:\n");  
  166.     scanf("%d", &j);  
  167.   
  168.     printf("input a bottom age:\n");  
  169.     scanf("%d", &k);  
  170.   
  171.     for(t=0;t<i;t++)  
  172.     {  
  173.         if(stu[t].age > k && stu[t].age < j)  
  174.         {  
  175.             showstu(stu[t]);  
  176.             n++;  
  177.         }  
  178.     }  
  179.   
  180.     if(n==0)  
  181.     {  
  182.         printf("------------------------------\n");  
  183.         printf("There is no such student!\n\n");  
  184.         printf("------------------------------\n\n");  
  185.     }  
  186. }  
  187.   
  188.   
  189. /*依姓別查找學生信息*/  
  190. void selbysex()  
  191. {  
  192.     int j,k,n;  
  193.     n=0;  
  194.     printf("input sex:\n");  
  195.     scanf("%d", &j);  
  196.   
  197.     for(k=0;k<i;k++)  
  198.     {  
  199.         if(stu[k].sex == j)  
  200.         {  
  201.             showstu(stu[k]);  
  202.             n++;  
  203.         }  
  204.     }  
  205.   
  206.     if(n==0)  
  207.     {  
  208.         printf("------------------------------\n");  
  209.         printf("There is no such student!\n\n");  
  210.         printf("------------------------------\n\n");  
  211.     }  
  212. }  
  213.   
  214.   
  215. /*依身高查找學生信息*/  
  216. void selbyheight()  
  217. {  
  218.     int j,k,m,n;  
  219.     n=0;  
  220.       
  221.     printf("input a top height:\n");  
  222.     scanf("%d", &j);  
  223.   
  224.     printf("input a bottom height:\n");  
  225.     scanf("%d", &k);  
  226.   
  227.     for(m=0;m<i;m++)  
  228.     {  
  229.         if(stu[m].height < j && stu[m].height > k)  
  230.         {  
  231.             showstu(stu[m]);  
  232.             n++;  
  233.         }  
  234.     }  
  235.   
  236.     if(n==0)  
  237.     {  
  238.         printf("------------------------------\n");  
  239.         printf("There is no such a student!\n\n");  
  240.         printf("------------------------------\n\n");  
  241.   
  242.     }  
  243. }  
  244.   
  245. /*菜單功能,供用戶選擇*/  
  246. int menu()  
  247. {  
  248.     int m;  
  249.   
  250.     printf("Please select a menu:\n");  
  251.     printf("    1. Add a student.\n");  
  252.     printf("    2. List all studnet name.\n");  
  253.     printf("    3. List all informations of students.\n");  
  254.     printf("    4. Select a student by name.\n");  
  255.     printf("    5. Select students by age.\n");  
  256.     printf("    6. Select students by sex.\n");  
  257.     printf("    7. Select sutdnets by height.\n");  
  258.     printf("    8. Delete a student.\n");  
  259.     printf("    9. Exit.\n");  
  260.       
  261.     scanf("%d", &m);  
  262.   
  263.     if(m==9)  
  264.     {  
  265.         printf("------------------------------\n");  
  266.         printf("Beybey!\n");  
  267.         printf("------------------------------\n\n");  
  268.   
  269.         exit(1);  
  270.     }  
  271.     if(m<1 || m>9)  
  272.     {  
  273.         printf("------------------------------\n");  
  274.         printf("error, input again!\n");  
  275.         printf("------------------------------\n\n");  
  276.         return;  
  277.     }  
  278.     else  
  279.     {  
  280.         return m;  
  281.     }      
  282. }  
  283.   
  284.   
  285. /*主程序*/  
  286. main()  
  287. {  
  288.     int j,k;  
  289.     i=0;  
  290.       
  291.     while(1)  
  292.     {  
  293.         j = menu();  
  294.   
  295.         if(j==1)  
  296.         {  
  297.            stu[i] = addstu();  
  298.            i++;  
  299.         }  
  300.   
  301.         if(j==2)  
  302.         {  
  303.             printf("\n");  
  304.             for(k=0;k<i;k++)  
  305.             {  
  306.                 printf("%d. %s\n", k, stu[k].name);  
  307.             }  
  308.         }  
  309.   
  310.         if(j==3)  
  311.         {  
  312.             printf("\n");  
  313.               
  314.             for(k=0;k<i;k++)  
  315.             {  
  316.                 showstu(stu[k]);  
  317.             }  
  318.         }  
  319.   
  320.         if(j==4)  
  321.         {  
  322.             selbyname();  
  323.         }  
  324.           
  325.         if(j==5)  
  326.         {  
  327.             selbyage();  
  328.         }  
  329.   
  330.         if(j==6)  
  331.         {  
  332.             selbysex();  
  333.         }  
  334.   
  335.         if(j==7)  
  336.         {  
  337.             selbyheight();  
  338.         }  
  339.   
  340.         if(j==8)  
  341.         {  
  342.             delstu();  
  343.         }  
  344.   
  345.     }  
  346. }  
Copyright © Linux教程網 All Rights Reserved