视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
C语言——学生宿舍管理系统
2025-10-02 14:02:27 责编:小OO
文档
#include

#include

#include

//定义学生结构体 

struct Student

{

    int dorNo;   //宿舍号

    char stuName[20];  //学生姓名

    int  stuNo;       //学生学号

    char stuSex[10];      //性别

    char  dept[20];    //系别

    char major[20];     //专业

    int tel;       //电话     

} *stu;

//函数指针 

void(*p)(struct Student *,int ); 

//录入学生信息 

void insert(struct Student *,int );

//按学号查找 

void noSeek(struct Student *,int ); 

//函数功能:打印信息

void output(struct Student *,int );

/*函数功能:将数据写入文件*/

void write(struct Student *,int ); 

/*函数功能:读取文件数据*/

void read(struct Student *,int ); 

//按宿舍查找 

void dSeek(struct Student *,int );

//按姓名查找 

void naSeek(struct Student *,int );

//按系别查找 

void deSeek(struct Student *,int); 

//删除学生信息 

void del(struct Student *,int ); 

//修改学生信息 

void modify(struct Student *,int );

//增加学生信息 

 void add(struct Student *,int); 

//全局变量来记录存储学生的人数 

int num=0; 

//主函数 

int main()

    

    char ch[10]; 

    printf("         \--------欢迎进入宿舍管理系统--------\\n");

    printf("请输入你想存储的学生人数:") ;

    scanf("%d",&num); 

    system("cls");

    //申请动态存储空间 

    stu=(struct Student *)malloc((sizeof(struct Student))*num); 

    while(1){

         system("cls");

         printf("\\n");

         printf("         \--------欢迎进入宿舍管理系统--------\\n");

         printf("    \ ***********************************************************\\n");

         printf("               \1.录入学生信息    ");

         printf("          \2.按学号查询      \\n");

         printf("            \3.按宿舍号查询      ");

         printf("          \4.按姓名查询    \\n");

         printf("            \5.按系别或专业查询  ");

         printf("          \6.添加信息      \\n");

         printf("             \7.修改信息         ");

         printf("          \8.保存信息     \\n");

          printf("               \9.读取信息     ");

         printf("          \10.删除信息    \\n");

         printf("          \0.退出系统   \\n"); 

         printf("    \*************************************************************\\n");

         printf("------------------------------------------------------------------\\n");

         printf("        \请选择你想实现的功能:");

         scanf("%s",&ch);

         //用函数指针指向各函数 

         if(strcmp(ch,"1")==0)

         {

            p=insert;

             (*p)(stu,num);

             

         }

         else if (strcmp(ch,"2")==0)

         {

             

             p=noSeek;

             (*p)(stu,num); 

         }

         else if(strcmp(ch,"3")==0)

         {

             p=dSeek;

             (*p)(stu,num);

         }    

         else if(strcmp(ch,"4")==0)

         {

             p=naSeek;

           (*p)(stu,num);

         }

          else if(strcmp(ch,"5")==0)

         {

             p=deSeek;

             (*p)(stu,num); 

         }

          else if(strcmp(ch,"6")==0)

         {

                 p=add;

             (*p)(stu,num);

         }

          else if(strcmp(ch,"7")==0)

         {

             p=modify;

           (*p)(stu,num);

         }

          else if(strcmp(ch,"8")==0)

         {

             p=write;

           (*p)(stu,num);

         }

         else if(strcmp(ch,"9")==0) 

         {

                 p=read;

               (*p)(stu,num);

         } 

          else if(strcmp(ch,"10")==0)

         {

             p=del;

           (*p)(stu,num);

         }    

        

         else if(strcmp(ch,"0")==0)

         {

            exit(0); 

         }

       // write(stu,num);

       //read(stu,num);    

        

     } 

    return 0; 

}  

//输入学生相关信息 

void insert(struct Student *stu,int num)

{

    int i=0;

    char ch;

    system("cls"); 

    do{

      if(i           {

           printf("输入第%d个学生的宿舍号:",i+1);

           scanf("%d",&stu[i].dorNo) ; 

           printf("\\n姓名:");

           scanf("%s",&stu[i].stuName);

           printf("\\n学号:");

           scanf("%d",&stu[i].stuNo);

           printf("\\n性别:");

           scanf("%s",&stu[i].stuSex);

           printf("\\n系别:");

           scanf("%s",&stu[i].dept);

           printf("\\n专业:"); 

           scanf("%s",&stu[i].major); 

           printf("\\n电话:");

           scanf("%d",&stu[i].tel);

              i++;

        }

       else 

        {  

           printf("    \\n\       人数已满无法继续输入");

           printf("\\n是退出该功能输入?(Y/N):");

           ch=getchar();

           ch=getchar(); 

        } 

     

    }while(ch!='y'&&ch!='Y'); 

       write(stu,num);

     system("cls"); 

//按学号查找 

 void noSeek(struct Student *stu,int num)

{

      int i;

      int m; 

      char ch; 

      char a; 

      system("cls"); 

printf("\\n确认您已录入学生信息?:");

      a=getchar();

      a=getchar(); 

      if(a!='n'&&a!='N') 

      { 

         printf("\\n请输入你想要查找的学生学号:");    

         scanf("%d",&m);

for(i=0;i         { 

          if(m==stu[i].stuNo)

          { 

           printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

          } 

       

         } 

      }

      else

      { 

          printf("\\n\    没有你要查找的学生信息。\\n") ; 

      } 

      printf("\\n   请按任意键返回......."); 

      getchar(); 

      getchar(); 

}

//按宿舍查找 

void dSeek(struct Student* stu,int num )

{

      int i;

      int dor; 

      char ch,a; 

      system("cls"); 

printf("\\n确认您已录入学生信息?:");

      a=getchar();

      a=getchar(); 

      if(a!='n'&&a!='N') 

      {  

         printf("\\n请输入你想要查找的学生宿舍号:");    

         scanf("%d",&dor);

for(i=0;i        {

            if(dor==stu[i].dorNo) 

          { 

           printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

          } 

        }

      } 

      else 

      {

            printf("    \      没找到你要的学生信息。。\\n\\n"); 

        } 

      printf("\\n   请按任意键返回......."); 

      getchar(); 

      getchar();

    

}

//按姓名查询 

void naSeek(struct Student *stu,int num)

{

      int i; 

      char name[20];

      char ch,a; 

      system("cls"); 

printf("\\n确认您已录入学生信息?:");

      a=getchar();

      a=getchar(); 

      if(a!='n'&&a!='N') 

      {  

         printf("\\n请输入你想要查找的学生姓名:");

         scanf("%s",name);

for(i=0;i         {

           if(strcmp(name,stu[i].stuName)==0) 

           { 

            printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

           } 

         }

      } 

      else 

      {

            printf("   \\n \\n\      没找到你要的学生信息。。\\n\\n"); 

            

      } 

   

      printf("\\n   请按任意键返回......."); 

      getchar(); 

      getchar();

     

//按系别或专业查询 

void deSeek(struct Student *stu,int num)

{

      int i; 

      char de[20];

      char ch,a;

      system("cls");

printf("\\n确认您已录入学生信息?:");

      a=getchar();

      a=getchar();   

      if(a!='n'&&a!='N') 

      {  

       printf("\\n\  请输入你想要查找的系别或专业:");    

         scanf("%s",de); 

     

for(i=0;i           {

           if(strcmp(de,stu[i].dept)==0) 

           { 

            printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

           }

        

         }

      } 

      else 

      {

            printf("    \\n\\n\      没找到你要的学生信息。。\\n"); 

      } 

        printf("\\n   请按任意键返回......."); 

      getchar(); 

      getchar();

        

}

/*函数功能:将数据写入文件*/

void write(struct Student *stu,int num)

{

    int i;             //控制循环

    FILE *fp ;         //定义文件指针

    if(stu[num-1].stuNo!=0) 

    { 

    

     if((fp = fopen("E:\\\\student.txt

     {

        printf("\\n\文件没有打开!程序结束!");

        getchar();    //等待用户观察

         exit(0);      //结束整个程序

     }

     else

      {

     for(i=0; i        {

            fprintf(fp,"\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

        

      

        }

           getchar(); 

            printf("\\n\    已将学生信息保存在了D盘根目录下的student.txt文件中。\\n");

      }

    } 

    else

    {

        printf("\\n\    没有学生信息。"); 

    } 

    getchar(); 

    fclose(fp);

    

}

/*函数功能:读取文件数据*/

void read(struct Student *stu,int num)

{

    int i;

    FILE * fp ;

    if(stu[num-1].stuNo!=0)

    { 

      

       if((fp = fopen("E:\\\\student.txt

       {

         printf("数据读取失败!\\n");

         exit(0);

       }

       else

       {

     for(i=0; i        {

          //从文件中读出数据     

         fscanf(fp,"\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",&stu[i].dorNo,&stu[i].stuName,&stu[i].stuNo,&stu[i].stuSex,&stu[i].dept,&stu[i].major,&stu[i].tel); 

          printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

        }

        

       }

     } 

     else

     {

         printf("\\n\  没有学生信息。"); 

     } 

    getchar();

    getchar();

    fclose(fp);

}

//修改信息 

void modify(struct Student *stu,int num)

{   

    int m; 

    int i; 

    char ch; 

    system("cls"); 

    printf("请输入你想修改学生的学号:");

    scanf("%d",&m);

for(i=0;i    {

        if(m==stu[i].stuNo) 

        {

         printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

printf("\\n您确认修改该学生信息吗?:");

         ch=getchar();

         ch=getchar(); 

          if(ch!='N'&&ch!='n') 

          {

            printf("\\n输入该学生的宿舍号:");

           scanf("%d",&stu[i].dorNo) ; 

           printf("\\n姓名:");

           scanf("%s",&stu[i].stuName);

           printf("\\n学号:");

           scanf("%d",&stu[i].stuNo);

           printf("\\n性别:");

           scanf("%s",&stu[i].stuSex);

           printf("\\n系别:");

           scanf("%s",&stu[i].dept);

           printf("\\n专业:"); 

           scanf("%s",&stu[i].major); 

           printf("\\n电话:");

           scanf("%d",&stu[i].tel); 

           write(stu,num); 

           system("cls");

           printf(" \\n\     修改成功\\n\\n");

           output(stu,num);

          } 

          else

           {

              printf("\\n\  无法修改信息\\n");  

               //break; 

           } 

        }

        else

        {

             continue;

        } 

      } 

    printf("\\n   请按任意键返回......."); 

    getchar();

    getchar();

//删除相关学生信息 

void del(struct Student *stu,int num)

{

     int no;

     int i; 

     char ch; 

     int j; 

     printf("\\n请输入您想删除的学生学号:");

     scanf("%d",&no);

   

      for(i=0;i        {

          if(no==stu[i].stuNo)

          {

            printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

printf("\\n您确认删除该学生信息?:");

            ch=getchar();

            ch=getchar();

            if(ch!='n'&&ch!='N')             //实现删除学生信息 

            { 

             for(j=i;j<=num-1;j++)

                {

                        *(stu+j)=*(stu+j+1); 

                        

                 } 

                   num--; 

                printf("\\n\     已成功删除该学生信息\\n");

                write(stu,num);  

                output(stu,num);

            } 

            else

            {

                 

                  printf("\\n \   无法删除\\n"); 

            } 

          }

    

          else

          {

               continue;

          } 

     } 

     printf("\\n   请按任意键返回......."); 

     getchar(); 

     getchar(); 

    

//添加学生信息 

void add(struct Student *stu,int num)

{

   int no;

   int i; 

   printf("\\n \    请输入你想添加的学生人数:");

   scanf("%d",&no);

   if((stu[num-1].stuNo)!=0)

   {

         stu=(struct Student *)realloc(stu,num+no);

    for(i=num;i      {

             *(stu+num+no)=*(stu+num);

           printf("\\n输入第%d个学生的宿舍号:",i+1);

             scanf("%d",&stu[i].dorNo) ; 

           printf("\\n姓名:");

           scanf("%s",&stu[i].stuName);

           printf("\\n学号:");

           scanf("%d",&stu[i].stuNo);

           printf("\\n性别:");

           scanf("%s",&stu[i].stuSex);

           printf("\\n系别:");

           scanf("%s",&stu[i].dept);

           printf("\\n专业:"); 

           scanf("%s",&stu[i].major); 

           printf("\\n电话:");

           scanf("%d",&stu[i].tel);

        

      } 

            num=num+no;

for(i=0;i      {

         printf("\\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel); 

    

      } 

      

            //write(stu,num);

    } 

    else

    {

        printf("\\n\       无法添加学生信息。。\\n");

     } 

      

      printf("\\n   请按任意键返回......."); 

      getchar(); 

      getchar();  

//打印学生信息

void output(struct Student *stu,int num)

{

    int i; 

    system("cls"); 

    if(stu[num-1].stuNo!=0)

    {

      printf("     \  \\n\\n更新学生信息如下:"); 

for(i=0;i      {

       printf("   \   \\n宿舍号: %d\\n姓名: %s\\n学号: %d\\n性别: %s\\n系别: %s\\n专业:%s\\n电话号码: %d\\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);     

      }

    } 

    else 

    {

      printf("\\n没有学生信息."); 

    }

  

//程序结束下载本文

显示全文
专题