当前位置:文档之家› 实验七宿舍管理查询系统

实验七宿舍管理查询系统

洛阳理工学院实验报告

查询函数:

附:源程序:

#include

#include

#include

#include

#include

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. 退出\n");

printf("\t\t****************************************\n");

printf("\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

{

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

for(j=0;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

for(j=0;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

for(j=0;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

if(i==n)

{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/

return;

}

printf("\t\t\this(her) name:%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

if(i==n)

{ printf("\t\t\t没有找到相关信息!\n"); /*输入失败信息*/

return;

}

printf("\t\t\this(her) name:%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) name:%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

{

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);

}

}

}

相关主题
文本预览
相关文档 最新文档