zoukankan      html  css  js  c++  java
  • c语言之一个简单的《学生教师管理系统》小结记录(一)

    大体流程图

     大概的一个项目要实现如上功能

    首先大体分块写函数

    1、先实现界面的相关功能

    写一个简单的界面登录函数

    终端界面编辑相关参数见 c语言linux终端花里胡哨输出

    先做一个简单的登录界面

    千万不要觉得界面编辑没有用,上图!感受一下差距吧!

     

    编辑界面之前

     编辑之后

    差别应该很明显了吧!!!!美感提升一个档次。

    此博文是在基本完成之后回顾所做,所以进行了界面优化,使用起来舒适度得到了极大的提升。

     1 /*登录界面菜单*/
     2 int login(Node *pHead, TeaNode *pTHead)
     3 {
     4     system("clear");
     5     printf("			");
     6     printf("33[32m33[1m33[44m欢迎来到师生管理系统
    33[0m
    ");
     7     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 33[1m登录选项33[0m33[33m✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
     8     printf("|								|
    ");
     9     printf("			1.管理员登录
    ");
    10     printf("|								|
    ");
    11     printf("			2.教师登录
    ");
    12     printf("|								|
    ");
    13     printf("			3.学生登录
    ");
    14     printf("|								|
    ");
    15     printf("			0.退出
    ");
    16     printf("|								|
    ");
    17     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    18     printf("请选择:");
    19     char ch;
    20     ch = getchar();
    21     switch(ch)
    22     {
    23         case '1':
    24             {
    25                 int ret = adminlogin();
    26                 if(ret != 1)
    27                 {
    28                     printf("管理员登入失败!
    
    
    ");
    29                     printf("按任意键退出系统!!!");
    30                     char ch1;
    31                     ch1 = getchar();//利用字符获取函数实现简单的界面停留
    32                     return 0;
    33                 }
    34                 else if(ret == 1)
    35                     return 1;//返回1,回在主函数中根据不同的返回值进入不同的操作菜单
    36             }
    37         case '2':
    38             {
    39 
    40                 int ret = tealogin(pTHead);
    41                 while(ret != 1 && ret != 2)
    42                 {
    43                     system("clear");
    44                     printf("教师登入失败!
    ");
    45                     printf("请重新输入!
    ");
    46                     ret = tealogin(pTHead);//调用教师登录函数
    47                     getchar();
    48                 }    
    49                 if(ret == 1)
    50                     //由于教师是班主任和任课老师执行是有差别的,所以函数中返回值为1时为班主任,返回值为2时为任课老师
    51                 {
    52                     getchar();
    53                     return 2;
    54                     break;
    55                 }
    56                 if(ret == 2)
    57                 {
    58                     getchar();
    59                     return 3;
    60                     break;
    61                 }
    62             }
    63         case '3':
    64             {
    65                 int retstu = stulogin(pHead);//学生登录函数
    66                 getchar();
    67                 while(retstu != 1)
    68                 {
    69                     system("clear");
    70                     printf("学生登入失败!
    ");
    71                     printf("请重新输入!
    ");
    72                     retstu = stulogin(pHead);
    73                     getchar();
    74                 }
    75                 if(retstu == 1)
    76                 {
    77                     return 4;//返回值为4
    78                     break;
    79                 }
    80             }
    81         case '0':
    82             {
    83                 return 0;//返回0,退出管理系统
    84             }
    85         default:
    86             {
    87                 printf("
    选项输入错误!请重新输入");
    88                 login(pHead, pTHead);
    89             };
    90     }
    91 }
    View Code

    主函数利用while循环可以保证菜单不退出

     1 void main()
     2 {
     3     int retlogin = login(pHead, pTHead);//读取登录菜单返回值,不同返回值代表不同用户在操作    
     4     while(retlogin != 0)//为0时退出,不为0时一直循环,实现系统的持续运行
     5     {
     6         while(retlogin == 1)//管理员身份登入
     7         {
     8             if(admindo(pTHead) == 1)//管理员执行函数
     9             {
    10                 getchar();//吸收字符
    11                 retlogin = login(pHead, pTHead);    
    12             }
    13         }
    14         while(retlogin == 2)//班主任
    15         {
    16             if(headteacherdo(pHead, pTHead,IDhao) == 1)
    17             {
    18                 getchar();
    19                 retlogin = login(pHead, pTHead);    
    20             }
    21         }
    22         while(retlogin == 3)//任课老师
    23         {
    24             if(teacherdo(pTHead, pHead) == 1)
    25             {
    26                 getchar();
    27                 retlogin = login(pHead, pTHead);    
    28             }
    29      }
    30         while(retlogin == 4)//学生登录
    31         {
    32             if(studo(pHead) == 1)//学生执行菜单
    33             {
    34                 getchar();
    35                 retlogin = login(pHead, pTHead);    
    36             }
    37         }
    38     }
    39 }
    View Code

    执行选项菜单

     1 /*管理员执行选项*/
     2 int admindo(TeaNode *pTHead)
     3 {
     4     printf("33[32m33[1m33[44m ☃ 管理员admin,您好!
    33[0m
    ");
     5     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 操作选项✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
     6     printf("|								|
    ");
     7     printf("			 ❁ 1.教师信息录入
    ");
     8     printf("|								|
    ");
     9     printf("			 ❁ 2.查看教师信息
    ");
    10     printf("|								|
    ");
    11     printf("			 ❁ 3.修改教师信息
    ");
    12     printf("|								|
    ");
    13     printf("			 ❁ 4.删除教师信息
    ");
    14     printf("|								|
    ");
    15     printf("			 ❁ 0.注销
    ");
    16     printf("|								|
    ");
    17     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    18     printf("请选择:");
    19     char ch;
    20     ch = getchar();
    21     switch(ch)
    22     {
    23         case '1':
    24             {
    25                 entertea(pTHead);
    26                 break;
    27             }
    28         case '2':
    29             {
    30                 getchar();
    31                 examintea(pTHead);
    32                 char ch1 = '';
    33                 printf("
    ");
    34                 printf("按Enter退回菜单!
    ");
    35                 ch1 = getchar();
    36                 break;
    37             }
    38         case '3':
    39             {
    40                 modifytea(pTHead);
    41                 break;
    42             }
    43         case '4':
    44             {
    45                 printf("请输入要删除教师工号:");
    46                 int teaID;
    47                 scanf("%d", &teaID);
    48                 getchar();
    49                 deltea(pTHead, teaID);
    50                 break;
    51             }
    52         case '0':
    53             {
    54                 return 1;
    55             }
    56         default :
    57             {
    58                 getchar();
    59                 system("clear");
    60                 printf("
    选项输入错误!请重新输入");
    61             }
    62     }
    63 }
    View Code

    学生和教师的菜单类似。

    登录界面一览登录界面一览

     

    登录函数 login.c全部

      1 #include "login.h"
      2 
      3 int IDhao;
      4 int IDstuhao;
      5 int resID[10] = {0};//申请辞职待处理的教师ID存储
      6 int resdID[10] = {0};//申请辞职未处理的教师ID
      7 int resnum = 0;
      8 int resokID[10] = {0};//批准辞职的教师ID
      9 
     10 void main()
     11 {
     12     Node *pHead = makeNode();
     13     pHead = readFromFile(pHead);
     14     TeaNode *pTHead = makeTeaNode();
     15     pTHead = readFromTeaFile(pTHead);
     16     /*if(pTHead == NULL)
     17     {
     18         TeaNode *pTHead = makeTeaNode();
     19         writeToTeaFile(pTHead);
     20     }*/
     21     
     22     int retlogin = login(pHead, pTHead);//读取登录菜单返回值,不同返回值代表不同用户在操作    
     23     while(retlogin != 0)//为0时退出,不为0时一直循环,实现系统的持续运行
     24     {
     25         int flag = 0;
     26         while(retlogin == 1)//管理员身份登入
     27         {
     28             if(flag == 0)
     29             {
     30                 resinformation(pTHead);//辞职信息窗口显示
     31                 flag = 1;            
     32             }
     33             if(admindo(pTHead) == 1)//管理员执行函数
     34             {
     35                 flag = 0;
     36                 getchar();//吸收字符
     37                 retlogin = login(pHead, pTHead);    
     38             }
     39         }
     40         while(retlogin == 2)//班主任
     41         {
     42             int nn = resfeedback(pTHead);
     43             if(nn == 2)
     44             {
     45                 if(headteacherdo(pHead, pTHead,IDhao) == 1)
     46                 {
     47                     directdeltea(pTHead,IDhao);
     48                     getchar();
     49                     retlogin = login(pHead, pTHead);    
     50                 }
     51             }
     52             else
     53             {
     54                 if(headteacherdo(pHead, pTHead,IDhao) == 1)
     55                 {
     56                     getchar();
     57                     retlogin = login(pHead, pTHead);    
     58                 }
     59             }
     60         }
     61         while(retlogin == 3)//任课老师
     62         {
     63             int nn = resfeedback(pTHead);
     64             if(nn == 2)
     65             {
     66                 if(teacherdo(pTHead, pHead) == 1)
     67                 {
     68                     directdeltea(pTHead,IDhao);
     69                     getchar();
     70                     retlogin = login(pHead, pTHead);    
     71                 }
     72             }
     73             else
     74             {
     75                 if(teacherdo(pTHead, pHead) == 1)
     76                 {
     77                     getchar();
     78                     retlogin = login(pHead, pTHead);    
     79                 }
     80             }
     81         }
     82         while(retlogin == 4)//学生登录
     83         {
     84             if(studo(pHead) == 1)//学生执行菜单
     85             {
     86                 getchar();
     87                 retlogin = login(pHead, pTHead);    
     88             }
     89         }
     90     }
     91     
     92 //    readFromFile(pHead);
     93 //    showList(pHead)
     94 }
     95 
     96 
     97 /*登录界面菜单*/
     98 int login(Node *pHead, TeaNode *pTHead)
     99 {
    100     system("clear");
    101     printf("			");
    102     printf("33[32m33[1m33[44m欢迎来到师生管理系统
    33[0m
    ");
    103     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 33[1m登录选项33[0m33[33m✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
    104     printf("|								|
    ");
    105     printf("			1.管理员登录
    ");
    106     printf("|								|
    ");
    107     printf("			2.教师登录
    ");
    108     printf("|								|
    ");
    109     printf("			3.学生登录
    ");
    110     printf("|								|
    ");
    111     printf("			0.退出
    ");
    112     printf("|								|
    ");
    113     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    114     printf("请选择:");
    115     char ch;
    116     ch = getchar();
    117     switch(ch)
    118     {
    119         case '1':
    120             {
    121                 int ret = adminlogin();
    122                 if(ret != 1)
    123                 {
    124                     printf("管理员登入失败!
    
    
    ");
    125                     printf("按任意键退出系统!!!");
    126                     char ch1;
    127                     ch1 = getchar();//利用字符获取函数实现简单的界面停留
    128                     return 0;
    129                 }
    130                 else if(ret == 1)
    131                     return 1;//返回1,回在主函数中根据不同的返回值进入不同的操作菜单
    132             }
    133         case '2':
    134             {
    135 
    136                 int ret = tealogin(pTHead);
    137                 while(ret != 1 && ret != 2)
    138                 {
    139                     system("clear");
    140                     printf("教师登入失败!
    ");
    141                     printf("请重新输入!
    ");
    142                     ret = tealogin(pTHead);//调用教师登录函数
    143                     getchar();
    144                 }    
    145                 if(ret == 1)
    146                     //由于教师是班主任和任课老师执行是有差别的,所以函数中返回值为1时为班主任,返回值为2时为任课老师
    147                 {
    148                     getchar();
    149                     return 2;
    150                     break;
    151                 }
    152                 if(ret == 2)
    153                 {
    154                     getchar();
    155                     return 3;
    156                     break;
    157                 }
    158             }
    159         case '3':
    160             {
    161                 int retstu = stulogin(pHead);//学生登录函数
    162                 getchar();
    163                 while(retstu != 1)
    164                 {
    165                     system("clear");
    166                     printf("学生登入失败!
    ");
    167                     printf("请重新输入!
    ");
    168                     retstu = stulogin(pHead);
    169                     getchar();
    170                 }
    171                 if(retstu == 1)
    172                 {
    173                     return 4;//返回值为4
    174                     break;
    175                 }
    176             }
    177         case '0':
    178             {
    179                 return 0;//返回0,退出管理系统
    180             }
    181         default:
    182             {
    183                 printf("
    选项输入错误!请重新输入");
    184                 login(pHead, pTHead);
    185             };
    186     }
    187 }
    188 
    189 /*管理员登录菜单*/
    190 int adminlogin()
    191 {
    192     char sname[MAX_SIZE];    
    193     char spwd[MAX_SIZE];
    194     system("clear");
    195     for(int i = 0; i < 3; i++)
    196     {
    197         //printf("
    
    
    ");
    198         printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 管理员登录✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    
    
    
    ");
    199         printf("		 ☞  用户名:");
    200         scanf("%s",sname);
    201         getchar();
    202         printf("
    
    
    ");
    203         printf("		 ☞  密  码:");
    204         set_disp_mode(STDIN_FILENO,0);
    205         getpasswd(spwd, MAX_SIZE);
    206         set_disp_mode(STDIN_FILENO,1);
    207         if(strcmp(sname,"admin") == 0 && strncmp(spwd,"123456",6) == 0)
    208         {    
    209             //getchar();//吸收多余字符
    210             system("clear");
    211             return 1;
    212         }
    213         else
    214         {
    215             if(i == 2)
    216             {
    217                 return -1;
    218             }
    219             else
    220             {
    221                 system("clear");
    222                 printf("	33[31m ✖ ✖ ✖ 提示:用户名或者密码输入错误!");
    223                 printf("还有%d次机会33[0m
    
    
    ", 2-i);
    224             }
    225         }
    226     }
    227 }
    228 
    229 /*辞职信息显示*/
    230 int resinformation(TeaNode *pTHead)
    231 {
    232     system("clear");
    233     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 33[1m辞职信息提醒33[0m33[33m✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    
    ");
    234     TeaNode *temp = makeTeaNode();
    235     if(resID[0] == 0)
    236     {
    237         printf("|								|
    
    ");
    238         printf("|								|
    ");
    239         printf("			无辞职信息!
    ");
    240         printf("|								|
    
    ");
    241         printf("|								|
    
    ");
    242         printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    243         printf("按Enter继续...");
    244         getchar();
    245     }
    246     else
    247     {
    248         printf("有 %d 条辞职信息待处理!
    ",resnum);
    249         int i =0;
    250         while(i < 10)
    251         {
    252             if(resID[i] != 0)
    253             {
    254                 temp = findteanode(pTHead,resID[i]);
    255                 printf("该教师信息为:
    ");
    256                 printf("--%-4d -- %-8s -- %-10s --
    ",
    257                         temp->data.ID, temp->data.name, temp->data.password);
    258                 printf("-- %-3d -- %-3d -- %-3c -- %-10s --
    ",
    259                         temp->data.age,temp->data.classes, temp->data.sex, temp->data.position);
    260                 getchar();
    261                 printf("是否同意辞职[Y/N]");
    262                 char ch = '';
    263                 while(ch != 'Y' && ch != 'N' && ch != 'y' && ch != 'n')
    264                 {
    265                     scanf("%c",&ch);
    266                     getchar();
    267                 }
    268                 if(ch == 'Y' || ch == 'y')
    269                 {
    270                     int j = 0;
    271                     while(j < 10)
    272                     {
    273                         if(resokID[j] == 0)
    274                         {
    275                             resokID[j] = temp->data.ID;
    276                             break;
    277                         }
    278                         j++;
    279                     }
    280                 }
    281                 else if(ch == 'N' || ch == 'n')
    282                 {
    283                     printf("不同意辞职!
    ");
    284                 }
    285             }
    286             i++;
    287         }
    288         printf("处理完毕!
    ");
    289         getchar();
    290         char ch1 = '';
    291         printf("按Enter进入操作菜单!
    ");
    292         ch1 = getchar();
    293         system("clear");
    294     }
    295     for(int z = 0; z < 10; z++)
    296     {
    297         resID[z] = 0;
    298     }
    299     resnum = 0;
    300     temp = NULL;
    301 }
    302 
    303 /*辞职信息回馈*/
    304 int resfeedback(TeaNode *pTHead)
    305 {
    306     TeaNode *temp = makeTeaNode();
    307     temp = findteanode(pTHead, IDhao);
    308     int i = 0;
    309     while(i < 10)
    310     {
    311     //    printf("%d
    ",resdID[i]);
    312     //    printf("%d
    ",resID[i]);
    313         if(resdID[i] == IDhao)
    314         {
    315             int j = 0;
    316             while(j < 10)
    317             {
    318                 if(resID[j] == IDhao)
    319                 {
    320                     printf("辞职申请管理员还未处理,请耐心等待!
    ");
    321                     return 1;//辞职申请还未处理;
    322                     break;
    323                 }
    324                 if(resokID[j] == IDhao)
    325                 {
    326                     resokID[j] = 0;
    327                     resdID[i] = 0;
    328                     printf("辞职申请已通过,此次为最后一次登录!
    ");
    329                     return 2;//辞职申请已经处理并且已经批准;
    330                     break;
    331                 }
    332                 j++;
    333             }
    334             resdID[i] = 0;
    335             printf("管理员未通过您的辞职申请,有事请面谈!
    ");
    336             return 3;//申请辞职处理过但是不同意辞职;
    337             break;
    338         }
    339         i++;
    340     }
    341     return 0;//未申请过辞职
    342 }
    343 
    344 /*管理员执行选项*/
    345 int admindo(TeaNode *pTHead)
    346 {
    347     system("clear");
    348     printf("33[32m33[1m33[44m ☃ 管理员admin,您好!
    33[0m
    ");
    349     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 操作选项✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
    350     printf("|								|
    ");
    351     printf("			 ❁ 1.教师信息录入
    ");
    352     printf("|								|
    ");
    353     printf("			 ❁ 2.查看教师信息
    ");
    354     printf("|								|
    ");
    355     printf("			 ❁ 3.修改教师信息
    ");
    356     printf("|								|
    ");
    357     printf("			 ❁ 4.删除教师信息
    ");
    358     printf("|								|
    ");
    359     printf("			 ❁ 0.注销
    ");
    360     printf("|								|
    ");
    361     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    362     printf("请选择:");
    363     char ch;
    364     ch = getchar();
    365     switch(ch)
    366     {
    367         case '1':
    368             {
    369                 entertea(pTHead);
    370                 break;
    371             }
    372         case '2':
    373             {
    374                 getchar();
    375                 examintea(pTHead);
    376                 char ch1 = '';
    377                 printf("
    ");
    378                 printf("按Enter退回菜单!
    ");
    379                 ch1 = getchar();
    380                 break;
    381             }
    382         case '3':
    383             {
    384                 modifytea(pTHead);
    385                 break;
    386             }
    387         case '4':
    388             {
    389                 deltea(pTHead);                
    390                 break;
    391             }
    392         case '0':
    393             {
    394                 return 1;
    395             }
    396         default :
    397             {
    398                 getchar();
    399                 system("clear");
    400                 printf("
    选项输入错误!请重新输入");
    401             }
    402     }
    403 }
    404 
    405 /*教师登录菜单*/
    406 int tealogin(TeaNode *pTHead)
    407 {
    408     int teaID;    
    409     char teapwd[MAX_SIZE];
    410     system("clear");
    411     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 教师登录✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    
    
    
    ");
    412     printf("	 ☞  用户名(工号):");
    413     scanf("%d",&teaID);
    414     getchar();
    415     IDhao = teaID;
    416     printf("
    
    
    ");
    417     printf("	 ☞  输  入  密  码:");
    418     set_disp_mode(STDIN_FILENO,0);
    419     getpasswd(teapwd, MAX_SIZE);
    420     set_disp_mode(STDIN_FILENO,1);
    421     //getchar();//吸收字符
    422     TeaNode *p = makeTeaNode(); 
    423     p =    findteanode(pTHead, teaID);
    424     if(p == NULL)
    425     {
    426         return -1;
    427     }
    428     if(strncmp(p->data.password,teapwd,strlen(p->data.password)) == 0)
    429     {    
    430         if(strcmp(p->data.position,"head") == 0)
    431         {
    432             system("clear");
    433             return 1;
    434         }
    435         else 
    436         {
    437             system("clear");
    438             return 2;
    439         }
    440     }
    441     else 
    442     {
    443         printf("教师密码输入错误!
    ");
    444     }
    445 }
    446 
    447 
    448 
    449 /*班主任执行选项*/
    450 int headteacherdo(Node *pHead, TeaNode *pTHead, int ID)
    451 {
    452     TeaNode *temp = makeTeaNode();
    453     temp = findteanode(pTHead, ID);
    454     char name1[16];
    455     strcpy(name1, temp->data.name);
    456     printf("33[32m33[1m33[44m ☃  %d 班班主任 %s,您好!
    33[0m
    ",temp->data.classes,name1);
    457     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 班主任操作选项 ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
    458     printf("|								|
    ");
    459     printf("			1.录入本班学生信息
    ");
    460     printf("|								|
    ");
    461     printf("			2.查看本班学生信息
    ");
    462     printf("|								|
    ");
    463     printf("			3.修改学生相关信息
    ");
    464     printf("|								|
    ");
    465     printf("			4.删除学生所有信息
    ");
    466     printf("|								|
    ");
    467     printf("			5.按总分排名查看成绩
    ");
    468     printf("|								|
    ");
    469     printf("			6.修改自己登录密码
    ");
    470     printf("|								|
    ");
    471     printf("			7.辞职
    ");
    472     printf("|								|
    ");
    473     printf("			0.注销
    ");
    474     printf("|								|
    ");
    475     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    476     printf("请选择:");
    477     char ch = '';
    478     ch = getchar();
    479     switch(ch)
    480     {
    481         case '1':
    482             {
    483                 enterstu(pHead);
    484                 break;
    485             }
    486         case '2':
    487             {
    488                 getchar();
    489                 examinestu(pTHead, pHead, IDhao);
    490                 char ch1 = '';
    491                 printf("
    ");
    492                 printf("按Enter退回菜单!
    ");
    493                 ch1 = getchar();
    494                 break;
    495             }
    496         case '3':
    497             {
    498                 modifystu(pHead);
    499                 break;
    500             }
    501         case '4':
    502             {
    503                 printf("请输入要删除学生学号:");
    504                 int stuID;
    505                 scanf("%d", &stuID);
    506                 getchar();
    507                 delstu(pHead, stuID);
    508                 break;
    509             }
    510         case '5':
    511             {
    512                 getchar();
    513                 bublesort(pHead);
    514                 writeToFile(pHead);
    515                 lookrank(pTHead, pHead, IDhao);
    516                 char ch1 = '';
    517                 printf("
    ");
    518                 printf("按Enter退回菜单!
    ");
    519                 ch1 = getchar();
    520                 break;
    521             }
    522         case '6':
    523             {
    524                 changepasswd(pTHead, IDhao);
    525                 return 1;
    526                 break;
    527             }
    528         case '7':
    529             {
    530                 int n;
    531                 n = resignation(pTHead, IDhao);
    532                 if(n == 0)
    533                 {
    534                     break;
    535                 }
    536                 else if(n != 0)
    537                 {
    538                     resID[resnum] = IDhao;
    539                     resdID[resnum] = IDhao;
    540                     resnum++;
    541                     return 1;
    542                 }
    543             }
    544         case '0':
    545             {
    546                 return 1;
    547             }
    548         default :
    549             {
    550                 getchar();
    551                 system("clear");
    552                 printf("
    选项输入错误!请重新输入");
    553             };
    554     }
    555 }
    556 
    557 /*任课教师执行菜单*/
    558 int teacherdo(TeaNode *pTHead, Node *pHead)
    559 {
    560     printf("任课教师操作选项:
    ");
    561     printf("	1.查看学生科目成绩以及排名
    ");
    562     printf("	2.修改自己登录密码
    ");
    563     printf("	3.辞职
    ");
    564     printf("	0.注销
    ");
    565     printf("请选择:");
    566     char ch = '';
    567     ch = getchar();
    568     switch(ch)
    569     {
    570         case '0':
    571             {
    572                 return 1;
    573                 break;
    574             }
    575         case '1':
    576             {
    577                 getchar();
    578                 onebublesort(pTHead, pHead, IDhao);
    579                 writeToFile(pHead);
    580                 lookrank(pTHead, pHead, IDhao);
    581                 char ch1 = '';
    582                 printf("
    ");
    583                 printf("按Enter退回菜单!
    ");
    584                 ch1 = getchar();
    585                 break;
    586             }
    587         case '2':
    588             {
    589                 changepasswd(pTHead, IDhao);
    590                 return 1;
    591                 break;
    592             }
    593         case '3':
    594             {
    595                 int n;
    596                 n = resignation(pTHead, IDhao);
    597                 if(n == 0)
    598                 {
    599                     break;
    600                 }
    601                 else if(n != 0)
    602                 {
    603                     resID[resnum] = IDhao;
    604                     resdID[resnum] = IDhao;
    605                     resnum++;
    606                     return 1;
    607                 }
    608             }
    609         default :
    610             {
    611                 getchar();
    612                 system("clear");
    613                 printf("
    选项输入错误!请重新输入");
    614             }
    615     }
    616 }
    617 
    618 
    619 
    620 /*学生登录菜单*/
    621 int stulogin(Node *pHead)
    622 {
    623     int stuID;    
    624     char stupwd[MAX_SIZE];
    625     system("clear");
    626     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 学生登录✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    
    
    
    ");
    627     printf("	 ☞  用户名(ID号):");
    628     scanf("%d",&stuID);
    629     IDstuhao = stuID;
    630     printf("
    
    
    ");
    631     printf("	 ☞  输  入  密  码:");
    632     scanf("%s",stupwd);
    633     //getchar();//吸收字符
    634     Node *p = makeNode(); 
    635     p =    findnode(pHead, stuID);
    636     if(p == NULL)
    637     {
    638         return -1;
    639     }
    640     if(strcmp(p->data.password,stupwd) == 0)
    641     {    
    642         system("clear");
    643         return 1;
    644     }
    645     else 
    646     {
    647         printf("密码输入错误!
    ");
    648         return 0;
    649     }
    650 }
    651 
    652 /*学生执行菜单*/
    653 int studo(Node *pHead)
    654 {
    655     Node *temp = makeNode();
    656     temp = findnode(pHead, IDstuhao);
    657     char name1[16];
    658     strcpy(name1, temp->data.name);
    659     printf("33[32m33[1m33[44m ☃  %d 班同学 %s,您好!
    33[0m
    ",temp->data.classes,name1);
    660     printf("33[33m ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 学生操作选项 ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈ 
    ");
    661     printf("|								|
    ");
    662     printf("			1.学生信息查询
    ");
    663     printf("|								|
    ");
    664     printf("			2.登录密码修改
    ");
    665     printf("|								|
    ");
    666     printf("			3.成绩班级排名
    ");
    667     printf("|								|
    ");
    668     printf("			4.成绩学校排名
    ");
    669     printf("|								|
    ");
    670     printf("			0.退出
    ");
    671     printf("|								|
    ");
    672     printf(" ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ ☺ ☻ 
    
    ");
    673     printf("请选择:");
    674 
    675     char ch = '';
    676     ch = getchar();
    677     switch(ch)
    678     {
    679 
    680         case '1':
    681             {
    682                 getchar();
    683                 mynews(pHead, IDstuhao);
    684                 char ch1 = '';
    685                 printf("
    ");
    686                 printf("按Enter退回菜单!
    ");
    687                 ch1 = getchar();
    688                 system("clear");
    689                 break;
    690             }
    691         case '2':
    692             {
    693                 stuchangepsw(pHead, IDstuhao);
    694                 return 1;
    695                 break;
    696             }
    697         case '3':
    698             {
    699                 getchar();
    700                 classranking(pHead, IDstuhao);
    701                 char ch1 = '';
    702                 printf("
    ");
    703                 printf("按Enter退回菜单!
    ");
    704                 ch1 = getchar();
    705                 system("clear");
    706                 break;
    707             }
    708         case '4':
    709             {
    710                 getchar();
    711                 schoolranking(pHead, IDstuhao);
    712                 char ch1 = '';
    713                 printf("
    ");
    714                 printf("按Enter退回菜单!
    ");
    715                 ch1 = getchar();
    716                 system("clear");
    717                 break;
    718             }
    719         case '0':
    720             {
    721                 return 1;
    722                 break;
    723             }
    724         default :
    725             {
    726                 getchar();
    727                 system("clear");
    728                 printf("
    选项输入错误!请重新输入");
    729             }
    730     }
    731 
    732 }
    733 
    734 //函数getpasswd用于获得用户输入的密码,并将其存储在指定的字符数组中
    735 int getpasswd(char* passwd, int size)
    736 {
    737    int c;
    738    int n = 0;
    739 
    740    do{
    741       c=getchar();
    742       if (c != '
    '|c!='
    '){
    743          passwd[n++] = c;
    744       }
    745    }while(c != '
    ' && c !='
    ' && n < (size - 1));
    746    passwd[n] = '';
    747    return n;
    748 }
    749 //函数set_disp_mode用于控制是否开启输入回显功能
    750 //如果option为0,则关闭回显,为1则打开回显
    751 int set_disp_mode(int fd,int option)
    752 {
    753    int err;
    754    struct termios term;
    755    if(tcgetattr(fd,&term)==-1){
    756      perror("Cannot get the attribution of the terminal");
    757      return 1;
    758    }
    759    if(option)
    760         term.c_lflag|=ECHOFLAGS;
    761    else
    762         term.c_lflag &=~ECHOFLAGS;
    763    err=tcsetattr(fd,TCSAFLUSH,&term);
    764    if(err==-1 && err==EINTR){
    765         perror("Cannot set the attribution of the terminal");
    766         return 1;
    767    }
    768    return 0;
    769 }
    View Code

    头文件 login.h

     1 #include <termios.h>
     2 #include <unistd.h>
     3 #include <errno.h>
     4 #include "teacherdo.h"
     5 
     6 #define MAX_SIZE 20
     7 #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)
     8 
     9 /*管理员登录菜单*/
    10 int adminlogin();
    11 
    12 /*学生登录菜单*/
    13 int stulogin(Node *pHead);
    14 
    15 /*学生执行菜单*/
    16 int studo();
    17 
    18 /*管理员执行选项*/
    19 int admindo(TeaNode *pHead);
    20 
    21 /*主菜单*/
    22 int login(Node *pHead, TeaNode *pTHead);
    23 
    24 /*教师登录菜单*/
    25 int tealogin(TeaNode *pTHead);
    26 
    27 /*班主任执行菜单*/
    28 int headteacherdo(Node *pHead, TeaNode *pTHead, int ID);
    29 
    30 /*任课教师执行菜单*/
    31 int teacherdo(TeaNode *pTHead, Node *pHead);
    32 
    33 /*辞职信息显示*/
    34 int resinformation(TeaNode *pTHead);
    35 
    36 /*辞职信息回馈*/
    37 int resfeedback(TeaNode *pTHead);
    38 
    39 //函数getpasswd用于获得用户输入的密码,并将其存储在指定的字符数组中
    40 int getpasswd(char* passwd, int size);
    41 
    42 //函数set_disp_mode用于控制是否开启输入回显功能
    43 //如果option为0,则关闭回显,为1则打开回显
    44 int set_disp_mode(int fd,int option);
    View Code

    整个项目分开写到了很多个文件里,有些函数没有讲到,后续会一个一个介绍。

    本着一个记录自己学习成果的态度,也希望能够给其他人有一个参考。

  • 相关阅读:
    微信小程序开发工具初始化代码仓库
    微信小程序开发如何初始化远程仓库并 PUSH
    Git 提示用户密码错误如何修改
    MariaDB 在创建外键的时候提示 1005 错误
    Fiddler实现移动端手机抓包
    Windows 安装 Go语言开发环境以及使用
    laravel队列,事件简单使用方法
    视图
    laravel Passport
    多台服务器 同时部署一套代码
  • 原文地址:https://www.cnblogs.com/lttdxuexizhilu/p/11614634.html
Copyright © 2011-2022 走看看