数据结构——宿舍管理查询系统设计
算法实现:
宿舍管理查询系统设计
1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
A. 采用交互工作方式
B. 建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
2) 查询菜单: (用二分查找实现以下操作)
A. 按姓名查询
B. 按学号查询
C. 按房号查询
3) 打印任一查询结果(可以连续操作)
程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //使用字符串
#define X 40 //现性表存储空间的初始分配量
#define increase 10 //现性表存储空间的分配量增量
int f,t=0; //定义全局变量
typedef struct
{
int xuehao;
int fanghao;
char name[20]; //字符串存放姓名
}stu;
stu stud;
typedef struct
{
int length; //长度
int listsize; //占用内存空间
stu*elem; //引用对象stu的数据成员elem
}linklist;
//线性表初始化
void init(linklist & l) //&指针应用,取变量地址
{
l.length=0;
l.listsize=X;
l.elem=(stu*)malloc(X*sizeof(stu)); //指针使用要前初始化
}
//操作菜单
void caozuo()
{
printf(" 请选择操作:\n\n");
printf("\n");
printf(" 1.姓名排序 2.学号排序 3.房号排序 \n\n");
printf(" 4.姓名查找 5.学号查找 6.房号查找 \n\n");
printf(" 7.学号插入 8.学号删除 \n\n ");
printf(" 输入0,退出操作\n");
if(t==1)
{
printf("输入数字:\n");
scanf("%d",&f);
if(f<0 && f>9)
{
system("cls"); //清除屏幕上之前显示内容
printf("\n");
printf("重新输入:\n");
caozuo();
}
}
}
//返回主界面
void disp()
{
char c;
fflush(stdin);
printf("\n按任意键进入主界面:");
scanf("%c",&c);
system("cls");
}
//无学生记录返回主界面
void panduan3()
{
printf("无学生记录\n");
disp();
caozuo();
}
//输入学生信息
void shuru(linklist l)
{
printf("输入姓名:\n");
fflush(stdin); //清除数据,得到正确的输入数据
gets(stud.name);
printf("输入学号:\n");
fflush(stdin);
scanf("%d",&stud.xuehao);
printf("输入房号:\n");
scanf("%d",&stud.fanghao);
}
//创建学生类信息表
void chuangjian(linklist & l)
{
if(l.length>=l.listsize) //判断是否超过初始值,超过,另行分配
{
stu*newbase;
newbase=(stu*)realloc(l.elem,(X+increase)*sizeof(stu));