C语言实现学籍信息管理系统

本文实例为大家分享了C语言实现学籍信息管理系统的具体代码,供大家参考,具体内容如下

系统功能:录入、修改、添加、删除、查找、读取、删除数据

系统主要技术:基本就是函数的调用,只用到结构体,与文件的读写

所有的数据改动都会及时保存到文件

student.txt文件用来储存所有信息

shuju.txt文件用来储存信息数据

代码如下

/*             学籍信息管理系统 系统功能:录入、修改、添加、删除、查找、读取、删除数据 系统主要技术:基本就是函数的调用,还有结构体,与文件的读写  */ #include<stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int n = 0;//变动的学生个数  int i=0;//用来储存总共的学生人数 struct student {     char xh[20];//学生学号     char xm[10];//学生姓名     int nl;//年龄     char xb1[4];//学生性别     char jg[100];//籍贯     char tele[20];//学生电话     char xb[40];//系别     char zy[36];//学生专业     char bj[30];//学生班级 } aa[100]; //定义一个学生基本学籍信息的结构体,可容纳100人; //申明各函数! void init();//初始化界面  void help();//系统帮助 void chazhao();//查找 void xiugai();//修改函数 void caidan();//主菜单 void shuru();//输入函数 void tianjia();//添加函数 void shanchu();//删除函数 void shuchu();//输出函数 void baocun();//保存函数 void duqu();//读取函数 void del();//清空文件数据  void luru();//全部信息录入文件  /* 主函数  */ int main() {     init();      system("pause");     system("cls");     duqu();     caidan();     return 0; } /* 系统初始化界面 */  void init() {     printf("————————————————————————————————————————————————————————————\n\n");     printf("\t\t\t\t*********************************************************\n\n");     printf("\t\t\t\t*****************欢迎使用学生学籍管理系统****************\n\n");     printf("\t\t\t\t——————————学院:胡编乱造学院——————————\n\n");     printf("\t\t\t\t——————————班级:胡编1班————————————\n\n");     printf("\t\t\t\t——————————姓名:xiaozhu06———————————\n\n");     printf("\t\t\t\t*********************************************************\n\n"); } /* 帮助函数 显示完成后再显示菜单 */ void help() {     printf("\n0.欢迎使用系统帮助!\n");     printf("\n1.初次进入系统后,请先选择录入学生学籍;\n");     printf("\n2.按照菜单提示键入数字代号;\n");     printf("\n3.录入或删除学生学籍信息后,切记保存;\n");     printf("\n4.谢谢您的使用!\n");     caidan(); } /* 主菜单函数 用户输入0-8的数字并显示其功能 */ void caidan() {     printf("—————————————————————————————————————————————————————————\n");     printf("*********************************************************\n");     printf("*****************欢迎使用学生学籍管理系统****************\n");     printf("***输入“0”小白帮助                                    ***\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("*********************************************************\n\n");     printf("请输入编号:(1 —8)");     int x;     scanf("%d",&x);     switch(x)     {     case 0:         system("cls");         help();         break;     case 1:         system("cls");         shuru();         break;     case 2 :         system("cls");         xiugai();         break;     case 3:         system("cls");         tianjia();         break;     case 4:         system("cls");         shanchu();         break;     case 5:         system("cls");         chazhao();         break;     case 6:         system("cls");         shuchu();         caidan();         break;     case 7:         system("cls");         del();         caidan();         break;     case 8:         system("cls");         break;     } } /* 录入学籍信息函数  */ void shuru() {     int l,m,p;     printf("请输入要录入的学生人数:\n");     scanf("%d",&n);     p = n;     for(m = i+1; m <= (i+n); m ++)//循环输入学生信息     {     bb: int flage = 0;         printf("请输入学号:");         scanf("%s",aa[m].xh);         for(l = 1; l < m; l ++)         {             if(strcmp(aa[m].xh,aa[l].xh) == 0)             {                 flage = 1;                 break;             }         }         if(flage == 1)         {             printf("学号重复,请重新输入:\n");             goto bb;         }         p --;         printf("请输入姓名:");         scanf("%s",aa[m].xm);         printf("请输入年龄:");         scanf("%d",&aa[m].nl);         printf("请输入性别:");         scanf("%s",aa[m].xb1);         printf("请输入籍贯:");         scanf("%s",aa[m].jg);         printf("请输入电话:");         scanf("%s",aa[m].tele);         printf("请输入系别:");         scanf("%s",aa[m].xb);         printf("请输入专业:");         scanf("%s",aa[m].zy);         printf("请输入班级:");         scanf("%s",aa[m].bj);         printf("\n");         printf("已录入 %d 个学生信息\n",n-p);         printf("\n");         if(p == 0)         printf("本次录入完成\n");     }     i = i + n;     baocun();     caidan(); } /* 修改函数 通过学号查找来修改学生信息 */ void xiugai() {     int j;     char k[100];     printf("请输入需要修改的学生学籍的学号:");     scanf("%s",k);     for(j=1; j<=i; j++)     {         if(strcmp(aa[j].xh,k) == 0)         {             strcpy(aa[j].xh,k);             break;         }     }     printf("请输入姓名:");     scanf("%s",aa[j].xm);     printf("请输入年龄:");     scanf("%d",&aa[j].nl);     printf("请输入性别:");     scanf("%s",aa[j].xb1);     printf("请输入籍贯:");     scanf("%s",aa[j].jg);     printf("请输入电话:");     scanf("%s",aa[j].tele);     printf("请输入系别:");     scanf("%s",aa[j].xb);     printf("请输入专业:");     scanf("%s",aa[j].zy);     printf("请输入班级:");     scanf("%s",aa[j].bj);     luru();     caidan(); } /* 查找函数 通过学号来查找学生信息 */ void chazhao() {     int j,flage,z;     char p[100];     flage = 0;     printf("\n请输入你所要查找学生的学号:");     scanf("%s",p);     for(j=1; j<=i; j++)     {         if(strcmp(aa[j].xh,p) == 0)         {             flage = 1;             break;         }     }     if(flage == 1)     {         printf("\n已查到此人,信息为:\n\n");         printf("学号:%s\n姓名:%s\n年龄: %d\n性别:%s\n籍贯:%s\n电话:%s\n系别:%s\n专业:%s\n班级:%s\n",aa[j].xh,aa[j].xm,aa[j].nl,aa[j].xb,aa[j].jg,aa[j].tele,aa[j].xb,aa[j].zy,aa[j].bj);     }     if(flage == 0)         printf("\n查无此人\n");     printf("\n是否继续查找(是输入1、否输入0):");     scanf("%d",&z);     switch(z)     {         case 1:             chazhao();             break;         case 0:             system("cls");             break;         default:             system("cls");             break;     }     caidan(); } /* 添加信息函数 */ void tianjia() {     FILE*fp;     int counts=0;//表示添加学生的数量     int k;     printf("\n 原来的学生信息:\n");     shuchu();     printf("请输入想增加的学生数:\n");     scanf("%d",&n);     for (k=i+1; k<=(i+n); k++)     {        aa:    int flage;            flage = 0;         printf("\n 请输入新增加学生的信息:\n");         printf("请输入学号:  ");         scanf("%s",aa[k].xh);         int q;         for(q = 1; q < k; q ++)         {             if(strcmp(aa[k].xh,aa[q].xh) == 0)             {                 flage = 1;                 break;             }         }        if(flage == 1)        {            printf("学号重复,请重新输入\n");                goto aa;         }         getchar();         printf("请输入姓名:  ");         scanf("%s",aa[k].xm);         getchar();         printf("请输入性别:  ");         scanf("%c",aa[k].xb1);         getchar();         printf("请输入年龄:  ");         scanf("%d",&aa[k].nl);         getchar();         printf("请输入籍贯:  ");         scanf("%s",aa[k].jg);         getchar();         printf("请输入电话:  ");         scanf("%s",aa[k].tele);         printf("请输入系别:  ");         scanf("%s",aa[k].xb);         getchar();         printf("请输入专业:  ");         scanf("%s",aa[k].zy);         getchar();         printf("请输入班级:  ");         scanf("%s",aa[k].bj);         printf("\n");         counts=counts+1;         printf("已增加的人数:\n");         printf("%d\n",counts);     }     printf("\n添加完毕!\n");     i=i+n;     printf("\n浏览增加后的所有学生信息:\n");     printf("\n");     baocun();     shuchu();     caidan(); } /* 删除函数 */ void shanchu()    {     int k,j,t,flage,numb;     char xh[100];     printf("请输入要删除的学生学籍的学号:\n");     scanf("%s",xh);     flage=0;     for(k=1; k<=i; k++)     {         if(strcmp(aa[k].xh,xh) == 0)         {             flage = 1;             break;         }     }     if(flage == 1)     {         printf("\n已找到此人,原始记录为:\n");         printf("学号:%s\n姓名:%s\n年龄: %d\n性别:%s\n籍贯:%s\n电话:%s\n系别:%s\n专业:%s\n班级:%s\n",aa[k].xh,aa[k].xm,aa[k].nl,aa[k].xb1,aa[k].jg,aa[k].tele,aa[k].xb,aa[k].zy,aa[k].bj);         printf("\n确实要删除此人信息请按1,不删除请按0\n");         scanf("%d",&numb);         if(numb==1)         {             for(j=k; j<=i-1; j++)             {                 strcpy(aa[j].xh,aa[j+1].xh);                 strcpy(aa[j].xm,aa[j+1].xm);                 aa[j].nl=aa[j+1].nl;                 strcpy(aa[j].xb1,aa[j+1].xb1);                 strcpy(aa[j].jg,aa[j+1].jg);                 strcpy(aa[j].tele,aa[j+1].tele);                 strcpy(aa[j].xb,aa[j+1].xb);                 strcpy(aa[j].zy,aa[j+1].zy);                 strcpy(aa[j].bj,aa[j+1].bj);             }             i --;         }         else;     }     if(numb == 1)         luru();     if(flage == 0)     {         printf("\n对不起,查无此人!\n\n");     }     printf("继续删除请按1,不再删除请按0\n");     scanf("%d",&t);     switch(t)     {     case 1:         shanchu();         break;     case 0:         system("cls");         caidan();         break;     default :         system("cls");         break;     } } /* 全部学生信息输出  */ void shuchu() {     FILE*fp; //    fp=fopen("student.txt","r");     if((fp = fopen("student.txt","r")) == NULL)     {         printf("打开文件失败\n");         exit(EXIT_FAILURE);     }     /*-     while循环      读取文件中的数据      */     char a[100];     while(fgets(a,100,fp))     {         printf("%s",a);     }     fclose(fp);     getchar(); } /* 保存函数 学生信息每次添加后以 追加 的方式保存到文件中  */ void baocun()    {     FILE*fp;     fp=fopen("student.txt","ab+");     int j;     for(j=i-n+1; j<=i; j++)     {         fprintf(fp,"学号:%s\n姓名:%s\n年龄: %d\n性别:%s\n籍贯:%s\n电话:%s\n系别:%s\n专业:%s\n班级:%s\n",aa[j].xh,aa[j].xm,aa[j].nl,aa[j].xb1,aa[j].jg,aa[j].tele,aa[j].xb,aa[j].zy,aa[j].bj);         fprintf(fp,"\n");     }     printf("\n");     fclose(fp);     FILE *fp1;     if((fp1 = fopen("shuju.txt","ab+")) == NULL)     {         exit(EXIT_FAILURE);     }     for(j=i-n+1; j<=i; j++)     {         fprintf(fp,"%s\n%s\n%d\n%s\n%s\n%s\n%s\n%s\n%s\n",aa[j].xh,aa[j].xm,aa[j].nl,aa[j].xb1,aa[j].jg,aa[j].tele,aa[j].xb,aa[j].zy,aa[j].bj);         fprintf(fp,"\n");     }     fclose(fp1);     n = 0; } /* 当储存过的学生信息变动时重新往文件中录入数据  将所有学生信息全部以 写 的方式录入文件  */ void luru() {     FILE*fp;     fp=fopen("student.txt","wb");     int j;     for(j=1; j<=i; j++)     {         fprintf(fp,"学号:%s\n姓名:%s\n年龄: %d\n性别:%s\n籍贯:%s\n电话:%s\n系别:%s\n专业:%s\n班级:%s\n",aa[j].xh,aa[j].xm,aa[j].nl,aa[j].xb1,aa[j].jg,aa[j].tele,aa[j].xb,aa[j].zy,aa[j].bj);         fprintf(fp,"\n");     }     printf("\n");     fclose(fp);     FILE *fp1;     if((fp1 = fopen("shuju.txt","wb")) == NULL)     {         exit(EXIT_FAILURE);     }     for(j=1; j<=i; j++)     {         fprintf(fp,"\n");         fprintf(fp,"%s\n%s\n%d\n%s\n%s\n%s\n%s\n%s\n%s\n",aa[j].xh,aa[j].xm,aa[j].nl,aa[j].xb1,aa[j].jg,aa[j].tele,aa[j].xb,aa[j].zy,aa[j].bj);     }     fprintf(fp,"\n");     fclose(fp1); } /* 读取函数 读取文件中储存的数据,赋值到student结构体数组中  */ void duqu() {     FILE *fp1;     if((fp1 = fopen("shuju.txt","r")) == NULL)     {         exit(EXIT_FAILURE);     }     int stnum = 0,num = 0,l;     char c[100],shuju[100];     while(!feof(fp1))     {         num ++;         if(num % 10 == 1)         {             stnum ++;         }         fgets(shuju,100,fp1);         int j;         j = 0;         while(shuju[j] != '\n')         {             c[j] = shuju[j];             j ++;         }         c[j] = '\0';         if(num % 10 == 2)             strcpy(aa[stnum].xh,c);         if(num % 10 == 3)             strcpy(aa[stnum].xm,c);         if(num % 10 == 4)             aa[stnum].nl = atoi(c);         if(num % 10 == 5)             strcpy(aa[stnum].xb1,c);         if(num % 10 == 6)             strcpy(aa[stnum].jg,c);         if(num % 10 == 7)             strcpy(aa[stnum].tele,c);         if(num % 10 == 8)             strcpy(aa[stnum].xb,c);         if(num % 10 == 9)             strcpy(aa[stnum].zy,c);         if(num % 10 == 0)             strcpy(aa[stnum].bj,c);         if(feof(fp1))         {             num ++;             break;         }     }     fclose(fp1);     i = num / 10;     printf("\n文件中有%d个学生信息\n\n",i); } /* 清空文件中的数据  */ void del() {     FILE *fp;     fp = fopen("student.txt","w");     ftruncate(fileno(fp), 0);     fclose(fp);     i = 0;     FILE *fp1;     fp1 = fopen("shuju.txt","w");     ftruncate(fileno(fp1), 0);     fputs("\n",fp1);      fclose(fp1); }

推荐阅读