精华内容
下载资源
问答
  • 宿舍管理查询系统 } 同名情况 if (flag) fseek(fp, locate, SEEK_SET; } if (flag == 0) printf"\n 没有符合条件的学生的记录 \n; fclose_fp; fclose(fp; } void check_out){ char stu_num[20]; char dorm_num[20]; ...
  • 河 南 工 程 学 院 数据结构课程设计 成果报告 姓 名 学 号 学 院 计算机学院 专业班级 计算机科学与技术 1521 专业课程 数据结构 指导老师 李 芳 2016年6月20日 宿舍管理查询系统 PAGE III 河南工程学院计算机学院 ...
  • 为宿舍管理人员编写一个宿舍管理查询软件。 要求: 1)建立数据文件,数据文件按关键字(姓名,学号,房号)进行排序(冒泡,选择,插入排序等任意一种) 2)查询菜单(用二分法实现以下操作) A.按姓名查询 B...
  • 宿舍查询系统C语言

    2010-04-20 12:48:35
    该程序是由C语言编写的一个宿舍管理查询软件,其主要功能是实现对学生信息的增加、删除、修改、查询、排序、存储、加载。其中查询可以分别以姓名、学号、寝室号为关键字查询学生信息。排序可以分别以学号和寝室号为...
  • C语言——宿舍管理查询系统设计

    千次阅读 多人点赞 2018-04-17 12:38:05
    数据结构——宿舍管理查询系统设计算法实现:宿舍管理查询系统设计1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: A. 采用交互工作方式 B. 建立数据文件 ,数据文件按关键字(姓名、学号...

    数据结构——宿舍管理查询系统设计

    算法实现:

    宿舍管理查询系统设计
    1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
      A. 采用交互工作方式
      B. 建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
    2) 查询菜单: (用二分查找实现以下操作)
      A. 按姓名查询 
      B. 按学号查询 
      C. 按房号查询
    3) 打印任一查询结果(可以连续操作)

     

    程序:

    #include<stdio.h>

    #include<stdlib.h>

    #include<string.h>                   //使用字符串

    #define X 40                         //现性表存储空间的初始分配量

    #define increase 10                  //现性表存储空间的分配量增量

    int f,t=0;                           //定义全局变量

    typedef struct

    {

    int xuehao;

    int fanghao;

    char name[20];   //字符串存放姓名

    }stu;

    stu stud;

    typedef struct

    {

    int length;       //长度

    int listsize;     //占用内存空间

    stu*elem;         //引用对象stu的数据成员elem

    }linklist;

     

    //线性表初始化

    void init(linklist & l)     //&指针应用,取变量地址

    {

    l.length=0;

    l.listsize=X;

    l.elem=(stu*)malloc(X*sizeof(stu));      //指针使用要前初始化

    }

    //操作菜单

    void caozuo()

    {

    printf("                  请选择操作:\n\n");

    printf("\n");

    printf("   1.姓名排序       2.学号排序     3.房号排序    \n\n");

    printf("   4.姓名查找       5.学号查找     6.房号查找    \n\n");

    printf("   7.学号插入       8.学号删除    \n\n  ");

    printf(" 输入0,退出操作\n");

    if(t==1)

    {

    printf("输入数字:\n");

    scanf("%d",&f);

    if(f<0 && f>9)

    {

    system("cls");          //清除屏幕上之前显示内容

    printf("\n");

    printf("重新输入:\n");

    caozuo();

    }

    }

    }

    //返回主界面

    void disp()

    {

    char c;

    fflush(stdin);

    printf("\n按任意键进入主界面:");

    scanf("%c",&c);

    system("cls");

    }

    //无学生记录返回主界面

    void panduan3()

    {

    printf("无学生记录\n");

    disp();

    caozuo();

    }

    //输入学生信息

    void shuru(linklist l)

    {

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

         fflush(stdin);          //清除数据,得到正确的输入数据

    gets(stud.name);

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

    fflush(stdin);

        scanf("%d",&stud.xuehao);

    printf("输入房号:\n");

        scanf("%d",&stud.fanghao);

    }

    //创建学生类信息表

    void chuangjian(linklist & l)

    {

    if(l.length>=l.listsize)       //判断是否超过初始值,超过,另行分配

    {

    stu*newbase;

    newbase=(stu*)realloc(l.elem,(X+increase)*sizeof(stu));

    l.elem=newbase;

    l.listsize+=increase;

    }

    int i=2;

    char ch;

    printf("\n");

    printf("输入第一个学生信息\n");

    shuru(l);

       ch=getchar();

    strcpy(l.elem[l.length].name,stud.name);

       l.elem[l.length].xuehao=stud.xuehao;

       l.elem[l.length].fanghao=stud.fanghao;

       l.length++;

    printf("是否继续Y/N:");

    scanf("%c",&ch);

    printf("\n");

    while(ch=='Y')

    {

    printf("输入第%d个学生信息\n",i);

       shuru(l);

    strcpy(l.elem[l.length].name,stud.name);

       l.elem[l.length].xuehao=stud.xuehao;

       l.elem[l.length].fanghao=stud.fanghao;

       l.length++;

    i++;

    ch=getchar();

    printf("\n是否继续:Y/N:");

    scanf("%c",&ch);

    printf("\n");

    }

    if(ch=='N')system("cls");

    }

    //房号排序

    void sort3(linklist & l)

    {

    int i,j;

    stu temp;

    for(i=0;i<l.length-1;i++)

    for(j=i+1;j<l.length;j++)

    if(l.elem[i].fanghao>l.elem[j].fanghao)

    {

    temp=l.elem[i];

    l.elem[i]=l.elem[j];

    l.elem[j]=temp;

    }

    }

    //学号排序

    void sort2(linklist & l)

    {

    int i,j;

    stu temp;

    for(i=0;i<l.length-1;i++)

    for(j=i+1;j<l.length;j++)

    if(l.elem[i].xuehao>l.elem[j].xuehao)

    {

    temp=l.elem[i];

    l.elem[i]=l.elem[j];

    l.elem[j]=temp;

    }

    }

    //姓名排序

    void sort1(linklist & l)

    {

    int i,j;

    stu temp;

    for(i=0;i<l.length-1;i++)

    for(j=i+1;j<l.length;j++)

    if(l.elem[i].name>l.elem[j].name)

    {

    temp=l.elem[i];

    l.elem[i]=l.elem[j];

    l.elem[j]=temp;

    }

    }

    //打印学生信息

    void print1(linklist & l)

    {

    int i;

    printf("\n");

    printf("姓名           学号         房号\n");

    for(i=0;i<l.length ;i++)

    printf("%-7s %10d   %10d\n",l.elem[i].name,l.elem[i].xuehao,l.elem[i].fanghao);

    }

    //打印找到的学生的信息

    void print2(linklist & l,int mid)

    {

    printf("查找成功   学生信息为\n");

    printf("姓名           学号         房号\n");

    printf("%-7s %10d %10d\n",l.elem[mid].name,l.elem[mid].xuehao,l.elem[mid].fanghao);

    }

    //判断是否继续查找

    int panduan1(char ch)

    {

    scanf("%c",&ch);

    printf("是否继续<Y/N>:");

    scanf("%c",&ch);

    if(ch=='Y')

    {

    system("cls");

    return(1);

    }

    else

    return 0;

    }

    //判断不存在是否继续查找

    int panduan2(char ch)

    {

    scanf("%c",&ch);

    printf("学生不存在,是否继续<Y/N>:");

    fflush(stdin);

    scanf("%c",&ch);

    if(ch=='Y')

    {

    system("cls");

    return(1);

    }

    else

    return 0;

    }

    //按房号查找

    void chazhao3(linklist & l)

    {

    if(l.length==0)

    panduan3();              //返回主界面

    else

    {

    int low=0,high=l.length ,mid,flag=0; //flag=1 查找成功

    int m;

    printf("\n按房号查找   输入房号:");

    scanf("%d",&m);

    printf("\n");

    while(low<=high)

    {

    mid=(low+high)/2;

    if(m==l.elem[mid].fanghao)

    {

    flag=1;

    break;

    }

    else if(m>l.elem[mid].fanghao)

    low=mid+1;

    else

    high=mid-1;

    }

    if(flag==1)

    {

    print2(l,mid);

    if(panduan1(1))               //调用判断函数

    chazhao3(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    else

    {

    if(panduan2(1))

    chazhao3(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    }

    }

    //按学号查找

    void chazhao2(linklist & l)

    {

    if(l.length==0)

    {

    printf("无学生记录\n");

    disp();

    caozuo();

    }

    else

    {

    int low=0,high=l.length,mid,flag=0; //flag=1 查找成功

    int n;

    printf("\n按学号查找   输入学号:");

    scanf("%d",&n);

    printf("\n");

    while(low<=high)

    {

    mid=(low+high)/2;

    if(n==l.elem[mid].xuehao)

    {

    flag=1;

    break;

    }

    else if(n>l.elem[mid].xuehao)

    low=mid+1;

    else

    high=mid-1;

    }

    if(flag==1)

    {

    print2(l,mid);

    if(panduan1(1))

    chazhao2(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    else

    {

    if(panduan2(1))

    chazhao3(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    }

    }

    //按姓名查找

    void chazhao1(linklist & l)

    {

    if(l.length==0)

    panduan3();

    else

    {

    int low=0,high=l.length,mid,flag=0; //flag=1 查找成功

    printf("\n按姓名查找   输入姓名:");

    char a[15];

    scanf("%s",a);

    printf("\n");

    while(low<=high)

    {

    mid=(low+high)/2;

    if(strcmp(a,l.elem[mid].name)==0)

    {

    flag=1;

    break;

    }

    else if(strcmp(a,l.elem[mid].name)>0)

    low=mid+1;

    else

    high=mid-1;

    }

    if(flag==1)

    {

    print2(l,mid);

    if(panduan1(1))

    chazhao1(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    else

    {

    if(panduan2(1))

    chazhao1(l);

    else

    {

    system("cls");

    caozuo();

    }

    }

    }

    }

    //按学号插入

    void insert(linklist & l)

    {

    int i,j,k;

    char ch;

    printf("\n插入学生信息为:");

    printf("\n姓名:");

    fflush(stdin);

    gets(stud.name);

    printf("学号");

    fflush(stdin);

        scanf("%d",&stud.xuehao);

    printf("输入房号\n");

        scanf("%d",&stud.fanghao);

    if(l.length==0)

    {

    strcpy(l.elem[l.length].name,stud.name);

    l.elem[l.length].xuehao=stud.xuehao;

    l.elem[l.length].fanghao=stud.fanghao;

    }

    for(i=0;i<l.length;i++)

    {

    if(stud.xuehao<l.elem[i].xuehao)

    {

    k=i;

    for(j=l.length;j>k;j--)

    l.elem[j]=l.elem[j-1];

    strcpy(l.elem[k].name,stud.name);

    l.elem[k].xuehao=stud.xuehao;

              l.elem[k].fanghao=stud.fanghao;

    break;

    }

    else

    {

    strcpy(l.elem[l.length].name,stud.name);

    l.elem[l.length].xuehao=stud.xuehao;

              l.elem[l.length].fanghao=stud.fanghao;

    }

    }

    l.length++;

    fflush(stdin);

    printf("\n是否继续插入:Y/N");;

    scanf("%c",&ch);

    if(ch=='Y')

    insert(l);

    else

    system("cls");

    }

    //按学号删除

    void Delete(linklist &l)

    {   

    int i,j,k=-1;   

    char ch;   

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

    printf("请输入要删除学生的学号:");   

    scanf("%d",&stud.xuehao);   

    for(i=0;i<l.length;i++)   

    {    

    if(stud.xuehao==l.elem[i].xuehao)    

    {     

    printf("该学生的信息为:\n");

    printf("\n");     

    printf("%-15s %-3d %7d\n",l.elem[i].name,l.elem[i].xuehao,l.elem[i].fanghao);     

    k=i;     

    for(j=k;j<l.length-1;j++)      

    l.elem[j]=l.elem[j+1];          

    printf("\n");     

    break;    

    }          

    }   

    if(i>=l.length) printf("该学生不存在\n");   

    if(k>=0)l.length--;   

    fflush(stdin);   

    printf("\n");   

    printf("是否继续删除?<Y/N>:");   

    scanf("%c",&ch);   

    system("cls");   

    if(ch=='y') Delete(l);   

    else system("cls");

    }

    //主函数

    void main()

    {

    linklist l;             //线性表定义

    init(l);                //调用初始化函数

    char ch;

    system("color fa");

    printf("\n                                 欢迎进入界面\n\n\n");

    printf("请按任意键进行操作");

    scanf("%c",&ch);

    system("cls");

    chuangjian(l);                         //调用创建线性表函数

    system("cls");

    t=1;

    caozuo();                              //调用主菜单函数

    while(f!=0)

    {   

    system("cls");  

    switch(f)  

    {  

    case 1:

    sort1(l);                      //调用按姓名排序函数     

    printf("\n");         

    if(l.length==0)      

    {       

    printf("已无学生记录\n");       

    printf("\n");       

    disp();       

    caozuo();      

    }        

    else    

    {    

    printf("按姓名排序:\n");    

    print1(l);    

    disp();                    //调用返回主界面       

    caozuo();        

    }    

    break;     

    case 2:

    sort2(l);                      //调用按学号排序函数    

    printf("\n");       

    if(l.length==0)     

    {     printf("已无学生记录\n");     

    printf("\n");        

    disp();        

    caozuo();    

    }        

    else    

    {    

    printf("按学号排序:\n");    

    print1(l);    

    disp();       

    caozuo();    

    }

    break;          

    case 3:

    sort3(l);                       //调用按房号排序函数

    printf("\n");     

    if(l.length==0)      

    {      

    printf("已无学生记录\n");      

    printf("\n");      

    disp();      

    caozuo();

    }

    else

    {

    printf("按房号排序:\n");  

    print1(l);  

    disp();    

    caozuo();

    }

    break;  

    case 4:

    sort1(l);             //先调用按姓名排序函数进行排序   

    chazhao1(l);          //再调用按姓名查找函数进行(二分)查找     

    break;

    case 5:

    sort2(l);             //先调用按学号排序函数进行排序      

    chazhao2(l);          //再调用按学号查找函数进行(二分)查找      

    break;

    case 6:

    sort3(l);             //先调用按房号排序函数进行排序    

    chazhao3(l);          //再调用按房号查找函数进行(二分)查找

    break;

    case 7:

    sort2(l);                        //调用插入函数    

    insert(l);          

    system("cls");  

    printf("显示插入后的学生信息:\n");

    print1(l);  

    disp();     

    caozuo();     

    break;

    case 8:

    Delete(l);                       //调用删除函数   

    if(l.length==0)  

    {   

    printf("\n");   

    printf("学生记录已被删除完\n");  

    printf("\n");   

    disp();     

    caozuo();

    }  

    else  

    {  

    printf("显示删除后的学生信息:\n");

    print1(l);  

    disp();     

    caozuo();  

    }    

    break;

    }

    }

    }

    总结:

    这是一个比较繁琐的程序,将很多的知识糅杂在一起:

    1.交互工作:程序全部运行后可选择继续运行还是结束运行,可以给一个指令进行一个操作,实现连续操作。

    2.建立数据文件:程序中未给信息数据,所以要编写具有信息输入功能的模块,在这里运用线性表来存储信息数据。

    3.将数据文件按关键字(姓名 学号 房号)进行冒泡排序。

    4.运用二分查找实现姓名查询、学号查询、和房号查询。

    5.打印:(1)对输入信息数据的打印显示

            (2)对进行操作后的数据信息的打印显示                            

    6.在设计过程中考虑有学生离校,设计了删除功能。

    7.可能有新同学入校,所以设计了插入功能

    8.新学到的函数:

    (1)system(“cls”)它是一个清除屏幕显示内容的函数,有了这个函数才使得屏幕只显示自己所需要的信息,而不是所有操作步骤、信息都显示,提高了运行结果显示的美观性。

    (2)fflush(stdin)函数,有清空输入的作用。在输入信息时起到了巨大作用,保证了后续信息的正确输入存储。

    system("color fa")函数,是这次设计中的一个意外学习到函数,它可以改变运行界面的背景颜色和字体颜色,对程序运行没有太大影响,但改变了以往运行界面黑底白字的结果,使得运行界面颜色更加丰富

    求助大佬:

    程序运行后功能基本都能实现,但只有学生姓名为两个字时才能正确运行程序,出现正确的结果,试过将名字定为三个字,但程序就出现问题

     

     

     

     

     

     


    展开全文
  • c语言课程设计作品——宿舍管理查询系统,界面不错哦,整体上可以参考下
  • 宿舍管理查询 数据结构课程设计 完整源代码 c语言编写 分模块设计
  • #include<cstdio> #include<string> #include<iostream>...//构造结构体,创建学生信息的结构体数组,其中的信息包含名字,宿舍房号以及学号 。 { string name; int number; .

    四、功能模块说明

        输入学生宿舍信息模块:完成宿舍信息的录入,可以选择从平台手动输入,也可以选择从指定文件中读取。 

        保存学生宿舍信息模块,完成宿舍信息的保存。 

       排序学生宿舍信息模块,完成按关键字排序的功能,可以选择按宿舍号、学号或姓名进行排序。 

       查询学生宿舍信息模块,完成按关键字查询的功能,可以选择按宿舍号、学号或姓名进行查询。 

       浏览学生宿舍信息模块,完成对已经输入的信息的打印浏览,如果没有向系统输入数据,将提醒无文件数据存在,请进行输入。

       最后退出系统。

     五、实验过程

     #include<cstdio>
    #include<string>
    #include<iostream>
    #include<fstream>
    #include<windows.h>
    using namespace std;
    #define Max 100
     int total;  
    struct edg
    //构造结构体,创建学生信息的结构体数组,其中的信息包含名字,宿舍房号以及学号 。
    {
    	string name;
    	int number;
    	int domenumber;
    }student[Max];
    edg s[Max];
    void menu()     //主菜单的函数包含3个功能(新建,排序,查询,打印)
    {
    	cout<<"\t\t **********************************"<<endl;
    	cout<<"\t\t       * 欢迎进入宿舍管理系统*     "<<endl;
    	cout<<"\t\t **********************************"<<endl;
    	cout<<"\t\t         * 1.新建宿舍名单 *        "<<endl;
    	cout<<"\t\t         * 2.排序宿舍信息 *        "<<endl;
    	cout<<"\t\t         * 3.查询宿舍信息 *        "<<endl;
    	cout<<"\t\t         * 4.打印任意查询结果 *    "<<endl;
    	cout<<"\t\t         * 0.退出系统 *            "<<endl;
        cout<<"\t\t **********************************"<<endl;
    	cout<<endl<<endl;
    	cout<<"请输入你想要进行操作的序号:";
    }
    
    void build()                           //新建学生信息 
    {
    	int i;
    	string a;
    	int b,c;
    	system("cls");
    	ofstream ofs;   //定义对象
    	ofs.open("d:\\my.txt",ios::app);	 //追加进文件中
    	cout<<"请输入要录入的人数:"<<endl;      //录入的人数为Total 
    	cin>>total;
    
    	if(ofs)
    	{
    	for(i=1;i<=total;i++)                //为每个同学输入信息 
    	{
    		cout<<"请输入第"<<i<<"个同学的姓名:";
    		cin>>a;
    		student[i].name=a;	
    		ofs<<"姓名:"<<student[i].name<<" ";
    		cout<<"请输入第"<<i<<"个同学的学号:";
    		cin>>b;
    	    student[i].number=b;
            ofs<<"学号:"<<student[i].number<<" ";
    		cout<<"请输入第"<<i<<"个同学的宿舍号:";
    		cin>>c;
    		student[i].domenumber=c;
    		ofs<<"房号:"<<student[i].domenumber<<endl;
    	
    		cout<<endl;
    		ofs.close();
    	}
    		
    	}
    }
    //递归二分法,折半查询            返回的是关键字的下标
    int bin_search(int left,int right,int key)      
    {
    	if(left>right)
    		return -1;
    	int mid=(left+right)/2;
    	if(student[mid].number==key)    //刚好要查找的对象key在mid这个位置,查找成功
    		return mid;
    	else if(student[mid].number<key)
    		//left=mid+1;
    		return bin_search(mid+1,right,key);   //查找范围缩小到右半部分
    	else
            return bin_search(left,mid-1,key);   //查找范围缩小到左半部分
    }
    
    void sortmenu()               //排序函数 
    {
    	string choice;
    	int i,j;
    	system("cls");
    	cout<<"请输入排序的方式(1.按学号排序,2.按寝室号排序,3.按姓名排序):"<<endl;
    	while(1)
    	{
    		cin>>choice;
    		break;
    	}
        if(choice[0]=='1')                 //进行以学号为关键字的排序 
    	{
    		for(i=1;i<=total;i++)             //用冒泡排序法进行排序 
    	      for(j=1;j<total-i+1;j++)
    			  if(student[j].number>=student[j+1].number)
    			  {
    				  edg temp;
    				  temp=student[j];
    				  student[j]=student[j+1];
    				  student[j+1]=temp;
    			  }
    			  cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
    			  for(i=1;i<=total;i++)
    			  {
    				  cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
    			  }
    		cout<<endl;	  
    	}
    	
    	if(choice[0]=='2')                    //以按宿舍号的关键字进行排序 
    	{
        	for(i=1;i<=total;i++)
    	      for(j=1;j<total-i+1;j++) 
    			  if(student[j].domenumber>=student[j+1].domenumber)
    			  {
    				  edg temp;
    				  temp=student[j];
    				  student[j]=student[j+1];
    				  student[j+1]=temp;
    			  }
    			  cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
    			  for(i=1;i<=total;i++)
    			  {
    				  cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
    			  }
    			  cout<<endl;
    	}
     if(choice[0]=='3')             //以按学生姓名的关键字进行排序 
    	{
    		for(i=1;i<=total;i++)
    	      for(j=1;j<total-i+1;j++)
    			  if(student[j].name>=student[j+1].name)
    			  {
    				  edg temp;
    				  temp=student[j];
    				  student[j]=student[j+1];
    				  student[j+1]=temp;
    			  }
    			  cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
    			  for(i=1;i<=total;i++)
    			  {
    				  cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
    			  }
    			  cout<<endl;
    	}
    	
    	
    }
    
    edg query()    //查询
    {
    	string choice;
    	int i;
    	string a,choice1;       //a表示name
    	int b,c;                //b,c表示学号和宿舍房号
    	system("cls");
    	cout<<"请输入查询的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    
    	while(1)
    	{	
    	
    		
        	while(1)                       
    	{
    		cin>>choice;
    	   break;
    	}
    		
    	if(choice[0]=='1')
    	{
    	cout<<"请输入你要查找的学生姓名:";  //以按 姓名为关键字进行查找 
    		cin>>a;
    		for(i=1;i<=total;i++)
    		{
    //c_str返回当前的字符串的首地址,c_str()把string对象转换成c中的字符串样式
    			if(strcmp(student[i].name.c_str(),a.c_str())==0)   				s[i]=student[i];
    			  break;
    		}
    		if(i!=total+1)
    		{
    			cout<<"要查找的学生的学号:"<<student[i].number<<"\t\t"<<"宿舍号:"<<student[i].domenumber<<endl;
    			cout<<"是否继续进行此操作?(进行则按s,不进行则按b)";
    			cin>>choice1;
    			if(choice1[0]=='s')
    			{
    				cout<<"请输入要查找的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    				continue;
    			}
    			else
    				break;
    		}
    		else
    		{
    			cout<<"你要查找的学生不在名单中";
    			cout<<"是否继续进行此操作?(进行则按s,不进行则按b)";
    			cin>>choice1;
    			if(choice1[0]=='s')
    			{
    				cout<<"请输入要查找的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    				continue;
    			}
    			else
    				break;
    		}
    	
    	
    	}
    	if(choice[0]=='2')
    	{
    		cout<<"请输入你要查找的学生的学号:";              //以按 学号为关键字进行查找 
    		cin>>b;
    		//int len=b.size();    //b.length为字符串b的长度,b.size()为字符串b的元素个数
    		if(bin_search(1,total,b)!=-1)             //b为关键字   使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中 
    		{
                 s[i]=student[bin_search(1,total,b)];
    			cout<<"要查找的学生姓名为:"<<student[bin_search(1,total,b)].name<<"\t\t"<<"宿舍号为:"<<student[bin_search(1,total,b)].domenumber<<endl;
    			cout<<"是否继续进行此操作?(进行则按s,不进行则按b)";
    			cin>>choice1;
    			if(choice1[0]=='s')
    			{
    				cout<<"请输入要查找的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    				continue;
    			}
    			else
    				break;
    		}
    		else
    		{
    			cout<<"你要查找的学生不在名单中,是否继续进行此操作?(进行则按s,不进行则按b)";
    			cin>>choice1;
    			if(choice1[0]=='s')
    			{
    				cout<<"请输入要查找的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    				continue;
    			}
    	    	else
    				break;
    		}
    	}
    if(choice[0]=='3')            //以按 宿舍号为关键字进行查找 
    	{
    		cout<<"请输入你要查找的学生的房号:";
    		cin>>c;
    		for(i=1;i<=total;i++)
    		{
    			if(c==student[i].domenumber)
    			{
    				s[i]=student[i];
    				cout<<"学生姓名:"<<student[i].name<<"\t"<<"学号:"<<student[i].number<<"\t"<<"寝室号:"<<student[i].domenumber<<endl;
    			}
    		
    		}
    		cout<<endl;
    			   cout<<"是否继续进行此操作?(进行则按s,不进行则按b)";
    			   cin>>choice1;
    		       if(choice1[0]=='s')
    			   {
    				  cout<<"请输入要查找的方式(1.按姓名查询,2.按学号查询,3.按房号查询):"<<endl;
    				  continue;
    			   }
    			   else
    				  break;
    		   
    	}
    	
    	}
    	return s[i];
    }
    
    void print()
    {
    	int i;
    	for(i=1;i<=total;i++)
    	{ 
    		edg ss[Max];
    		ss[i]=query();
    		cout<<"输出已查询到的学生信息:"<<endl;
    		cout<<"学生姓名:"<<s[i].name<<"\t"<<"学号:"<<s[i].number<<"\t"<<"寝室号:"<<s[i].domenumber<<endl;
    	}
      
    }
    
    int main()
    {
    
    	string choice,i;
    	ofstream ofs;
    	ofs.open("d:\\my.txt",ios::out);
    	menu();
    	while(1)
    	{
    		cin>>choice;
    	if(choice[0]=='1')
    	{
    		build();
    		cout<<"新建学生信息成功,是否进行下一步(是则按s,不是则按b)";
    		cin>>choice;
    		if(choice[0]=='s')
    		{
    			system("cls");
    			menu();
    		}
    		else
    			break;
    	}
    	else if(choice[0]=='2')
    	{
    		sortmenu();
    		cout<<"学生信息排序成功,是否进行下一步(是则按s,不是则按b)";
    		cin>>choice;
    		if(choice[0]=='s')
    		{
    			system("cls");
    			menu();
    		}
    		else
    			break;
    	}
    	else if(choice[0]=='3')
    	{
    		query();
    		cout<<"学生信息查询成功,是否进行下一步(是则按s,不是则按b)";
    		cin>>choice;
    		if(choice[0]=='s')
    		{
    			system("cls");
    			menu();
    		}
    		else
    			break;
    	}
    	else if(choice[0]=='4')
    	{
    		print();
    		cout<<"学生信息打印成功,是否进行下一步(是则按s,不是则按b)";
    		cin>>choice;
    	    if(choice[0]=='s')
    		{
    			system("cls");
    			menu();
    		}
    		else
    			break;
    
    	}
    	else
    	{
    		cout<<"退出系统!"<<endl;
    		break;
    	}
    	}
    	return 0;
    }

     

    展开全文
  • 查找函数*/ 输入记录*/ 显示记录*/ 信息输出*/ 修改记录*/ 查询信息*/ 删除记录*/ 增加记录*/ 记录保存为文件*/ 从文件中读记录*/ 按学号排序*/ 分类统计*/ 自定义坐标函数*/ 密码函数*/ 主菜单函数*/
  • C 语言学生宿舍管理系统 难度系数 3 级 附加清屏操作 设计一个学生宿舍管理程序 该程序应该具有以下功能 1录入学生宿舍信息 2修改 删除学生宿舍信息 3统计当前未住学生宿舍的个数并显示宿舍编号 4统计当前空闲 的...
  •  该宿舍管理系统能实现对学生信息的查询(包括按姓名、学号、班级、宿舍号)、对学生信息的修改、调换寝室/增加新寝室。在细节方面可以防止因错误输入导致的程序崩掉,当操作错误次数达到一定数量时,会结束本次...

    系统功能:

      该宿舍管理系统能实现对学生信息的查询(包括按姓名、学号、班级、宿舍号)、对学生信息的修改、调换寝室/增加新寝室。在细节方面可以防止因错误输入导致的程序崩掉,当操作错误次数达到一定数量时,会结束本次操作。其他细节可以通过程序运行来体验。

    学习体会:

      这次写的是宿舍管理系统,主要是想学一下C语言的多文件操作和工程的建立。
      在代码实现方面没有什么问题,主要是第一次用工程来写程序,有好多关于多文件操作的问题不会,在最后调试的时候找了一些资料去解决多文件的问题。
      在调试的时候虽然大致知道多文件应该怎样去调用源文件,但是还是出现了源文件被重复调用的问题,查了资料才知道源文件是不能被重复调用的。
      而条件编译可以用来保护头文件。在大多数程序中,一个程序可以由多个源文件和多个头文件组成。其中源文件包含函数的定义和函数的调用,头文件包含类型定义、函数原型声明等可以在源文件之间共享的信息。因为头文件自身也可以包含头文件,随着程序的增大,是用的头文件可能越来越多,文件的嵌套包含可能导致无意间包含同一个头文件多次,如果该头文件中包含类型定义,将造成编译错误。为了防止头文件多次包含,可以用#ifndef和#endif指令来封闭文件的内容。例如,可以用如下方式保护文件DS.h。
      

    #ifndef DS_H//宏的名可以自己定义
    #define DS_H
    代码段
    #endif

      在首次包含这个文件时,没有定义宏DS_ H,所以预处理器允许保留#ifndef和#endif之间的多行内容。但是如果该文件再次被包含,只是宏DS_H已经被定义过了,预处理器将把#ifndef和#endif之间的多行内容删除。
      在写程序的过程中还遇到了结构体全局变量的问题。最开始我把全局变量的申明和定义都放在了一个头文件中,然后在每个源文件中都调用了这个头文件,导致变量被重复定义。后来将全局变量的申明放到了主函数上,在其他每个源文件都用extern +变量类型+名称引用了一下就好了。
      总结了一些多文件的操作的一些问题:http://blog.csdn.net/k_young1997/article/details/79006537
      本来打算加一个账号登录功能的,但是因为时间比较紧所以就没有加。如果想要账号登录的代码的话上次写的简单图书管理系统中有这部分代码。http://blog.csdn.net/k_young1997/article/details/73480766

    下面是宿舍管理系统主函数和各个头文件及源文件:

    main函数:

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include"sai.h"
    #include"find.h"
    #include"prin.h"
    #include"information.h"
    #include"InformationExit.h"
    
    using namespace std;
    
    HEAD s;
    
    int main()
    {
        int flag, shut = 1;
        load();
        while(shut){
            if(shut == 1){
                PrinMainMenu(0);
                shut = 2;
            }
            else if(shut == 2) PrinMainMenu(1);
            printf("\t\t\t\t");
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag)
            {
                case 1: Find(); break;
                case 2: BIAN(); break;
                case 3: FindEmptyBed(1); break;
                case 4: shut = 0; break;
                default: printf("\t\t\t输入错误,请正确输入!\n"); PrinTimeOut(); break;
            }
        }
        return 0;
    }
    

    information.h头文件:

    #ifndef INFORMATION_H
    #define INFORMATION_H
    
    extern void Add(dorm h);
    extern void save(void);//保存宿舍信息
    extern void load(void);//读取宿舍信息
    extern void AddInformation(void);//创建新宿舍
    extern void ExchangeBedroom(int r);//寝室安排 
    
    #endif
    

    information.cpp源文件:

    #include"prin.h"
    #include"find.h"
    
    extern HEAD s;
    
    void Add(dorm h)
    {
        FILE *fp;
        if((fp = fopen("123.txt", "a")) == NULL){
            printf("\t\t\tFile open error!\n");
            exit(0);
        }
        fprintf(fp, "%d\n", h->num);
        for(int i = 1; i < 7; i++) fprintf(fp, "%d ", h->vis[i]);
        fprintf(fp, "\n");
        for(int i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            fprintf(fp, "%s\n%s\n%s\n%s\n", h->Infor[i].name, h->Infor[i].Cless, h->Infor[i].ID, h->Infor[i].sex);
        }
        if(fclose(fp)){
            printf("\t\t\tCan not the close file!\n");
            exit(0);
        }
        return ;
    }
    
    void save(void)//保存宿舍信息
    {
        FILE *fp;
        if((fp = fopen("123.txt", "w")) == NULL){
            printf("\t\t\tFile open error!\n");
            exit(0);
        }
        dorm p = s->head->next;
        while(p){
            fprintf(fp, "%d\n", p->num);
            for(int i = 1; i < 7; i++) fprintf(fp, "%d ", p->vis[i]);
            fprintf(fp, "\n");
            for(int i = 1; i < 7; i++){
                if(!p->vis[i]) continue;
                fprintf(fp, "%s\n%s\n%s\n%s\n", p->Infor[i].name, p->Infor[i].Cless, p->Infor[i].ID, p->Infor[i].sex);
            }
            p = p->next;
        }
        if(fclose(fp)){
            printf("\t\t\tCan not the close file!\n");
            exit(0);
        }
        return ;
    }
    void load(void)//读取宿舍信息
    {
        s = new H;
        s->head = new Bedroom;
        s->head->next = NULL;
        s->head->num = 0;
        dorm rear = s->head, q;
        FILE *fp;
        if((fp = fopen("123.txt", "r")) == NULL){
            printf("\t\t\tFile open error!\n");
            exit(0);
        }
        q = new Bedroom;
        while(fscanf(fp, "%d", &q->num) != -1){
            for(int i = 1; i < 7; i++) fscanf(fp, "%d", &q->vis[i]);
            for(int i = 1; i < 7; i++){
                if(!q->vis[i]) continue;
                fscanf(fp, "%s%s%s%s", q->Infor[i].name, q->Infor[i].Cless, q->Infor[i].ID, q->Infor[i].sex);
            }
            q->prior = rear;
            rear->next = q;
            rear = q;
            q = new Bedroom;
        }
        rear = NULL;
        delete q;
        if(fclose(fp)){
            printf("\t\t\tCan not close the file!\n");
            exit(0);
        }
        return ;
    }
    
    void AddInformation(void)//创建新宿舍
    {
        int n, k, ans = 0;
        char ch, v[200];
        dorm q, pre = s->head;
        while(pre->next) pre = pre->next;
        q = new Bedroom;
        memset(q->vis, 0, sizeof(q->vis));
        q->num = pre->num+1;
        printf("\t\t\t您将住在%04d号寝室:\n\n");
        printf("\t\t\t现在有1-6号床位是空床位,请选择床号:\n\t\t\t");
        scanf("%d", &n);
        q->vis[n] = 1;
        printf("\t\t\t请输入学生姓名:\n\t\t\t");
        scanf("%s", q->Infor[n].name);
        printf("\t\t\t请输入学生所在班级:\n\t\t\t");
        scanf("%s", q->Infor[n].Cless);
        printf("\t\t\t请输入学生学号:\n\t\t\t");
        scanf("%s", q->Infor[n].ID);
        printf("\t\t\t请输入学生性别:\n\t\t\t");
        scanf("%s", q->Infor[n].sex);
        while(1){
            ans++;
            printf("是否确认入住(确定请按y,退出请按n)\n");
            if((k = ScanCh(ans))) break;
            printf("\t\t\t您将住在%04d号寝室:\n\n");
            printf("\t\t\t现在有1-6号床位是空床位,请选择床号:\n\t\t\t");
            printf("%d\n", n);
            printf("\t\t\t请输入学生姓名:\n\t\t\t");
            printf("%s\n", q->Infor[n].name);
            printf("\t\t\t请输入学生所在班级:\n\t\t\t");
            printf("%s\n", q->Infor[n].Cless);
            printf("\t\t\t请输入学生学号:\n\t\t\t");
            printf("%s\n", q->Infor[n].ID);
            printf("\t\t\t请输入学生性别:\n\t\t\t");
            printf("%s\n", q->Infor[n].sex);
        }
        if(-1 == k || 2 == k){
            delete q;
            return ;
        }
        q->prior = pre;
        q->next = NULL;
        pre->next = q;
        Add(q);
        return ;
    }
    
    void ExchangeBedroom(int r)//寝室安排 
    {
        if(r == 3){
            system("cls");
            printf("\n\t\t\t\t操作错误达到三次,本次操作将不被保存!!\n");
            PrinTimeOut(); 
            return ;
        }
        dorm p;
        int i, k, j = 0, flag = 0, ans = 0, a[100], t = 1, h, f;
        while(1){
            system("cls");
            h = FindEmptyBed(0);
            ans++;
            printf("\t\t\t是否增加一个新的宿舍(是 请按y,否 请按n):\n\n");
            if((k = ScanCh(ans))) break;
        }
        if(-1 == k) return ;
        if(k == 1){
            AddInformation();
            return ;
        }
        if(h && 2 == k) return ;
        printf("\t\t\t\t请输入要入住的寝室号:");
        scanf("%d", &k); printf("\n");
        p = FindByBedNum(k);
        if(!p){
            ExchangeBedroom(r+1);
            return ;
        }
        memset(a, 0, sizeof(a));
        for(i = 1; i < 7; i++) if(!p->vis[i]) a[i] = 1, j++;
        if(j) printf("\t\t\t该寝室还有%d个空床位,分别是:\n\n", j);
        else{
            printf("\t\t\t%04d号寝室已没有空床位了,请从新选择寝室!!\n");
            PrinTimeOut();system("cls");
            ExchangeBedroom(r+1);
            return ;
        }
    
        for(i = f = 1; i < 7; i++){
            if(f && a[i]){
                f = 0;
                printf("\t\t\t%04d号床", i);
            } 
            else if(!f && a[i])printf("、%04d号床", i);
        } 
        printf("\n\n");
        while(t < 4){
            printf("\t\t\t请选择床号:");
            f = scanf("%d", &k);
            if(f && a[k]) break;
            Eat();
            printf("\n\t\t\t您还有 %d 次机会!!\n", 3-t);
            t++;
        }
        if(4 == t){
            ExchangeBedroom(r+1);
            return ;
        }
        p->vis[k] = 1;
        printf("\t\t\t请输入姓名:\n\t\t\t\t");
        scanf("%s", p->Infor[k].name);
        printf("\t\t\t请输入班级:\n\t\t\t\t");
        scanf("%s", p->Infor[k].Cless);
        printf("\t\t\t请输入学号:\n\t\t\t\t");
        scanf("%s", p->Infor[k].ID);
        printf("\t\t\t请输入性别:\n\t\t\t");
        scanf("%s", p->Infor[k].sex);
        printf("\n\n\t\t\t信息录入完毕!!\n");
        PrinTimeOut();
        system("cls");
        printf("\t\t\t您将住在:");
        PrinInfor(p, 1, k);
        save();
        PrinTimeOut();system("cls");
        return ;
    }

    prin.h头文件:

    #ifndef PRIN_H
    #define PRIN_H
    
    #include"sai.h"
    
    extern void PrinTimeOut(void);//暂停
    extern void PrinNotice(void);//数据库没有信息
    extern void PrinMainMenu(int flag);//主菜单
    extern void PrinFindMenu(void);//查询菜单
    extern void PrintModifyMenu(void);//修改菜单
    extern void PrinInfor(dorm p, int flag, int n);
    extern void Eat(void);
    extern int ScanCh(int ans);
    extern void PrinExitFind(void);
    extern void PrinExitMen(void);
    
    #endif

    prin.cpp源文件:

    #include"prin.h"
    
    extern HEAD s;
    
    void PrinTimeOut(void)//暂停
    {
        printf("\t\t\t\t");
        system("pause");
        return ;
    }
    
    void PrinNotice(void)//数据库没有信息
    {
        printf("\t\t\t数据库中暂无任何信息,请录入学生信息!\n");
        system("pause");
        system("cls");
        return ;
    }
    
    void PrinMainMenu(int flag)//主菜单
    {
        system("cls");
        char h[2][30] = {"宿舍管理系统", "欢迎使用宿舍管理系统"};
        printf("\t\t\t*******************************************\n");
        printf("\t\t\t*                                         *\n");
        if(flag) printf("\t\t\t*               %s              *\n", h[0]);
        else printf("\t\t\t*           %s          *\n", h[1]);
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*         查询学生信息      请按 1        *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*         变更学生信息      请按 2        *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*         宿舍空床位情况    请按 3        *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*         退出系统          请按 4        *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*******************************************\n");
        return ;
    }
    
    void PrinFindMenu(void)//查询菜单
    {
        system("cls");
        printf("\t\t\t*******************************************\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*              请选择操作选项             *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           按姓名查询       请按 1       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           按学号查询       请按 2       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           按班级查询       请按 3       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           按宿舍号查询     请按 4       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           所有学生信息     请按 5       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*           返回上一级菜单   请按 6       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*******************************************\n");
        return ;
    }
    
    void PrintModifyMenu(void)//修改菜单
    {
        system("cls");
        printf("\t\t\t*******************************************\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*              请选择操作选项             *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*       寝室安排             请按 1       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*       修改学生信息         请按 2       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*       删除学生信息         请按 3       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*       返回上一级菜单       请按 4       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*******************************************\n");
        return ;
    }
    
    void PrinInfor(dorm p, int flag, int i)
    {
        if(flag) printf("\t\t\t%04d寝室:\n", p->num);
        printf("\t\t\t\t%d号床:\n", i);
        printf("\t\t\t\t姓名:%s\n\t\t\t\t班级:%s\n", p->Infor[i].name,p->Infor[i].Cless);
        printf("\t\t\t\t学号:%s\n\t\t\t\t性别:%s\n\n", p->Infor[i].ID,p->Infor[i].sex);
        return ;
    }
    
    void Eat(void)
    {
        char v[200];
        printf("\t\t\t输入错误!!\n");
        gets(v);
        PrinTimeOut();
        return ;
    }
    
    int ScanCh(int ans)
    {
        char v[200];
        printf("\t\t\t\t");
        scanf("%s", v);
        if(v[0] == 'y'&& v[1] == '\0') return 1;
        else if(v[0] == 'n' && v[1] == '\0') return 2;
        if(ans >= 3){
            printf("\t\t指令输入错误次数达到3次,本次操作将被取消!!\n");
            PrinTimeOut();
            system("cls");
            return -1;
        }
        printf("\t\t输入指令有误,请正确输入指令,您还有 %d 次机会\n", 3-ans);
        PrinTimeOut();
        system("cls");
        return 0;
    }
    
    void PrinExitFind(void)
    {
        system("cls");
        printf("\t\t\t*******************************************\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*              请选择操作选项             *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        按姓名检索          请按 1       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        按学号检索          请按 2       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*       返回上一级菜单       请按 3       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*******************************************\n");
        return ;
    }
    
    void PrinExitMen(void)
    {
        system("cls");
        printf("\t\t\t*******************************************\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*               请选择修改项              *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        修改姓名            请按 1       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        修改班级            请按 2       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        修改学号            请按 3       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        修改性别            请按 4       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*        返回上一级菜单      请按 5       *\n");
        printf("\t\t\t*                                         *\n");
        printf("\t\t\t*******************************************\n");
        return ;
    }
    

    find.h头文件:

    #ifndef FIND_H
    #define FIND_H
    
    #include"prin.h"
    
    extern dorm FindByName(char *str);//按姓名查找
    extern dorm FindByID(char *str);//按学号查找
    extern void FindByCless(char *str);//按班级查找
    extern dorm FindByBedNum(int n);//宿舍号查找
    extern int FindEmptyBed(int n);//空床位查找
    extern void FindAll(void);
    extern void FindName(void);
    extern void FindId(void);
    extern void FindCless(void);
    extern void FindBedNum(void);
    extern void Find(void);
    
    #endif

    find.cpp源文件:

    #include"find.h"
    #include"sai.h"
    
    extern HEAD s;
    
    dorm FindByName(char *str)//按姓名查找
    {
        dorm p = NULL;
        p = s->head->next;
        if(!p){
            PrinNotice();
            return NULL;
        }
        while(p){
            for(int i = 1; i < 7; i++)
                if(p->vis[i] && !strcmp(p->Infor[i].name, str))
                    return p;
            p = p->next;
        }
        printf("\t\t数据库中没有此人,请确保姓名输入正确或用其他信息进行检索!\n");
        PrinTimeOut();
        return NULL;
    }
    
    dorm FindByID(char *str)//按学号查找
    {
        dorm p = NULL;
        p = s->head->next;
        if(!p){
            PrinNotice();
            return NULL;
        }
        while(p){
            for(int i = 1; i < 7; i++)
                if(p->vis[i] && !strcmp(p->Infor[i].ID, str))
                    return p;
            p = p->next;
        }
        printf("\t\t数据库中没有该学号,请确保学号输入正确或用其他信息进行检索!\n");
        PrinTimeOut();
        return NULL;
    }
    
    void FindByCless(char *str)//按班级查找
    {
        int i, flag, logo = 1;
        dorm p = s->head->next;
        if(!p){
            PrinNotice();
            return ;
        }
        printf("\t\t\t\t%s学生住宿情况:\n\n", str);
        while(p){
            for(i = flag = 1; i < 7; i++){
                if(p->vis[i] && !strcmp(p->Infor[i].Cless, str)){
                    PrinInfor(p, flag, i);
                    flag = logo = 0;
                }
            }
            p = p->next;
        }
        if(logo) printf("\t\t\t\t暂没有该班级学生信息!\n");
        PrinTimeOut();
        return ;
    }
    
    dorm FindByBedNum(int n)//宿舍号查找
    {
        dorm p = s->head->next;
        if(!p){
            PrinNotice();
            return NULL;
        }
        while(p){
            if(p->num == n) return p;
            p = p->next;
        }
        printf("\t\t数据库中没有该寝室的信息!\n");
        PrinTimeOut();
        return NULL;
    }
    
    int FindEmptyBed(int f)//空床位查找
    {
        int i, flag, logo = 1;
        dorm p = s->head->next;
        if(!p) logo = -1;
        while(p){
            for(i = flag = 1; i < 7; i++){
                if(!p->vis[i]){
                    if(logo){
                        printf("\t\t\t\t还剩余以下空床位:\n\n\n");
                        logo = 0;
                    }
                    if(flag){
                        printf("\t\t\t%04d寝室:\n\n\t\t\t", p->num);
                        flag = 0;
                    }
                    printf("%d号床  ", i);
                }
            }
            if(!flag) printf("\n\n");
            p = p->next;
        }
        if(logo == 1) printf("\t\t\t\t暂无空床位!!!\n\n");
        else if(logo == -1) printf("\t\t\t\t数据库中暂无任何数据!!\n");
        if(f) PrinTimeOut();
        return logo;
    }
    
    void FindAll(void)
    {
        dorm q = s->head->next;
        if(!q){
            PrinNotice();
            return ;
        }
        while(q){
            for(int i = 1; i < 7; i++){
                if(!q->vis[i]) continue;
                if(i == 1) PrinInfor(q, 1, i);
                else PrinInfor(q, 0, i);
            }
            q = q->next;
        }
        PrinTimeOut();
        return ;
    }
    
    void FindName(void)
    {
        int i;
        dorm q = s->head->next, p = NULL;
        char str[100];
        if(!q){
            PrinNotice();
            return;
        }
        printf("\t\t\t请输入需要查询的学生的姓名:\n\t\t\t");
        scanf("%s", str);
        p = FindByName(str);
        if(!p) return ;
        for(i = 1; i < 7; i++){
            if(!p->vis[i]) continue;
            if(0 == strcmp(str, p->Infor[i].name)) break;
        }
        PrinInfor(p, 1, i);
        PrinTimeOut();
        return ;
    }
    
    void FindId(void)
    {
        int i;
        dorm q = s->head->next, p = NULL;
        char str[100];
        if(!q){
            PrinNotice();
            return ;
        }
        printf("\t\t\t请输入需要查询的学生的学号:\n\t\t\t");
        scanf("%s", str);
        p = FindByID(str);
        if(!p) return ;
        for(i = 1; i < 7; i++){
            if(!p->vis[i]) continue;
            if(0 == strcmp(str, p->Infor[i].ID)) break;
        }
        PrinInfor(p, 1, i);
        PrinTimeOut();
        return ;
    }
    
    void FindCless(void)
    {
        char str[100];
        dorm p = s->head->next;
        if(!p){
            PrinNotice();
            return ;
        }
        printf("\t\t\t请输入需要查询的班级:\n\t\t\t");
        scanf("%s", str);
        FindByCless(str);
        return ;
    }
    
    void FindBedNum(void)
    {
        int n;
        dorm h, p = s->head->next;
        if(!p){
            PrinNotice();
            return ;
        }
        printf("\t\t\t请输入需要查找的寝室号:\n\t\t\t");
        scanf("%d", &n);
        h = FindByBedNum(n);
        if(!h) return ;
        for(int i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            printf("\t\t\t %d 号床:\n\t\t\t姓名:%s\n", i, h->Infor[i].name);
            printf("\t\t\t班级:%s\n\t\t\t学号:%s\n", h->Infor[i].Cless, h->Infor[i].ID);
            printf("\t\t\t性别:%s\n\n", h->Infor[i].sex);
        }
        PrinTimeOut();
        return ;
    }
    
    void Find(void)
    {
        int flag;
        while(1){
            PrinFindMenu();
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag){
                case 1: FindName(); break;
                case 2: FindId(); break;
                case 3: FindCless(); break;
                case 4: FindBedNum(); break;
                case 5: FindAll(); break;
                case 6: return ;
                default:  printf("\t\t\t输入错误,请正确输入!\n");system("pause");break;
            }
        }
    }

    Information.h头文件:

    #ifndef INFORMATIONEXIT_H
    #define INFORMATIONEXIT_H
    
    extern void ExitName(dorm h, int i);
    extern void ExitId(dorm h, int i);
    extern void ExitCless(dorm h, int i);
    extern void ExitSex(dorm h, int i);
    extern bool Exit(dorm h, int i);
    extern void ExitByName(void);
    extern void ExitById(void);
    extern void Retrieve(void);
    void DelInformation(void);
    void DelById(void);
    void DelByName(void);
    void BIAN(void);
    
    #endif
    

    Information.cpp源文件:

    #include"sai.h"
    #include"prin.h"
    #include"find.h"
    #include"information.h"
    
    extern HEAD s;
    
    void ExitName(dorm h, int i)
    {
        printf("\t\t\t请输入新的姓名:");
        scanf("%s", h->Infor[i].name);
        printf("\n\t\t\t\t修改成功!!\n");
        system("pause");
        return ;
    }
    
    void ExitId(dorm h, int i)
    {
        printf("\t\t\t请输入新的学号:");
        scanf("%s", h->Infor[i].ID);
        printf("\n\t\t\t\t修改成功!!\n");
        system("pause");
        return ;
    }
    
    void ExitCless(dorm h, int i)
    {
        printf("\t\t\t请输入新的班级:");
        scanf("%s", h->Infor[i].Cless);
        printf("\n\t\t\t\t修改成功!!\n");
        system("pause");
        return ;
    }
    void ExitSex(dorm h, int i)
    {
        printf("\t\t\t请输入性别:");
        scanf("%s", h->Infor[i].sex);
        printf("\n\t\t\t\t修改成功!!\n");
        system("pause");
        return ;
    }
    
    bool Exit(dorm h, int i)
    {
        int f = 0, flag;
        while(1){
            PrinExitMen();
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag){
                case 1: ExitName(h, i); f = 1; break;
                case 2: ExitCless(h, i);  f = 1; break;
                case 3: ExitId(h, i);  f = 1; break;
                case 4: ExitSex(h, i);  f = 1; break;
                case 5: if(f) return true; else return false;
                default: printf("\t\t\t输入错误,请正确输入!\n");system("pause");break;
            }
        }
    }
    
    void ExitByName(void)
    {
        int i;
        char str[100];
        printf("\t\t\t请输入需要修改信息的学生姓名:\n\t\t\t\t");
        scanf("%s", str);
        dorm h = FindByName(str);
        if(!h) return ;
        for(i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            if(strcmp(str, h->Infor[i].name) == 0) break;
        }
        system("cls");
        PrinInfor(h, 1, i);
        system("pause");
        if(Exit(h, i)) save();
        return ;
    }
    
    void ExitById(void)
    {
        int i;
        char str[100];
        printf("\t\t\t请输入需要修改的学生学号:\n\t\t\t\t");
        scanf("%s", str);
        dorm h = FindByID(str);
        if(!h) return ;
        for(i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            if(strcmp(str, h->Infor[i].ID) == 0) break;
        }
        system("cls");
        PrinInfor(h, 1, i);
        system("pause");
        if(Exit(h, i)) save();
        return ;
    }
    
    void Retrieve(void)
    {
        int flag;
        while(1){
            PrinExitFind();
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag){
                case 1: ExitByName(); break;
                case 2: ExitById(); break;
                case 3: return ;
                default: printf("\t\t\t输入错误,请正确输入!\n");system("pause");break;
            }
        }
    }
    
    void DelByName(void)
    {
        int i, ans = 0, k;
        char str[100];
        printf("\t\t\t请输入需要删除的学生的姓名:\n\t\t\t\t");
        scanf("%s", str);
        dorm h = FindByName(str);
        if(!h) return ;
        for(i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            if(strcmp(str, h->Infor[i].name) == 0) break;
        }
        system("cls");
        while(1){
            ans++;
            PrinInfor(h, 1, i);
            printf("\t\t\t是否删除该学生信息(是 请按 y 否 请按 n)\n\t\t\t");
            if((k = ScanCh(ans))) break;
        }
        if(-1 == k) return ;
        h->vis[i] = 0;
        save();
        printf("\t\t\t\t删除成功!!\n");
        PrinTimeOut();
        return ;
    }
    void DelById(void)
    {
        int i, ans = 0, k;
        char str[100];
        printf("\t\t\t请输入需要删除的学生的学号:\n\t\t\t\t");
        scanf("%s", str);
        dorm h = FindByID(str);
        if(!h) return ;
        for(i = 1; i < 7; i++){
            if(!h->vis[i]) continue;
            if(strcmp(str, h->Infor[i].ID) == 0) break;
        }
        system("cls");
        while(1){
            ans++;
            PrinInfor(h, 1, i);
            printf("\t\t\t是否删除该学生信息(是 请按 y 否 请按 n)\n");
            if((k = ScanCh(ans))) break;
        }
        if(-1 == k) return ;
        h->vis[i] = 0;
        save();
        printf("\t\t\t\t删除成功!!\n");
        PrinTimeOut();
        return ;
    }
    
    void DelInformation(void)
    {
        int flag;
        while(1){
            PrinExitFind();
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag){
                case 1: DelByName(); break;
                case 2: DelById(); break;
                case 3: return ;
                default: printf("\t\t\t输入错误,请正确输入!\n"); PrinTimeOut(); break;
            }
        }
    } 
    
    void BIAN(void)
    {
        int flag;
        while(1){
            PrintModifyMenu();
            if(!scanf("%d", &flag)){
                Eat();
                continue;
            }
            switch(flag){
                case 1: ExchangeBedroom(0); break;
                case 2: Retrieve(); break;
                case 3: DelInformation(); break;
                case 4: return ;
                default : printf("\t\t\t输入错误,请正确输入!\n"); PrinTimeOut(); break;
            }
        }
    }
    
    

    sai.h头文件:

    #ifndef SAI_H
    #define SAI_H
    
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    typedef struct InforPren{
        char name[100], Cless[100], ID[30], sex[10];
    }InforPeople;
    
    typedef struct Bedroom{
        int num;
        InforPeople Infor[7];
        int vis[7];
        struct Bedroom *next;
        struct Bedroom *prior;
    }*dorm;
    
    typedef struct H{
        dorm head;
    }*HEAD;
    
    #endif
    展开全文
  • 宿舍管理查询软件

    2013-05-07 22:19:10
    c语言实现数据结构的应用,宿舍管理查询软件。一个简单的应用
  • 实现某个宿舍楼的宿舍信息管理。每个宿舍基本信息包括:楼层号、房间号、面积、可住宿人数、实际住宿人数、修缮状况(良好/待维修)。 1、数据文件管理功能:创建新文件、管理老文件。 2、输入/添加/插入记录:...
  • 编写一个学生宿舍管理软件。 能使宿舍有:101,102,201,202四个房间,每个房间可住学生人。采用链表存储结构:学号、姓名、房间号、后续指针,按房间号有序,实现学生的入住、退房和查询,按给定学号、姓名、房号查询
  • 用c写了个宿舍管理系统 包括背景颜色的变化 运行环境vc++6.0 功能介绍:本系统可以输入学生的姓名、学号、宿舍号、电话、专业的信息 并可以对信息进行查询修改排序删除 新加入了注册和登录功能 并可以对这些信息 ...
  • 高级语言程序设计课程设计 说明书 设计题目 学生宿舍管理系统 目 录 一总体设计 3 1 程序的总体设计 3 2. 函数原型声明 3 二用户说明 4 1菜单界面 5 2入住登记界面 5 3删除界面 5 4浏览界面 6 5查询修改 6 6排序界面...
  • 高级语言程序设计课程设计 说明书 设计题目 学生宿舍管理系统 目 录 一总体设计? 3 1 程序的总体设计? 3 2. 函数原型声明? 3 二用户说明? 4 1菜单界面? 5 2入住登记界面? 5 3删除界面? 5 4浏览界面? 6 5查询修改? 6 ...
  • C语言编写宿舍管理系统(含源代码) 实现了 添加 修改 删除数据 查询系统 打印信息 等功能 很适合初学者使用!
  • 课题四:信息管理系统 利用链表编写下列程序(二选一) 1、宿舍管理软件 用C语言为学生宿舍管理人员编写一个宿舍管理软件。设某宿舍有:101,102,201,202四个房间,每个房间可住学生人,链表存储结构:学号、姓名、房间...

    转自我的博客园(含全部源码):https://www.cnblogs.com/xiao-qi-w/p/13125080.html

    编译和运行环境如下(如果有运行方面的问题欢迎在评论区留言,也欢迎直接加QQ:2961439733,备注博客园或CSDN即可):

    • 编辑工具:Dev-C++(版本:5.11.0.0)
    • 编译器:TDM-GCC 4.9.2 64-bit Release
    • 代码生成语言标准:ISO C99

    演示及讲解视频链接:https://www.bilibili.com/video/BV1BC4y1a78W

    好了开始进入正题,这次又双叒叕是我那位朋友的题目,不过已经是最后一题了。

    课题四:信息管理系统

    利用链表编写下列程序(二选一)

    1、宿舍管理软件

    用C语言为学生宿舍管理人员编写一个宿舍管理软件。设某宿舍有:101,102,201,202四个房间,每个房间可住学生<=4人,链表存储结构:学号、姓名、房间号、后续指针,按房间号有序,实现学生的入住、退房和查询,按给定学号、姓名、房号查询。

    2、学生成绩信息管理

    对学生的成绩信息进行管理,学生信息包括:学号、姓名、学期、每门课程的成绩、平均成绩、名次。实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。

    要求:

    1. 要有菜单进行功能选择
    2. 各个功能要分到不同的函数来写
    3. 禁止使用goto语句
    4. 链表的各种操作要熟练掌握,会进行调试(调试我打算单独放一篇文章来讲,这篇主要讲怎么实现这个程序
    5. 链表结点如果使用malloc动态分配空间,需要释放

      看完题目我果断选择了第一题,不但好做,而且算是练手吧,因为第二题在我大一C语言课程设计时已经做过类似的了。那么来简单分析一下这个题如何下手:

    首先先画出一个大致的流程图:

    接下来就是实现功能1~n,我们确定一下要用到的数据结构。按要求采用链表实现,结点是记录住宿信息的结构体:

      struct DORMITORY {
        int num; //房间号
        char id[15]; //学号
        char name[20]; //姓名
        struct DORMITORY* next;//指针域
      };

      这里我还采用了设计数据库表时的一些思想,比如主键。用学号来标识唯一的一个结构体,避免出现一个人住多个寝室的情况。这里由于题目限制,最多只会有16名学生,所以采用大小确定的二维数组进行保存,用于核对学号是否已经存在。下面再来看看我们要实现的功能。

       功能不多,主要分为入住、退房和查询三大类。入住即添加一条新的住宿信息,也就是新建链表结点;退房意味着删除一条住宿信息,即从链表里删除一个节点;至于查找嘛,这几乎是所有的管理类程序都绕不开的一个功能,在这里表现为从链表中找到符合条件的节点。它们分别对应着三种对数据的基本操作——增、删、查。还有一种是修改,题目里没要求我也就没实现,各位看官如果有兴趣可以自行实现。接下来我们进入到代码的具体实现环节,其中字符串的比较与复制用到了库函数strcmp和strcpy。

      首先是主页面:采用一个死循环,不断接受输入来执行各种功能(其余展示页面同理)

    void menu() { //主菜单
    	char t;
    	int flag = 1;
    	while(flag) {
    		system("cls"); //清屏, 然后输出新的内容
    		printf("+--------------------+\n");
    		printf("|    宿舍管理系统    |\n");
    		printf("+--------------------+\n");
    		printf("|  【1】入住 管理    |\n");
    		printf("|                    |\n");
    		printf("|  【2】退房 管理    |\n");
    		printf("|                    |\n");
    		printf("|  【3】信息 查询    |\n");
    		printf("|                    |\n");
    		printf("|  【4】使用 说明    |\n");
    		printf("|                    |\n");
    		printf("|  【5】退出 系统    |\n");
    		printf("+--------------------+\n");
    		t=getch();    //不回显输入
    		switch(t) {
    			case '1':
    				checkIn();	 //入住管理
    				break;
    			case '2':
    				checkOut();	 //退房管理
    				break;
    			case '3':
    				menu_query();//信息查询
    				break;
    			case '4':
    				direction(); //使用说明 
    				break;
    			case '5':
    				printf("\n感谢您的使用,再见( ̄︶ ̄)↗");
    				destroy();  //销毁链表,释放空间 
    				flag = 0;	//结束程序
    				break;
    			default:
    				break;
    		}
    	}
    }

    接下来我们依次实现主菜单里包含的功能:

    • 入住管理:
    void checkIn() { //登记入住信息 
    	char t;
    	while(head->num > 0) {//还有空余房间,继续循环 
    		system("cls"); 	  //清屏 
    		dormitory node = create();//新建一个节点 
    		if(node != NULL){ //创建成功 
    			head->num -= 1;			 //剩余房间数减 1 
    			node->next = head->next; //每次新结点的next指向头结点的next 
    			head->next = node;	   	 //让头结点指向新建结点 
    		}else{ //创建失败 
    			printf("学号已存在,请重新进行添加操作!");
    			break;
    		}
    		printf("\n+--------------------+");
    		printf("\n|    是否继续添加    |");
    		printf("\n+--------------------+");
    		printf("\n|【1】是      【2】否|");
    		printf("\n+--------------------+");
    		t = getch();
    		if(t == '1')
    			continue;
    		else
    			break;
    	}
    	if(head->num == 0)//人数已满 
    		printf("\n宿舍房间人数已满,无法继续入住!");
    	printf("\n即将返回主菜单……"); 
    	Sleep(1500); 	//暂停1.5秒后返回主菜单 
    }

    这里我们解释一下头插法的实现过程:

      1.首先建立一个头结点:

      2.然后新建结点p拷贝head的next指针:

      3.最后更改head的next的指针指向:

      

    这种方式建立起来的链表是逆序的(相对于创建的先后顺序),不过不影响我们这个程序的功能实现。

    • 退房管理:
    void checkOut() { //退房处理,按学号
    	char id[15];
    	int flag = 0; 
    	dormitory p = head->next;
    	system("cls"); //清屏 
    	print(); 
    	//按学号的好处是唯一,不会删除同一房间号或者重名学生的信息,数据库里学号相当于主键  
    	printf("请输入要进行此操作的学生学号(如果是误触,请输入esc确认返回):\n");
    	scanf("%s", id);
    	if(!strcmp(id, "esc\0")){
    		p =NULL;
    		flag = 1; 
    	} 
    	for(; p != NULL; p = p->next){
    		if(!strcmp(p->id, id)){
    			del(p);	  //找到对应学号,删除
    			head->num += 1;//剩余房间数加 1 
    			printf("退房办理成功!"); 
    			flag = 1;//把标志改为1 
    		}
    	} 
    	if(!flag)
    		printf("学号不存在!");
    	printf("\n即将返回主菜单……"); 
    	Sleep(1500); //暂停1.5秒后返回主菜单 
    }
    • 信息查询(以按学号查询为例,其他的查询把代码里!strcmp(p->id, id)这个判断条件更改一下即可):
    void findById() { //按学号查询 
    	char t, id[15]; 
    	int flag = 0; 
    	dormitory p = head->next;
    	system("cls"); //清屏 
    	printf("请输入要查询的学生学号:\n");
    	scanf("%s", id);
    	printf("\n+-------------------------------+\n"); 
    	printf("|         住宿信息(全)          |\n");
    	printf("+-------------------------------+\n");
    	printf("| 宿舍号 |   学   号   | 姓  名 |\n");
    	printf("+-------------------------------+\n");
    	for(; p != NULL; p = p->next){ //输出与目标学号一致的住宿信息
    		if(!strcmp(p->id, id)){
    			flag = 1;
    			printf("|  %4d  | %11s | %6s |\n", p->num, p->id, p->name);
    		}
    	}
    	printf("+-------------------------------+\n");
    	if(!flag)
    		printf("\n未找到相关信息(>﹏<)");
    	while((t = getch()) != 27);//只有按下ESC键才会中断循环并返回 
    }

    核心流程里的代码就这些,其余的部分请参考源码(见文章开头博客园链接),希望你能在理解本程序的基础上完成文章开头提到的学生成绩信息管理,如果能在此基础上利用文件保存数据,相信你的水平能更上一层楼!

    码文不易,看到这里如果对你有帮助的话不妨点个赞支持一波再走吧,3Q~ 😀

    展开全文
  • 在大学中,人口的比例比其他...因此一个管理系统的必要性是需要的,一个合适的学生宿舍管理系统,可以方便学生宿舍的管理,提高宿舍管理工作效率及查询效率,使学校管理学生的效率进一步得到提高,也使管理更加地轻松、简便。
  • 这是我做的数据结构课程设计,使用的是c语言编译,该程序实现了较多的宿舍管理查询功能。供大家参考,谢谢。
  • 为宿舍管理人员设计一个宿舍管理查询系统,程序采用交互工作方式;实现下列功能:建立合适的数据结构作为查找表并输入数据;数据分别按关键字姓名、学号、宿舍号进行排序;设计查询菜单,分别按关键字姓名、学号、...
  • 学生宿舍管理系统实现功能一、功能结构二、代码实现1.头文件声明需要使用的函数名1.打印各个选项菜单函数2.选择选项函数3.创建结构体4.宿管录入学生信息函数5.宿管修改学生信息函数6.宿管浏览已录入学生信息3.学生...
  • C语言实训报告——学生宿舍信息管理系统

    千次阅读 多人点赞 2018-11-09 22:43:45
    该学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生宿舍信息,修改学生宿舍信息,删除学生宿舍信息,保存学生宿舍信息,读取学生宿舍信息。其系统功能模块图如下: 完整代码...
  • 实现分片或楼栋为数据库的人员基本信息管理。信息包括:序号、姓名、年龄、性别、出生年月、籍贯、电话及E-mail等信息。 有几点要求:(1)用户登录:输入用户名和密码,三次输入错误,则自动退出系统,否则显示系统...
  • 高级语言程序设计课程设计 说明书 设计题目 学生宿舍管理系统 目 录 一总体设计 3 1程序总体设计 3 2. 函数原型申明 3 二用户说明 4 1菜单界面 5 2入住登记界面 5 3删除界面 5 4浏览界面 6 5查询修改 6 6排序界面 6 ...
  • 该程序是由C语言编写的一个宿舍管理查询软件,其主要功能是实现对学生信息的增加、删除、修改、查询、排序、存储、加载。其中查询可以分别以姓名、学号、寝室号为关键字查询学生信息。排序可以分别以学号和寝室号为...
  • C语言学生管理系统

    2014-11-08 11:24:32
    设有学生宿舍的数据,要求输入计算机并存放在内存中,然后增加3个宿舍的记录并可以输出材料清单,实现文件存盘和对所选择的记录进行删除,修改。并统计宿舍的总人数,宿舍的... 查询记录、输出清单  保存文件、退出
  • 设计一个《学生通讯录管理系统》,在动态链表程序的基础上,设计要求如下 (必须使用结构体和链表等数据结构) 1建立文件 存储文件使用指定文件名或默认文件名; 可以不保存输入记录,但需要确认是否保存输入记录...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

宿舍管理查询c语言

c语言 订阅