赞
踩
利用C语言,数据结构实现简单的宿舍管理系统,可以录入学生信息,对学生信息进行排序,查询。
最简单的宿舍管理系统,觉得还行就点个赞吧!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #define N 10
- //定义管理人员信息结构体
- typedef struct{
- int number;//定义学号
- char name[20];//定义姓名
- int room;//定义宿舍号
- }Student;
- //定义存储顺序表
- typedef struct {
- Student s[20];
- int length;//定义长度
- }SqList;
-
- void CreatStudent(SqList *L,int n)//输入学生信息
- {
- //长度初始值为零
- for(int i=1;i<=n;i++)//for 循环
- {
- printf("输入第%d个管理人员信息:",i);//输入
- printf ("\n学号:");
- scanf("%d",&L->s[i].number);
- printf ("姓名:");
- scanf("%s",&L->s[i].name);
- printf ("宿舍号:");
- scanf("%d",&L->s[i].room);
- }
- L->length=n;
- FILE *fp;//定义一个指向文件的指针变量fp
- fp=fopen("room.txt","w+");//将fopen函数的返回值赋给指针变量fp,w可读可写 (fp指向了room文件)
- for(int i=1;i<=L->length;i++)
- {
- fprintf(fp,"%d %s %d\n",L->s[i].number,L->s[i].name,L->s[i].room);//在文件中输入学号,姓名,房号
- }
- printf("\n添加成功!");
- fclose(fp);//关闭文件
- }
-
- void output(SqList *L) //输出结果
- {
- int i;
- printf("\n=========================\n学号\t姓名\t宿舍号\n");
- for(i = 1; i<=L->length; i++)
- printf("%d\t%s\t%d\n",L->s[i].number, L->s[i].name,L->s[i].room);
- printf("==========================\n");
- }
-
- void NumberSort(SqList *L)//按学号进行排序
- {
- int i;//定义整形变量并给予i赋值
- FILE *fp;//打开文件
- int m,flag; //学号冒泡排序
- m=L->length-1;
- flag=1;
- while((m>0)&&(flag==1))
- {
- flag=0;
- for(i=1;i<=m;i++)
- if(L->s[i].number>L->s[i+1].number)
- {
- flag=1;
- L->s[0]=L->s[i];
- L->s[i]=L->s[i+1];
- L->s[i+1]=L->s[0];
- }
- }
- printf("按学号排序后的结果为:\n");
- output(L);
-
-
- }
-
-
- void NameSort(SqList *L)//按姓名进行排序
- {
- int i=1,j;
- FILE *fp;
- int m,flag; //姓名冒泡排序 (从小到大排序)
- m=L->length-1;
- flag=1;
- while((m>0)&&(flag==1))
- {
- flag=0;
- for(i=j;j<=m;j++)
- if(strcmp(L->s[j-1].name,L->s[j].name)>=0)
- {
- flag=1;
- L->s[0]=L->s[j];
- L->s[j]=L->s[j+1];
- L->s[j+1]=L->s[0];
- }
- }
- printf("按姓名排序后的结果为:\n");
- output(L);
- }
- void RoomSort(SqList *L)//按宿舍号进行排序
- {
- int i=1;
- FILE *fp;
- int m,flag; //宿舍号冒泡排序
- m=L->length-1;
- flag=1;
- while((m>0)&&(flag==1))
- {
- flag=0;
- for(i=0;i<=m;i++)
- if(L->s[i].room>L->s[i+1].room)
- {
- flag=1;
- L->s[0]=L->s[i];L->s[i]=L->s[i+1];L->s[i+1]=L->s[0];
- }
- }
- printf("按宿舍号后的结果为:\n");
- output(L);
- }
-
- void NumberSearch(SqList *L)//按学号进行查询
- {
- int i=1,k;
- int num;
- FILE *fp;
- int flag=0;
- printf("输入要查询管理人员的学号:");
- scanf("%d",&num);
- if((fp=fopen("room.txt","w+"))!=NULL)
- {
- FILE *fp1;
- if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
- for(i=1;i<=L->length;i++)
- {
- if(L->s[i].number==num)
- {
- k=i;
- flag=1;
- }
- }
- if(flag==1)
- {
- printf("学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- }
- fclose (fp1);
- }
- else
- printf("没有找到该学生,查询失败!");
- fclose (fp);
- }
- void NameSearch(SqList *L)//按姓名进行查询
- {
- int i=1,k,flag=0;
- char xingming[5];
- L->length=3;
- FILE *fp;
- printf("输入要查询学生的姓名:");
- scanf("%s",xingming);
- if((fp=fopen("room.txt","w+"))!=NULL)
- {
- FILE *fp1;
- if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
- for(i=1;i<=L->length;i++)
- {
- if(strcmp(L->s[i].name,xingming)==0)
- {
- k=i;
- //flag=1;
- }
- flag=1;
- }
- if(flag==0)
- printf("没有找到该学生,查询失败!");
- else
- printf("学号:%d\n姓名:%s\n房间号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- fclose (fp1);
- }
- fclose(fp);
- }
- void RoomSearch(SqList *L)//按宿舍号进行查询
- {
- int i=1,k;int num;
- //L.length=3;
- FILE *fp;
- int flag=0;
- //m=L.length-1;
- //flag=1;
- printf("输入要查询学生的宿舍号:");
- scanf("%d",&num);
- if((fp=fopen("room.txt","w+"))!=NULL)
- {
- FILE *fp1;
- if((fp1=fopen("shi.txt","a"))!=NULL)//写文件,原内容上增加内容
- for(i=1;i<=L->length;i++)//
- {
- if(L->s[i].room==num)
- {
- k=i;
- flag=1;
- }
- }
- if(flag==1)//0
- printf("学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- fprintf(fp1,"学号:%d\n姓名:%s\n宿舍号:%d\n",L->s[k].number,L->s[k].name,L->s[k].room);
- fclose (fp1);
- }
- else
- printf("没有找到该学生,查询失败!");
-
- fclose (fp);
- }
- int main()
- {
- SqList L;
- int n,option;
- while(1)
- {
- printf("****************************************\n");
- printf("1.创建 2.按学号排序\n ");
- printf("3.按姓名排序 4.按宿舍号排序\n");
- printf("5.按学号查询 6.按姓名查询\n");
- printf("7.按宿舍号查询 8.退出\n");
- printf("*****************************************\n");
- printf("请选择输入的数字:");
- scanf("%d",&option);
- switch(option)
- {
- case 1:
- printf("请输入学生个数:");
- scanf("%d",&n);
- CreatStudent(&L,n);
- output(&L);
- break;
- case 2:
- NumberSort(&L);
- break;
- case 3:
- NameSort(&L);
- break;
- case 4:
- RoomSort(&L);
- break;
- case 5:
- NumberSearch(&L);
- break;
- case 6:
- NameSearch(&L);
- break;
- case 7:
- RoomSearch(&L);
- break;
- case 8:
- exit(0);
- break;
- }
- }
- return 0;
- }
-
测试数据:
1、新建
2、排序
3、查询
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。