我的C程序,学生学籍管理系统

 

1、 系统概述

学生学籍管理系统从学生学籍管理的现状出发,以实现学生学籍管理为设计目标

学生学籍管理系统:用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。

在界面友善方面,首先使用system函数使界面美观,用制表符制作界面使界面简洁易读,其次将输入数据的思路流程化,使用者可以从任意数据输入过程开始,,各种各样的数据产生过程。再者,考虑到了对非法输入做了一定的处理,输出提示语句与提示音,增加了程序的可操作性。

本系统使用结构体数组对学生学籍存储,并使用文件指针及文件的读写函数将学生学籍保存于文件file.TXT中,使得数据长期存储。

本系统以模块化设计为主要思想,逐步细化,自顶向下,实现对学生的学籍管理

程序缺陷

部分变量命名不规范

未对用户与管理员权限进行限制

未能使用链表进行数据结构设计

2、 数据结构设计

本程序所使用的数据类型

数据类型

字节

值的范围

int

4

-2,147,483,648~ 2,147,483,647

char

1

-128~127

struct date

12

#

struct student

272

#

FILE*

4

#

 

变量数据类型及说明

变量

 

功能

数据类型

 

值的范围

flag

 

标记是否登录

int

 

0、1

stu[N]

 

学生学籍信息数组

struct student

 

N=100

w1

 

各函数w1为数据错误标志位

int

 

0,1

i,j

 

多在函数中被用于循环控制变量

int

 

0~ 2,147,483,647

birthday

 

出生年月

struct date

 

 

num[20]

 

学号数组

char

 

最多19字符

name[25]

 

姓名数组

char

 

最多24字符

age

 

年龄

int

 

 

addr[50]

 

籍贯

char

 

最多49字符

dept[50]

 

系别

char

 

最多49字符

classs[30]

 

班级

char

 

最多29字符

major[30]

 

专业

char

 

最多29字符

classes[30]

 

班级

char

 

最多29字符

status[20]

 

学籍状态

char

 

最多19字符

password[20]

 

密码

char

 

最多19字符

 

变量介绍:

其他变量为函数临时变量

学生学籍结构体数组为方便各函数调用,使用全局变量存储

Flag为登录标志位,使用全局变量来进行存储,从而判断是否登录

i、         j用于for循环的控制计数变量,控制循环的进行

w0、w1用于while循环的控制

 

输出数据:

%d带符号的十进制形式输出整数。

用于数据个数的输出

%s以字符串类型整体输入字符数组,例如学生籍贯的输出

以字符串输出学生信息数据

使用清屏函数及时清除屏幕多余数据,使得界面美观大方,易读性强

 

3、 模块设计

系统通过欢迎函数、菜单函数、查询函数、删除函数、查询函数、修改函数、籍贯输出函数来实现学生信息的查找删除等功能,各功能通过主函数switch语句调用,各函数又互相调用

 

设计错误

开始对错误数据的处理不力,错误比较多,没有按全局的思路完善程序所导致的

 

4.调试运行及操作说明

程序使用说明

  1. 1.  运行程序进入欢迎界面,按[enter]进入主菜单
  1. 1.  根据所需服务输入对应数字

 

错误输入:如果输入错误数字9 系统会提示错误、发出提示音并提示重新输入

 

3.键入1 进入登录系统页面

 

3.1 管理员登录键入一并输入密码,密码为123456

 

3.2用户名为学生姓名密码为学号

 

4.按任意键登录成功会返回菜单页 

错误提示:未登录选择进入插入、删除页面会提示登录(查询除外)并转到登录页面

 

5.进入菜单键入2进入插入页面,按提示输入学生信息

 

6.进入键入1进入浏览页面,进入键入2返回菜单

 

7.菜单选择4进入查询界面,分为姓名与学号查询

 

8.显示结果,查询结束可选择继续与返回菜单

错误提示:输入错误姓名与学号会提示重新输入

 

9.进入删除界面,同理,按提示输入将删除所选项

 

10.进入修改界面,按提示输入将修改所选项

 

11.进入籍贯界面,选择专业与学号并按提示输入将查看籍贯项

 

12.菜单状态按8键,将退出系统

 

  1 /*
  2     C语言综合设计
  3 
  4 题目:学生学籍管理系统
  5  
  6 管理员登录密码:123456
  7 用户为输入学生姓名,密码为学号
  8 
  9 功能:
 10 (1) 系统以菜单方式工作。  
 11 (2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息; 
 12 (3) 删除已知学号的学生信息; 
 13 (4) 查找已知学号的学生信息;  
 14 (5) 按学号,专业输出学生籍贯表。  
 15 (6) 查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
 16 
 17 编译平台:vc++6.0
 18 2018.6.12
 19 
 20 */
 21 
 22 #include<stdio.h>
 23 #include<string.h>
 24 #include<stdlib.h>
 25 #include<conio.h>
 26 #define N 100 /*存储100个学生的学籍信息*/
 27 int flag; /*标记是否登录*/
 28 struct date /*出生日期*/
 29 {
 30     int year;
 31     int month;
 32     int day;
 33 };
 34 struct student
 35 {
 36     char num[20];/*学号*/
 37     char name[25];/*姓名*/
 38     char sex[10];/*性别*/
 39     struct date birthday;/*出生年月*/
 40     int age;/*年龄*/
 41     char addr[50];/*籍贯*/
 42     char dept[50]; /*系别*/
 43     char major[30]; /*专业*/
 44     char classs[30]; /*班级*/
 45     char phone[20];/*电话*/
 46     char status[20];/*学籍状态*/
 47 }stu[N];
 48 
 49 void login() /*登录*/
 50 {
 51     void menu();
 52     int load();
 53     int n,i,m,w;
 54     FILE *fp;
 55     struct student s;
 56     char password[20];
 57     int d,q;    
 58     int j=0;
 59     system("cls");
 60     if(flag)
 61     {
 62         printf("  已经登录!\n");
 63         printf("Press any key to continue…\n");
 64         getchar();
 65         getchar();
 66         system("cls");
 67         menu();
 68     }
 69  
 70     if((fp=fopen("file.txt","rb"))!=NULL) /*不是空文件*/
 71       n=load(); /*打开文件*/
 72     else
 73       n=0;
 74 
 75     
 76     printf("\n\t请选择登录身份:1.管理员      2.用户     [ ]\b\b");
 77     scanf("%d",&d);
 78     if(d==1)
 79     {
 80         printf("\n\t\t\t请输入密码:");
 81         getchar();
 82     
 83         while(1)
 84         {
 85             password[j]=getch();
 86             if(password[j]=='\r')
 87               break;
 88             printf("*");
 89             j++;
 90         }
 91         password[j]='\0';
 92         if(!strcmp(password,"123456")) /*判断密码是否正确*/
 93         {
 94             flag=1;
 95             printf("\n\t登录成功!\n");
 96             printf("\tPress [ Enter ] key to continue…");
 97             getchar();
 98             system("cls");
 99             menu();
100         }
101         if(!flag)
102         {
103            printf("\t\n密码错误!\n\a");
104            printf("What do you want to do next? 1.继续登录  2.返回菜单   [ ]\b\b");
105            scanf("%d",&q);
106            if(q==1) /*继续登录*/
107            {
108                system("cls");
109                login();
110            }
111            else if(q==2) /*返回主菜单*/
112            {
113                system("cls");
114                menu();
115            }
116         }
117     }
118     else
119     {
120        printf("\n\t\t\t用户名:");
121        scanf("%s",s.name);
122        printf("\t\t\t密码:");
123        
124        while(1)
125         {
126             password[j]=getch();
127             if(password[j]=='\r')
128               break;
129             printf("*");
130             j++;
131         }
132        password[j]='\0';
133        flag=0; /*未登录时flag=0*/
134        for(i=0;i<n;i++)
135          if(!strcmp(s.name,stu[i].name)&&!strcmp(stu[i].num,password))
136          {
137            flag=1; /*登录成功flag=1*/
138            break;
139          }
140       if(flag)
141       {
142          printf("\n\t登录成功!\n");
143          printf("\tPress any key to continue…\n");
144          getchar(); getchar();
145          system("cls");
146          menu(); /*登录成功后返回主菜单*/
147       }
148       else
149       {
150         m=0; /*设置m是为了避免陷入 登录失败时 跳不出登录界面*/
151         w=1; /*设置w是为了避免输出多次 “用户不存在”*/
152     
153         do
154         {
155             if(w>0)
156                printf("用户名不存在或密码错误!\n\a"); /*第一次登录时输入不存在的用户时显示*/
157             printf("What do you want to do next? 1.继续登录  2.返回菜单   [ ]\b\b");
158             scanf("%d",&q);
159             if(q==1) /*继续登录*/
160             {
161                 login();
162                 m=1;
163             }
164             else if(q==2) /*返回主菜单*/
165             {
166                 system("cls");
167                 menu();
168                 m=1;
169             }
170             else
171             {
172                 printf("选择错误!请重新选择:\n\a");
173                 w=0;
174             }
175         }while(m==0);
176       }
177     }
178 }
179 
180 void printf_one(int k) /*输出一个学生的信息*/
181 {
182     system("color 4e");
183     printf("学号:%s\n",stu[k].num);
184     printf("姓名:%s\n",stu[k].name);
185     printf("性别:%s\n",stu[k].sex);
186     printf("出生年月:%d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day);
187     printf("年龄:%d\n",stu[k].age);
188     printf("籍贯:%s\n",stu[k].addr);
189     printf("系别:%s\n",stu[k].dept);
190     printf("专业:%s\n",stu[k].major);
191     printf("班级:%s\n",stu[k].classs);
192     printf("电话:%s\n",stu[k].phone);
193     printf("学籍状态:%s\n",stu[k].status);
194 }
195 
196 void printf_n(int n) /*浏览时输出所有学生的信息*/
197 {
198     int j,i=1;
199     system("color 2e");
200     
201     for(j=0;j<n;j++)
202     {
203         printf("第%d个学生:\n",i++);
204         printf_one(j);
205          printf("\n");
206     }
207   getchar();
208 }
209 
210 void printf_addr() /* 按学号,专业输出学生籍贯表*/
211 {
212    void menu();
213     int w0,k,i,n,w1,w2;
214     struct student s;
215     FILE *fp;
216     system("color 2e");    
217      if(!flag)
218     {
219         printf("\n\n\t请先登录!\n\a");
220         printf("\n\t请按 Enter 键进入登录界面!");
221         getchar();
222         getchar();
223         login();
224     }
225     else
226     {
227         if((fp=fopen("file.txt","rb"))!=NULL) /*不是空文件*/
228            n=load();
229         do
230         {
231             printf("请选择学生籍贯的输出类别:  1.专业  2.学号   [ ]\b\b");
232             scanf("%d",&w1);
233             if(w1<1||w1>2)
234             {
235                 printf("输入错误!请重新输入!\n\a");
236                 w2=1;
237             }
238             else
239                 w2=0; /*防止陷入死循环*/
240         }while(w2==1);
241         if(w1==1) /*按专业输出*/
242         {
243             do
244             {
245                 k=-1;
246                 do
247                 {
248                     printf("\n请输入专业!\nName:");
249                     scanf("%s",s.major);
250                     for(i=0;i<n;i++)
251                       if(strcmp(s.major,stu[i].major)==0)
252                       {
253                           k=i;
254                           printf("\n");    
255                           printf_one(i);
256                           printf("\n");
257                       }
258                       if(k==-1) /*没有找到*/
259                       {
260                          int o;
261                          printf("\n\n没有此专业的信息!\n!");
262                          printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");
263                          scanf("%d",&o);
264                          if(o==1)
265                          {
266                              system("cls");
267                              printf_addr; /*继续输出*/
268                          }
269                          else
270                          {
271                              system("cls");
272                              menu();
273                          }
274                       }
275                 }while(k==-1);
276               // system("cls");
277                printf("\nWhat do you want to do next?\n\t1).继续    2).返回菜单   [ ]\b\b");
278                scanf("%d",&w0);
279             }while(w0==1);
280           system("cls");
281           menu(); /*不再查找时返回主菜单*/
282         }
283         else /*按学号输出*/
284         {
285             do
286             {
287                k=-1;
288                do
289                {
290                    printf("\n请输入要输出的学号!\nNum:");
291                    scanf("%s",s.num);
292                    for(i=0;i<n;i++)
293                      if(strcmp(s.num,stu[i].num)==0) /*找到了*/
294                      {
295                         k=i;
296                         printf("籍贯:");   puts(stu[k].addr);
297                         break;
298                      }
299                    if(k==-1) /*没有找到*/
300                    {
301                       int o;
302                       printf("\n\n没有这个学生的信息!\n!");
303                       printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");
304                       scanf("%d",&o);
305                       if(o==1)
306                       {
307                           system("cls");
308                           printf_addr; /*继续输出*/
309                       }
310                       else
311                       {
312                           system("cls");
313                           menu();
314                       }
315                    }
316                }while(k==-1);
317                printf("\nWhat do you want to do?\n\t1).继续   2).返回菜单   [ ]\b\b");
318                scanf("%d",&w0);
319                system("cls");
320             }while(w0==1);
321           system("cls");
322           menu();/*不再查找时返回主菜单*/
323  
324         }
325     }
326 }
327 
328 
329 
330 int load() /*打开文件,读取里面的数据*/
331 {
332     FILE *fp;
333     int i;
334     if((fp=fopen("file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/
335     {
336         printf("\n文件不存在!\n");
337         return 0;
338     }
339     for(i=0;!feof(fp);i++)  /*处理到文件结尾*/
340        fread(&stu[i],sizeof(struct student),1,fp);  /*fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来,
341     buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件*/
342     fclose(fp);
343     return(i-1);
344 }
345 
346 void input(int k) /*输入学生信息*/
347 {
348     getchar();
349     printf("学号:");   gets(stu[k].num);
350     printf("姓名:");   gets(stu[k].name);
351     printf("性别:");   gets(stu[k].sex);
352     printf("出生年月:");  scanf("%d%d%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day);
353     printf("年龄:");   scanf("%d",&stu[k].age);  getchar();
354     printf("籍贯:");   gets(stu[k].addr);
355     printf("系别:");   gets(stu[k].dept);
356     printf("专业:");   gets(stu[k].major);
357     printf("班级:");   gets(stu[k].classs);
358     printf("电话:");   gets(stu[k].phone);
359     printf("学籍状态:");gets(stu[k].status);
360 }
361 
362 void save(int n) /*保存学生信息*/
363 {
364     void exit();
365     FILE *fp;
366     int i;
367     if((fp=fopen("file.txt","wb"))==NULL) /*只打开或建立一个二进制文件,只允许写数据*/
368     {
369         printf("\nCan not open file!\n");
370         exit(0);
371     }
372     for(i=0;i<n;i++)
373       if(stu[i].name[0]!='\0')
374          if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) /*将一批数据作为一个整体一次性写入磁盘文件*/
375             printf("文件写入错误!\n");
376     fclose(fp);
377 }
378 
379 void printf_back()/*添加学生信息后显示的“是浏览还是返回”*/
380 {
381    int w,k=0;
382    void browse();
383    void menu();
384    printf("\n\n\t^_^.插入成功. ^_^\n\n");
385    do
386    {
387       printf("What do you want to do next?\n\n\t1).浏览所有\t2).返回:  [ ]\b\b");
388       scanf("%d",&w);
389       if(w==1)
390       {
391           system("cls");
392           browse();
393       }
394       else if(w==2)
395       {
396           system("cls");
397           menu();
398       }
399       else
400           printf("  选择错误!请重新选择!\n\a");
401    }while(k==0);
402 }
403 
404 void insert() /*添加学生信息*/
405 {
406     int i,n,k,t;
407     FILE *fp;
408     if(!flag)
409     {
410         printf("\n\n\t请先登录!\n\a");
411         printf("\n\t请按 Enter 键进入登录界面!");
412         getchar();
413         getchar();
414         login();
415     }
416     else
417     {
418         if((fp=fopen("file.txt","rb"))==NULL) /*读入空文件,rb表示打开一个二进制文件,只允许读数据*/
419         {
420             printf("How many people do you want to add(1-%d)?:",N-1);
421             n=0;
422         }
423         else
424         {
425           n=load();
426           printf("How many student do you want to insert (1-%d)?:",N-n-1);/*剩余可插入的个数*/
427         }
428         
429         scanf("%d",&t);
430         while(t>=(N-n-1)||t<1)
431         {
432             printf("输入错误!请重新输入!\n\a");    
433             scanf("%d",&t);
434         }
435         k=n+t;
436         for(i=n;i<k;i++)
437         {
438            printf("\n输入第 %d 个学生学籍信息.\n",i-n+1);
439            input(i);
440         }
441         save(k); /*保存所有学生的信息*/
442         printf_back();
443     }
444 }
445 
446 void deleter() /*删除*/
447 {
448     void menu();
449     if(!flag)
450     {
451         printf("\n\n\t请先登录!\n\a");
452         printf("\n\t请按 Enter 键进入登录界面!");
453         getchar();
454         getchar();
455         login();
456     }
457     else
458     {
459         struct student s;
460         int i,n,k,w0,w1;
461         n=load();
462         do
463         {
464             k=-1;
465             //printf_n(n); /*删除之前先显示所有学生的信息*/
466             do
467             {
468                  printf("\n\n请输入您想要删除的学生的姓名!\nName:");
469                  scanf("%s",s.name);
470                  for(i=0;i<n;i++)
471                    if(strcmp(s.name,stu[i].name)==0)
472                    {
473                       k=i;
474                       s=stu[i];
475                    }
476                  if(k==-1)
477                  {
478                      int m;
479                      printf("\n\n没有这个学生的信息!\n");
480                      printf("What do you want to do next? 1.继续输入  2.返回主菜单    [ ]\b\b");
481                      scanf("%d",&m);
482                      if(m==1)
483                          deleter();
484                      else
485                      {
486                          k=0;
487                          system("cls");
488                          menu();
489                      }
490                  }
491             }while(k==-1);
492             printf_one(k);
493             printf("\n\t确定删除?\n\t1).是   2).返回  [ ]\b\b");/*再次询问是否删除*/
494             scanf("%d",&w0);
495             if(w0==1)
496             {
497                stu[k].name[0]='\0';
498                save(n);
499             }
500             else
501                 break;
502             printf("\n\t^_^.成功删除^_^.\n");
503             printf("What do you want to do?\n\t1).继续   2).返回  [ ]\b\b");
504             scanf("%d",&w1);
505         }while(w1==1);
506       system("cls");
507       menu(); /*不再删除时返回主菜单,w1!=1*/
508     }
509 }
510 
511 void search() /*查找*/
512 {
513     void menu();
514     int w0,k,i,n,w1,w2;
515     struct student s;
516     FILE *fp;
517     if((fp=fopen("file.txt","rb"))!=NULL) /*不是空文件*/
518        n=load();
519     do
520     {
521         printf("请选择查找类别:  1.姓名  2.学号   [ ]\b\b");
522         scanf("%d",&w1);
523         if(w1<1||w1>2)
524         {
525             printf("输入错误!请重新输入!\n\a");
526             w2=1;
527         }
528         else
529             w2=0; /*防止陷入死循环*/
530     }while(w2==1);
531     if(w1==1) /*按姓名查找*/
532     {
533         do
534         {
535             k=-1;
536             do
537             {
538                 printf("\n请输入您想要查找的学生的姓名!\nName:");
539                 scanf("%s",s.name);
540                 for(i=0;i<n;i++)
541                   if(strcmp(s.name,stu[i].name)==0)
542                   {
543                       k=i;
544                       s=stu[i];
545                   }
546                   if(k==-1) /*没有找到*/
547                   {
548                      int o;
549                      printf("\n\n没有这个学生的信息!\n!");
550                      printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");
551                      scanf("%d",&o);
552                      if(o==1)
553                      {
554                          system("cls");
555                          search(); /*继续查找*/
556                      }
557                      else
558                      {
559                          system("cls");
560                          menu();
561                      }
562                   }
563             }while(k==-1);
564            system("cls");
565            printf_one(k); /*找到以后输出这个学生的信息*/
566            printf("\nWhat do you want to do next?\n\t1).继续    2).返回菜单   [ ]\b\b");
567            scanf("%d",&w0);
568         }while(w0==1);
569       system("cls");
570       menu(); /*不再查找时返回主菜单*/
571     }
572     else /*按学号查找*/
573     {
574         do
575         {
576            k=-1;
577            do
578            {
579                printf("\n请输入您想要查找的学生的学号!\nNum:");
580                scanf("%s",s.num);
581                for(i=0;i<n;i++)
582                  if(strcmp(s.num,stu[i].num)==0) /*找到了*/
583                  {
584                    k=i;
585                    s=stu[i];
586                  }
587                if(k==-1) /*没有找到*/
588                {
589                   int o;
590                   printf("\n\n没有这个学生的信息!\n!");
591                   printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");
592                   scanf("%d",&o);
593                   if(o==1)
594                   {
595                       system("cls");
596                       search(); /*继续查找*/
597                   }
598                   else
599                   {
600                       system("cls");
601                       menu();
602                   }
603                }
604            }while(k==-1);
605            system("cls");
606            printf_one(k); /*找到以后输出这个学生的学籍信息*/
607            printf("\nWhat do you want to do?\n\t1).继续   2).返回菜单   [ ]\b\b");
608            scanf("%d",&w0);
609         }while(w0==1);
610       system("cls");
611       menu();/*不再查找时返回主菜单*/
612  
613     }
614 }
615 
616 int modify_data(int i) /*修改信息函数*/
617 {
618     int c,w1;
619     void menu();
620     do
621     {
622         puts("\n请选择要修改的选项:\n\n1.学号 2.姓名  3.性别  4.出生日期  5.年龄 6.籍贯 7.系别 8.专业 9.班级 10.电话  11.学籍状态 12.所有信息 13.取消并返回");
623         printf("请选择?: [  ]\b\b\b");
624         scanf("%d",&c);
625         if(c>13||c<1)
626         {
627             puts("\n选择错误!请重新选择!");
628             getchar();
629         }
630     }while(c>13||c<1);
631    do
632    {
633        switch(c)
634        {
635          case 1: printf("学号:");  scanf("%s",stu[i].num); break;
636          case 2: printf("姓名:");  scanf("%s",stu[i].name); break;
637          case 3: printf("性别:");  scanf("%s",stu[i].sex); break;
638          case 4: printf("出生年月:");  scanf("%d/%d/%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day); break;
639          case 5: printf("年龄:");  scanf("%d",&stu[i].age);break;
640          case 6: printf("籍贯:");  scanf("%s",stu[i].addr);break;
641          case 7: printf("系别:");  scanf("%s",stu[i].dept);break;
642          case 8: printf("专业:");  scanf("%s",stu[i].major);break;
643          case 9: printf("班级:");  scanf("%s",stu[i].classs);break;
644          case 10: printf("电话:");  scanf("%s",stu[i].phone);break;
645          case 11: printf("学籍状态:");  scanf("%s",stu[i].status);break;
646          case 12: input(i); break;  /*修改这个学生的所有信息*/
647          case 13: menu();  /*返回主菜单*/
648          
649        }
650        puts("\nNow:\n");
651        printf_one(i); /*输出 修改后 的这个学生的信息*/
652        printf("\n确定?\n\n\t1).是  2).不,重新修改  3).返回不保存 [ ]\b\b");
653        scanf("%d",&w1);
654    }while(w1==2);
655    return(w1); /*修改成功并选择1后返回1*/
656 }
657 
658 void modify() /*修改*/
659 {
660     void menu();
661     if(!flag)
662     {
663         printf("\n\n\t请先登录!\n");
664         printf("\n\t请按 Enter 键进入登录界面!");
665         getchar();
666         getchar();
667         login();
668     }
669     else
670     {
671        struct student s;
672        int i,n,k,w0=1,w1,w2=0;
673        n=load();
674        do
675        {
676           k=-1;
677           //printf_n(n); /*删除之前先显示所有学生的信息*/
678           do
679           {
680              printf("\n请输入您想要修改的学生的姓名!\nName:");
681              scanf("%s",s.name);
682              for(i=0;i<n;i++)
683                if(strcmp(s.name,stu[i].name)==0) /*与其中一个学生匹配*/
684                {
685                    k=i;
686                    s=stu[i];
687                }
688              if(k==-1) /*没有找到输入的学生*/
689              {
690                  int o;
691                  printf("\n\n没有这个学生的信息!\n");
692                  printf("What do you want to do?\n\t1.继续    2.返回菜单  [ ]\b\b");
693                  scanf("%d",&o);
694                  system("cls");
695                  if(o==1)
696                  {
697                      
698                      //modify(); /*继续修改*/
699                  }
700                  else
701                  {
702                     //system("cls");
703                     menu();
704                  }
705              }
706           }while(k==-1);
707           system("cls");
708           printf_one(k); /*输出这个学生的信息*/
709           w1=modify_data(k);
710           if(w1==1) /*判断是否修改成功修改*/
711           {
712              printf("\n\t^_^.修改成功 ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b");
713              scanf("%d",&w0);
714              w2=1;
715           }
716           else
717           {
718              w0=0;
719              if(w2==0)
720                  stu[k]=s;
721           }
722           if((w0!=1)&&(w2==1)) /*修改成功保存*/
723              save(n);
724        }while(w0==1);
725        system("cls");
726      menu();/*不再修改返回主菜单*/
727     }
728 }
729 
730 void browse()/*浏览*/
731 {
732     void menu();
733     int n;
734     system("color 5f");
735     if(!flag)
736     {
737         printf("\n\n\t请先登录!\n\a");
738         printf("\n\t请按 Enter 键进入登录界面!");
739         getchar();
740         getchar();
741         login();
742     }
743     else
744     {
745     n=load();
746     printf_n(n);
747     printf("  共有 %d 个学生的记录.\n",n);
748     printf("\nPress [ ENTER ] key to back...");
749     getchar();
750     system("cls");
751     menu(); /*返回主函数*/
752     }
753 }
754 
755 
756 void welcome()  /*欢迎页面*/
757 {
758     system("color F0");
759     printf("\n\t    ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★\n\n");
760     puts("\t    ※※※※※※※※※※※※※※※※※※※※※※※※※※※");
761     puts("\t    ※※                                              ※※");
762     puts("\t    ※※                                              ※※");
763     puts("\t    ※※           欢迎访问学生学籍管理系统!          ※※");
764     puts("\t    ※※                                              ※※");
765     puts("\t    ※※                                              ※※");
766     puts("\t    ※※                                              ※※");
767     puts("\t    ※※                                              ※※");
768     puts("\t    ※※                              制作人:xxx     ※※");
769     puts("\t    ※※                                   2018.6     ※※");
770     puts("\t    ※※                                              ※※");
771     puts("\t    ※※※※※※※※※※※※※※※※※※※※※※※※※※※");
772     printf("\n\tPress [ Enter ] key to continue……\n");    
773     getchar();
774     system("cls");
775 }
776 
777 void menu() /*主菜单*/
778 {    
779     int n,w1;/*n为服务种类保存变量,w1为数据错误标志位*/
780     system("color 2e");    /*system函数改变背景色与前景色*/
781     printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
782     printf("\n");
783 
784     do
785     {
786        puts("\t\t★★★★★★★★    菜单   ★★★★★★★★");
787        puts("\t\t                 1.登  录                 ");
788        puts("\t\t                 2.插  入                 ");
789        puts("\t\t                 3.删  除                 ");
790        puts("\t\t                 4.查  询                 ");
791        puts("\t\t                 5.修  改                 ");
792        puts("\t\t                 6.浏  览                 ");
793        puts("\t\t                 7.籍  贯                 ");
794        puts("\t\t                 8.退  出                 ");
795        puts("\t\t★★★★★★★★★★★★★★★★★★★★★");
796         printf("请选择服务种类(1-8) : [ ]\b\b");
797        scanf("%d",&n);
798        if(n<1||n>8)
799        {
800            system("cls");
801            printf("选择错误!  请重新选择!\n\a");/*输出错误提示语句并发出警告音*/
802            w1=1;
803        }
804        else
805            w1=0;
806     }while(w1==1);
807     switch(n)
808     {
809        case 1: login();  break; /*登录*/
810        case 2: system("cls");  insert();   break; /*插入*/
811        case 3: system("cls");  deleter();  break; /*删除*/
812        case 4: system("cls");  search();   break; /*查找*/
813        case 5: system("cls");  modify();   break; /*修改*/
814        case 6: system("cls");  browse();   break; /*浏览*/
815        case 7: system("cls"); printf_addr();   break; /*输出籍贯*/
816        case 8: printf(" 欢迎再次使用!再见!\n"); exit(0);break; /*退出*/
817 
818     }
819 }
820 
821 int main()
822 {
823     welcome();
824     menu();
825     return 0;
826 }


 

效果图

 

目录菜单

 

删除学生

 

插入学生学籍

 

根据自己需要可以改变功能!

学好C语言,为专业知识的学习有很大好处。努力多学,学好计算机技术 

转载于:https://www.cnblogs.com/wanglonghui/p/9215194.html

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值