1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 宿舍管理查询软件

宿舍管理查询软件

时间:2023-03-20 22:35:53

相关推荐

宿舍管理查询软件

问题描述

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

(1)采用交互工作方式

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

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

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

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

算法设计

算法思想:

主要就是排序的应用,从文件读入信息存在线性表中,实现一些对这些信息的基本操作,然后就是各种排序的应用,在这里主要用到了选择排序是循环然后一次比较。

算法设计

本程序主要包括主要包括以下几部分以及各函数的功能如下:

主函数:主函数主要包括功能菜单,定义线性表,各功能的选择实现,调用各函数。显示学生信息函数DisPlay(StQueue &st)遍历表输出所有的学生信息。读取学生信息函数Read(StQueue &st)

定义文件流,从建立好的文件中读取学生信息,将读取出的信息赋值给线性表中相应的变量。

4.添加学生信息函数Add(StQueue &st)

先输入要添加的学生的个数,然后循环添加,先输入学生的具体信息,然后复制给相应的变量。

5.编辑学生信息函数Edit(StQueue &st)

先输入要编辑的学生的个数,然后进行循环,先输入要编辑的学生的学号,然后查询学号当找到与之相对应的之后将新输入的新的学生信息替换原本信息实现编辑。

6.删除学生信息函数Delete(StQueue &st)

输入要删除的学生的个数,然后循环删除,输入要删除的学生的学号,然后遍历查找,找到相对应的之后,将其删除。

7.查询学生信息函数Query (StQueue st)

有三种查询方式,按照姓名、学号、房号进行查询,在这个函数外写三个函数依次是按照这三种方式查询,其具体思路是一样的都是遍历所有信息找到与输入信息相匹配的学生信息时,将该学生的全部信息输出。

8.对学生信息进行排序函数Pai(StQueue &st)

有三种排序依据方式,按照姓名、学号、房号进行排序,在这个函数外写三个函数依次是按照这三种方式排序,其具体思路是一样的写二层for循环进行选择排序,然后在这个函数中调用。

函数间的关系

代码

#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;}/*添加:13 Yili 11521 Huaxi 128删除:1321修改:132113 Yili 11721 Huaxi 138*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。