⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 阿.txt

📁 宿舍管理查询系统 【问题描述】为宿舍管理人员编写一个宿舍管理查询系统。 【基本要求】 (1)采用交互工作方式 (2)建立数据文件
💻 TXT
字号:
#include <conio.h> 
#include<stdio.h> 
#include<stdlib.h> 
#include<ctype.h> 
#include<string.h> 

typedef struct /*定义结构体数组*/ 
{ 
char num[10]; /*学号*/ 
char name[20]; /*姓名*/ 
int roomID; /*房号*/ 
}Student; 
Student stu[80]; /*结构体数组变量*/ 

int menu_select() /*菜单函数*/ 
{ 
char c; 
do{ 
system("cls"); /*运行前清屏*/ 
printf("\t\t************宿舍管理查询系统************\n"); /*菜单选择*/ 
printf("\t\t | 1. 输入信息 |\n"); 
printf("\t\t | 2. 显示所有信息 |\n"); 
printf("\t\t | 3. 排序 |\n"); 
printf("\t\t | 4. 查询信息 |\n"); 
printf("\t\t | 0. Quit |\n"); 
printf("\t\t****************************************\n"); 
printf("\t\t\t请输入处理种类(0-4):"); 
c=getchar(); /*读入选择*/ 
}while(c<'0'||c>'4'); 
return(c-'0'); /*返回选择*/ 
} 

int Input(Student stud[],int n) /*输入若干条记录*/ 
{int i=0; 
char sign,x[10]; /*x[10]为清除多余的数据所用*/ 
while(sign!='n'&&sign!='N') /*判断*/ 
{ 
printf("\t\t\t学号:"); /*交互输入*/ 
scanf("\t\t\t%s",stud[n+i].num); 
printf("\t\t\t姓名:"); 
scanf("\t\t\t%s",stud[n+i].name); 
printf("\t\t\t房号:"); 
scanf("\t\t\t%d",&stud[n+i].roomID); 
gets(x); /*清除多余的输入*/ 
printf("\t\t\t还需要继续输入吗?(Y/N)"); 
scanf("\t\t\t%c",&sign); /*输入判断*/ 
i++; 
} 
return(n+i); 
} 

void Display(Student stud[],int n) /*显示所有记录*/ 
{ 
int i; 
printf("\t\t\t-----------------------------------\n"); /*格式头*/ 
printf("\t\t\t学号\t\t姓名\t\t房号\n"); 
printf("\t\t\t-----------------------------------\n"); 
for(i=1;i<n+1;i++) /*循环输入*/ 
{ 
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].roomID); 
if(i>1&&i%10==0) /*每十个暂停*/ 
{ 
printf("\t\t\t-----------------------------------\n"); /*格式*/ 
printf("\t\t\t"); 
system("pause"); 
printf("\t\t\t-----------------------------------\n"); 
} 
} 
printf("\t\t\t"); 
system("pause"); 
} 

void Sort_by_num(Student stud[],int n) /*按学号排序*/ 
{ int i,j,*p,*q,s; 
char t[10]; 
for(i=0;i<n-1;i++) /*冒泡法排序*/ 
for(j=0;j<n-1-i;j++) 
if(strcmp(stud[j].num,stud[j+1].num)>0) 
{strcpy(t,stud[j+1].num); 
strcpy(stud[j+1].num,stud[j].num); 
strcpy(stud[j].num,t); 
strcpy(t,stud[j+1].name); 
strcpy(stud[j+1].name,stud[j].name); 
strcpy(stud[j].name,t); 
p=&stud[j+1].roomID; 
q=&stud[j].roomID; 
s=*p; 
*p=*q; 
*q=s; 
} 
Display(stu,n); 
} 

void Sort_by_name(Student stud[],int n) /*按姓名排序*/ 
{ int i,j,*p,*q,s; 
char t[10]; 
for(i=0;i<n-1;i++) /*冒泡法排序*/ 
for(j=0;j<n-1-i;j++) 
if(strcmp(stud[j].name,stud[j+1].name)>0) 
{strcpy(t,stud[j+1].num); 
strcpy(stud[j+1].num,stud[j].num); 
strcpy(stud[j].num,t); 
strcpy(t,stud[j+1].name); 
strcpy(stud[j+1].name,stud[j].name); 
strcpy(stud[j].name,t); 
p=&stud[j+1].roomID; 
q=&stud[j].roomID; 
s=*p; 
*p=*q; 
*q=s; 
} 
Display(stu,n); 
} 

void Sort_by_room(Student stud[],int n) /*按房号排序*/ 
{ int i,j,*p,*q,s; 
char t[10]; 
for(i=0;i<n-1;i++) /*冒泡法排序*/ 
for(j=0;j<n-1-i;j++) 
if(stud[j].roomID>stud[j+1].roomID) 
{strcpy(t,stud[j+1].num); 
strcpy(stud[j+1].num,stud[j].num); 
strcpy(stud[j].num,t); 
strcpy(t,stud[j+1].name); 
strcpy(stud[j+1].name,stud[j].name); 
strcpy(stud[j].name,t); 
p=&stud[j+1].roomID; 
q=&stud[j].roomID; 
s=*p; 
*p=*q; 
*q=s; 
} 
Display(stu,n); 
} 

void Query_a_record_by_name(Student stud[],int n) /*查找并显示一个记录*/ 
{ 
char s[20]; 
int i=0; 
printf("\t\t\t请输入姓名:"); /*交互式输入*/ 
scanf("\t\t\t%s",s); 
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/ 
return; 
} 
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/ 
printf("\t\t\this(her) number:%s\n",stud[i].num); 
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID); 
} 

void Query_a_record_by_num(Student stud[],int n) /*查找并显示一个记录*/ 
{ 
char s[20]; 
int i=0; 
printf("\t\t\t请输入学号:"); /*交互式输入*/ 
scanf("\t\t\t%s",s); 
while(strcmp(stud[i].num,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/ 
return; 
} 
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/ 
printf("\t\t\this(her) number:%s\n",stud[i].num); 
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID); 
} 

void Query_a_record_by_room(Student stud[],int n) /*查找并显示一个记录*/ 
{ 
int s;; 
int i=0; 
printf("\t\t\t请输入房号:"); /*交互式输入*/ 
scanf("\t\t\t%d",&s); 
while(stud[i].roomID==s) i++; /*查找判断*/ 
if(i==n) 
{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/ 
return; 
} 
printf("\t\t\this(her) number:%s\n",stud[i].name);/*输出该学生信息*/ 
printf("\t\t\this(her) number:%s\n",stud[i].num); 
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID); 
} 

void WritetoText(Student stud[],int n) /*将所有记录写入文件*/ 
{ 
int i=0; 
FILE *fp; /*定义文件指针*/ 

if((fp=fopen("stu.txt","w"))==NULL) /*打开文件*/ 
{ 
printf("\t\t\t文件打开失败!!\n"); 
system("pause"); 
return; 
} 
fprintf(fp,"%d\n",n); /*循环写入数据*/ 
while(i<n) 
{ 
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].roomID); 
i++; 
} 
fclose(fp); /*关闭文件*/ 
printf("文件保存完毕!\n"); /*返回成功信息*/ 
} 

void main() /*主函数*/ 
{ 
int n=0,i; 
for(;;) 
{ 
switch(menu_select()) /*选择判断*/ 
{ 
case 1: 
printf("\t\t\t输入相关情报\n"); /*输入若干条记录*/ 
n=Input(stu,n); 
break; 

case 2: 
printf("\t\t\宿舍状况一览\n"); /*显示所有记录*/ 
Display(stu,n); 
break; 

case 3: 
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t"); 
scanf("%d",&i); 
while(i) 
{ 
if(i<1||i>3) 
{ 
printf("错误输入!!\n"); 
printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t"); 
continue; 
} 

switch(i) 
{ 
case 1: 
Sort_by_name(stu,n); 
break; 
case 2: 
Sort_by_num(stu,n); 
break; 
case 3: 
Sort_by_room(stu,n); 
break; 
} 
break; 
} 
printf("\t\t\t排序完毕!\n"); 
printf("\t\t\t"); 
WritetoText(stu,n); 
system("pause"); 
break; 

case 4: 
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t"); 
scanf("%d",&i); 
while(i) 
{ 
if(i<1||i>3) 
{ 
printf("错误输入!!\n"); 
printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t"); 
continue; 
} 

switch(i) 
{ 
case 1: 
Query_a_record_by_name(stu,n); 
break; 
case 2: 
Query_a_record_by_num(stu,n); 
break; 
case 3: 
Query_a_record_by_room(stu,n); 
break; 
} 
break; 
} 
printf("\t\t\t"); 
system("pause"); 
break; 

case 0: 
printf("\t\t\t欢迎使用!!\n"); /*结束程序*/ 
printf("\t\t\t"); 
system("pause"); 
exit(0); 
} 
} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -