宿舍管理查询软件

问题描述

为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:

(1)采用交互工作方式

(2)可以增加、删除、修改信息

(3)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)

(4)查询  : a.按姓名查询 ;b.按学号查询 ;c按房号查询

(5)打印任一查询结果(可以连续操作)

代码

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
const int max_size=1000;
const int n=7;

typedef struct
{
    char name[20];
    char num[20];
    char dnum[10];
}StudentType;

typedef struct
{
    StudentType x[max_size];
    int length;
}StQueue;

void DisPlay(StQueue &st){
    printf("全部的学生信息如下:\n");
    printf("学号\t姓名\t房号\n");
    for(int i=1;i<=st.length;i++)
        printf("%s\t%s\t%s\n",st.x[i].num,st.x[i].name,st.x[i].dnum);
    printf("\n");
    system("pause");
    system("cls");
}

void Read(StQueue &st){
    FILE *fp;
    char na[20],nu[20],dnu[10];
    if((fp=fopen("C:\\ww\\xue.txt","r"))==NULL){
        printf("文件读取发生错误!\n");
        return;
    }
    st.length=0;
    while(!feof(fp)){
        fscanf(fp,"%s%s%s",nu,na,dnu);
        st.length++;
        strcpy(st.x[st.length].num,nu);
        strcpy(st.x[st.length].name,na);
        strcpy(st.x[st.length].dnum,dnu);
        if(st.length==n){
            printf("文件数据已全部导入!\n");
            printf("当前药品数量为:%d\n",st.length);
            DisPlay(st);
            break;
        }
    }
}

void Add(StQueue &st){
    printf("请输入要增加的学生的个数:\n");
    int k;
    scanf("%d",&k);
    for(int i=1;i<=k;i++){
        printf("请输入第%d个学生的信息:\n",i);
        printf("[提示:按学号、姓名、房号的顺序输入.]\n");
        st.length++;
        cin>>st.x[st.length].num>>st.x[st.length].name>>st.x[st.length].dnum;
        printf("添加成功!\n\n");
    }
    printf("现在一共有%d个学生的信息.\n\n",st.length);
    system("pause");
    system("cls");
}

void Edit(StQueue &st){
    printf("请输入要编辑的学生的个数:\n");
    int k,flag=1;
    scanf("%d",&k);
    for(int j=1;j<=k;j++){
        printf("请输入要编辑的第%d个学生的学号:\n",j);
        char nu[20];
        cin>>nu;
        for(int i=1;i<=st.length;i++){
            if(strcmp(nu,st.x[i].num)==0){
                printf("该学生当前信息如下:\n");
                printf("学号:%s\n姓名:%s\n房号:%s\n",st.x[i].num,st.x[i].name,st.x[i].dnum);
                printf("请输入该学生的新信息:\n");
                printf("[提示:按学号、姓名、房号的顺序输入.]\n");
                cin>>st.x[i].num>>st.x[i].name>>st.x[i].dnum;
                printf("\n");
                printf("修改成功!\n\n");
                flag=0;
                break;
            }
        }
        if(flag==1)
            printf("无该学生的信息!\n");
    }
    printf("现在一共有%d个学生的信息.\n\n",st.length);
    system("pause");
    system("cls");
}

void Delete(StQueue &st){
    printf("请输入要删除的学生的个数:\n");
    int k,flag=1;
    scanf("%d",&k);
    for(int j=1;j<=k;j++){
        printf("请输入要删除的第%d个学生的学号:\n",j);
        char nu[20];
        cin>>nu;
        for(int i=1;i<=st.length;i++){
            if(strcmp(nu,st.x[i].num)==0){
                for(int p=i;p<=st.length-1;p++)
                    st.x[p]=st.x[p+1];
                printf("删除成功!\n\n");
                st.length--;
                flag=0;
                break;
            }
        }
        if(flag==1)
            printf("无该学生的信息!\n");
    }
    printf("现在一共有%d个学生的信息.\n\n",st.length);
    system("pause");
    system("cls");
}

void Query1(StQueue st){
    printf("请输入学号:\n");
    char num[20];
    int flag=1;
    cin>>num;
    for(int i=1;i<=st.length;i++){
        if(strcmp(num,st.x[i].num)==0){
            printf("查询到的结果如下:\n");
            printf("学号:%s\n姓名:%s\n房号:%s\n\n",st.x[i].num,st.x[i].name,st.x[i].dnum);
            flag=0;
            break;
        }
    }
    if(flag==1)
        printf("没有该学生的信息!\n");
}
void Query2(StQueue st){
    printf("请输入姓名:\n");
    char name[20];
    int flag=1;
    cin>>name;
    for(int i=1;i<=st.length;i++){
        if(strcmp(name,st.x[i].name)==0){
            printf("查询到的结果如下:\n");
            printf("学号:%s\n姓名:%s\n房号:%s\n\n",st.x[i].num,st.x[i].name,st.x[i].dnum);
            flag=0;
        }
    }
    if(flag==1)
        printf("没有该学生的信息!\n");
}
void Query3(StQueue st){
    printf("请输入房号:\n");
    char dnum[20];
    int flag=1;
    cin>>dnum;
    printf("查询到的结果如下:\n");
    for(int i=1;i<=st.length;i++){
        if(strcmp(dnum,st.x[i].dnum)==0){
            printf("学号:%s\n姓名:%s\n房号:%s\n\n",st.x[i].num,st.x[i].name,st.x[i].dnum);
            flag=0;
        }
    }
    if(flag==1)
        printf("没有该学生的信息!\n");
}
void Query(StQueue st){
    printf("请选择查询的方式:\n");
    printf("   1.按学号查询.\n");
    printf("   2.按姓名查询.\n");
    printf("   3.按房号查询.\n");
    int a;
    scanf("%d",&a);
    switch(a){
        case 1:Query1(st);break;
        case 2:Query2(st);break;
        case 3:Query3(st);break;
    }
    system("pause");
    system("cls");
}

void Pai1(StQueue st){
    StudentType t;
    for(int i=1;i<=st.length;i++){
        int k=i;
        for(int j=i+1;j<=st.length;j++)
            if(strcmp(st.x[j].num,st.x[k].num)<0)
                k=j;
        if(k!=i){
            t=st.x[i];
            st.x[i]=st.x[k];
            st.x[k]=t;
        }
    }
    DisPlay(st);
}

void Pai2(StQueue st){
    StudentType t;
    for(int i=1;i<=st.length;i++){
        int k=i;
        for(int j=i+1;j<=st.length;j++)
            if(strcmp(st.x[j].name,st.x[k].name)<0)
                k=j;
        if(k!=i){
            t=st.x[i];
            st.x[i]=st.x[k];
            st.x[k]=t;
        }
    }
    DisPlay(st);
}

void Pai3(StQueue st){
    StudentType t;
    for(int i=1;i<=st.length;i++){
        int k=i;
        for(int j=i+1;j<=st.length;j++)
            if(strcmp(st.x[j].dnum,st.x[k].dnum)<0)
                k=j;
        if(k!=i){
            t=st.x[i];
            st.x[i]=st.x[k];
            st.x[k]=t;
        }
    }
    printf("按房号排序后结果如下:\n");
    DisPlay(st);
}

void Pai(StQueue &st){
    printf("请选择排序方式:\n");
    printf("    1.按学号排序.\n");
    printf("    2.按姓名排序.\n");
    printf("    3.按房号排序.\n");
    int a;
    scanf("%d",&a);
    switch(a){
        case 1:Pai1(st);break;
        case 2:Pai2(st);break;
        case 3:Pai3(st);break;
    }
}

int main()
{
    StQueue st;
    while(1){
        printf("--------欢迎来到宿舍查询系统----------\n\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\n");
        printf("---------------------------------------\n\n");
        printf("请输入您的选择:\n");
        int a;
        scanf("%d",&a);
        if(a==8){
            printf("-----------\n");
            printf("谢谢使用!\n");
            printf("-----------\n");
            break;
        }
        if(a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8){
            printf("您输入的不符合要求,请重新输入!\n");
            continue;
        }
        switch(a){
            case 1:Read(st);break;
            case 2:DisPlay(st);break;
            case 3:Add(st);break;
            case 4:Delete(st);break;
            case 5:Edit(st);break;
            case 6:Pai(st);break;
            case 7:Query(st);break;
        }
    }
    return 0;
}
/*
添加:

201813 Yili 115
201821 Huaxi 128

删除:

201813
201821

修改:

201813
201821

201813 Yili 117
201821 Huaxi 138

*/

猜你喜欢

转载自blog.csdn.net/Krismile_/article/details/86248650