zoukankan      html  css  js  c++  java
  • 学生信息管理系统

    头文件

      1 #ifndef __SIMS__
      2 #define __SIMS__
      3 #include<stdio.h>
      4 #include<stdlib.h>
      5 #include<string.h>
      6 #include<ctype.h>
      7 #include<conio.h> 
      8 #include<Windows.h>
      9 #define PWD_LEN 10
     10 #define NAME_LEN 20
     11 #define GENDER_LEN 5
     12 #define LINE_LEN 512
     13 #define CONFIRM_CNT 3
     14 #define M1 "1.search stu"
     15 #define M2 "2.update stu"
     16 #define M3 "3.delete stu"
     17 #define M4 "4.add stu"
     18 #define M5 "5.search acc"
     19 #define M6 "6.update acc"
     20 #define M7 "7.delete acc"
     21 #define M8 "8.add acc"
     22 #define M9 "9.exit"
     23 
     24 
     25 struct stu_accout
     26 {
     27     char passwd[PWD_LEN];
     28     char name[NAME_LEN];
     29     int  role ;
     30     stu_accout* next ;
     31 };
     32 
     33 struct student            //定义一个结构体作为全局变量,用于存储学生信息,和作为结点
     34 {
     35     long int num;            //学号
     36     char name[NAME_LEN];            //姓名
     37     char gender [GENDER_LEN];
     38     int age;                //年龄
     39     float math;                //数学
     40     float phy;                    
     41     float eng;                
     42     float cpu;            
     43     float sum;                
     44     student *next;    //下一个结点地址
     45 };
     46 
     47 
     48 //登入函数
     49 int login(int,int&,stu_accout*);
     50 
     51 
     52 //主目录函数
     53 int menu(int role);
     54 
     55 //3.查询信息菜单
     56  student *menu1(student*);
     57 
     58 
     59 //7.排序信息菜单
     60 student *menu7(student*);
     61 
     62 
     63 //交换两个结点信息的函数,用于排序函数调用
     64 void swap(student *, student *);                    
     65 
     66 
     67 //输出信息的函数
     68 void print(student *);
     69 void Account_print(stu_accout *head);
     70 
     71 //添加学生信息 
     72  student *add(student *, student *);
     73 
     74 //读取学生文件
     75 student *Student_File_Load(student* head);
     76 student *Other_Student_File_Load( student *head);
     77 
     78 //读取账户文件
     79 stu_accout *Acount_Load(stu_accout* head);        //定义函数
     80 
     81 int Save_Stu(student *p1);
     82 int Other_Save_Stu(student *p1);
     83 int Save_Account(student *p1);
     84 
     85 //查询模块
     86 //1.按学号查询
     87  student *search1(student *head);
     88 
     89 //2.按姓名查询
     90  student *search2(student *head);
     91 
     92 student *search_By_Gender(student *head);
     93 
     94 //3.按年龄查询
     95  student *search3(student *head);
     96 
     97 //4.按数学成绩查询
     98  student *search4(student *head);
     99 
    100 //5.按物理成绩查询
    101  student *search5(student *head);
    102 
    103 //6.按英语成绩查询
    104  student *search6(student *head);
    105 
    106 //7.按计算机成绩查询
    107  student *search7(student *head);
    108 
    109 //8.按总分成绩查询
    110  student *search8(student *head);
    111 
    112 
    113 //删除模块
    114  student *del(student *head);
    115 
    116  //修改
    117  student *cha(student *head);
    118  stu_accout *Password_cha(stu_accout *head);
    119 
    120 //排序模块
    121 //1.按学号排序
    122  student *sort1(student *head);
    123 
    124 //2.按年龄排序
    125  student *sort2(student *head);
    126 
    127 //3.按数学成绩排序
    128  student *sort3(student *head);
    129 
    130 //4.按物理成绩排序
    131  student *sort4(student *head);
    132 
    133 //5.按英语成绩排序
    134  student *sort5(student *head);
    135 
    136 //6.按计算机成绩排序
    137  student *sort6(student *head);
    138 
    139 //7.按总分成绩排序
    140  student *sort7(student *head);
    141 
    142 #endif
    View Code

    实现文件

       1 #include "My_header.h"
       2 
       3 int n;                        //定义一个整形变量计数学生人数
       4 int x;                      //定义一个整形变量计数账户人数
       5 char UserName[NAME_LEN];
       6 
       7 
       8 //***************************************************读取文件模块
       9 
      10 //读取学生文件
      11 student *Student_File_Load(student* head)        //定义函数
      12 {
      13     student *p1, *p2 ;
      14     int m=0;
      15     FILE *fp;
      16 
      17     if((fp=fopen("F:\Student.txt", "rb"))==NULL)        //地址为空,则输出提示
      18     {
      19         printf("不能打开文件");
      20         return 0;
      21     }
      22     head=NULL;
      23     do
      24     {
      25         p1=(student *)malloc(sizeof(student));//每读取一次创建一个新的结点
      26         fscanf(fp, "%ld	%s	%s	%d	%f	%f	%f	%f	%f
    ", &p1->num, p1->name,p1->gender, &p1->age, &p1->math, &p1->phy, &p1->eng, &p1->cpu, &p1->sum);   //读入内存
      27         m=m+1;
      28         if(m==1)
      29             head=p2=p1;        //判断结点个数以添加首地址
      30         else
      31         {
      32             p2->next=p1;
      33             p2=p1;
      34         }
      35     }while(!feof(fp));
      36 
      37     p2->next=NULL;
      38     fclose(fp);
      39     n=m;
      40     return(head);        //返回读取信息的首地址供其他函数使用
      41 }
      42 
      43 //另外读取学生文件
      44 student *Other_Student_File_Load( student *head)        //定义函数
      45 {
      46     struct student *p1, *p2;
      47     int m=0;
      48     char fileopen[10];
      49     FILE *fp;
      50     printf("请输入文件路径及文件名:");            //输入读取文件的路径和文件名
      51     scanf("%s", fileopen);
      52     if((fp=fopen(fileopen, "rb"))==NULL)        //地址为空,则输出提示
      53     {
      54         printf("不能打开文件");
      55         return 0;
      56     }
      57     head=NULL;
      58     do
      59     {
      60         p1=(struct student *)malloc(sizeof(struct student));//每读取一次创建一个新的结点
      61         fscanf(fp, "%ld	%s	%s	%d	%f	%f	%f	%f	%f
    ", &p1->num, p1->name,p1->gender, &p1->age, &p1->math, &p1->phy, &p1->eng, &p1->cpu, &p1->sum);   //读入内存
      62         m=m+1;
      63         if(m==1)
      64             head=p2=p1;        //判断结点个数以添加首地址
      65         else
      66         {
      67             p2->next=p1;
      68             p2=p1;
      69         }
      70     }while(!feof(fp));
      71     p2->next=NULL;
      72     fclose(fp);
      73     n=m;
      74     return(head);        //返回读取信息的首地址供其他函数使用
      75 }
      76 
      77 //读取账户文件
      78 stu_accout *Acount_Load(stu_accout* head)        //定义函数
      79 {
      80     stu_accout *p1, *p2 ;
      81     int m=0;
      82     FILE *fp;
      83 
      84     if((fp=fopen("F:\Account.txt", "rb"))==NULL)        //地址为空,则输出提示
      85     {
      86         printf("不能打开文件");
      87         return 0;
      88     }
      89     head=NULL;
      90     do
      91     {
      92         p1=(stu_accout *)malloc(sizeof(stu_accout));//每读取一次创建一个新的结点
      93         fscanf(fp, "%s	%s	%d
    ", p1->name, p1->passwd,&p1->role);   //读入内存
      94         m=m+1;
      95         if(m==1)
      96             head=p2=p1;        //判断结点个数以添加首地址
      97         else
      98         {
      99             p2->next=p1;
     100             p2=p1;
     101         }
     102     }while(!feof(fp));
     103     x=m;
     104     p2->next=NULL;
     105     fclose(fp);
     106     return(head);        //返回读取信息的首地址供其他函数使用
     107 }
     108 
     109 
     110 
     111 //******************************************************读取文件模块
     112 
     113 
     114 
     115 
     116 //******************************************************保存文件模块
     117 //存 学生
     118 int Save_Stu(student *p1)            //定义保存函数
     119 {
     120     FILE *fp;                            //定义fp指针
     121     if((fp=fopen("F:\Student.txt", "wb"))==NULL)
     122     {
     123         printf("不能打开文件
    ");
     124         return 0;
     125     }
     126     while(p1!=NULL)
     127     {
     128         fprintf(fp, "%ld	%s	%s	%d	%f	%f	%f	%f	%f
    ",p1->num, p1->name,p1->gender, p1->age, p1->math, p1->phy, p1->eng, p1->cpu, p1->sum);//把内存中的文件输入到硬盘中
     129         p1=p1->next;
     130     }
     131     fclose(fp);                //关闭文件
     132     printf("文件已保存
    "); //成功保存,显示提示
     133     return 1;
     134 }
     135 
     136 
     137 //另存为 学生
     138 int Other_Save_Stu(student *p1)            //定义保存函数
     139 {
     140     FILE *fp;                            //定义fp指针
     141     char fileopen[20];
     142     printf("请输入保存的文件路径及文件名:");    //输入文件名和路径
     143     scanf("%s", fileopen);
     144     if((fp=fopen(fileopen, "wb"))==NULL)
     145     {
     146         printf("不能打开文件
    ");
     147         return 0;
     148     }
     149     while(p1!=NULL)
     150     {
     151         fprintf(fp, "%ld	%s	%s	%d	%f	%f	%f	%f	%f
    ",p1->num, p1->name,p1->gender, p1->age, p1->math, p1->phy, p1->eng, p1->cpu, p1->sum);//把内存中的文件输入到硬盘中
     152         p1=p1->next;
     153     }
     154     fclose(fp);                //关闭文件
     155     printf("文件已保存
    "); //成功保存,显示提示
     156     return 1;
     157 }
     158 
     159 
     160 //保存账户
     161 int Save_Account(stu_accout *p1)            //定义保存函数
     162 {
     163     FILE *fp;                            //定义fp指针
     164     if((fp=fopen("F:\Account.txt", "wb"))==NULL)
     165     {
     166         printf("不能打开文件
    ");
     167         return 0;
     168     }
     169     while(p1!=NULL)
     170     {
     171         fprintf(fp, "%s	%s	%d
    ",p1->name, p1->passwd, p1->role);//把内存中的文件输入到硬盘中
     172         p1=p1->next;
     173     }
     174     fclose(fp);                //关闭文件
     175     printf("文件已保存
    "); //成功保存,显示提示
     176     return 1;
     177 }
     178 
     179 
     180 
     181 //******************************************************保存文件模块
     182 
     183 
     184 
     185 
     186 
     187 
     188 
     189 
     190 //***************************************************登入模块
     191 //登入函数
     192 int login(int Login_Change,int& type,stu_accout* Account)
     193 {
     194 
     195     system("cls");
     196 
     197     stu_accout *p=Account;
     198     printf("
    
    
    ");
     199     printf("请输入用户名:");
     200 
     201     scanf("%s",UserName);
     202 
     203     while(p!=NULL)
     204     {
     205         if(strcmp(p->name,UserName)==0)
     206             break;
     207         p=p->next;
     208     }
     209 
     210 
     211     if(p==NULL) 
     212     {
     213         printf("无该用户名!!
    ");
     214         printf("您还有%d次机会
    ",Login_Change);
     215         getchar();
     216         getchar();
     217         return 0;
     218     }
     219     else
     220     {
     221         printf("请输入密码:");
     222         char c=0;   
     223         int i=0;
     224         char password[PWD_LEN];
     225         while(i<PWD_LEN-1&&c!='
    ')   
     226         {       c=getch();   
     227 
     228         if(c!='
    ')
     229         {
     230             putchar('*');
     231             password[i]=c;
     232             ++i;   
     233         }
     234         }
     235         if(i==PWD_LEN-1&&c!='
    ') 
     236         {
     237             printf("
    密码错误!!
    ");
     238             printf("您还有%d次机会
    ",Login_Change);
     239             getchar();
     240             getchar();
     241             return 0;
     242         }
     243         password[i]='';
     244         if(strcmp(password,p->passwd)!=0) 
     245         {
     246             printf("
    密码错误!!
    ");
     247             printf("您还有%d次机会
    ",Login_Change);
     248             getchar();
     249             getchar();
     250             return 0;
     251         }
     252     }
     253     system("cls");
     254     printf("登入成功
    ");
     255     type=p->role;
     256     int tem=2;
     257     while(tem--)
     258     {
     259         system("cls");
     260         
     261 printf("                        i8S,         
    ");
     262 printf("            S&X         5#@9         
    ");
     263 printf("           :@@B;        .:53sr:      
    ");
     264 printf("         :8BMh            i&&XG91.   
    ");
     265 printf("        ;M@#; ;;,    13S5,.hGHAHMHs  
    ");
     266 printf("        X@@r.G3HA9. S#Xh3Mh,:S#@@@@s 
    ");
     267 printf("        H@A.&MsSG@,.rH&XB@@M1:S@@@@#.
    ");
     268 printf("        X@X8@@@@@1 . ,3H#@@M1,;@@@@@s
    ");
     269 printf("        s@@AHMBGr     .;iri, ,8@@@@@S
    ");
     270 printf("         A@#Gh;,.,:.;:.,.,:s8M@@@@@@1
    ");
     271 printf("         :#@@@B&85SS959XAB@@@@@@@@@@r
    ");
     272 printf("          rsiiirri:iih9XAM@@@@@@@@@@;
    ");
     273 printf("      ,hs:,....           ,rSXM@@@@# 
    ");
     274 printf("     ;AHr;;:::,,,,,,,, ,iri:..;h&@@3 
    ");
     275 printf("  .,.3@Miii;;;::::::,,9BBHA&Gh:,;SG  
    ");
     276 printf(" 1&&&A@@9,iiiiii;;;;,3@@@@@@@@9GAX8i 
    ");
     277 printf(".GB95SGM#8;;iiiiiiii;9@@@@@@@@@GSSHA 
    ");
     278 printf(" :993398&H,.,::;;;;;;;8#@@@@@#X533Xs 
    ");
     279 printf("      ...              ,;;,:GXS5s:   
    ");
     280         printf("载入中
    ");
     281         Sleep(500);
     282         system("cls");
     283 printf("                          i8S,         
    ");
     284 printf("              S&X         5#@9         
    ");
     285 printf("             :@@B;        .:53sr:      
    ");
     286 printf("           :8BMh            i&&XG91.   
    ");
     287 printf("          ;M@#; ;;,    13S5,.hGHAHMHs  
    ");
     288 printf("          X@@r.G3HA9. S#Xh3Mh,:S#@@@@s 
    ");
     289 printf("          H@A.&MsSG@,.rH&XB@@M1:S@@@@#.
    ");
     290 printf("          X@X8@@@@@1 . ,3H#@@M1,;@@@@@s
    ");
     291 printf("          s@@AHMBGr     .;iri, ,8@@@@@S
    ");
     292 printf("           A@#Gh;,.,:.;:.,.,:s8M@@@@@@1
    ");
     293 printf("           :#@@@B&85SS959XAB@@@@@@@@@@r
    ");
     294 printf("            rsiiirri:iih9XAM@@@@@@@@@@;
    ");
     295 printf("        ,hs:,....           ,rSXM@@@@# 
    ");
     296 printf("       ;AHr;;:::,,,,,,,, ,iri:..;h&@@3 
    ");
     297 printf("    .,.3@Miii;;;::::::,,9BBHA&Gh:,;SG  
    ");
     298 printf("   1&&&A@@9,iiiiii;;;;,3@@@@@@@@9GAX8i 
    ");
     299 printf("  .GB95SGM#8;;iiiiiiii;9@@@@@@@@@GSSHA 
    ");
     300 printf("   :993398&H,.,::;;;;;;;8#@@@@@#X533Xs 
    ");
     301 printf("        ...              ,;;,:GXS5s:   
    ");
     302         printf("载入中…
    ");
     303         Sleep(500);
     304         system("cls");
     305 printf("                        i8S,         
    ");
     306 printf("            S&X         5#@9         
    ");
     307 printf("           :@@B;        .:53sr:      
    ");
     308 printf("         :8BMh            i&&XG91.   
    ");
     309 printf("        ;M@#; ;;,    13S5,.hGHAHMHs  
    ");
     310 printf("        X@@r.G3HA9. S#Xh3Mh,:S#@@@@s 
    ");
     311 printf("        H@A.&MsSG@,.rH&XB@@M1:S@@@@#.
    ");
     312 printf("        X@X8@@@@@1 . ,3H#@@M1,;@@@@@s
    ");
     313 printf("        s@@AHMBGr     .;iri, ,8@@@@@S
    ");
     314 printf("         A@#Gh;,.,:.;:.,.,:s8M@@@@@@1
    ");
     315 printf("         :#@@@B&85SS959XAB@@@@@@@@@@r
    ");
     316 printf("          rsiiirri:iih9XAM@@@@@@@@@@;
    ");
     317 printf("      ,hs:,....           ,rSXM@@@@# 
    ");
     318 printf("     ;AHr;;:::,,,,,,,, ,iri:..;h&@@3 
    ");
     319 printf("  .,.3@Miii;;;::::::,,9BBHA&Gh:,;SG  
    ");
     320 printf(" 1&&&A@@9,iiiiii;;;;,3@@@@@@@@9GAX8i 
    ");
     321 printf(".GB95SGM#8;;iiiiiiii;9@@@@@@@@@GSSHA 
    ");
     322 printf(" :993398&H,.,::;;;;;;;8#@@@@@#X533Xs 
    ");
     323 printf("      ...              ,;;,:GXS5s:   
    ");
     324         printf("载入中……
    ");
     325         Sleep(500);
     326         system("cls");
     327 printf("                          i8S,         
    ");
     328 printf("              S&X         5#@9         
    ");
     329 printf("             :@@B;        .:53sr:      
    ");
     330 printf("           :8BMh            i&&XG91.   
    ");
     331 printf("          ;M@#; ;;,    13S5,.hGHAHMHs  
    ");
     332 printf("          X@@r.G3HA9. S#Xh3Mh,:S#@@@@s 
    ");
     333 printf("          H@A.&MsSG@,.rH&XB@@M1:S@@@@#.
    ");
     334 printf("          X@X8@@@@@1 . ,3H#@@M1,;@@@@@s
    ");
     335 printf("          s@@AHMBGr     .;iri, ,8@@@@@S
    ");
     336 printf("           A@#Gh;,.,:.;:.,.,:s8M@@@@@@1
    ");
     337 printf("           :#@@@B&85SS959XAB@@@@@@@@@@r
    ");
     338 printf("            rsiiirri:iih9XAM@@@@@@@@@@;
    ");
     339 printf("        ,hs:,....           ,rSXM@@@@# 
    ");
     340 printf("       ;AHr;;:::,,,,,,,, ,iri:..;h&@@3 
    ");
     341 printf("    .,.3@Miii;;;::::::,,9BBHA&Gh:,;SG  
    ");
     342 printf("   1&&&A@@9,iiiiii;;;;,3@@@@@@@@9GAX8i 
    ");
     343 printf("  .GB95SGM#8;;iiiiiiii;9@@@@@@@@@GSSHA 
    ");
     344 printf("   :993398&H,.,::;;;;;;;8#@@@@@#X533Xs 
    ");
     345 printf("        ...              ,;;,:GXS5s:   
    ");
     346         printf("载入中………
    ");
     347         }
     348     
     349 
     350     return 1;
     351 }
     352 //***************************************************登入模块
     353 
     354 
     355 
     356 
     357 
     358 
     359 
     360 
     361 
     362 //*****************************************************主目录模块
     363 //主目录函数
     364 int menu(int role)
     365 {
     366     system("cls");
     367     int k;//定义一个整形变量用于输入选择
     368 
     369 
     370 
     371     printf("
    ");
     372     printf("****************************************************************
    ");
     373     printf("*                                                              *
    ");
     374     printf("*                   1.查询学生的信息                           *
    ");
     375     printf("*                   2.阅读学生的信息                           *
    ");
     376     printf("*                   3.排序学生的信息                           *
    ");
     377     printf("*                   4.查询本账户的信息                         *
    ");
     378     printf("*                   5.修改密码                                 *
    ");
     379     printf("*                   6.退出                                     *
    ");
     380     printf("*                                                              *
    ");
     381     if(role)
     382     {
     383         printf("*   *****       ********      *****   *******    ***  ***      *
    ");
     384         printf("*                                                              *
    ");
     385         printf("*              sS8Si  r9G1  1SS89SS   S88SSS31                 *
    "); 
     386         printf("*                #G    G5      #8      MX   i83                *
    ");
     387         printf("*                3@   rG       @9      #G    r@                *
    ");
     388         printf("*                 #X  Gs       @8      #G iisXG                *
    ");
     389         printf("*                 h@ir8        M9      #Xrs11r                 *
    ");
     390         printf("*                  HA8i        #9      @3                      *
    ");
     391         printf("*                   @S      1SS89SS    @3                      *
    ");
     392         printf("*                                                              *
    ");
     393         printf("*                   7.输入学生的信息                           *
    ");
     394         printf("*                   8.删除学生的信息                           *
    ");
     395         printf("*                   9.修改学生的信息                           *
    ");
     396         printf("*                   10.打开新文件…                            *
    ");
     397         printf("*                   11.文件另存为…                            *
    ");
     398     }
     399     printf("****************************************************************
    
    ");
     400     printf("我的选择:");            //在显示器上显示菜单页面
     401     scanf("%d", &k);                //输入选择
     402     getchar();
     403     return(k);                        //返回值进入switch函数判断,以调用不同功能的函数
     404 }
     405 //*****************************************************主目录模块
     406 
     407 
     408 
     409 
     410 
     411 
     412 //******************************************************查询模块
     413 
     414 //3.查询信息菜单
     415 student *menu1(student *head)
     416 {
     417     while(1)
     418     {
     419         system("cls");
     420         int k;                            //定义一个整形变量输入switch进行判断        
     421 
     422         printf("
    
    
    ");
     423         printf("*****************************************************************
    ");
     424         printf("*                      查询学生信息目录                         *
    ");
     425         printf("*                      1.按学生学号查询                         *
    ");
     426         printf("*                      2.按学生姓名查询                         *
    ");
     427         printf("*                      3.按学生性别查询                         *
    ");
     428         printf("*                      4.按学生年龄查询                         *
    ");
     429         printf("*                      5.按数学成绩查询                         *
    ");
     430         printf("*                      6.按物理成绩查询                         *
    ");
     431         printf("*                      7.按英语成绩查询                         *
    ");
     432         printf("*                      8.按计算机成绩查询                       *
    ");
     433         printf("*                      9.按总分成绩查询                         *
    ");
     434         printf("*                      10.返回主菜单                             *
    ");
     435         printf("******************************************************** ********
    
    ");
     436         printf("我的选择:");            //输出菜单界面
     437 
     438         scanf("%d", &k);                //输入选择
     439         switch(k)
     440         {
     441         case 1:                            //调用学号查询函数
     442             {
     443                 head=search1(head);        //返回首地址head用于其他函数的处理
     444                 break;                    //处理完毕,结束语句
     445             }
     446         case 2:                            //调用姓名查询函数
     447             {
     448                 head=search2(head);        //返回首地址head用于其他函数的处理
     449                 break;                    //处理完毕,结束语句
     450             }
     451         case 3:                            //调用年龄查询函数
     452             {
     453                 head=search_By_Gender(head);
     454                 break;
     455             }
     456         case 4:                            //调用数学成绩查询函数
     457             {
     458                 head=search3(head);        //返回首地址head用于其他函数的处理
     459                 break;                    //处理完毕,结束语句
     460 
     461             }
     462         case 5:                            //调用物理成绩查询函数
     463             {
     464                 head=search4(head);        //返回首地址head用于其他函数的处理
     465                 break;                    //处理完毕,结束语句
     466 
     467             }
     468         case 6:                            //调用英语成绩查询函数
     469             {
     470                 head=search5(head);        //返回首地址head用于其他函数的处理
     471                 break;                    //处理完毕,结束语句
     472 
     473             }
     474         case 7:                            //调用计算机成绩查询函数
     475             {
     476                 head=search6(head);
     477                 break;
     478 
     479             }
     480         case 8:                            //调用总分成绩查询函数
     481             {
     482                 head=search7(head);
     483                 break;
     484 
     485             }
     486         case 9:{  head=search8(head);
     487             break;
     488 
     489                }    
     490         case 10: break;//退出查询功能,返回主菜单
     491         default:printf("输入错误请重试
    ");
     492         }
     493         if(k==10)break;
     494     }
     495     return head;
     496 }
     497 
     498 //1.按学号查询
     499 student *search1(student *head)//定义一个函数,赋给他查找链表的首地址
     500 {
     501 
     502     system("cls");
     503     int num;
     504     student *p1;
     505     printf("请输入要查询学生的学号(输入0退出):");
     506     scanf("%ld",&num);                         //输入查找学号
     507     while(num!=0)
     508     {
     509         system("cls");
     510         if(head==NULL)
     511         {
     512             printf("
    没有任何学生的资料,请输入
    ");
     513             return(head);
     514         }
     515         printf("******************************************************************
    ");
     516         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     517         printf("__________________________________________________________________
    ");
     518         p1=head;
     519         while (num!=p1->num&&p1->next!=NULL)     //开始扫描每个结点以查找与要求吻合的结点
     520             p1=p1->next;//如果不相同就扫描下一个
     521         if(num==p1->num)//查找到相同的信息开始输出
     522         {
     523             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     524         }
     525         else printf("不存在学号为%ld的学生
    ", num); //没有查找到满足要求的结点
     526         printf("输入要查询学生的学号(输入0退出):");
     527         scanf("%ld", &num);
     528     }
     529     return(head);
     530 }
     531 
     532 //2.按姓名查询
     533 student *search2(student *head)  //定义一个函数,赋给他查找链表的首地址
     534 {
     535     system("cls");
     536     char name[NAME_LEN];
     537     student *p1;
     538     printf("请输入要查询学生的姓名:");    //输入查找姓名    
     539     scanf("%s",&name);
     540     printf("******************************************************************
    ");
     541     printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     542     printf("__________________________________________________________________
    ");
     543     p1=head;
     544     while (strcmp(name, p1->name)!=0&&p1->next!=NULL) //开始扫描每个结点以查找与要求吻合的结点
     545         p1=p1->next;                              //如果不相同就扫描下一个
     546     if(strcmp(name, p1->name)==0)            //查找到相同的信息开始输出
     547     {
     548         printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     549         getchar();
     550         getchar();
     551     }
     552     else
     553         printf("不存在姓名为%s学生
    ", name);//没有查找到满足要求的结点
     554     return(head);
     555 }        
     556 
     557 
     558 //2.按性别查询
     559 student *search_By_Gender(student *head)  //定义一个函数,赋给他查找链表的首地址
     560 {
     561     system("cls");
     562     char gender[GENDER_LEN];
     563     student *p1;
     564     printf("请输入要查询学生的性别:");    //输入查找性别    
     565     scanf("%s",&gender);
     566     printf("******************************************************************
    ");
     567     printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     568     printf("__________________________________________________________________
    ");
     569     p1=head;
     570     while (strcmp(gender, p1->gender)!=0&&p1->next!=NULL) //开始扫描每个结点以查找与要求吻合的结点
     571         p1=p1->next;                              //如果不相同就扫描下一个
     572     if(strcmp(gender, p1->gender)==0)            //查找到相同的信息开始输出
     573     {
     574         printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     575         getchar();
     576         getchar();
     577     }
     578     else
     579         printf("不存在姓名为%s学生
    ", gender);//没有查找到满足要求的结点
     580     return(head);
     581 }        
     582 
     583 //3.按年龄查询
     584 student *search3(student *head)                //同以上查找函数
     585 {
     586     system("cls");
     587     int age;
     588     student *p1;
     589     printf("请输入要查询学生的年龄(输入0退出):");
     590     scanf("%d",&age);
     591     while(age!=0)
     592     {
     593         system("cls");
     594         if(head==NULL)
     595         {
     596             printf("
    没有任何学生的信息,请输入
    ");
     597             return(head);
     598         }
     599         printf("******************************************************************
    ");
     600         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     601         printf("__________________________________________________________________
    ");
     602         p1=head;
     603         while (age!=p1->age&&p1->next!=NULL)
     604             p1=p1->next;
     605         if(age==p1->age)
     606         {
     607             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     608 
     609         }
     610         else
     611             printf("不存在年龄为%d学生
    ", age);
     612         printf("输入要查询学生的年龄(输入0退出):");
     613         scanf("%d", &age);
     614     }
     615     printf("退出查询
    ");
     616     return(head);
     617 }
     618 
     619 //4.按数学成绩查询
     620 student *search4(student *head)                //同以上查找函数
     621 {
     622     system("cls");
     623     float math;
     624     student *p1;
     625     printf("请输入要查询学生的数学成绩(输入0退出):");
     626     scanf("%f",&math);
     627     while(math!=0)
     628     {
     629         system("cls");
     630         if(head==NULL)
     631         {
     632             printf("
    没有任何学生的资料,请输入
    ");
     633             return(head);
     634         }
     635         printf("******************************************************************
    ");
     636         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     637         printf("__________________________________________________________________
    ");
     638         p1=head;
     639         while (math!=p1->math&&p1->next!=NULL)
     640             p1=p1->next;
     641         if(math==p1->math)
     642         {
     643             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     644 
     645         }
     646         else
     647             printf("不存在数学成绩为%.2f学生
    ", math);
     648         printf("输入要查询学生的数学成绩(输入0退出):");
     649         scanf("%f", &math);
     650     }
     651     printf("退出查询
    ");
     652     return(head);
     653 }        
     654 
     655 //5.按物理成绩查询
     656 student *search5(student *head)                //同以上查找函数
     657 {
     658     system("cls");
     659     float phy;
     660     student *p1;
     661     printf("请输入要查询学生的物理成绩(输入0退出):");
     662     scanf("%f",&phy);
     663 
     664     while(phy!=0)
     665     {
     666         system("cls");
     667         if(head==NULL)
     668         {
     669             printf("
    没有任何学生的资料,请输入
    ");
     670             return(head);
     671         }
     672         printf("******************************************************************
    ");
     673         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     674         printf("__________________________________________________________________
    ");
     675         p1=head;
     676         while (phy!=p1->phy&&p1->next!=NULL)
     677             p1=p1->next;
     678         if(phy==p1->phy)
     679         {
     680             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     681 
     682         }
     683         else
     684             printf("不存在物理成绩为%.2f学生
    ", phy);
     685         printf("输入要查询学生的物理成绩(输入0退出):");
     686         scanf("%f", &phy);
     687     }
     688     printf("退出查询
    ");
     689     return(head);
     690 }        
     691 
     692 //6.按英语成绩查询
     693 student *search6(student *head)                //同以上查找函数
     694 {
     695     system("cls");
     696     float eng;
     697     student *p1;
     698     printf("请输入要查询学生的英语成绩(输入0退出):");
     699     scanf("%f",&eng);
     700     while(eng!=0)
     701     {
     702         system("cls");
     703         if(head==NULL)
     704         {
     705             printf("
    没有任何学生的资料,请输入
    ");
     706             return(head);
     707         }
     708         printf("******************************************************************
    ");
     709         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     710         printf("__________________________________________________________________
    ");
     711         p1=head;
     712         while (eng!=p1->eng&&p1->next!=NULL)
     713             p1=p1->next;
     714         if(eng==p1->eng)
     715         {
     716             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     717 
     718         }
     719         else
     720             printf("不存在英语成绩为%.2f学生
    ", eng);
     721         printf("输入要查询学生的英语成绩(输入0退出):");
     722         scanf("%f", &eng);
     723     }
     724     printf("退出查询
    ");
     725     return(head);
     726 }
     727 
     728 //7.按计算机成绩查询
     729 student *search7(student *head)                //同以上查找函数
     730 {
     731     system("cls");
     732     system("cls");
     733     float cpu;
     734     student *p1;
     735     printf("请输入要查询学生的计算机成绩(输入0退出):");
     736     scanf("%f",&cpu);
     737     while(cpu!=0)
     738     {
     739         if(head==NULL)
     740         {
     741             printf("
    没有任何学生的资料,请输入
    ");
     742             return(head);
     743         }
     744         printf("******************************************************************
    ");
     745         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     746         printf("__________________________________________________________________
    ");
     747         p1=head;
     748         while (cpu!=p1->cpu&&p1->next!=NULL)
     749             p1=p1->next;
     750         if(cpu==p1->cpu)
     751         {
     752             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     753         }
     754         else
     755             printf("不存在计算机成绩为%.2f学生
    ", cpu);
     756         printf("输入要查询学生的计算机成绩(输入0退出):");
     757         scanf("%f", &cpu);
     758     }
     759     printf("退出查询
    ");
     760     return(head);
     761 }
     762 
     763 //8.按总分成绩查询
     764 student *search8(student *head)                //同以上查找函数
     765 {
     766     system("cls");
     767     float sum;
     768     student *p1;
     769     printf("请输入要查询学生的总分(输入0退出):");
     770     scanf("%f",&sum);
     771     while(sum!=0)
     772     {
     773         system("cls");
     774         if(head==NULL)
     775         {
     776             printf("
    没有任何学生的资料,请输入
    ");
     777             return(head);
     778         }
     779         printf("******************************************************************
    ");
     780         printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     781         printf("__________________________________________________________________
    ");
     782         p1=head;
     783         while (sum!=p1->sum&&p1->next!=NULL)
     784             p1=p1->next;
     785         if(sum==p1->sum)
     786         {
     787             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p1->num, p1->name,p1->gender, p1->age,p1->math, p1->phy,p1->eng, p1->cpu, p1->sum);
     788 
     789         }
     790         else
     791             printf("不存在总分成绩为%.2f学生
    ", sum);
     792         printf("输入要查询学生的总分成绩(输入0退出):");
     793         scanf("%f", &sum);
     794     }
     795     printf("退出查询
    ");
     796     return(head);
     797 }
     798 
     799 //******************************************************查询模块
     800 
     801 
     802 
     803 
     804 
     805 
     806 //**********************************************   阅读模块
     807 
     808 //输出
     809 void print(student *head)                    //赋给函数首地址,根据地址输出链表
     810 {
     811     system("cls");
     812     student *p;
     813     printf("已录入%d个学生的记录是:
    ", n);
     814     printf("******************************************************************************
    ");
     815     printf("学号	姓名	性别	年龄	数学	物理	英语	计算机	总分
    ");
     816     printf("______________________________________________________________________________
    ");    //输出格式
     817     p=head;
     818     if(head!=NULL)
     819         do                        //输出信息
     820         {
     821             printf("%ld	%s	%s	%d	%.2f	%.2f	%.2f	%.2f	%.2f
    ", p->num, p->name,p->gender, p->age,p->math, p->phy,p->eng, p->cpu, p->sum);
     822             p=p->next;
     823             printf("______________________________________________________________________________
    ");
     824         }while(p!=NULL);        //当到达最后一个结点停止
     825     else
     826         printf("
    没有任何学生的信息
    ");        //链表为空输出
     827     getchar();
     828 }
     829 
     830 
     831 void Account_print(stu_accout *head)                    //赋给函数首地址,根据地址输出链表
     832 {
     833     system("cls");
     834     stu_accout *p;
     835     printf("******************************************************************************
    ");
     836     printf("账户名	密码	权限
    ");
     837     printf("______________________________________________________________________________
    ");    //输出格式
     838     p=head;
     839     if(head!=NULL)
     840         do                    //输出信息
     841         {
     842             if(strcmp(p->name,UserName)==0)
     843             {
     844                 printf("%s	%s	%d
    ",p->name,p->passwd,p->role);
     845                 printf("______________________________________________________________________________
    ");
     846                 break;
     847             }
     848             p=p->next;    
     849         }while(p!=NULL);        //当到达最后一个结点停止
     850     else
     851         printf("
    没有任何学生的信息
    ");        //链表为空输出
     852     getchar();
     853 }
     854 
     855 //**********************************************   阅读模块
     856 
     857 
     858 
     859 
     860 
     861 
     862 //******************************************************排序模块
     863 
     864 
     865 //7.排序信息菜单
     866 student *menu7(student *head)
     867 {
     868     while(1)
     869     {
     870         system("cls");
     871         int k;                                    //定义一个整形变量输入switch进行判断
     872         student *stu=0;
     873         printf("
    
    
    ");
     874         printf("******************************************************************
    ");
     875         printf("*                       排序学生信息目录                         *
    ");
     876         printf("*                       1.按学生学号排序                         *
    ");
     877         printf("*                       2.按学生年龄排序                         *
    ");
     878         printf("*                       3.按数学成绩排序                         *
    ");
     879         printf("*                       4.按物理成绩排序                         *
    ");
     880         printf("*                       5.按英语成绩排序                         *
    ");
     881         printf("*                       6.按计算机成绩排序                       *
    ");
     882         printf("*                       7.按总分成绩排序                         *
    ");
     883         printf("*                       8.返回主菜单                             *
    ");
     884         printf("******************************************************************
    
    ");
     885         printf("我的选择:");                    //输出菜单界面
     886 
     887         scanf("%d", &k);//输入选择
     888         getchar();
     889         switch(k)                                //判断
     890         {
     891         case 1:
     892             {
     893                 head=sort1(head);                //按学号排序,调用学号排序函数
     894                 break;                            //跳出
     895             }
     896         case 2:
     897             {
     898                 head=sort2(head);                //按年龄排序,调用年龄排序函数
     899                 break;
     900             }
     901         case 3:
     902             {
     903                 head=sort3(head);                //按数学成绩排序,调用数学成绩排序函数
     904                 break;
     905             }
     906         case 4:
     907             {
     908                 head=sort4(head);                //按物理成绩排序,调用物理成绩排序函数
     909                 break;
     910             }
     911         case 5:
     912             {
     913                 head=sort5(head);
     914                 break;
     915             }
     916         case 6:
     917             {
     918                 head=sort6(head);
     919                 break;
     920             }
     921         case 7:
     922             {
     923                 head=sort7(head);
     924                 break;
     925             }
     926         case 8:break;                            //返回主菜单
     927         default:printf("输入错误请重试
    ");
     928         }
     929         if(k==8) break;
     930     }
     931     return head;
     932 }
     933 
     934 //交换
     935 void swap(student *p1, student *p2)     //交换函数,用于冒泡法的排序函数中
     936 {
     937     int k, d;                                    //定义各种交换的中间变量
     938     char a[10];
     939     float temp;                                    
     940     k=p1->num;                                //把新定义的num变量作为中间变量交换swap函数中的前后两个变量的学号信息
     941     p1->num=p2->num;
     942     p2->num=k;
     943 
     944     strcpy(a, p1->name);            //交换姓名信息,采用一个同类型中间变量,过程同上
     945     strcpy(p1->name, p2->name);
     946     strcpy(p2->name,a);
     947 
     948     strcpy(a, p1->gender);            //交换性别信息,采用一个同类型中间变量,过程同上
     949     strcpy(p1->gender, p2->gender);
     950     strcpy(p2->gender,a);
     951 
     952     d=p1->age;                   //交换年龄信息,采用一个同类型中间变量,过程同上
     953     p1->age=p2->age;
     954     p2->age=d;
     955 
     956     temp=p1->math;               //交换成绩信息,采用一个同类型中间变量,过程同上
     957     p1->math=p2->math;
     958     p2->math=temp;
     959 
     960     temp=p1->phy;              //交换成绩信息,采用一个同类型中间变量,过程同上
     961     p1->phy=p2->phy;
     962     p2->phy=temp;
     963 
     964     temp=p1->eng;             //交换成绩信息,采用一个同类型中间变量,过程同上
     965     p1->eng=p1->eng;
     966     p2->eng=temp;
     967 
     968     temp=p1->cpu;             //交换成绩信息,采用一个同类型中间变量,过程同上
     969     p1->cpu=p2->cpu;
     970     p2->cpu=temp;
     971 
     972     temp=p1->sum;                 //交换成绩信息,采用一个同类型中间变量,过程同上
     973     p1->sum=p2->sum;
     974     p2->sum=temp;
     975 }    
     976 
     977 //1.按学号排序
     978 student *sort1(student *head)            //定义排序函数,赋值给所需删除操作链表的首地址
     979 {
     980     system("cls");
     981     student *p1, *p2;
     982     int i, j;            
     983     p2=head;
     984     p1=head;
     985     if(head==NULL)                                    //进行一次判断,链表为空时,提示
     986     {
     987         printf("没有任何学生的信息,请先输入
    ");
     988     }
     989     for(i=1; i<n; i++)
     990     {
     991         for(j=i+1;j<=n; j++)
     992         {
     993             p2=p1;
     994             p1=p1->next;
     995             if(p2->num<p1->num)                    //按冒泡法如果相邻两个结点不符合顺序要求,交换其值
     996                 swap(p2,p1);                    //因为是结构体,有多个元素,因此先前定义了一个swap函数,此时调用
     997         }
     998         p2=head;                                //第一次排序完成,令其返回首结点进行循环
     999         p1=head;
    1000     }
    1001     print(head);//调用print函数输出排序结果
    1002     return head;                                    //返回首地址,供其他函数处理该链表
    1003 }
    1004 
    1005 //2.按年龄排序            
    1006 student *sort2(student *head)            //同以上排序函数
    1007 {
    1008     system("cls");
    1009     student *p1, *p2;
    1010     int i, j;            
    1011     p2=head;
    1012     p1=head;
    1013     if(head==NULL)
    1014     {
    1015         printf("没有任何学生的信息,请先输入
    ");
    1016     }
    1017     for(i=1; i<n; i++)
    1018     {
    1019         for(j=i+1;j<=n; j++)
    1020         {
    1021             p2=p1;
    1022             p1=p1->next;
    1023             if(p2->age<p1->age)
    1024                 swap(p2,p1);
    1025         }
    1026         p2=head;
    1027         p1=head;
    1028     }
    1029     print(head);
    1030     return head;
    1031 }
    1032 
    1033 //3.按数学成绩排序
    1034 student *sort3(student *head)            //同以上排序函数
    1035 {
    1036     system("cls");
    1037     student *p1, *p2;
    1038     int i, j;            
    1039     p2=head;
    1040     p1=head;
    1041     if(head==NULL)
    1042     {
    1043         printf("没有任何学生的信息,请先输入
    ");
    1044     }
    1045     for(i=1; i<n; i++)
    1046     {
    1047         for(j=i+1;j<=n; j++)
    1048         {
    1049             p2=p1;
    1050             p1=p1->next;
    1051             if(p2->math<p1->math)
    1052                 swap(p2,p1);
    1053         }
    1054         p2=head;
    1055         p1=head;
    1056     }
    1057     print(head);
    1058     return head;
    1059 }
    1060 
    1061 //4.按物理成绩排序
    1062 student *sort4(student *head)            //同以上排序函数
    1063 {
    1064     system("cls");
    1065     student *p1, *p2;
    1066     int i, j;            
    1067     p2=head;
    1068     p1=head;
    1069     if(head==NULL)
    1070     {
    1071         printf("没有任何学生的信息,请先输入
    ");
    1072     }
    1073     for(i=1; i<n; i++)
    1074     {
    1075         for(j=i+1;j<=n; j++)
    1076         {
    1077             p2=p1;
    1078             p1=p1->next;
    1079             if(p2->phy<p1->phy)
    1080                 swap(p2,p1);
    1081         }
    1082         p2=head;
    1083         p1=head;
    1084     }
    1085     print(head);
    1086     return head;
    1087 }
    1088 
    1089 //5.按英语成绩排序
    1090 student *sort5(student *head)            //同以上排序函数
    1091 {
    1092     system("cls");
    1093     student *p1, *p2;
    1094     int i, j;            
    1095     p2=head;
    1096     p1=head;
    1097     if(head==NULL)
    1098     {
    1099         printf("没有任何学生的信息,请先输入
    ");
    1100     }
    1101     for(i=1; i<n; i++)
    1102     {
    1103         for(j=i+1;j<=n; j++)
    1104         {
    1105             p2=p1;
    1106             p1=p1->next;
    1107             if(p2->eng<p1->eng)
    1108                 swap(p2,p1);
    1109         }
    1110         p2=head;
    1111         p1=head;
    1112     }
    1113     print(head);
    1114     return head;
    1115 }
    1116 
    1117 //6.按计算机成绩排序
    1118 student *sort6(student *head)            //同以上排序函数
    1119 {
    1120     system("cls");
    1121     student *p1, *p2;
    1122     int i, j;            
    1123     p2=head;
    1124     p1=head;
    1125     if(head==NULL)
    1126     {
    1127         printf("没有任何学生的信息,请先输入
    ");
    1128     }
    1129     for(i=1; i<n; i++)
    1130     {
    1131         for(j=i+1;j<=n; j++)
    1132         {
    1133             p2=p1;
    1134             p1=p1->next;
    1135             if(p2->cpu<p1->cpu)
    1136                 swap(p2,p1);
    1137         }
    1138         p2=head;
    1139         p1=head;
    1140     }
    1141     print(head);
    1142     return head;
    1143 }
    1144 
    1145 //7.按总分成绩排序
    1146 student *sort7(student *head)            //同以上排序函数
    1147 {
    1148     system("cls");
    1149     student *p1, *p2;
    1150     int i, j;
    1151     p2=head;
    1152     p1=head;
    1153     if(head==NULL)
    1154     {
    1155         printf("没有任何学生的信息,请先输入
    ");
    1156     }
    1157     for(i=1; i<n; i++)
    1158     {
    1159         for(j=i+1;j<=n; j++)
    1160         {
    1161             p2=p1;
    1162             p1=p1->next;
    1163             if(p2->sum<p1->sum)
    1164                 swap(p2,p1);
    1165         }
    1166         p2=head;
    1167         p1=head;
    1168     }
    1169     print(head);
    1170     return head;
    1171 }
    1172 
    1173 //******************************************************排序模块
    1174 
    1175 
    1176 
    1177 
    1178 
    1179 
    1180 //******************************************************增删修模块
    1181 
    1182 //添加学生信息 
    1183 student *add(student *head, student *stu)        //定义学生函数和首地址及添加信息地址
    1184 {
    1185     student *p0, *p1, *p3;
    1186     int i;
    1187     p3=stu=(student *)malloc(sizeof(student));    //把新建节点的地址赋给指针
    1188     printf("
    请输入要增加的学生的信息:");
    1189     printf("请输入学生学号(学号大于0):");
    1190     scanf("%ld", &stu->num);
    1191     //getchar();
    1192     p3=head;
    1193     if(n>0)
    1194     {
    1195         for(i=0; i<n; i++)                        //循环,让指针指向最后一个结点
    1196         {
    1197             p3=p3->next;
    1198         }
    1199     }
    1200     printf("请输入学生姓名:");                                        //输入插入学生的
    1201     scanf("%s", stu->name);
    1202     //getchar();
    1203     printf("请输入学生性别:");                                        //输入插入学生的
    1204     scanf("%s", stu->gender);
    1205     //getchar();
    1206     printf("请输入年龄、数学、物理、英语、计算机成绩并以空格隔开(0-100):");
    1207     scanf("%d%f%f%f%f", &stu->age, &stu->math, &stu->phy, &stu->eng, &stu->cpu);
    1208     getchar();
    1209     stu->sum=stu->math+stu->phy+stu->eng+stu->cpu;
    1210     p1=head;
    1211     p0=stu;
    1212     if(head!=NULL)                                                
    1213     {
    1214         while(p1->next!=NULL)
    1215         {
    1216             p1=p1->next;
    1217         }
    1218         p1->next=p0;                    //把保存有添加学生信息的结点连接到链表最后
    1219         p0->next=NULL;
    1220     }
    1221     else
    1222     {
    1223         head=p0;
    1224         p0->next=NULL;
    1225     }
    1226 
    1227     int Save=Save_Stu(head);
    1228     if(Save)
    1229         n=n+1;                                //插入一个学生,n自增一次
    1230     printf("现在的学生数为:%d
    ", n);            
    1231     getchar();
    1232     return(head);                                //返回改变链表的首地址
    1233 }
    1234 
    1235 //删除学生信息 
    1236 student *del(student *head)        //定义删除函数,赋值给所需删除操作链表的首地址
    1237 {
    1238     student *p1, *p2;
    1239     long int num;                                    //定义一个与结构体重学号元素同类型的变量输入所需删除的学号
    1240     printf("输入要删除的学生的学号(输入0时退出):");
    1241     scanf("%ld", &num);
    1242     getchar();
    1243     p1=head;
    1244     while(num!=p1->num&&p1->next!=NULL)            //在连表中查找满足要求的结点
    1245     {
    1246         p2=p1;
    1247         p1=p1->next;
    1248     }
    1249     if(num==p1->num)
    1250     {
    1251         if(p1!=head)
    1252         {
    1253             p2->next=p1->next;                    //让该结点的上下两个结点相连,即可“删除”该结点
    1254 
    1255         }
    1256         else
    1257         {
    1258             head=p1->next;
    1259 
    1260         }
    1261         printf("成功删除%d
    ", num);
    1262 
    1263         int Save=Save_Stu(head);
    1264         if(Save)
    1265             n=n-1;                                //插入一个学生,n自增一次
    1266         printf("现在的学生数为:%d
    ", n);            
    1267     }
    1268     else
    1269         printf("没有检索到%ld学生
    ", num);        //没有扫描到符合要求的结点,提示
    1270     getchar();
    1271     return(head);                                    //返回修改过的链表的首地址以供其他函数使用
    1272 }
    1273 
    1274 
    1275 //修改学生信息
    1276 student *cha(student *head)
    1277 {
    1278     while(1)
    1279     {
    1280         student *p1;
    1281         long int num;
    1282         int k;
    1283         printf("输入要修改的学生的学号(输入0时退出):");
    1284         scanf("%ld", &num);
    1285         if(num==0) break;
    1286         getchar();
    1287         p1=head;
    1288         while(num!=p1->num&&p1->next!=NULL)            //在连表中查找满足要求的结点
    1289             p1=p1->next;
    1290         if(p1!=NULL)
    1291         {
    1292             printf("请选择你要修改的内容:
      姓名:1   性别:2   年龄:3   数学成绩:4  
      物理成绩:5    英语成绩:6    计算机成绩:7
    ");
    1293 
    1294             scanf("%d",&k);
    1295             getchar();
    1296             switch (k)
    1297             {
    1298             case 1:
    1299                 {
    1300                     printf("请输入姓名:");
    1301                     scanf("%s",p1->name);
    1302                     break;
    1303                 }
    1304             case 2:
    1305                 {
    1306                     printf("请输入性别:");
    1307                     scanf("%s",p1->gender);
    1308                     break;
    1309                 }
    1310             case 3:
    1311                 {
    1312                     printf("请输入年龄:");
    1313                     scanf("%d",&p1->age);
    1314                     break;
    1315                 }
    1316             case 4:
    1317                 {
    1318                     printf("请输入数学成绩:");
    1319                     scanf("%f",&p1->math);
    1320                     p1->sum=p1->math+p1->phy+p1->eng+p1->cpu;
    1321                     break;
    1322                 }
    1323             case 5:
    1324                 {
    1325                     printf("请输入物理成绩:");
    1326                     scanf("%f",&p1->phy);
    1327                     p1->sum=p1->math+p1->phy+p1->eng+p1->cpu;
    1328                     break;
    1329                 }
    1330             case 6:
    1331                 {
    1332                     printf("请输入英语成绩:");
    1333                     scanf("%f",&p1->eng);
    1334                     p1->sum=p1->math+p1->phy+p1->eng+p1->cpu;
    1335                     break;
    1336                 }
    1337             case 7:
    1338                 {
    1339                     printf("请输入计算机成绩:");
    1340                     scanf("%f",&p1->cpu);
    1341                     p1->sum=p1->math+p1->phy+p1->eng+p1->cpu;
    1342                     break;
    1343                 }
    1344             default:printf("输入错误请重试
    ");
    1345                       break;
    1346             }
    1347             printf("成功修改%d
    ", num);
    1348             int Save=Save_Stu(head);
    1349                     
    1350         }
    1351         else
    1352             printf("没有检索到%ld学生
    ", num);        //没有扫描到符合要求的结点,提示
    1353         getchar();
    1354         getchar();                                //返回修改过的链表的首地址以供其他函数使用
    1355     }
    1356         return(head);
    1357 }
    1358 
    1359 //修改学生信息
    1360 stu_accout *Password_cha(stu_accout *head)
    1361 {
    1362     
    1363         stu_accout *p1;
    1364         int k;
    1365         p1=head;
    1366         while(strcmp(UserName,p1->name)!=0&&p1->next!=NULL)            //在连表中查找满足要求的结点
    1367             p1=p1->next;
    1368             printf("请原来的密码
    ");
    1369             char OrPassword[PWD_LEN];
    1370             scanf("%s",OrPassword);
    1371             if(strcmp(OrPassword,p1->passwd)!=0)
    1372                  printf("密码错误!!
    ");
    1373             else
    1374             {
    1375                 char NewPass1[PWD_LEN];
    1376                 char NewPass2[PWD_LEN];
    1377                 printf("请输入新密码:");
    1378                     scanf("%s",NewPass1);
    1379                 getchar();
    1380                 printf("请确认新密码:");
    1381                     scanf("%s",NewPass2);
    1382                 if(strcmp(NewPass1,NewPass2)!=0)
    1383                    printf("密码不一致!!!");
    1384                 else
    1385                 {
    1386                     strcpy(p1->passwd,NewPass1);
    1387                     int Save=Save_Account(head);
    1388                      printf("成功修改
    ");
    1389                    
    1390                 }
    1391              
    1392             }
    1393             
    1394                     
    1395     
    1396         getchar();
    1397         getchar();                                //返回修改过的链表的首地址以供其他函数使用
    1398     
    1399         return(head);
    1400 }
    1401 
    1402 //******************************************************增删修模块
    View Code

    主函数

      1 #include "My_header.h"
      2 
      3 //主函数
      4 int main()
      5 {
      6     student *Student_head=0, *stu=0;
      7     stu_accout *Account_Head=0;
      8     int k, a;                        //定义录入选择的整形变量
      9     while(1)
     10     {
     11         system("cls");
     12 
     13         printf(",.,,..... ...:,,,:,...   ....,,,.   ,,,,,,:.  ..:,,,..... ....
    ");
     14         printf(":  ,s1hhhhiii ... :111h55h11s...sh51...... rhhhi .  r1hhhhs:i 
    ");
     15         printf(",.9Ahrrrs5&@A.,,,,;rr;3@#riri,,:;9@@s.:,,,:#@@1;,.1H9srir19M@r
    ");
     16         printf(".8@; ,,,,..3M:,,,:,,,.1@H.,,,::,.hM@X.:,:.3M@#:,,s@8 ,,,,..iM5
    ");
     17         printf(".A@i..,,,:,.i:,,,,,,,.1@H,,,,,,,.S8A@i,,,:H5@#:,.5@8...,,::.;;
    ");
     18         printf(".rM@X5r,..,,,,:,,,,,,.1@H,,,,,,:.S9h@9.:.3Xi@#:,,:X@B9s:...,, 
    ");
     19         printf(": :h9B#MA9s,.,:,,,,,,.1@B,,,,,::.S8.##:,,Bri@#:,:,.i9H##H81,..
    ");
     20         printf(",.,..,ih8B@MS,,:,,,,,.1@B,,,,,,:.S8 9@5 S& s@#:,,,,,..;19H@#3.
    ");
     21         printf(": ,:,,,...i&@G,,,,,,,.1@B,,,,,,:.S8 i@H.H1 s@M:,:,,::,,...iX@8
    ");
     22         printf(",9s.::,,:,..#@:,,,,,,.1@B,,,,,,,.S8..X@X&..s@M:,,Gh ,:,,:,..B@
    ");
     23         printf(" 9#r..,,,. s@G,,,:,,, s@B..,,,:, S8 .s@@s..r@M,,.8@1..,,,. r@G
    ");
     24         printf(".,@B31riir5&5 ....,rriS@Msrri...;G&i. A& .iS@M1: i#H31riir5&S 
    
    
    ");
     25         printf("                                               开发人员:卓寿杰   
    ");
     26         printf("                                                                 
    ");
     27         printf("  1.进入                                                         
    ");
     28         printf("  2.退出                                                         
    ");
     29         printf("*****************************************************************
    
    ");
     30         printf("我的选择:");
     31         scanf("%d", &a);                    //输入选择
     32         if(a==1)                            //进入系统
     33         {
     34             stu_accout *Account=NULL;
     35             Account=Acount_Load(Account);
     36             int Login_Change=3;  //三次登入机会
     37             int tem;
     38             int type;
     39             while(Login_Change--)
     40             {
     41                 tem=login(Login_Change,type,Account);
     42                 if(tem) break;
     43             }
     44             if(!tem) break;
     45             while(1)                        //使用循环,在完成一个
     46             {
     47 
     48                 Student_head= Student_File_Load(Student_head);   
     49                 k=menu(type); //调用主目录函数                
     50                 switch(k)
     51                 {
     52                 case 1:// 1.查询学生的信息
     53                     {            
     54                         Student_head=menu1(Student_head);   
     55                         break;
     56                     }
     57                 case 2:print(Student_head);break;    //输出函数,显示学生信息
     58                 case 3:
     59                     {              //调用信息排序菜单函数,并进一步调用各种排序函数
     60                         Student_head=menu7(Student_head);                    
     61                         break;
     62                     }
     63                 case 7:
     64                     {   student*  tem=NULL;
     65                     Student_head=add(Student_head, tem);                    
     66                     break;
     67                     }
     68                 case 8:
     69                     {
     70                         print(Student_head);
     71                         Student_head=del(Student_head);           //调用删除函数返回首地址
     72                         print(Student_head);        //根据删除函数返回的地址输出结果
     73                         break;
     74                     }
     75                 case 9:
     76                     {
     77                         print(Student_head);
     78                         Student_head=cha(Student_head);
     79                         getchar();
     80                         print(Student_head);
     81                         break;
     82                     }
     83                 case 4:
     84                     {
     85                         Account_print(Account);
     86                         break;
     87                     }
     88                 case 5:
     89                     {
     90                         Account=Password_cha(Account);
     91                         break;
     92                     }
     93                 case 6:break;     //返回登录界面
     94                 case 10:
     95                     {
     96                         Student_head=Other_Student_File_Load(Student_head);
     97                         break;
     98                     }
     99                 case 11:
    100                     {
    101                         Other_Save_Stu(Student_head);
    102                         break;
    103                     }
    104                 case 0:exit(0);                 //退出
    105                 default:printf("输入错误请重试
    ");
    106                     
    107                 }
    108                 if(k==6)break;
    109             }
    110         }
    111         else
    112         {
    113             printf("您是否确认退出?(y/n)");  //确认退出程序
    114             getchar();
    115             if(getchar()=='y')
    116                 break;
    117         }
    118     }
    119 }
    View Code
  • 相关阅读:
    C# color颜色对照表
    图纸目录
    autocad.net中各种id、实体、表记录间的访问代码,持续更新中……
    autocad.net通过支持文件搜索路径查找文件
    autocad.net中数据结构(blocktable,blocktablerecord,blockreference,layout,ModelSpace,PaperSpace)
    autocad.net回退undo与命令行回应cmdecho完美结合
    autocad.net中blocktable,blocktablerecord,blockreference,modelspace,paperspace,layout,viewport的关系(待进一步测试)
    ObjectARX SDK 全部版本下载至2013
    autocad.net中设置系统变量
    在autocad.net中加载lisp程序的方法
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4240435.html
Copyright © 2011-2022 走看看