当前位置:   article > 正文

C语言学生信息管理系统(最全面的)

c语言学生信息管理系统

功能介绍

C语言学生信息管理系统包括以下功能:

1、学生信息的整体注册
2、学生信息的修改
3、学生成绩信息的录入
4、学生信息的添加
5、恢复误删的学生信息
6、学生信息的删除
7、密码修改保存函数
8、学生信息的查询
9、密码修改函数
10、学生信息管理系统的菜单函数

数组版

#include <stdio.h>
#include <stdlib.h> //exit函数头文件 
#include <string.h> //字符串相关操作头文件 
#define MAX_STUDENT 30 //最大学生数 

//函数声明,本程序共10个子函数,每个函数对应一个操作 
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局数组变量,用于存储学生信息 
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下变量用于学生信息数组排序,作为临时数组 
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort数组存储排好序的学号或姓名下标 
int sort[MAX_STUDENT];
//循环全局变量 
int i, j;

//main主函数
int main(void)
{
 int choice,n;
 while (1)
 {
 printf("*************************************\n");
 printf("欢迎使用学生成绩管理系统\n");
 printf("[1] 输入所有学生信息\n");
 printf("[2] 输出所有学生成绩\n");
 printf("[3] 按学号查找某个学生信息\n");
 printf("[4] 按姓名查找某个学生信息\n");
 printf("[5] 按学号对学生排序\n");
 printf("[6] 按总成绩对学生排序\n");
 printf("[7] 按学号修改某个学生信息\n");
 printf("[8] 按姓名修改某个学生信息\n");
 printf("[9] 按学号删除某个学生信息\n");
 printf("[10] 按姓名删除某个学生信息\n");
 printf("[0] 退出程序\n");
 printf("请输入您的选择(0 - 9):");
 scanf("%d",&choice);
 printf("**************************************)\n");

 switch (choice)
 {
 case 1://录入;
 printf("请输入录入的学生信息数: ");
 scanf("%d",&n); 
 student_scanf(n);
 break;

 case 2://输出;
 student_printf(n);
 break;

 case 3://根据学号查找
 student_find_num(n);
 break;

 case 4://根据姓名查找
 student_find_name(n);
 break;

 case 5://按学号排序
 student_sort_num(n);
 break;

 case 6://按姓名排序 
 student_sort_sum(n);
 break;

 case 7://按学号修改 
 student_alter_num(n);
 break;

 case 8://按姓名修改 
 student_alter_name(n);
 break;

 case 9://按学号删除 
 student_delete_num(n);
 n--;
 break;

 case 10://按姓名删除 
 student_delete_name(n);
 n--;
 break;

 case 0://退出程序 
 printf("退出程序\n");
 printf("程序结束,谢谢使用!\n");
 exit(0);

 default:
 printf("您输入的菜单有误。请重新输入!\n");

 }

 }
 return 0;
}
//1.输入信息
void student_scanf(int n)
{

 for (i = 0; i<n; ++i)
 {
 printf("\n请输入第%d个学生的信息:\n", i + 1);
 printf("\n学号:");
 scanf("%d", &num[i]);
 printf("\n姓名:");
 scanf("%s", names[i]);
 printf("\n数学成绩:");
 scanf("%d", &math[i]);
 printf("\n英语成绩:");
 scanf("%d", &english[i]);
 printf("\n计算机成绩:");
 scanf("%d", &computer[i]);
 //计算总成绩
 sum[i] = math[i] + english[i] + computer[i];
 }
}
//2.打印信息 
void student_printf(int n)
{

 printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
 printf("----------------------------------------------------------\n");

 for (i = 0; i<n; ++i)
 {
 printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);
 }
 printf("-------------------------------------------------------\n");
}

//3.按学号查找
int student_find_num(int n)
{
 int nums;
 int result;
 printf("请输入待查找的学生学号:");
 scanf("%d",&nums);
 result= -1;
 for (i = 0; i<n; ++i)
 {
 if (nums == num[i])
 {
 result = i;

 break;
 }

 }

 //最后判断q值
 if (result == -1)
 {
 printf("没有该学生信息!\n");
 return 0;
 }
 else
 {
 //先打印表头
 printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
 //再打印数据

 printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
 printf("打印出查找结果!\n");
 }
 return 1;
}

//4.用姓名查找成绩
int student_find_name(int n)
{
 char name[200];
 int result;
 printf("请输入待查找的学生姓名:");
 scanf("%s", name);
 result = -1;
 for (i = 0; i<n; ++i)
 {
 if (strcmp(name, names[i]) == 0)
 {
 result = i;
 break;
 }
 }
 if (result == -1)
 {//未找到结果
 printf("没有该学生信息!\n");
 return 0;
 }
 else//找到结果
 {
 printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
 printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
 printf("已完成查找!\n");
 }


 return 1;
}

//5.按学号排序
void student_sort_num(int n)
{
 int min,max;
 for(i=0; i<n; ++i) //复制临时数组 
 {
 temp_num[i] = num[i];
 }

 max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中 
 for(j=1; j<n; j++)
 {
 if(temp_num[max]<temp_num[j])
 max = j;
 } 
 sort[n-1] = max; //sort数组的最后一个数 
 for(i=0; i<n-1; ++i)
 {
 min = i; //查找学号最小值
 for(j=0; j<n; ++j)
 {
 if(temp_num[min]>temp_num[j])
 min = j;
 } 
 //sort数组记录排序的学生信息的下标 
 sort[i] = min;
 temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰 
 }
 for(i=0; i<n; ++i) //再复制一次临时数组 
 {
 temp_num[i] = num[i];
 strcpy(temp_names[i],names[i]);
 temp_math[i] = math[i];
 temp_english[i] = english[i];
 temp_computer[i] = computer[i];
 temp_sum[i] = sum[i];
 }

 for(i=0; i<n; i++) //按照下标对原数组进行修改 
 {
 num[i] = temp_num[sort[i]]; 
 strcpy(names[i],temp_names[sort[i]]); 
 math[i] = temp_math[sort[i]]; 
 english[i] = temp_english[sort[i]]; 
 computer[i] = temp_computer[sort[i]]; 
 sum[i] = temp_sum[sort[i]];
 }
 printf("排序完毕,请按菜单键2查看排序结果!\n");
 return ;
}

//6.按总成绩排序
void student_sort_sum(int n)
{
 int min,max;
 for(i=0; i<n; ++i) //复制临时数组 
 {
 temp_sum[i] = sum[i];
 }

 max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中 
 for(j=1; j<n; j++)
 {
 if(temp_sum[max]<temp_sum[j])
 max = j;
 } 
 sort[n-1] = max; //sort数组的最后一个数 
 for(i=0; i<n-1; ++i)
 {
 min = i; //查找总成绩最小值
 for(j=0; j<n; ++j)
 {
 if(temp_sum[min]>temp_sum[j])
 min = j;
 } 
 //sort数组记录排序的学生信息的下标 
 sort[i] = min;
 temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰 
 }
 for(i=0; i<n; ++i) //再复制一次临时数组 
 {
 temp_num[i] = num[i];
 strcpy(temp_names[i],names[i]);
 temp_math[i] = math[i];
 temp_english[i] = english[i];
 temp_computer[i] = computer[i];
 temp_sum[i] = sum[i];
 }

 for(i=0; i<n; i++) //按照下标对原数组进行修改 
 {
 num[i] = temp_num[sort[i]]; 
 strcpy(names[i],temp_names[sort[i]]); 
 math[i] = temp_math[sort[i]]; 
 english[i] = temp_english[sort[i]]; 
 computer[i] = temp_computer[sort[i]]; 
 sum[i] = temp_sum[sort[i]];
 }
 printf("排序完毕,请按菜单键2查看排序结果!\n");
 return ;
}

//7.按学号修改学生信息
int student_alter_num(int n) 
{
 int nums;
 int result;
 printf("请输入待修改的学生学号:");
 scanf("%d",&nums);
 result= -1;
 for (i = 0; i<n; ++i)
 {
 if (nums == num[i])
 {
 result = i;
 break;
 }
 }

 //最后判断q值
 if (result == -1)
 {
 printf("没有该学生信息!\n");
 return 0;
 }
 else //修改信息值 
 {
 printf("请重新输入该学生信息:\n");
 printf("学号:\n");
 scanf("%d",&num[result]);
 printf("姓名:\n");
 scanf("%s",names[result]); 
 printf("数学成绩:\n");
 scanf("%d",&math[result]);
 printf("英语成绩:\n");
 scanf("%d",&english[result]);
 printf("计算机成绩:\n");
 scanf("%d",&computer[result]);
 sum[result] = math[result] + english[result] + computer[result];
 }
 return 1;
} 

//8.按姓名修改学生信息
int student_alter_name(int n) 
{
 char name[50];
 int result;
 printf("请输入待修改的学生姓名:");
 scanf("%s",name);
 result= -1;
 for (i = 0; i<n; ++i)
 {
 if (strcmp(name,names[i])==0)
 {
 result = i;
 break;
 }
 }
 //最后判断q值
 if (result == -1)
 {
 printf("没有该学生信息!\n");
 return 0;
 }
 else //修改信息值 
 {
 printf("请重新输入该学生信息:\n");
 printf("学号:\n");
 scanf("%d",&num[result]);
 printf("姓名:\n");
 scanf("%s",names[result]); 
 printf("数学成绩:\n");
 scanf("%d",&math[result]);
 printf("英语成绩:\n");
 scanf("%d",&english[result]);
 printf("计算机成绩:\n");
 scanf("%d",&computer[result]);
 sum[result] = math[result] + english[result] + computer[result];
 }
 return 1;
} 


//9.按学号删除学生信息
int student_delete_num(int n) 
{
 int nums;
 int result;
 printf("请输入待删除的学生学号:");
 scanf("%d",&nums);
 result= -1;
 for (i = 0; i<n; ++i)
 {
 if (nums == num[i])
 {
 result = i;
 break;
 }
 }
 //最后判断q值
 if (result == -1)
 {
 printf("没有该学生信息!\n");
 return 0;
 }
 else //删除当前学生信息即为将数组从result的位置依次前挪一个位置 
 {
 for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1 
 {
 num[i] = num[i+1]; 
 strcpy(names[i],names[i+1]); 
 math[i] = math[i+1]; 
 english[i] = english[i+1]; 
 computer[i] = computer[i+1]; 
 sum[i] = sum[i+1];
 } 

 }
 return 1;
} 

//10.按姓名删除学生信息
int student_delete_name(int n) 
{
 char name[50];
 int result;
 printf("请输入待删除的学生姓名:");
 scanf("%s",name);
 result= -1;
 for (i = 0; i<n; ++i)
 {
 if (strcmp(name,names[i])==0)
 {
 result = i;
 break;
 }
 }
 //最后判断q值
 if (result == -1)
 {
 printf("没有该学生信息!\n");
 return 0;
 }
 else //删除当前学生信息即为将数组从result的位置依次前挪一个位置 
 {
 for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1 
 {
 num[i] = num[i+1]; 
 strcpy(names[i],names[i+1]); 
 math[i] = math[i+1]; 
 english[i] = english[i+1]; 
 computer[i] = computer[i+1]; 
 sum[i] = sum[i+1];
 } 
 }
 return 1;
} 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480

结构体数组版

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
/**
*  结 构 体
*/
struct student/*定义学生成绩结构体*/
{ 
    int num;        /*学号*/
      char name[15];    /*姓名*/
      double elec;    /*选修课*/
      double expe;    /*实验课*/
      double requ;    /*必修课*/
      double sum;        /*总分*/
};
/**
*  函数声明
*/
struct student stu[50];    /*定义结构体数组*/
void in();                /*录入学生成绩信息*/
void show();            /*显示学生信息*/
void order();            /*按总分排序*/
void del();                /*删除学生成绩信息*/
void modify();            /*修改学生成绩信息*/
void menu();            /*主菜单*/
void insert();            /*插入学生信息*/
void total();            /*计算总人数*/
void search();            /*查找学生信息*/

void main()                /*主函数*/
{ 
    system("color f0\n");    //白底黑字
    int n;
      menu();
      scanf("%d",&n);/*输入选择功能的编号*/
      while(n)
      { 
          switch(n)
         { 
             case 1: in();break;
               case 2: search();break;
               case 3: del();break;
               case 4: modify();break;
               case 5: insert();break;
               case 6: order();break;
               case 7: total();break;
               case 8: show();break;
               default:break;
         }
    getch();
    menu();/*执行完功能再次显示菜单界面*/
    scanf("%d",&n);
      }
}

void in()/*录入学生信息*/
{ 
    int i,m=0;/*m是记录的条数*/
      char ch[2];
      FILE *fp;/*定义文件指针*/
      if((fp=fopen("data.txt","a+"))==NULL)/*打开指定文件*/
      { 
          printf("文件不存在!\n");
          return;//直接返回,不在执行
      }
      while(!feof(fp))//判断是否指向结束符
    {
          if(fread(&stu[m] ,LEN,1,fp)==1)
        {
              m++;/*统计当前记录条数*/
        }
      }
      fclose(fp);
      if(m==0)
      {
          printf("文件中没有记录!\n");
    }
      else
      {          
        show();/*调用show函数,显示原有信息*/
      }
      if((fp=fopen("data.txt","wb"))==NULL)
      {
          printf("文件不存在!\n");
          return;
      }


      printf("输入学生信息(y/n):");
      scanf("%s",ch);
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
    {
        printf("number:");
        scanf("%d",&stu[m].num);/*输入学生学号*/
        for(i=0;i<m;i++)
            if(stu[i].num==stu[m].num)
            {
                   printf("number已经存在了,按任意键继续!");
                getch();
                fclose(fp);
                return;
            }
         printf("name:");
         scanf("%s",stu[m].name);/*输入学生姓名*/
         printf("elective:");
        scanf("%lf",&stu[m].elec);/*输入选修课成绩*/
         printf("experiment:");
         scanf("%lf",&stu[m].expe);/*输入实验课成绩*/
         printf("required course:");
         scanf("%lf",&stu[m].requ);/*输入必修课成绩*/
         stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*计算出总成绩*/
         if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
         {
             printf("不能保存!");
             getch();
         }
         else
         {
             printf("%s 被保存!\n",stu[m].name);
             m++;
         }
         printf("继续?(y/n):");/*询问是否继续*/
         scanf("%s",ch);
      }
      fclose(fp);
      printf("OK!\n");
}

void show()                //增加data.txt文件不存在或者文件内容为空时的显示 
 { 
    FILE *fp;
      int i,m=0;
      fp=fopen("data.txt","rb");
       
//      if((fp=fopen("data.txt","a+"))==NULL)/*打开指定文件*/
//      { 
//          printf("文件不存在!\n");
//          return;
//      }
//      fclose(fp);
//      if(m==0)
//          printf("文件中没有记录!\n");
//        return;          
      while(!feof(fp))
      {
          if(fread(&stu[m] ,LEN,1,fp)==1) 
           m++;
       }  
       fclose(fp);
       printf("number  name           elective    experiment  required    sum\t\n");
       for(i=0;i<m;i++)
    { 
       printf(FORMAT,DATA);/*将信息按指定格式打印*/
    }
}
 
void menu()/*自定义函数实现菜单功能*/
{
      system("cls");
      printf("\n\n\n\n");
      printf("\t\t|---------------学生信息管理系统---------------|\n");
      printf("\t\t|\t\t\t\t\t       |\n");
      printf("\t\t|\t\t 1. 录入学生信息\t       |\n");
      printf("\t\t|\t\t 2. 查找学生信息\t       |\n");
      printf("\t\t|\t\t 3. 删除学生信息\t       |\n");
      printf("\t\t|\t\t 4. 修改学生信息\t       |\n");
     printf("\t\t|\t\t 5. 插入学生信息\t       |\n");
     printf("\t\t|\t\t 6. 排序\t\t       |\n");
      printf("\t\t|\t\t 7. 统计学生总数\t       |\n");
      printf("\t\t|\t\t 8. 显示所有学生信息\t       |\n");
    printf("\t\t|\t\t 0. 退出系统\t\t       |\n");
    printf("\t\t|\t\t\t\t\t       |\n");
      printf("\t\t|----------------------------------------------|\n\n");
      printf("\t\t\t请选择(0-8):");
}

void order()/*自定义排序函数*/
{ 
    FILE *fp;
      struct student t;
      int i=0,j=0,m=0;
      if((fp=fopen("data.txt","r+"))==NULL)
    { 
        printf("文件不存在!\n");
        return;
      }
      while(!feof(fp)) 
     if(fread(&stu[m] ,LEN,1,fp)==1) 
          m++;
      fclose(fp);
      if(m==0) 
      {
          printf("文件中没有记录!\n");
          return;
      }
      if((fp=fopen("data.txt","wb"))==NULL)
    {
          printf("文件不存在!\n");
          return;
    }
    for (i = 0; i < m - 1; i++)
        for (j = i + 1; j < m; j++)/*双重循环实现成绩比较并交换*/
            if (stu[i].sum < stu[j].sum)                                         
            {                                                                          
              t=stu[i];stu[i]=stu[j];stu[j]=t;
        }
    if((fp=fopen("data.txt","wb"))==NULL)
    { 
        printf("文件不存在!\n");
        return;
    }
      for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
          if(fwrite(&stu[i] ,LEN,1,fp)!=1)
           { 
            printf("%s 不能保存文件!\n"); 
            getch();
          }
      fclose(fp);
      printf("保存成功\n");
}

void del()/*自定义删除函数*/   /*逻辑:首先判断data.txt文件是否存在,如果存在,继续操作,判断文件是否为空,不为空,则输入要删除的学生学号;如果文件不存在
                                返回“文件不存在”,文件内容为空则返回“文件中没有记录”
                                输入学号----判断是否有这个学号。有:询问是否删除,y删除;n不删除 ,“找到了记录,选择不删除!” 
                                                                没有:“没有找到这名学生!” 
                                */ 
{    
    FILE *fp;
      int snum,i,j,m=0;
      char ch[2];
      if((fp=fopen("data.txt","r+"))==NULL)        //data.txt文件不存在 
    { 
        printf("文件不存在!\n");
        return;
    }
      while(!feof(fp))  if(fread(&stu[m],LEN,1,fp)==1) m++;
      fclose(fp);
      if(m==0) 
      {
          printf("文件中没有记录!\n");            //data.txt文件存在,但里面没有内容 
          return;
      }
  
      printf("请输入学生学号");
      scanf("%d",&snum); 
    for(i=0;i<m;i++)            
         if(snum==stu[i].num)
           {           
             printf("找到了这条记录,是否删除?(y/n)");
             scanf("%s",ch);
              if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
              {
                  for(j=i;j<m;j++)
                  stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
                   m--;/*记录的总个数减1*/
                  if((fp=fopen("data.txt","wb"))==NULL)
                 { 
                     printf("文件不存在\n");
                    return;
                }
                  for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
                  if(fwrite(&stu[j] ,LEN,1,fp)!=1)
                   { 
                       printf("can not save!\n");
                      getch();
                }
                  fclose(fp);
                  printf("删除成功!\n");
              }else{
                  printf("找到了记录,选择不删除!"); 
              }
                  break;
          }
        else
        {
              printf("没有找到这名学生!\n");/*未找到要查找的信息*/  
        }
}

void search()/*自定义查找函数*/            //新增:搜索文件中没有的学号时的情况 
{ 
    FILE *fp;
      int snum,i,m=0;
      if((fp=fopen("data.txt","rb"))==NULL)
     { 
         printf("文件不存在!\n");
        return;
    }
      while(!feof(fp))  
      if(fread(&stu[m],LEN,1,fp)==1) 
      m++;
      fclose(fp);
      if(m==0) 
    {
          printf("文件中没有记录!\n");
          return;
    }
      printf("请输入number:");
      scanf("%d",&snum);
      for(i=0;i<m;i++)
    if(snum==stu[i].num)/*查找输入的学号是否在记录中*/
    { 
          printf("number  name           elective    experiment  required    sum\t\n");
          printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
      break;
    }   
      if(i==m) printf("没有找到这名学生!\n");/*未找到要查找的信息*/
}

void modify()/*自定义修改函数*/            //修正:要修改文件中没有记录的学号时,还是说“找到了。。。” 
{
      FILE *fp;
      struct student t;
      int i=0,j=0,m=0,snum;         
      if((fp=fopen("data.txt","r+"))==NULL)
    { 
        printf("文件不存在!\n");
        return;
      }
      while(!feof(fp)) 
          if(fread(&stu[m] ,LEN,1,fp)==1) 
            m++;      
      if(m==0) 
      {
          printf("文件中没有记录!\n");
        fclose(fp);
          return;
      }
      show();
      printf("请输入要修改的学生number: ");
      scanf("%d",&snum);
      for(i=0;i<m;i++)          
          if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
          {
              printf("找到了这名学生,可以修改他的信息!\n");     
              printf("name:");
              scanf("%s",stu[i].name);/*输入名字*/
                  printf("elective:");
              scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
              printf("experiment:");
              scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
              printf("required course:");
              scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
              printf("修改成功!");
              stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ;
    
            if((fp=fopen("data.txt","wb"))==NULL)
             { 
                 printf("can not open\n");
                 return;
            }
              for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
              if(fwrite(&stu[j] ,LEN,1,fp)!=1)
               { 
                   printf("can not save!"); 
                   getch(); 
            }
             fclose(fp);  
             break;
          }
          if(i==m)     
              printf("没有找到这名学生!\n");/*未找到要查找的信息*/    
}

void insert()/*自定义插入函数*/
{ 
    FILE *fp;
      int i,j,k,m=0,snum;
      if((fp=fopen("data.txt","r+"))==NULL)
    { 
        printf("文件不存在!\n");
        return;
    }
      while(!feof(fp))  
         if(fread(&stu[m],LEN,1,fp)==1) 
         m++;
      if(m==0) 
    {
          printf("文件中没有记录!\n");
          fclose(fp);
          return;
      }
      printf("请输入要插入的位置(number):\n");
      scanf("%d",&snum);/*输入要插入的位置*/
    for (i = 0; i < m; i++)//遍历
        if (snum == stu[i].num)//判断是否存在
            break;                                          
          for(j=m-1;j>i;j--)//学号下面的内容
               stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
          printf("现在请输入要插入的学生信息.\n");
              printf("number:");
          scanf("%d",&stu[i+1].num);
          for(k=0;k<m;k++)//判断是否存在
            if(stu[k].num==stu[m].num)
            {
                printf("number已经存在,按任意键继续!");
                getch();
                fclose(fp);
                return;
            }
          printf("name:");
          scanf("%s",stu[i+1].name);
              printf("elective:");
          scanf("%lf",&stu[i+1].elec);
              printf("experiment:");
          scanf("%lf",&stu[i+1].expe);
              printf("required course:");
          scanf("%lf",&stu[i+1].requ);
          stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ;
          printf("插入成功!按任意键返回主界面!"); 
          if((fp=fopen("data.txt","wb"))==NULL)
        { 
             printf("不能打开!\n");
             return;
        }
          for(k=0;k<=m;k++)
          if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
           { 
           printf("不能保存!"); 
           getch(); 
        }
      fclose(fp);
}

void total()
{ 
    FILE *fp;
      int m=0;
      if((fp=fopen("data.txt","r+"))==NULL)
     { 
         printf("文件不存在!\n");
         return;
    }
      while(!feof(fp))  
          if(fread(&stu[m],LEN,1,fp)==1) 
              m++;            /*统计记录个数即学生个数*/
      if(m==0) {printf("no record!\n");fclose(fp);return;}
      printf("这个班级一共有 %d 名学生!\n",m);/*将统计的个数输出*/
      fclose(fp);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445

结构体指针版

#include "stdio.h" 
#include "malloc.h" 
#include "string.h" 
#include "stdlib.h" 
#include "conio.h" 
#define M 3 
struct student 
{ 
 char num[10]; /* 学生的学号 */ 
 char name[20]; /* 学生的姓名 */ 
 char sex[5]; /* 学生的性别 */ 
 int age;  /* 学生的年龄 */ 
 char birth[20]; /* 学生的出生年月 */ 
 long tele;  /* 学生的电话号码 */ 
 char addr[30]; /* 学生的地址 */ 
 char party[10]; /* 学生是否为党员 */ 
 float score[M]; /* 学生各门学科成绩 */ 
 float total; /* 学生的学科成绩总分 */ 
 struct student *next; 
 
}stud[100]; 
struct secret 
{ 
 char user[30]; 
 char code[30]; 
 
}use[100]; 
int len; //学生人数 
 
/ 
/*学生信息写入到文件中-----系统函数*/ 
/ 
void writetxt(struct student *head) 
{ 
 struct student *p; 
 p=head; 
 FILE *fp; 
 fp=fopen("d://student.txt","wb"); 
 if(fp==NULL) 
 { 
 printf("cannot open"); 
 return ; 
 } 
 while(p!=NULL) 
 { 
 fwrite(p,sizeof(struct student),1,fp); 
 p=p->next; 
 } 
 fclose(fp); 
 
} 
 
/ 
/* 学生信息的整体注册*/ 
/ 
struct student *create( ) 
{ 
 char ch; 
 char ok; 
 int i; 
 struct student *p,*p1,*head,*p2; 
 FILE *fp; 
 fp=fopen("d://student.txt","rb"); 
 if(fp==NULL) 
 { 
 printf("/n 文件还不存在,是否创建?(Y/N)/n"); 
 ch=getchar(); 
 len=1; 
 scanf("%c",&ok); 
 if(ok=='Y'||ok=='y') 
 { 
 p1=p2=(struct student *) malloc(sizeof(struct student)); 
 if((len)<10) 
 printf("请输入0%d的学号:",len); 
 else 
 printf("请输入%d的学号:",len); 
 scanf("%s",p1->num); 
 if((len)<10) 
 printf("请输入0%d的姓名:",len); 
 else 
 printf("请输入%d的姓名:",len); 
 scanf("%s",p1->name); 
 if((len)<10) 
 printf("请输入0%d的性别:",len); 
 else 
 printf("请输入%d的性别:",len); 
 scanf("%s",p1->sex); 
 ch=getchar(); 
 if((len)<10) 
 printf("请输入0%d的年龄:",len); 
 else 
 printf("请输入%d的年龄:",len); 
 scanf("%d",&p1->age); 
 if((len)<10) 
 printf("请输入0%d的生日:",len); 
 else 
 printf("请输入%d的生日:",len); 
 scanf("%s",p1->birth); 
 if((len)<10) 
 printf("请输入0%d的电话:",len); 
 else 
 printf("请输入%d的电话号:",len); 
 scanf("%ld",&p1->tele); 
 if((len)<10) 
 printf("请输入0%d的地址:",len); 
 else 
 printf("请输入%d的地址:",len); 
 scanf("%s",p1->addr); 
 if((len)<10) 
 printf("请输入0%d是否为党员:",len); 
 else 
 printf("请输入%d是否为党员:",len); 
 scanf("%s",p1->party); 
 head=NULL; 
 while(strcmp(p1->num,"0")!=0) 
 { 
 len++; 
 if(head==NULL) 
  head=p1=p2; 
 else 
  p2->next=p1; 
 p2=p1; 
 p1=(struct student *) malloc(sizeof(struct student)); 
 if((len)<10) 
  printf("请输入0%d的学号:",len); 
 else 
  printf("请输入%d的学号:",len); 
 scanf("%s",p1->num); 
 if((len)<10) 
  printf("请输入0%d的姓名:",len); 
 else 
  printf("请输入%d的姓名:",len); 
 scanf("%s",p1->name); 
 if((len)<10) 
  printf("请输入0%d的性别:",len); 
 else 
  printf("请输入%d的性别:",len); 
 scanf("%s",p1->sex); 
 ch=getchar(); 
 if((len)<10) 
  printf("请输入0%d的年龄:",len); 
 else 
  printf("请输入%d的年龄:",len); 
 scanf("%d",&p1->age); 
 if((len)<10) 
  printf("请输入0%d的生日:",len); 
 else 
  printf("请输入%d的生日:",len); 
 scanf("%s",p1->birth); 
 if((len)<10) 
  printf("请输入0%d的电话:",len); 
 else 
  printf("请输入%d的电话号:",len); 
 scanf("%ld",&p1->tele); 
 if((len)<10) 
  printf("请输入0%d的地址:",len); 
 else 
  printf("请输入%d的地址:",len); 
 scanf("%s",p1->addr); 
 if((len)<10) 
  printf("请输入0%d是否为党员:",len); 
 else 
  printf("请输入%d是否为党员:",len); 
 scanf("%s",p1->party); 
 } 
 p2->next=NULL; 
 writetxt(head); 
 return (head); 
 } 
 } 
 if(ok=='N'||ok=='n') 
 { 
 printf("请重新选择/n"); 
 return NULL; 
 } 
 else 
 { 
 printf("/n 文件已经存在/n"); 
 fp=fopen("d://student.txt","rb"); 
 p=stud; 
 for(i=0;!feof(fp);i++) 
 fread(stud+i,sizeof(struct student),1,fp); 
 len=i-1; 
 printf(" 文件里含有%d条学生信息/n",len); 
 printf("/n 是否使用已经存在的学生数据?(Y/N)/n"); 
 ch=getchar(); 
 scanf("%c",&ok); 
 if(ok=='Y'||ok=='y') 
 { 
 head=p1=p2=NULL; 
 fp=fopen("d://student.txt","rb"); 
 if(fp==NULL) 
 { 
 printf("open error/n"); 
 return NULL; 
 } 
 else 
 { 
 printf("学号 姓名 性别 年龄 出生年月 电话号码 地址 是否党员/n"); 
 for(i=0;i<len;i++) 
 { 
  p1=(struct student *)malloc(sizeof(struct student)); 
  fread(p1,sizeof(struct student),1,fp); 
  if(head==NULL) 
  head=p2=p1; 
  else 
  p2->next=p1; 
  p2=p1; 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
 } 
 fclose(fp); 
 return(head); 
 } 
 } 
 if(ok=='N'||ok=='n') 
 { 
 len=1; 
 p1=p2=( struct student *) malloc(sizeof(struct student )); 
 if((len)<10) 
 printf("请输入0%d的学号:",len); 
 else 
 printf("请输入%d的学号:",len); 
 scanf("%s",p1->num); 
 if((len)<10) 
 printf("请输入0%d的姓名:",len); 
 else 
 printf("请输入%d的姓名:",len); 
 scanf("%s",p1->name); 
 if((len)<10) 
 printf("请输入0%d的性别:",len); 
 else 
 printf("请输入%d的性别:",len); 
 scanf("%s",p1->sex); 
 ch=getchar(); 
 if((len)<10) 
 printf("请输入0%d的年龄:",len); 
 else 
 printf("请输入%d的年龄:",len); 
 scanf("%d",&p1->age); 
 if((len)<10) 
 printf("请输入0%d的生日:",len); 
 else 
 printf("请输入%d的生日:",len); 
 scanf("%s",p1->birth); 
 if((len)<10) 
 printf("请输入0%d的电话:",len); 
 else 
 printf("请输入%d的电话号:",len); 
 scanf("%ld",&p1->tele); 
 if((len)<10) 
 printf("请输入0%d的地址:",len); 
 else 
 printf("请输入%d的地址:",len); 
 scanf("%s",p1->addr); 
 if((len)<10) 
 printf("请输入0%d是否为党员:",len); 
 else 
 printf("请输入%d是否为党员:",len); 
 scanf("%s",p1->party); 
 head=NULL; 
 while(strcmp(p1->num,"0")!=0) 
 { 
 if(head==NULL) 
  head=p1=p2; 
 else 
  p2->next=p1; 
 p2=p1; 
 p1=(struct student *) malloc(sizeof(struct student)); 
 if((len)<10) 
  printf("请输入0%d的学号:",len); 
 else 
  printf("请输入%d的学号:",len); 
 scanf("%s",p1->num); 
 if((len)<10) 
  printf("请输入0%d的姓名:",len); 
 else 
  printf("请输入%d的姓名:",len); 
 scanf("%s",p1->name); 
 if((len)<10) 
  printf("请输入0%d的性别:",len); 
 else 
  printf("请输入%d的性别:",len); 
 scanf("%s",p1->sex); 
 ch=getchar(); 
 if((len)<10) 
  printf("请输入0%d的年龄:",len); 
 else 
  printf("请输入%d的年龄:",len); 
 scanf("%d",&p1->age); 
 if((len)<10) 
  printf("请输入0%d的生日:",len); 
 else 
  printf("请输入%d的生日:",len); 
 scanf("%s",p1->birth); 
 if((len)<10) 
  printf("请输入0%d的电话:",len); 
 else 
  printf("请输入%d的电话号:",len); 
 scanf("%ld",&p1->tele); 
 if((len)<10) 
  printf("请输入0%d的地址:",len); 
 else 
  printf("请输入%d的地址:",len); 
 scanf("%s",p1->addr); 
 if((len)<10) 
  printf("请输入0%d是否为党员:",len); 
 else 
  printf("请输入%d是否为党员:",len); 
 scanf("%s",p1->party); 
 } 
 p2->next=NULL; 
 writetxt(head); 
 } 
 return (head); 
 } 
} 
 
/*学生信息的修改*/ 
 
struct student *change(struct student *head) 
{ 
 
 struct student *p=head; 
 int age,choose,m; 
 long tele; 
 char num[10]; 
 char ch,yes,sex[5],birth[20],addr[30],party[10]; 
 char *p1; 
 if(head==NULL) 
 { 
 printf("原链表为空"); 
 return NULL; 
 } 
 else 
 { 
 while(1) 
 { 
 printf("请输入学号/n"); 
 scanf("%s",num); 
 p=head; 
 while(p!=NULL&&strcmp(p->num,num)!=0) 
 { 
 p=p->next; 
 if(p==NULL) 
 { 
  printf("该学生不存在/n"); 
  break; 
 } 
 if(strcmp(p->name,"0")==0) 
 { 
  printf("该学生已不存在/n"); 
  break; 
 } 
 } 
 m=0; 
 while(1) 
 { 
 if(p==NULL) 
  break; 
 if(strcmp(p->name,"0")==0) 
  break; 
 printf("请选择1.性别 2.年龄 3.出生日期4.电话 5.家庭住址6.党员/n"); 
 scanf("%d",&choose); 
 if(choose==1) 
 { 
  printf("请输入新的性别:/n"); 
  scanf("%s",&sex); 
  p1=sex; 
  strcpy(p->sex,p1); 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 if(choose==2) 
 { 
  printf("请输入新的年龄:/n"); 
  scanf("%d",&age); 
  p->age=age; 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 if(choose==3) 
 { 
  printf("请输入新的出生日期:/n"); 
  scanf("%s",birth); 
  p1=birth; 
  strcpy(p->birth,p1); 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 if(choose==4) 
 { 
  printf("请输入新的电话:/n"); 
  scanf("%d",&tele); 
  p->tele=tele; 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 if(choose==5) 
 { 
  printf("请输入新的家庭住址:/n"); 
  scanf("%s",addr); 
  p1=addr; 
  strcpy(p->addr,p1); 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 if(choose==6) 
 { 
  printf("请输入'是'或'否':/n"); 
  scanf("%s",party); 
  p1=party; 
  strcpy(p->party,p1); 
  printf("是否继续修改本学生学生其他信息Y/N/n"); 
  ch=getchar(); 
  scanf("%c",&yes); 
  if(yes=='N'||yes=='n') 
  break; 
 } 
 } 
 printf("是否继续修改其他学生Y/N/n"); 
 ch=getchar(); 
 scanf("%c",&yes); 
 if(yes=='N'||yes=='n') 
 break; 
 } 
 writetxt(head); 
 p=head; 
 while(p!=NULL) 
 { 
 printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party); 
 p=p->next; 
 } 
 return head; 
 } 
} 
/ 
/*学生成绩信息的录入*/ 
/ 
struct student *chengji(struct student *head) 
{ 
 FILE *fp; 
 struct student *p1,*p; 
 int i; 
 float sum=0; 
 fp=fopen("d://student1.txt","wb"); 
 p1=(struct student *)malloc(sizeof(struct student)); 
 p1=head; 
 while(p1!=NULL) 
 { 
 if(strcmp(p1->name,"0")==0) 
 { 
 printf("该学生不存在/n"); 
 p1=p1->next; 
 continue; 
 } 
 printf("请输入学号为%s学生的高数、C语言、英语成绩:/n",p1->num); 
 for(i=0;i<M;i++) 
 { 
 scanf("%f",&p1->score[i]); 
 sum+=p1->score[i]; 
 } 
 p1->total=sum; 
 sum=0; 
 fwrite(p1,sizeof(struct student),1,fp); 
 
 p1=p1->next; 
 } 
 fclose(fp); 
 writetxt(head); 
 p=head; 
 printf("学号 姓名 性别 年龄 出生年月 电话号码 地址 是否党员/n"); 
 while(p!=NULL) 
 { 
 printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party); 
 p=p->next; 
 } 
 return(head); 
} 
/ 
/*学生信息的添加*/ 
/ 
struct student *insert(struct student *head) 
{ 
 char ch,ok; 
 struct student *p,*p0,*p1; 
 p=p1=head; 
 while(1) 
 { 
 if((len+1)<10) 
 printf("您的学号为0%d/n",len+1); 
 else 
 printf("您的学号为%d/n",len+1); 
 p0=(struct student *)malloc(sizeof(struct student)); 
 len++; 
 if((len)<10) 
 printf("请输入0%d的学号:",len); 
 else 
 printf("请输入%d的学号:",len); 
 scanf("%s",p0->num); 
 if((len)<10) 
 printf("请输入0%d的姓名:",len); 
 else 
 printf("请输入%d的姓名:",len); 
 scanf("%s",p0->name); 
 if((len)<10) 
 printf("请输入0%d的性别:",len); 
 else 
 printf("请输入%d的性别:",len); 
 scanf("%s",p0->sex); 
 ch=getchar(); 
 if((len)<10) 
 printf("请输入0%d的年龄:",len); 
 else 
 printf("请输入%d的年龄:",len); 
 scanf("%d",&p0->age); 
 if((len)<10) 
 printf("请输入0%d的生日:",len); 
 else 
 printf("请输入%d的生日:",len); 
 scanf("%s",p0->birth); 
 if((len)<10) 
 printf("请输入0%d的电话:",len); 
 else 
 printf("请输入%d的电话号:",len); 
 scanf("%ld",&p0->tele); 
 if((len)<10) 
 printf("请输入0%d的地址:",len); 
 else 
 printf("请输入%d的地址:",len); 
 scanf("%s",p0->addr); 
 if((len)<10) 
 printf("请输入0%d是否为党员:",len); 
 else 
 printf("请输入%d是否为党员:",len); 
 scanf("%s",p0->party); 
 while(p->next!=NULL) 
 p=p->next; 
 p->next=p0; 
 p0->next=NULL; 
 printf("是否继续添加Y/N/n") ; 
 ch=getchar(); 
 scanf("%c",&ok); 
 if(ok=='y'||ok=='Y')len++; 
 else 
 { 
 printf("您需要重新进行1的操作来完成该学生信息的注册,谢谢!/n"); 
 break; 
 } 
 } 
 p=head; 
 while(p!=NULL) 
 { 
 printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party); 
 p=p->next; 
 } 
 writetxt(head); 
 return(head); 
 
} 
/ 
/* 恢复误删的学生信息*/ 
/ 
struct student *recover(struct student *head) 
{ 
 FILE *fp; 
 struct student *p1,*p; 
 p=p1=(struct student*)malloc(sizeof(struct student)); 
 char ch; 
 char num[10]; 
 p1=head; 
 printf("input the recover number:"); 
 scanf("%s",num); 
 fp=fopen("d://recycle.txt","rb"); 
 if(fp==NULL) 
 { 
 printf("回收站为空!/n"); 
 return NULL; 
 } 
 else 
 { 
 printf("是否将回收站的数据还原?Y/N /n"); 
 ch=getchar(); 
 ch=getchar(); 
 if(ch=='n'||ch=='N') 
 printf("不需要还原!"); 
 else 
 { 
 while(1) 
 { 
 if(strcmp(p1->num,num)==0) 
  break; 
 else 
  p1=p1->next; 
 } 
 while(!feof(fp)) 
 { 
 fread(p,sizeof(struct student),1,fp); 
 if(strcmp(p1->num,p->num)==0) 
 { 
  strcpy(p1->name,p->name); 
  strcpy(p1->sex,p->sex); 
  p1->age=p->age; 
  strcpy(p1->birth,p->birth); 
  p1->tele=p->tele; 
  strcpy(p1->addr,p->addr); 
  strcpy(p1->party,p->party); 
  printf("dddddddddddddddddddd/n"); 
  break; 
 
 } 
 } 
 
 } 
 writetxt(head); 
 
 p=head; 
 while(p!=NULL) 
 { 
 printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party); 
 p=p->next; 
 }fclose(fp); 
 } 
 return head; 
} 
/ 
/* 学生信息的删除*/ 
/ 
struct student *del(struct student *head) 
{ 
 FILE *fp; 
 struct student *p1,*p2,*p0; 
 p1=p2=head; 
 char ch; 
 char num[10]; 
 printf("input the delete number:"); 
 scanf("%s",num); 
 if(head==NULL) 
 printf("nothing to delete!"); 
 else 
 { 
 while(p1!=NULL) 
 { 
 if(strcmp(p1->num,num)!=0) 
 { 
 p2=p1; 
 p1=p1->next; 
 } 
 if(strcmp(p1->num,num)==0) 
 { 
 p0=p1; 
 printf("是否永久删除该学生的信息?Y/N /n"); 
 ch=getchar(); 
 ch=getchar(); 
 if(ch=='y'||ch=='Y') 
 { 
  printf("该学生信息已经成功从磁盘删除!/n"); 
  if(p1==head) 
  { 
  p0=p1; 
  head=p1->next; 
  p1=p2=head; 
  p1=p2->next; 
  } 
  else 
  { 
  p0=p1; 
  p2->next=p1->next; 
  p1=p2->next; 
  } 
  break; 
 } 
 else 
 { 
  fp=fopen("d://recycle.txt","ab+"); 
  if(fp==NULL) 
  { 
  printf("cannot open the file!"); 
  return NULL; 
  } 
  fwrite(p0,sizeof(struct student),1,fp); 
  strcpy(p1->name,"0"); 
  strcpy(p1->sex,"0"); 
  p1->age=0; 
  strcpy(p1->birth,"0"); 
  p1->tele=0; 
  strcpy(p1->addr,"0"); 
  strcpy(p1->party,"0"); 
 
  printf("学生信息已放入回收站!/n"); 
  fclose(fp); 
 
 
  printf("如果想恢复刚刚删除的学生信息,请输入'Y'or'y'/n"); 
  printf("如果不想恢复刚刚删除的学生信息,请输入'N'or'n'/n"); 
  ch=getchar(); 
  ch=getchar(); 
  if(ch=='y'||ch=='Y') 
  { 
  head=recover(head); 
  break; 
  } 
  if(ch=='n'||ch=='N') 
  break ; 
 } 
 } 
 
 } 
 
 } 
 writetxt(head); 
 return head; 
} 
/ 
/* 密码修改保存函数*/ 
 
void write() 
{ 
 FILE *fp; 
 struct secret p; 
 int i; 
 fp=fopen("d://mima.txt","wb"); 
 if(fp==NULL) 
 { 
 printf("cannot open!"); 
 
 } 
 for(i=0;i<=len;i++) 
 { 
 p=use[i]; 
 fwrite(&p,sizeof(struct secret),1,fp); 
 } 
 fclose(fp); 
 
} 
 
 
/*学生信息的查询*/ 
 
void research(struct student *head) 
{ 
 struct student *p1,*p2; 
 p1=p2=head; 
 int i,j,l=1,k=0; 
 char sex[20],party[10],ch,yes; 
 int age; 
 char num[10],name[20]; 
 printf("选择:1.模糊查询 2.精确查询:"); 
 scanf("%d",&i); 
 if(i==1) 
 { 
 while(l==1) 
 { 
 printf("选择:1.性别 2.年龄 3.是否党员:"); 
 scanf("%d",&j); 
 if(j==1) 
 { p1=head; 
 printf("输入性别:"); 
 scanf("%s",sex); 
 ch=getchar(); 
 while(p1!=NULL) 
 { 
 if(strcmp(p1->sex,sex)==0) 
 { 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
  p1=p1->next; 
  continue; 
 } 
 k++; 
 if(k==3) 
  printf("该学生不存在!/n"); 
 p1=p1->next; 
 } 
 printf("是否继续查询学生其他信息Y/N/n"); 
 scanf("%c",&yes); 
 printf("yes=%c/n",yes); 
 if(yes=='N'||yes=='n') 
 break; 
 if(yes=='Y'||yes=='y') 
 k=0; 
 } 
 if(j==2) 
 { 
 p1=head; 
 printf("输入年龄:"); 
 scanf("%d",&age); 
 while(p1!=NULL) 
 { 
  if(p1->age==age) 
  { 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
  p1=p1->next; 
  continue; 
  } 
  k++; 
  if(k==3) 
  printf("该学生不存在!/n"); 
  p1=p1->next; 
 } 
 printf("是否继续查询学生其他信息Y/N/n"); 
 ch=getchar(); 
 scanf("%c",&yes); 
 if(yes=='N'||yes=='n') 
  break; 
 if(yes=='Y'||yes=='y') 
  k=0; 
 } 
 if(j==3) 
 { 
 p1=head; 
 printf("输入是否党员:"); 
 scanf("%s",party); 
 ch=getchar(); 
 while(p1!=NULL) 
 { 
  if(strcmp(p1->party,party)==0) 
  { 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
  p1=p1->next; 
  continue; 
  } 
  k++; 
  if(k==3) 
  printf("该学生不存在!/n"); 
  p1=p1->next; 
 } 
 printf("是否继续查询学生其他信息?Y/N/n"); 
 scanf("%c",&yes); 
 if(yes=='N'||yes=='n') 
  break; 
 if(yes=='Y'||yes=='y') 
  k=0; 
 } 
 } 
 } 
 if(i==2) 
 { 
 printf("请选择细查的关键字:1.学生学号 2.学生姓名:"); 
 scanf("%d",&j); 
 if(j==1) 
 { 
 while(1) 
 { 
 p1=head; 
 printf("输入学生的学号:"); 
 scanf("%5s",num); 
 while(p1!=NULL) 
 { 
  if(strcmp(p1->num,num)==0) 
  { 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
  p1=p1->next;continue; 
  } 
  k++; 
  if(k==3) 
  printf("该学生不存在!/n"); 
  p1=p1->next; 
 } 
 printf("是否继续查询其他学生信息?Y/N/n"); 
 ch=getchar(); 
 scanf("%c",&yes); 
 if(yes=='N'||yes=='n') 
  break; 
 if(yes=='Y'||yes=='y') 
  k=0; 
 } 
 } 
 if(j==2) 
 { 
 while(1) 
 { 
 p1=head; 
 printf("输入学生的名字:"); 
 scanf("%s",name); 
 while(p1!=NULL) 
 { 
  if(strcmp(p1->name,name)==0) 
  { 
  printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party); 
  p1=p1->next;continue; 
  } 
  k++; 
  if(k==3) 
  printf("该学生不存在!/n"); 
  p1=p1->next; 
 } 
 printf("是否继续查询其他学生信息?Y/N/n"); 
 ch=getchar(); 
 scanf("%c",&yes); 
 if(yes=='N'||yes=='n') 
  break; 
 if(yes=='Y'||yes=='y') 
  k=0; 
 } 
 } 
 } 
} 
 
 
/ 
void research1(char num[]) 
{ 
 int i; 
 for(i=0;i<=len;i++) 
 if(strcmp(stud[i].num,num)==0) 
 printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].birth,stud[i].tele,stud[i].addr,stud[i].party); 
} 
 
/ 
/* 密码修改函数-*/ 
 
void mimacli() 
{ 
 char use1[30],mima[30],newmima[30],ch; 
 int i,j=0; 
 printf("输入用户名:/n"); 
 scanf("%s",use1); 
 printf("输入密码:/n"); 
 while(1) 
 { 
 mima[j]=getch(); 
 if(mima[j]==13) 
 break; 
 putchar('*'); 
 j++; 
 } 
 mima[j]='/0'; 
 printf("/n"); 
 for(i=0;i<=len;i++) 
 { 
 if(strcmp(stud[i].name,"0")==0) 
 { 
 printf("该学生不存在/n"); 
 continue; 
 } 
 if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0) 
 { 
 printf("输入新密码:/n"); 
 ch=getchar(); 
 j=0; 
 while(1) 
 { 
 newmima[j]=getch(); 
 if(newmima[j]==13) 
  break; 
 putchar('*'); 
 j++; 
 } 
 newmima[j]='/0'; 
 printf("/n"); 
 strcpy(use[i].code,newmima); 
 write(); 
 for(i=0;i<=len;i++){ 
 printf("///n"); 
 printf("%s ",use[0].user); 
 printf("%s/n",use[0].code); 
 printf("///n");} 
 break; 
 } 
 if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0) 
 { 
 printf("**************************************/n"); 
 printf(" 4用户名错误 /n"); 
 printf("***************************************/n"); 
 
 break; 
 } 
 if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0) 
 { 
 printf("**************************************/n"); 
 printf(" 密码错误 /n"); 
 printf("***************************************/n"); 
 
 break; 
 } 
 } 
} 
/ 
/* 学生信息管理系统的菜单函数-系统函数*/ 
 
int menu() 
{ 
 int sn,i,j=0; 
 char use1[30]; 
 char mima[30]; 
 int m=0; 
 printf(" 学生信息管理系统/n"); 
 printf("=========================================/n"); 
 printf(" 1.学生信息的整体注册/n"); 
 printf(" 2.学生信息的修改/n"); 
 printf(" 3.学生信息的添加/n"); 
 printf(" 4.学生信息的删除/n"); 
 printf(" 5.学生成绩信息的录入/n"); 
 printf(" 6.学生信息的查询/n"); 
 printf(" 7.访问者密码的修改/n"); 
 printf(" 8.恢复误删学生信息/n"); 
 printf(" 0.退出学生信息管理系统/n"); 
 printf("==========================================/n"); 
 printf("请选择0-8:/n"); 
 while(1) 
 { 
 scanf("%d",&sn); 
 if(sn==7) 
 for(i=1;i<=len;i++) 
 { 
 strcpy(use[i].user,stud[i-1].num ); 
 strcpy(use[i].code,stud[i-1].num ); 
 } 
 if(sn>1&&sn<7||sn==8) 
 { 
 
 printf("请输入您的用户名:"); 
 scanf("%s",use1); 
 printf("请输入您的密码:"); 
 while(1) 
 { 
  mima[j]=getch(); 
  if(mima[j]==13) 
  break; 
  putchar('*'); 
  j++; 
 } 
 mima[j]='/0'; 
 printf("/n"); 
 if(sn==6) 
  if(strcmp(use1,use[0].user)!=0) 
  { 
  for(i=0;i<=len;i++) 
  { 
  if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0) 
  { 
  if(i!=0) 
  { 
  printf("**************************************/n"); 
  printf(" 您只能查找您本人的信息 /n"); 
  printf("***************************************/n"); 
  research1(use1); 
  break; 
  } 
  } 
  if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0) 
  { 
  printf("**************************************/n"); 
  printf(" 密码错误 /n"); 
  printf("***************************************/n"); 
  while(1) 
  { 
  m++; 
  if(m<3) 
  { 
   printf("重新输入:/n"); 
   printf("请输入您的用户名:"); 
   scanf("%s",use1); 
   printf("请输入您的密码:"); 
   j=0; 
   while(1) 
   { 
   mima[j]=getch(); 
   if(mima[j]==13) 
   break; 
   putchar('*'); 
   j++; 
   } 
   mima[j]='/0'; 
   if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0) 
   { 
   printf("**************************************/n"); 
   printf(" 密码错误 /n"); 
   printf("***************************************/n");  
   } 
  } 
  else 
  { 
   sn=0; 
   break; 
  } 
  } 
  sn=0; 
  break; 
  } 
  if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0) 
  { 
  printf("**************************************/n"); 
  printf(" 3用户名错误 /n"); 
  printf("***************************************/n"); 
  sn=0; 
  break; 
  } 
  if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0) 
  { 
  printf("**************************************/n"); 
  printf(" 密码错误 /n"); 
  printf("***************************************/n"); 
  while(1) 
  { 
  m++; 
  if(m<3) 
  { 
   if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0) 
   { 
   printf("**************************************/n"); 
   printf(" 您没有权限来操作 /n"); 
   printf("***************************************/n"); 
   sn=0; 
   break;   
   } 
   printf("重新输入:/n"); 
   printf("请输入您的用户名:"); 
   scanf("%s",use1); 
   printf("请输入您的密码:"); 
   j=0; 
   while(1) 
   { 
   mima[j]=getch(); 
   if(mima[j]==13) 
   break; 
   putchar('*'); 
   j++; 
   } 
   mima[j]='/0'; 
   printf("/n"); 
   if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0) 
   { 
   printf("**************************************/n"); 
   printf(" 密码错误 /n"); 
   printf("***************************************/n"); 
 
   } 
   else 
   { 
   printf("**************************************/n"); 
   printf(" 欢迎您登陆本系统 /n"); 
   printf("***************************************/n"); 
   research1(use1); 
   break; 
   } 
   } 
  else 
  { 
   sn=0; 
   break; 
  } 
  } 
  } 
  } 
  } 
  for(i=0;i<=len;i++) 
  { 
  if(sn==6) 
  if(strcmp(use1,use[0].user)!=0) 
  { 
  sn=0; 
  break; 
  } 
  if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0) 
  { 
  if(i!=0) 
  { 
   printf("**************************************/n"); 
   printf(" 您没有权限来操作 /n"); 
   printf("***************************************/n"); 
  sn=0; 
  break; 
  } 
  else 
  { 
   printf("**************************************/n"); 
   printf(" 欢迎您登陆本系统 /n"); 
   printf("***************************************/n"); 
   break; 
  } 
  } 
  if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0) 
  { 
  printf("**************************************/n"); 
  printf(" 密码错误 /n"); 
  printf("***************************************/n"); 
 
  while(1) 
  { 
  m++; 
  if(m<3) 
  { 
   printf("重新输入:/n"); 
   printf("请输入您的用户名:"); 
   scanf("%s",use1); 
   printf("请输入您的密码:"); 
   j=0; 
   while(1) 
   { 
   mima[j]=getch(); 
   if(mima[j]==13) 
   break; 
   putchar('*'); 
   j++; 
   } 
   mima[j]='/0'; 
   printf("/n"); 
   if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0) 
   { 
   printf("**************************************/n"); 
   printf(" 密码错误 /n"); 
   printf("***************************************/n"); 
   } 
   else 
   { 
   printf("**************************************/n"); 
   printf(" 欢迎您登陆本系统 /n"); 
   printf("***************************************/n"); 
   break; 
   } 
  } 
  else 
  { 
   sn=0; 
   break; 
  } 
  } 
  break; 
  } 
  if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0) 
  { 
  printf("**************************************/n"); 
  printf(" 用户名错误 /n"); 
  printf("***************************************/n"); 
  sn=0; 
  break; 
  } 
  if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0) 
  { 
  printf("**************************************/n"); 
  printf(" 密码错误 /n"); 
  printf("***************************************/n"); 
 
  while(1) 
  { 
  m++; 
  if(m<3) 
  { 
   if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0) 
   { 
   printf("**************************************/n"); 
   printf(" 您没有权限来操作 /n"); 
   printf("***************************************/n"); 
   sn=0; 
   break; 
 
   } 
   printf("重新输入:/n"); 
   printf("请输入您的用户名:"); 
   scanf("%s",use1); 
   printf("请输入您的密码:"); 
   j=0; 
   while(1) 
   { 
   mima[j]=getch(); 
   if(mima[j]==13) 
   break; 
   putchar('*'); 
   j++; 
   } 
   mima[j]='/0'; 
   printf("/n"); 
   if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0) 
   { 
   printf("**************************************/n"); 
   printf(" 密码错误 /n"); 
   printf("***************************************/n"); 
 
   } 
  } 
  else 
  { 
   sn=0; 
   break; 
  } 
  } 
 
  } 
  } 
 } 
 if (sn<0 || sn>8) 
 { 
 printf("/n/t输入错误,重选0-8/n"); 
 break; 
 } 
 else 
 break; 
 } 
 return sn; 
} 
 
/ 
/* 学生信息管理系统的主函数--系统函数*/ 
/ 
void main() 
{ 
 struct student *head; 
 int i,j=0; 
 while(1) 
 { 
 switch(menu()) 
 { 
 case 1: 
 printf("**************************************/n"); 
 printf(" 学生信息的整体注册 /n"); 
 printf("***************************************/n"); 
 head=create(); 
 FILE *fp; 
 struct secret p; 
 fp=fopen("d://mima.txt","rb"); 
 if(fp==NULL) 
 printf("open error/n"); 
 else 
 { 
 for(i=0;i<=len;i++) 
 { 
  fread(&p,sizeof(struct secret),1,fp); 
  strcpy(use[i].user,p.user); 
  strcpy(use[i].code,p.code); 
 } 
 
 fclose(fp); 
 } 
 
 break; 
 
 case 2: 
 printf("**************************************/n"); 
 printf("学生信息的修改/n"); 
 printf("**************************************/n"); 
 change(head); 
 break; 
 case 3: 
 printf("**************************************/n"); 
 printf("学生信息的添加/n"); 
 printf("**************************************/n"); 
 head=insert(head); 
 break; 
 case 4: 
 printf("**************************************/n"); 
 printf("学生成绩信息的删除入/n"); 
 printf("**************************************/n"); 
 head=del(head); 
 break; 
 case 5: 
 printf("**************************************/n"); 
 printf("学生成绩信息的录入/n"); 
 printf("**************************************/n"); 
 head=chengji(head); 
 break; 
 case 6: 
 printf("**************************************/n"); 
 printf("学生信息的查询/n"); 
 printf("**************************************/n"); 
 research(head); 
 break; 
 case 7: 
 printf("**************************************/n"); 
 printf("访问者密码的修改/n"); 
 printf("**************************************/n"); 
 mimacli(); 
 break; 
 case 8: 
 printf("**************************************/n"); 
 printf("恢复误删信息/n"); 
 printf("**************************************/n"); 
 recover(head); 
 break; 
 case 0: 
 printf("**************************************/n"); 
 printf("退出学生信息管理系统/n"); 
 printf("**************************************/n"); 
 printf("The end./n"); 
 return; 
 default: printf("/n选择错误,请重选!/n"); 
 getchar(); 
 getchar(); 
 } 
 system("cls"); 
 } 
} 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542
  • 543
  • 544
  • 545
  • 546
  • 547
  • 548
  • 549
  • 550
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • 562
  • 563
  • 564
  • 565
  • 566
  • 567
  • 568
  • 569
  • 570
  • 571
  • 572
  • 573
  • 574
  • 575
  • 576
  • 577
  • 578
  • 579
  • 580
  • 581
  • 582
  • 583
  • 584
  • 585
  • 586
  • 587
  • 588
  • 589
  • 590
  • 591
  • 592
  • 593
  • 594
  • 595
  • 596
  • 597
  • 598
  • 599
  • 600
  • 601
  • 602
  • 603
  • 604
  • 605
  • 606
  • 607
  • 608
  • 609
  • 610
  • 611
  • 612
  • 613
  • 614
  • 615
  • 616
  • 617
  • 618
  • 619
  • 620
  • 621
  • 622
  • 623
  • 624
  • 625
  • 626
  • 627
  • 628
  • 629
  • 630
  • 631
  • 632
  • 633
  • 634
  • 635
  • 636
  • 637
  • 638
  • 639
  • 640
  • 641
  • 642
  • 643
  • 644
  • 645
  • 646
  • 647
  • 648
  • 649
  • 650
  • 651
  • 652
  • 653
  • 654
  • 655
  • 656
  • 657
  • 658
  • 659
  • 660
  • 661
  • 662
  • 663
  • 664
  • 665
  • 666
  • 667
  • 668
  • 669
  • 670
  • 671
  • 672
  • 673
  • 674
  • 675
  • 676
  • 677
  • 678
  • 679
  • 680
  • 681
  • 682
  • 683
  • 684
  • 685
  • 686
  • 687
  • 688
  • 689
  • 690
  • 691
  • 692
  • 693
  • 694
  • 695
  • 696
  • 697
  • 698
  • 699
  • 700
  • 701
  • 702
  • 703
  • 704
  • 705
  • 706
  • 707
  • 708
  • 709
  • 710
  • 711
  • 712
  • 713
  • 714
  • 715
  • 716
  • 717
  • 718
  • 719
  • 720
  • 721
  • 722
  • 723
  • 724
  • 725
  • 726
  • 727
  • 728
  • 729
  • 730
  • 731
  • 732
  • 733
  • 734
  • 735
  • 736
  • 737
  • 738
  • 739
  • 740
  • 741
  • 742
  • 743
  • 744
  • 745
  • 746
  • 747
  • 748
  • 749
  • 750
  • 751
  • 752
  • 753
  • 754
  • 755
  • 756
  • 757
  • 758
  • 759
  • 760
  • 761
  • 762
  • 763
  • 764
  • 765
  • 766
  • 767
  • 768
  • 769
  • 770
  • 771
  • 772
  • 773
  • 774
  • 775
  • 776
  • 777
  • 778
  • 779
  • 780
  • 781
  • 782
  • 783
  • 784
  • 785
  • 786
  • 787
  • 788
  • 789
  • 790
  • 791
  • 792
  • 793
  • 794
  • 795
  • 796
  • 797
  • 798
  • 799
  • 800
  • 801
  • 802
  • 803
  • 804
  • 805
  • 806
  • 807
  • 808
  • 809
  • 810
  • 811
  • 812
  • 813
  • 814
  • 815
  • 816
  • 817
  • 818
  • 819
  • 820
  • 821
  • 822
  • 823
  • 824
  • 825
  • 826
  • 827
  • 828
  • 829
  • 830
  • 831
  • 832
  • 833
  • 834
  • 835
  • 836
  • 837
  • 838
  • 839
  • 840
  • 841
  • 842
  • 843
  • 844
  • 845
  • 846
  • 847
  • 848
  • 849
  • 850
  • 851
  • 852
  • 853
  • 854
  • 855
  • 856
  • 857
  • 858
  • 859
  • 860
  • 861
  • 862
  • 863
  • 864
  • 865
  • 866
  • 867
  • 868
  • 869
  • 870
  • 871
  • 872
  • 873
  • 874
  • 875
  • 876
  • 877
  • 878
  • 879
  • 880
  • 881
  • 882
  • 883
  • 884
  • 885
  • 886
  • 887
  • 888
  • 889
  • 890
  • 891
  • 892
  • 893
  • 894
  • 895
  • 896
  • 897
  • 898
  • 899
  • 900
  • 901
  • 902
  • 903
  • 904
  • 905
  • 906
  • 907
  • 908
  • 909
  • 910
  • 911
  • 912
  • 913
  • 914
  • 915
  • 916
  • 917
  • 918
  • 919
  • 920
  • 921
  • 922
  • 923
  • 924
  • 925
  • 926
  • 927
  • 928
  • 929
  • 930
  • 931
  • 932
  • 933
  • 934
  • 935
  • 936
  • 937
  • 938
  • 939
  • 940
  • 941
  • 942
  • 943
  • 944
  • 945
  • 946
  • 947
  • 948
  • 949
  • 950
  • 951
  • 952
  • 953
  • 954
  • 955
  • 956
  • 957
  • 958
  • 959
  • 960
  • 961
  • 962
  • 963
  • 964
  • 965
  • 966
  • 967
  • 968
  • 969
  • 970
  • 971
  • 972
  • 973
  • 974
  • 975
  • 976
  • 977
  • 978
  • 979
  • 980
  • 981
  • 982
  • 983
  • 984
  • 985
  • 986
  • 987
  • 988
  • 989
  • 990
  • 991
  • 992
  • 993
  • 994
  • 995
  • 996
  • 997
  • 998
  • 999
  • 1000
  • 1001
  • 1002
  • 1003
  • 1004
  • 1005
  • 1006
  • 1007
  • 1008
  • 1009
  • 1010
  • 1011
  • 1012
  • 1013
  • 1014
  • 1015
  • 1016
  • 1017
  • 1018
  • 1019
  • 1020
  • 1021
  • 1022
  • 1023
  • 1024
  • 1025
  • 1026
  • 1027
  • 1028
  • 1029
  • 1030
  • 1031
  • 1032
  • 1033
  • 1034
  • 1035
  • 1036
  • 1037
  • 1038
  • 1039
  • 1040
  • 1041
  • 1042
  • 1043
  • 1044
  • 1045
  • 1046
  • 1047
  • 1048
  • 1049
  • 1050
  • 1051
  • 1052
  • 1053
  • 1054
  • 1055
  • 1056
  • 1057
  • 1058
  • 1059
  • 1060
  • 1061
  • 1062
  • 1063
  • 1064
  • 1065
  • 1066
  • 1067
  • 1068
  • 1069
  • 1070
  • 1071
  • 1072
  • 1073
  • 1074
  • 1075
  • 1076
  • 1077
  • 1078
  • 1079
  • 1080
  • 1081
  • 1082
  • 1083
  • 1084
  • 1085
  • 1086
  • 1087
  • 1088
  • 1089
  • 1090
  • 1091
  • 1092
  • 1093
  • 1094
  • 1095
  • 1096
  • 1097
  • 1098
  • 1099
  • 1100
  • 1101
  • 1102
  • 1103
  • 1104
  • 1105
  • 1106
  • 1107
  • 1108
  • 1109
  • 1110
  • 1111
  • 1112
  • 1113
  • 1114
  • 1115
  • 1116
  • 1117
  • 1118
  • 1119
  • 1120
  • 1121
  • 1122
  • 1123
  • 1124
  • 1125
  • 1126
  • 1127
  • 1128
  • 1129
  • 1130
  • 1131
  • 1132
  • 1133
  • 1134
  • 1135
  • 1136
  • 1137
  • 1138
  • 1139
  • 1140
  • 1141
  • 1142
  • 1143
  • 1144
  • 1145
  • 1146
  • 1147
  • 1148
  • 1149
  • 1150
  • 1151
  • 1152
  • 1153
  • 1154
  • 1155
  • 1156
  • 1157
  • 1158
  • 1159
  • 1160
  • 1161
  • 1162
  • 1163
  • 1164
  • 1165
  • 1166
  • 1167
  • 1168
  • 1169
  • 1170
  • 1171
  • 1172
  • 1173
  • 1174
  • 1175
  • 1176
  • 1177
  • 1178
  • 1179
  • 1180
  • 1181
  • 1182
  • 1183
  • 1184
  • 1185
  • 1186
  • 1187
  • 1188
  • 1189
  • 1190
  • 1191
  • 1192
  • 1193
  • 1194
  • 1195
  • 1196
  • 1197
  • 1198
  • 1199
  • 1200
  • 1201
  • 1202
  • 1203
  • 1204
  • 1205
  • 1206
  • 1207
  • 1208
  • 1209
  • 1210
  • 1211
  • 1212
  • 1213
  • 1214
  • 1215
  • 1216
  • 1217
  • 1218
  • 1219
  • 1220
  • 1221
  • 1222
  • 1223
  • 1224
  • 1225
  • 1226
  • 1227
  • 1228
  • 1229
  • 1230
  • 1231
  • 1232
  • 1233
  • 1234
  • 1235
  • 1236
  • 1237
  • 1238
  • 1239
  • 1240
  • 1241
  • 1242
  • 1243
  • 1244
  • 1245
  • 1246
  • 1247
  • 1248
  • 1249
  • 1250
  • 1251
  • 1252
  • 1253
  • 1254
  • 1255
  • 1256
  • 1257
  • 1258
  • 1259
  • 1260
  • 1261
  • 1262
  • 1263
  • 1264
  • 1265
  • 1266
  • 1267
  • 1268
  • 1269
  • 1270
  • 1271
  • 1272
  • 1273
  • 1274
  • 1275
  • 1276
  • 1277
  • 1278
  • 1279
  • 1280
  • 1281
  • 1282
  • 1283
  • 1284
  • 1285
  • 1286
  • 1287
  • 1288
  • 1289
  • 1290
  • 1291
  • 1292
  • 1293
  • 1294
  • 1295
  • 1296
  • 1297
  • 1298
  • 1299
  • 1300
  • 1301
  • 1302
  • 1303
  • 1304
  • 1305
  • 1306
  • 1307
  • 1308
  • 1309
  • 1310
  • 1311
  • 1312
  • 1313
  • 1314
  • 1315
  • 1316
  • 1317
  • 1318
  • 1319
  • 1320
  • 1321
  • 1322
  • 1323
  • 1324
  • 1325
  • 1326
  • 1327
  • 1328
  • 1329
  • 1330
  • 1331
  • 1332
  • 1333
  • 1334
  • 1335
  • 1336
  • 1337
  • 1338
  • 1339
  • 1340
  • 1341
  • 1342
  • 1343
  • 1344
  • 1345
  • 1346
  • 1347
  • 1348
  • 1349
  • 1350
  • 1351
  • 1352
  • 1353
  • 1354
  • 1355
  • 1356
  • 1357
  • 1358
  • 1359
  • 1360
  • 1361
  • 1362
  • 1363
  • 1364
  • 1365
  • 1366
  • 1367
  • 1368
  • 1369
  • 1370
  • 1371
  • 1372
  • 1373
  • 1374
  • 1375
  • 1376
  • 1377
  • 1378
  • 1379
  • 1380
  • 1381
  • 1382
  • 1383
  • 1384
  • 1385
  • 1386
  • 1387
  • 1388
  • 1389
  • 1390
  • 1391
  • 1392
  • 1393
  • 1394
  • 1395
  • 1396
  • 1397

链表版

#include "stdio.h" 
#include "stdlib.h" 
typedef struct student 
{ 
 int id; //学号 
 char name[20]; //姓名 
 char sex; //性别(f或m) 
 int age; //年龄 
 int score; //成绩 
 struct student *next; 
}student; 
student *head=NULL; 
int length; //链表的长度 
void create() 
{ 
 student *p1,*p2; 
 length=0; 
 p1=(student *)malloc(sizeof(student)); 
 p1->id=-1; 
 if(head==NULL) 
 head=p1; 
 printf("请输入学生的学号、姓名、性别、年龄、成绩信息:\n"); 
 while(1) //学号为0的时候退出 
 { 
 p2=(student *)malloc(sizeof(student)); 
 scanf("%d %s %c %d %d",&p2->id,p2->name,&p2->sex,&p2->age,&p2->score); //输入学生信息 
 if(p2->id==0) 
 { 
  printf("链表创建完成!\n"); 
  break; 
 } 
 length++; //链表的长度 
 p1->next=p2; 
 p2->next=NULL; 
 p1=p1->next; 
 } 
 return ; 
} 
 
void display() 
{ 
 student *p=head->next; 
 printf("链表中所有的学生信息如下:\n"); 
 while(p!=NULL) 
 { 
 printf("%d %s %c %d %d\n",p->id,p->name,p->sex,p->age,p->score); 
 p=p->next; 
 } 
 return ; 
} 
void search() 
{ 
 int num; 
 student *p=head->next; 
 printf("需要查找的学生学号为:"); 
 scanf("%d",&num); 
 
 while(p!=NULL) 
 { 
 
 if(p->id==num) 
 { 
  printf("学号为%d的学生的信息如下:\n",num); 
  printf("%d %s %c %d %d\n",p->id,p->name,p->sex,p->age,p->score); 
  return; 
 } 
 p=p->next; 
 } 
 if(p==NULL) 
 printf("无此记录!\n"); 
 return ; 
} 
 
void insert() 
{ 
 int num,i; 
 student *p,*q; 
 p=head; 
 
 printf("请输入你要插入位置: "); 
 scanf("%d",&num); 
 if(num>length) 
 { 
 printf("找不到要插入的位置\n"); 
 return ; 
 } 
 else 
 { 
 printf("请输入你要插入的学生的学号、姓名、性别、年龄、成绩信息:\n"); 
 q=(student *)malloc(sizeof(student)); 
 scanf("%d %s %c %d %d",&q->id,q->name,&q->sex,&q->age,&q->score); 
 
 while(p!=NULL) 
 { 
  if(p->id==q->id) 
  { 
  printf("该学号已经存在,无法插入!\n"); 
  return ; 
  } 
  p=p->next; 
 } 
 p=head; 
 for(i=0;i<num;i++) 
  p=p->next; 
 q->next=p->next; 
 p->next=q; 
 length++; 
 printf("插入成功!\n"); 
 return ; 
 } 
} 
 
void Delete() 
{ 
 int num; 
 student *p,*q; 
 q=head,p=head->next; 
 printf("请输入要删除的学生的学号:\n"); 
 scanf("%d",&num); 
 
 while(p!=NULL) 
 { 
 if(p->id==num) 
 { 
  q->next=p->next; 
  free(p); 
  length--; 
  printf("删除成功!\n"); 
  return ; 
 } 
 p=p->next; 
 q=q->next; 
 } 
 if(p==NULL) 
 { 
 printf("找不到要删除的编号!\n"); 
 return ; 
 } 
} 
void menu() 
{ 
 printf("________________________________________________________________\n"); 
 printf("|  学生信息管理系统    |\n"); 
 printf("|  0、 退出系统     |\n"); 
 printf("|  1、 建立链表     |\n"); 
 printf("|  2、 显示链表     |\n"); 
 printf("|  3、 查找链表中的某个元素   |\n"); 
 printf("|  4、 删除链表中指定学号的结点   |\n"); 
 printf("|  5、 指定的位置上插入一个新结点   |\n"); 
 printf("________________________________________________________________\n"); 
 return ; 
} 
int main(void) 
{ 
 int a; 
 menu(); 
 while(1) 
 { 
 printf("请选择相应的功能:"); 
 scanf("%d",&a); 
 switch(a) 
 { 
 case 0: 
  return 0; 
 case 1: 
  create(); 
  menu(); 
  break; 
 case 2: 
  if(head) 
  { 
  display(); 
  menu(); 
  } 
  else 
  { 
  printf("链表为空,请先建立链表!\n"); 
  menu(); 
  } 
  break; 
 case 3: 
  if(head) 
  { 
  search(); 
  menu(); 
  } 
  else 
  { 
  printf("链表为空,请先建立链表!\n"); 
  menu(); 
  } 
  break; 
 case 4: 
  if(head) 
  { 
  Delete(); 
  menu(); 
  } 
  else 
  { 
  printf("链表为空,请先建立链表!\n"); 
  menu(); 
  } 
  break; 
 case 5: 
  if(head) 
  { 
  insert(); 
  menu(); 
  } 
  else 
  { 
  printf("链表为空,请先建立链表!\n"); 
  menu(); 
  } 
  break; 
 default: 
  break; 
 } 
 } 
 system("pause"); 
 return 0; 
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/382612
推荐阅读
相关标签
  

闽ICP备14008679号