2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 宿舍管理查询软件系统

宿舍管理查询软件系统

时间:2019-09-13 15:21:04

相关推荐

宿舍管理查询软件系统

宿舍管理查询软件系统

题目描述

为宿舍管理人员编写一个宿舍管理查询软件。

基本要求

(1)采用交互工作方式

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

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

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

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

数据文件为自己随便创建下,放在与该cpp文件相同所处存储位置

#include<stdio.h>#include<stdlib.h>#include<string.h>#define Max 200typedef struct{int id;char name[5];int room_id;}student;int n=0;student stu[Max];void menu(){//菜单,可以直接多次调用该方法输出菜单选项 printf("*******欢迎使用宿舍管理查询软件系统*******\n");printf(" 1、读取数据文件\n");printf(" 2、查询学生信息\n");printf(" 3、增加学生信息\n");printf(" 4、删除学生信息\n");printf(" 5、修改学生信息\n");printf(" 6、不同方式排序\n");printf(" 7、查询所有学生\n");printf(" 0、退出管理系统\n");printf("请输入您的需求:");}print(){//打印学生信息 printf("***学号*** ***姓名*** ***宿舍号码***\n");for(int i=0;i<n;i++){printf("%6d",stu[i].id);printf("%18s",stu[i].name);printf("%20d\n",stu[i].room_id);}}void read(){n=0;FILE *fp;//建立文件操作指针 int id1,room_id1;char name1[20];if((fp=fopen("student.txt","r"))==NULL){//fopen打开数据文件将地址传给fp “r”为该文档权限只读printf("出错!找不到学生信息数据文件\n");return;}while(!feof(fp)){fscanf(fp,"%s%d%d",name1,&id1,&room_id1);stu[n].id=id1;strcpy(stu[n].name,name1);stu[n].room_id=room_id1;n++;if(n==6){printf("数据文件全部读取完毕\n");printf("学生信息目前数量为:%d\n",n);printf("学生信息目前如下:\n");print();break;}}fclose(fp);//关闭数据文件 }void search(){int a;//定义查询方式选项 bool flag;//定义逻辑变量判断是否查询到此信息 printf("********我们提供以下方式查询\n");printf("1、按学号查询\n");printf("2、按姓名查询\n");printf("3、按宿舍号码查询\n");printf("********请问您想按什么查询:");scanf("%d",&a);if(a==1){//使用顺序查找法 int id1;flag=false; printf("请输入查询学号:");scanf("%d",&id1);for(int i=0;i<n;i++){if(stu[i].id==id1){flag=true; printf("-------查询到的信息如下:\n");printf("姓名:%s\n",stu[i].name);printf("学号:%d\n",stu[i].id);printf("宿舍号码:%d\n",stu[i].room_id);}}if(!flag){printf("对不起,查无此人。\n");}}else if(a==2){char name1[5];char st[5];flag=false;printf("请输入查询姓名:");gets(st);gets(name1);for(int i=0;i<n;i++){if(strcmp(stu[i].name,name1)==0){//使用strcmp()方法比较字符串 flag=true;printf("-------查询到的信息如下:\n");printf("姓名:%s\n",stu[i].name);printf("学号:%d\n",stu[i].id);printf("宿舍号码:%d\n",stu[i].room_id);break;}}if(!flag){printf("对不起,查无此人。");}}else if(a==3){int room_id1;flag=false; printf("请输入查询宿舍号码:");scanf("%d",&room_id1);for(int i=0;i<n;i++){if(stu[i].room_id==room_id1){flag=true;printf("-------查询到的信息如下:\n");printf("姓名:%s\n",stu[i].name);printf("学号:%d\n",stu[i].id);printf("宿舍号码:%d\n",stu[i].room_id);}}if(!flag){printf("对不起,查无此人。\n");}}}void add(){n++;student stu1;printf("请输入该同学的学号:");scanf("%d",&stu1.id);printf("请输入该同学的姓名:");scanf("%s",stu1.name);printf("请输入该同学的宿舍号码:");scanf("%d",&stu1.room_id);stu[n-1]=stu1;printf("添加成功!!!\n");}void del(){int num1;bool flag=false;printf("请输入所需删除学生的学号:");scanf("%d",&num1);for(int i=0;i<n;i++){if(num1==stu[i].id){flag=true;for(int j=i;j<n;j++){stu[j]=stu[j+1];}break;}}if(flag){printf("删除成功!!!\n");n--;}else{printf("无此学生信息!!!");}}void change(){print();//打印目前所有的学生信息,方便实时查看修改的位置 int num,i;printf("请输入所需修改的学生学号:");scanf("%d",&num);for(i=0;i<n;i++){if(num==stu[i].id)break;}int x;int room_id1;char name1[5];printf("---请问您所需修改的是...\n");printf("---1、修改姓名\n");printf("---2、修改宿舍号码\n");scanf("%d",&x);if(x==1){printf("请输入修改后的姓名:\n");scanf("%s",name1);strcpy(stu[i].name,name1);}else if(x==2){printf("请输入修改后的宿舍号码:\n");scanf("%d",&room_id1);stu[i].room_id=room_id1;}}void sort1(){//选择排序 ---按学号排序 //int n1=0;//while(stu[n1].id!=NULL){//n1++;//}//n=n1;//获取学生信息数量student stu1;for(int i=0;i<n;i++){int min=i;for(int j=i+1;j<n;j++){if(stu[min].id>stu[j].id)min=j;}if(min!=i){stu1=stu[min];stu[min]=stu[i];stu[i]=stu1;}}print();}void sort2(){//选择排序--- 按姓名排序 //int n1=0;//while(stu[n1].id!=NULL){//n1++;//}//n=n1;//获取学生信息数量student stu1;for(int i=0;i<n;i++){int min=i;for(int j=i+1;j<n;j++){if(stu[min].name>stu[j].name)min=j;}if(min!=i){stu1=stu[min];stu[min]=stu[i];stu[i]=stu1;}}print();}void sort3(){//int n1=0;//while(stu[n1].id!=NULL){//n1++;//}//n=n1;//获取学生信息数量student stu1;for(int i=0;i<n;i++){int min=i;for(int j=i+1;j<n;j++){if(stu[min].room_id>stu[j].room_id)min=j;}if(min!=i){stu1=stu[min];stu[min]=stu[i];stu[i]=stu1;}}print();}void sort(){//不同方式排序,运用switch调用到不用排序方式的方法 printf("----请选择排序方式:\n");printf("1.按学号排序.\n");printf("2.按姓名排序.\n");printf("3.按宿舍号码排序\n");int x;scanf("%d",&x);switch(x){case 1:sort1();break;case 2:sort2();break;case 3:sort3();break;}} int main(){menu();//打印菜单 int x;do{scanf("%d",&x);switch(x){case 1:read();system("pause");system("cls");menu();break;//system("pause")为暂停方法 system("cls")为对控制台清屏方法 case 2:search();system("pause");system("cls");menu();break;//以上两个方法都处于stdio.h case 3:add();system("pause");system("cls");menu();break;case 4:del();system("pause");system("cls");menu();break;case 5:change();print();system("pause");system("cls");menu();break;case 6:sort();system("pause");menu();break;case 7:print();system("pause");menu();break;case 0:printf("已退出宿舍管理软件系统,感谢使用!");break;default:printf("请重新输入!\n");}}while(x!=0);}

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