C语言实现宿舍管理课程设计

Ilona ·
更新时间:2024-11-10
· 1599 次阅读

本文实例为大家分享了C语言实现宿舍管理的具体代码,供大家参考,具体内容如下

和本编前几个程序结构差不多,比较简单直观,希望可以给你带来帮助。

#include <stdio.h> #include <stdlib.h> #include <string.h> #include<Windows.h> typedef struct student {     int might1;     int might2;     char user[20];//账号     char mima[20];//密码     char name[20];//姓名         char sex[5];//性别         char num[20];//学号           char classs[20];//班级         char floor[20];//楼号        char dorm[20];//宿舍号         struct student *next; }LinkList; void menu3(struct student *p,char us[20]); void menu1(struct student *p); void menu2(struct student *p); void menu33(struct student *p); void menu22(struct student *p); void savestudentFile(struct student *L); void Look(struct student *p) {     struct student *q=p->next;     char us[20];     int flag = 0,i;     system("cls");     printf("\t请输入你要打印的学生的账号:\n");     scanf("%s",us);     while (q!= NULL)     {         if(strcmp(q->user,us)==0)         {             printf("账号:%s,密码:%s,姓名:%s,楼号:%s,宿舍号:%s\n",q->user,q->mima,q->name,q->floor,q->dorm);             flag=1;         }         q = q->next;     }     if (flag == 0)     {         printf("\t无该学生信息\n");     }     printf("按回车返回菜单!\n");     getchar();     getchar();     menu2(p); } void ADD(struct student *p) {     struct student *q, *n = p;     struct student *h = p->next;     int flag = 0;     system("cls");     q = (struct student *)malloc(sizeof(struct student));     q->next = NULL;     q->might1=0;     q->might2=2;     printf("请输入选择添加的学生:\n");     printf("账号 :");     scanf("%s",q->user);     printf("密码 :");     scanf("%s",q->mima);     printf("姓名 :");     scanf("%s", q->name);     printf("性别 :");     scanf("%s",q->sex);     printf("班级 :");     scanf("%s",q->classs);     printf("学号 :");     scanf("%s",q->num);     printf("楼号 :");     scanf("%s",q->floor);     printf("宿舍号 :");     scanf("%s",q->dorm);     getchar();      while (h != NULL)     {         if (strcmp(h->user,q->user)==0)         {             flag = 1;             printf("\t该学号已存在\n");             Sleep(1000);             ADD(p);             break;         }         h = h->next;     }     while (n->next != NULL)     {         n = n->next;     }     n->next=q;     if (flag == 0)     {         printf("\t添加成功\n");         printf("\t按任意键返回菜单\n");     }     else         printf("\t添加失败\n");     printf("按回车返回菜单!\n");     getchar();     menu2(p); } void Dele(struct student *p) {     struct student *q = p->next;     struct student *n = p;     char us[20];     int flag = 0;     system("cls");     printf("\t请输入你要删除的学生学号\n");     scanf("%s", us);     while (q != NULL)     {         if (strcmp(q->user,us)==0)         {             flag = 1;             n->next = q->next;             break;         }         n = q;         q = q->next;     }     if (flag != 1)     {         printf("\t无该学生信息\n");     }     else     {         printf("\t删除成功\n");     }     printf("按回车返回菜单!\n");     getchar();     getchar();     menu2(p); } void Quan(struct student *p) {     int i,m,j;     char us[20],mi[20],na[20],se[5],nu[20],cla[20],flo[20],dar[20];     struct student *q=p->next->next;     printf("请输入要修改的学生账户:");     scanf("%s",us);     while(q!=NULL)     {         if(strcmp(q->user,us)==0)         {             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("11.返回上一层\n");             scanf("%d",&i);             switch(i)             {             case 1:printf("新修改的姓名\n");scanf("%s",na);j=1;strcpy(q->name,na);break;             case 2:printf("新修改的性别\n");scanf("%s",se);j=1;strcpy(q->sex,se);break;             case 3:printf("新修改的学号\n");scanf("%s",nu);j=1;strcpy(q->num,nu);break;             case 4:printf("新修改的班级\n");scanf("%s",cla);j=1;strcpy(q->classs,cla);break;             case 5:printf("新修改的楼号\n");scanf("%s",flo);j=1;strcpy(q->floor,flo);break;             case 6:printf("新修改的宿舍号\n");scanf("%s",dar);j=1;strcpy(q->dorm,dar);break;             case 7:printf("新修改的账号\n");scanf("%s",us);j=1;strcpy(q->user,us);break;             case 8:printf("新修改的密码\n");scanf("%s",mi);j=1;strcpy(q->mima,mi);break;             case 9:j=1;q->might2=3;break;             case 10:j=1;q->might2=2;break;             case 11:menu2(p);break;             default:printf("请输入合法量!\n");break;             }         }         q=q->next;     }     if(j==1)     {         printf("修改成功!\n");     }     if(j==0)     {         printf("修改失败!\n");     }     printf("按回车返回菜单!\n");     getchar();     getchar();     menu2(p); } void Browse(struct student *p,char us[20]) {     struct student *q = p->next;     int flag = 0;     system("cls");     {         while (q != NULL)         {             if (strcmp(q->user,us)==0)             {                 flag = 1;                 printf("\t该学生信息  姓名:%s   学号:%d   性别:%s   班级:%s   楼号:%s   寝室号:%s\n", q->name, q->num, q->sex, q->classs, q->floor,q->dorm);             }             q = q->next;         }         if (flag == 0)         {             printf("\t你无此权限\n");         }         printf("按回车返回菜单!\n");         getchar();         getchar();         menu3(p,us);     } } void modify(struct student *p,char us[20]) {     struct student *q=p->next;     char mi[20],na[20],se[5],nu[20],cla[20],flo[20],dar[20];     int j,i;     system("cls");     printf("\n\n\n**********修改学生住宿信息**********\n");     while(q!=NULL)     {         if(strcmp(q->user,us)==0)         {             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");             scanf("%d",&i);             switch(i)             {             case 1:printf("新修改的姓名\n");scanf("%s",na);j=1;strcpy(q->name,na);break;             case 2:printf("新修改的性别\n");scanf("%s",se);j=1;strcpy(q->sex,se);break;             case 3:printf("新修改的学号\n");scanf("%s",nu);j=1;strcpy(q->num,nu);break;             case 4:printf("新修改的班级\n");scanf("%s",cla);j=1;strcpy(q->classs,cla);break;             case 5:printf("新修改的楼号\n");scanf("%s",flo);j=1;strcpy(q->floor,flo);break;             case 6:printf("新修改的宿舍号\n");scanf("%s",dar);j=1;strcpy(q->dorm,dar);break;             case 7:printf("新修改的账号\n");scanf("%s",us);j=1;strcpy(q->user,us);break;             case 8:printf("新修改的密码\n");scanf("%s",mi);j=1;strcpy(q->mima,mi);break;             case 9:menu2(p);break;             default:printf("请输入合法量!\n");break;             }         }         q=q->next;     }     if(j==1)     {         printf("修改成功!\n");     }     if(j==0)     {         printf("修改失败!\n");     }     printf("按回车返回菜单!\n");     getchar();     getchar();     menu3(p,us); } void inquire(struct student *p,char us[20]) {     struct student *q = p->next;     char nu[20];     char name[20];     char flo[20];     char dor[20];     int k;     int flag=0;     system("cls");     printf("\n\n\t\t\t1.按学号查询\n");     printf("\t\t\t2.按姓名查询\n");     printf("\t\t\t3.按楼号统计\n");     printf("\t\t\t4.按楼号+寝室号查询\n");     printf("\t\t\t0.结束查询返回上一层\n");     printf("请选择:");     scanf("%d",&k);     switch(k)     {     case 1:         printf("\n\n\n**********按学号查询**********\n");         printf("\n 请输入要查询的学号:");         scanf("%s",nu);         while (q != NULL)         {             if (strcmp(q->num,nu)==0)             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 2:         printf("\n\n\n**********按姓名查询**********\n");         printf("\n 请输入要查询的姓名:");         scanf("%s",name);                 while (q!=NULL)         {             if (strcmp(name,q->name)==0)             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 3:         printf("\n\n\n**********按楼号查询**********\n");         printf("\n 请输入要查询的楼号:");         scanf("%s",flo);         getchar();         while (q != NULL)         {             if (strcmp(flo,q->floor)==0)             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 4:         printf("\n\n\n**********按楼号+寝室号查询**********\n");         printf("\n 请输入要查询的楼号+寝室号:");         scanf("%s %s",flo,dor);         while (q != NULL)         {             if ((strcmp(flo,q->floor)==0)&&(strcmp(dor,q->dorm)==0))             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 0:menu3(p,us);break;     }     if(flag==0)     {         printf("无此信息!");         Sleep(1500);         menu3(p,us);     }     if(flag==1)     {         printf("查询成功!\n");         printf("按回车返回菜单!\n");         getchar();         menu3(p,us);     } } void statistics(struct student *p,char us[20]) {     struct student *q = p->next;     char cla[20];     char name[20];     char flo[20];     char dor[20];     int flag=0,k;     system("cls");     printf("\n\n\t\t\t1.按班级统计\n");     printf("\t\t\t2.按楼号统计\n");     printf("\t\t\t3.按楼号+寝室号统计\n");     printf("\t\t\t0.结束查询返回上一层\n");     printf("请选择:");     scanf("%d",&k);     switch(k)     {     case 1:         printf("\n\n\n**********按班级查询**********\n");         printf("\n 请输入要查询的班级:");         scanf("%s",cla);         while (q != NULL)         {             if (strcmp(q->classs,cla)==0)             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 2:         printf("\n\n\n**********按楼号查询**********\n");         printf("\n 请输入要查询的楼号:");         scanf("%s",flo);         while (q != NULL)         {             if (strcmp(flo,q->floor)==0)             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 3:         printf("\n\n\n**********按楼号+寝室号查询**********\n");         printf("\n 请输入要查询的楼号+寝室号:");         scanf("%s%s",flo,dor);         while (q != NULL)         {             if ((strcmp(flo,q->floor)==0)&&(strcmp(dor,q->dorm)==0))             {                 flag=1;                 printf("\t该学生信息\n姓名:%s \n学号:%d \n性别:%s \n班级:%s \n楼号:%s \n寝室号:%s\n",  q->name, q->num, q->sex, q->classs, q->floor, q->dorm);             }             q = q->next;         }             break;     case 0:menu3(p,us);break;     }     if(flag==0)     {         printf("无此信息!\n");         Sleep(1500);         menu3(p,us);     }     if(flag==1)     {         printf("查询成功!");         printf("按回车返回菜单!\n");         getchar();         menu3(p,us);     } } void amend(LinkList *p) {     struct student *q=p->next;     char acc[20],poss[20],ac[20];     int flag=0,i;     system("cls");     printf("请输入要修改的账号:");     scanf("%s",acc);     while(q!=NULL)     {         if(strcmp(q->user,acc)==0)         {             flag=1;             printf("1.仅修改密码\n2.密码账户均修改\n");             scanf("%d",&i);             if(i==1)             {                 printf("请输入新密码:");                 scanf("%s",poss);                 strcpy(q->mima,poss);break;             }             if(i==2)             {                 printf("请输入新账号:");                 scanf("%s",ac);                 getchar();                 printf("请输入新密码:");                 scanf("%s",poss);                 strcpy(q->user,ac);                 strcpy(q->mima,poss);break;             }         }         q=q->next;     }     if(flag==0)     {         printf("账户错误!\n");         printf("\t请按回车键返回菜单\n");     }     if(flag==1)     {         printf("修改成功!\n");         printf("\t请按回车键返回菜单\n");     }     getchar();     getchar();     menu2(p); } void menu33(struct student *p) {     int i=0;     struct student *h=p->next->next;     struct student *t;     char a[20],b[20];     system("cls");     printf("请输入账户:");     scanf("%s",a);     getchar();     printf("请输入密码:");     scanf("%s",b);     getchar();     while(h!=NULL)     {         if((strcmp(h->user,a)==0)&&(strcmp(h->mima,b)==0))         {             t=h;             if(h->might2==2)             {                 i=1;                 menu3(p,a);break;             }         }         h=h->next;     }     if(t->might2==3)     {         printf("该账号已被冻结");         Sleep(2000);         menu1(p);     }     if(i==0)     {         printf("密码或账号错误!\n");         Sleep(2000);         menu1(p);     } } void menu3(struct student *p,char us[20]) {     int i;     system("cls");     while(1)     {         printf("        *****************************************\n");         printf("        *****                               *****\n");         printf("        *****     欢迎使用宿舍管理系统      *****\n");         printf("        ****         1.个人信息浏览          ****\n");         printf("        ****         2.个人信息修改          ****\n");         printf("        ****         3.宿舍信息查询          ****\n");         printf("        ****         4.宿舍信息统计          ****\n");         printf("        ****         5.返回上一层            ****\n");         printf("        ****         6.退出                  ****\n");         printf("        *****************************************\n");         scanf("%d",&i);         switch(i)         {         case 1:Browse(p,us);break;//个人信息浏览         case 2:modify(p,us);break;//个人信息修改         case 3:inquire(p,us);break;//宿舍信息查询         case 4: statistics(p,us);break;//宿舍信息统计          case 5:menu1(p);break;         case 6:savestudentFile(p);exit(0);         default:printf("\t输入不合法量\n");         }     } } void menu22(struct student *p) {     struct student *h=p->next;     char a[20],b[20];     int i=0;     system("cls");     printf("请输入账户:");     scanf("%s",a);     getchar();     printf("请输入密码:");     scanf("%s",b);     getchar();     while(h!=NULL)     {         if((strcmp(h->user,a)==0)&&(strcmp(h->mima,b)==0))         {             i=1;             menu2(p);break;         }         h=h->next;     }     if(i==0)     {         printf("密码或账号错误!\n");         Sleep(2000);         menu1(p);     } } void menu2(struct student *p) {     int c;     system("cls");     while(1)     {         printf("        ****************************************\n");         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("        ****************************************\n");          scanf("%d",&c);         switch(c)         {         case 1:Look(p);break;//用户资料打印         case 2:ADD(p);break;//添加用户         case 3:Dele(p);break;//删除用户         case 4:Quan(p);break;//修改用户权限          case 5:menu1(p);break;         case 6:amend(p);break;         case 7:savestudentFile(p);exit(0);         default:printf("请输入合法量!\n");         }     } } void menu1(struct student *p) {     int a;     system("cls");     while(1)     {         printf("        *****************************************\n");         printf("        *****                               *****\n");         printf("        *****     欢迎使用宿舍管理系统      *****\n");         printf("        *****                               *****\n");         printf("        *****          1.管理员登陆         *****\n");         printf("        *****                               *****\n");         printf("        *****          2.用户登陆           *****\n");         printf("        *****                               *****\n");         printf("        *****                               *****\n");         printf("        *****************************************\n");         scanf("%d",&a);         switch(a)         {         case 1:menu22(p);break;         case 2:menu33(p);break;         case 3:exit(0);break;         default:printf("请输入合法量!\n");         }     } } void savestudentFile(struct student *L) {     FILE *fp;     struct student *p;     p=L->next;     fp=fopen("dorm.txt","w");     if(fp==NULL)     {         printf("无法打开此文件\n");         exit(0);     }     while(p)     {         fprintf(fp,"%d %d %s %s %s %s %s %s %s %s \n",p->might1,p->might2,p->user,p->mima,p->name,p->sex,p->num,p->classs,p->floor,p->dorm);         p=p->next;     }     fclose(fp); } void ListInsert(struct student *L,struct student *n) {     struct student *q=L;     n->next=NULL;     while(q->next!=NULL)     {         q=q->next;     }     q->next=n; } void readstudentput(struct student *L) {     FILE *fp;     struct student *n;     struct student *m;     char us[20],mi[20],na[20],se[5],nu[20],cla[20],flo[20],dar[20],a[20],b[20];     int mi1,mi2;     fp=fopen("dorm.txt","r");     if(fp==NULL)     {         fp=fopen("dorm.txt","w");         exit(0);     }     else     {         if(fgetc(fp)==-1)         {             printf("此账号初次使用:\n请输入初始账号:");             scanf("%s",a);             getchar();             printf("请输入初始密码:");             scanf("%s", b);              getchar();             m=(struct student *)malloc(sizeof(LinkList));             strcpy(m->user,a);//初始账户             strcpy(m->mima,b);//初始密码             strcpy(m->name ,"0");             strcpy(m->sex ,"0");             strcpy(m->num ,"0");             strcpy(m->classs ,"0");             strcpy(m->floor ,"0");             strcpy(m->dorm,"0");             m->might1=1;             m->might2=0;             m->next=NULL;             L->next=m;         }         if(fgetc(fp)!=-1)         {             fseek(fp,-2L,1);         }         while(!feof(fp))         {             fscanf(fp,"%d %d %s %s %s %s %s %s %s %s ",&mi1,&mi2,us,mi,na,se,nu,cla,flo,dar);             n=(struct student *)malloc(sizeof(struct student));             strcpy(n->user,us);             strcpy(n->mima,mi);             strcpy(n->name ,na);             strcpy(n->sex ,se);             strcpy(n->num ,nu);             strcpy(n->classs ,cla);             strcpy(n->floor ,flo);             strcpy(n->dorm,dar);             n->might1=mi1;             n->might2=mi2;             ListInsert(L,n);         }     }     fclose(fp); } int main() {     struct student *p;     p = (struct student *)malloc(sizeof(struct student));     p->next = NULL;     readstudentput(p);     menu1(p);     system("pause");     return 0; }



课程设计 课程 C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号