首页 > 编程 > C > 正文

C语言学生学籍管理系统课程设计

2020-01-26 13:47:53
字体:
来源:转载
供稿:网友

C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456

代码:

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student {   char xuehao[100];//输入学号   char name[100];//输入姓名   char sex[100];//输入性别   int age;//输入年龄   char jiguan[100];//输入籍贯   char dianhua[100];//输入电话   char yuanxi[100];//输入院系   char banji[100];//输入班级 } stu[1000]; void shouye()//首页 {   int i;   printf("^-^-----------------------------------------------------^-^/n");   printf("/n");   printf(" $        欢迎使用学生学籍管理系统!        $/n");   printf(" $              制作人:          $/n");   printf(" $                  李威鹏       $/n");   printf(" $              时间:2017.12        $/n");   printf("/n");   printf("^-^-----------------------------------------------------^-^/n");   printf("Enter键继续!");   getchar();   system("cls"); } void zhuxiao()//注销用户 {   system("shutdown -f "); } void denglu()//登陆 {   void menu();   int i,j;   char mima[16];   for(j=1; j<=4;)   {     if(j==4)       break;     else if(j<4)     {       printf("请输入6位密码:/n");       printf("剩余输入次数%d/n",4-j);       for(i=0; i<6; i++)       {         mima[i]=getch();         printf("*");       }     }     mima[i]='/0';     if(strcmp(mima,"123456")==0)     {         system("cls");       printf("密码正确/n");       printf("登陆成功!/n");       printf("按Enter键继续!");       getchar();       menu();       return;       }     else     {       system("cls");       printf("密码错误/n");       j++;     }   }   printf("注销用户!!!/n");   zhuxiao();   getch();   } void menu()//菜单 {   system("cls");   printf("*-----------------------------学生管理系统--------------------------------*/n");   printf("/n");   printf("1.添加学生信息  2.删除某个学生信息   3.浏览学生信息/n");   printf("4.修改学生信息  5.查找某个学生信息   6.显示信息数量/n");   printf("0.退出系统/n");   printf("/n");   printf("*-------------------------------------------------------------------------*/n");   } void save(int m) {   int i;   FILE*fp;   if ((fp=fopen("系统","wb"))==NULL)   {     printf ("文件打开失败/n");     exit(0);   }   for (i=0; i<m; i++)     if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)       printf("文件打开失败/n");   fclose(fp); } int load()//打开文件,读取里面的数据 {   FILEFILE *fp;   int i=0;   if((fp=fopen("系统","rb"))==NULL)   {     printf ("文件打开失败/n");     exit(0);   }   else   {     do     {       fread(&stu[i],sizeof(struct student),1,fp);       i++;     }     while(feof(fp)==0);   }   fclose(fp);   return(i-1); } int menuchoose()//选择菜单 {   int n;   menu();   printf("请选择菜单0~6:");   while(1 != scanf("%d", &n) || n < 0 || n> 6)   {     menu();     printf("选择菜单错误,请重新选择(0 ~ 6):");     fflush(stdin);//清空输入缓冲区   }   return n; } void add()//添加学生信息 {   int i,m,q,s=1;   system("cls");   printf("---------------输入学生信息---------------/n");   printf("请输入需要添加学生的总人数:/n");   scanf("%d",&m);   for (i=0; i<m; i++)   {     printf("/n输入第 %d 个学生学籍信息./n",i+1);     printf("请输入学号:");     scanf("%s",stu[i].xuehao);     for(q=0; q<m; q++)     {       if(strcmp(stu[q].xuehao,stu[i].xuehao)==0&&q!=i)       {         printf("该学号已经存在,请重新输入:/n");         printf("请输入学号:/n");         s=1;         scanf("%s",stu[q].xuehao);       }     }     printf("请输入姓名:");     scanf("%s",stu[i].name);     printf("请输入性别:");     scanf("%s",stu[i].sex);     printf("请输入年龄:");     scanf("%d",&stu[i].age);     getchar();     printf("请输入籍贯:");     scanf("%s",stu[i].jiguan);     printf("请输入电话:");     scanf("%s",stu[i].dianhua);     printf("请输入院系:");     scanf("%s",stu[i].yuanxi);     printf("请输入班级:");     scanf("%s",stu[i].banji);   }   save(m); } void show() {   system("cls");   int i;   int m=load();   if(m==0)   {     printf("/n暂无学生信息!/n");     printf("是否添加学生信息?/n   是:1  否:2/n");     int a2;     scanf("%d",&a2);     if(a2==1)       add();     else       menu();   }   else   {     printf("----------------------浏览学生信息--------------------------/n");     printf("/n");     printf("/t/t/t/t/t/t/t/n");     for(i=0; i<m; i++)     {        printf("第%d位同学的信息为:/n",i+1);     printf("学号:%s/n",stu[i].xuehao);     printf("姓名:%s/n",stu[i].name);     printf("性别:%s/n",stu[i].sex);     printf("年龄:%d/n",stu[i].age);     printf("籍贯:%s/n",stu[i].jiguan);     printf("电话:%s/n",stu[i].dianhua);     printf("院系:%s/n",stu[i].yuanxi);     printf("班级:%s/n",stu[i].banji);     }     system("pause");   } } void del() {     int m=load();   int i,j,n,t,flag;   char xuehao[20];   printf("/n 原有的学生信息为:/n");   show();   printf("/n");   printf("请输入要删除的学生的学号:/n");   scanf("%s",xuehao);   for(flag=1,i=0; flag&&i<m; i++)   {     if(strcmp(stu[i].xuehao,xuehao)==0)     {        printf("学号:%s/n",stu[i].xuehao);     printf("姓名:%s/n",stu[i].name);     printf("性别:%s/n",stu[i].sex);     printf("年龄:%d/n",stu[i].age);     printf("籍贯:%s/n",stu[i].jiguan);     printf("电话:%s/n",stu[i].dianhua);     printf("院系:%s/n",stu[i].yuanxi);     printf("班级:%s/n",stu[i].banji);       printf("是否要删除此人信息?/n是请按1,否请按0:/n");       scanf("%d",&n);       if(n==1)       {         for(j=i; j<m-1; j++)         {           strcpy(stu[j].name,stu[j+1].name);           strcpy(stu[j].xuehao,stu[j+1].xuehao);           strcpy(stu[j].sex,stu[j+1].sex);           stu[j].age=stu[j+1].age;           strcpy(stu[j].yuanxi,stu[j+1].yuanxi);           strcpy(stu[j].banji,stu[j+1].banji);           strcpy(stu[j].jiguan,stu[j+1].jiguan);           strcpy(stu[j].dianhua,stu[j+1].dianhua);         }         flag=0;       }     }   }   if(!flag)     m=m-1;   else     printf("/n无此人信息!/n");   save(m);   printf("/n是否继续删除信息/n 继续请按1/n退出请按0/n");   scanf("%d",&t);   switch(t)   {   case 1:     del();     break;   case 0:     menu();     break;   default :     break;   } } void xiugai()//修改学生信息 {   system("cls");   FILEFILE *fp;   int n,i,j,c,x,y;   char m[10];   n=load();   show();   printf("请输入要修改学生的学号或姓名:");   scanf("%s",&m);   do   {     printf("/n请选择要修改的选项:/n/n1.学号 2.姓名 3.性别 4.年龄 5.籍贯 6.电话 7.院系 8.班级 9.取消并返回/n");     printf("请选择?:/n ");     scanf("%d",&c);     if(c>9||c<1)     {       menu();       puts("/n选择错误!请重新选择!");       fflush(stdin);//清空输入缓冲区     }   }   while(c>9||c<1);   for (i=0; i<n; i++)     if (!strcmp(stu[i].xuehao,m)||!strcmp(stu[i].name,m))     {       switch (c)       {       case 1:         printf("学号:");         scanf("%s",stu[i].xuehao);         break;       case 2:         printf("姓名:");         scanf("%s",stu[i].name);         break;       case 3:         printf("性别:");         scanf("%s",stu[i].sex);         break;       case 4:         printf("年龄:");         scanf("%d",&stu[i].age);         break;       case 5:         printf("籍贯:");         scanf("%s",stu[i].jiguan);         break;       case 6:         printf("电话:");         scanf("%s",stu[i].dianhua);         break;       case 7:         printf("院系:");         scanf("%s",stu[i].yuanxi);         break;       case 8:         printf("班级:");         scanf("%s",stu[i].banji);         break;       case 9:         menu();/*返回主菜单*/       }       printf("是否保存?/n");       printf("是:1/n否:2/n");       scanf("%d",&x);     }   if(x==1)   {     save(n);     printf("保存成功!/n");     printf("是否继续修改?继续:1 否:2/n");     int p;     scanf("%d",&p);     if(p==1)     {       xiugai();     }     else     {       menu();     }   }   else   {     printf("退出请按0,继续修改请按1/n");     scanf("%d",&y);     switch(y)     {     case 0:       break;     case 1:       xiugai();       break;     }   } } void showone(int c) /*输出一个学生的信息*/ {    printf("学号:%s/n",stu[c].xuehao);     printf("姓名:%s/n",stu[c].name);     printf("性别:%s/n",stu[c].sex);     printf("年龄:%d/n",stu[c].age);     printf("籍贯:%s/n",stu[c].jiguan);     printf("电话:%s/n",stu[c].dianhua);     printf("院系:%s/n",stu[c].yuanxi);     printf("班级:%s/n",stu[c].banji); } void chazhao()//查找某个学生的信息 {   system("cls");   FILE*fp;   int a1,b1,c1,d1,e1,n,i;   char t[10];   n=load();   printf("请输入要查找的学生的学号或姓名:");   scanf("%s",t);   for(i=0; i<n; i++)     if (!strcmp(stu[i].xuehao,t)||!strcmp(stu[i].name,t))     {        printf("学号:%s/n",stu[i].xuehao);     printf("姓名:%s/n",stu[i].name);     printf("性别:%s/n",stu[i].sex);     printf("年龄:%d/n",stu[i].age);     printf("籍贯:%s/n",stu[i].jiguan);     printf("电话:%s/n",stu[i].dianhua);     printf("院系:%s/n",stu[i].yuanxi);     printf("班级:%s/n",stu[i].banji);       printf("是否继续查找?继续:1  返回主菜单:2/n");       scanf("%d",&c1);       switch(c1)       {       case 1:         chazhao();         return ;       case 2:         system("cls");         menu();         return;       }     }   if (strcmp(stu[i].xuehao,t)||strcmp(stu[i].name,t))   {     printf("无该学生信息!/n");     printf("是否继续查找?  继续:1  返回主菜单:2/n");     scanf("%d",&b1);     switch(b1)     {     case 1:       chazhao();       return;     case 2:       menu();       return ;     }   } } void shuliang() {   system("cls");   int n,h;   n=load();   printf("共有 %d 个学生的记录./n",n);   if(n==0)   {     printf("暂无学生信息!/n");     system("pause");     menu();   }   else   {     printf("是否显示学生信息?/n是:1  否:2/n");     scanf("%d",&h);     if(h==1)     {       show();     }     else     {       menu();     }   }   menu(); /*返回主函数*/ } int main() {   shouye();   denglu();   int test=1;   while(test)   {     switch(menuchoose())     {     case 0:       test=0;       printf("/n            ^-^谢谢使用!^-^     /n");       printf("       代码有点长,错误也有点多,望见谅^-^/n");       break;     case 1://增加学生学籍信息       add();       break;     case 2://删除某个学生信息       del();       break;     case 3://显示学生信息       show();       break;     case 4://修改学生信息       xiugai();       break;     case 5://查找某个学生信息       chazhao();       break;     case 6:       shuliang();//显示学生学籍数量       break;     }   }   return 0; } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选