数据结构课设——宿舍管理查询软件(文件读取与查找排序)

本文介绍了一款宿舍管理查询软件的设计与实现,包括数据文件读取、增删改查功能以及多种排序算法(冒泡、堆、插入排序)。软件支持按姓名、学号、房号进行查询,并提供了详细的算法设计思路和代码实现。
摘要由CSDN通过智能技术生成

问题描述

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

(1)采用交互工作方式

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

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

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

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

算法思想

从文件中读入信息到结构体;根据学号查找学生信息使用折半查找,它的前提是序列有序,所以要在函数中调用按学号排序函数;根据姓名查找学生信息使用设置监视哨的顺序查找,设置第0个元素为哨兵,从后往前进行查找;根据房号查找学生信息采用从后往前顺序查找的方法;根据学号排序采用的是冒泡排序,用一个变量标记某一趟排序是否发生交换,不断进行比较和交换,直到不需要交换为止;根据姓名排序采用堆排序,沿key值较大的孩子结点向下筛选,将其建成升序的大根堆;根据房号排序采用直接插入排序,记录逐个后移,直到找到插入位置;增加学生信息即是直接输入新的信息,加到结构体数组的最后面;删除学生信息为找到该学生,后面的学生信息往前移一个;修改学生信息为找到该学生在数组中的位置,然后重新输入该位置的学生信息。

算法设计

1、菜单void menu()——输出功能选择。

2、打印全部信息void Allprint(Student &Stu)。

3、读信息void Read(Student &Stu)——从文件中读入信息到结构体。

4、按学号排序void NumSort(Student &Stu)——冒泡排序,用一个变量标记某一趟排序是否发生交换,不断进行比较和交换,直到不需要交换为止。

5、调整堆void HeapAdjust(Student &Stu,int s,int m)——将堆调整成大根堆。

6、建初堆void CreatHeap(Student &Stu)——调用调堆函数,调成大根堆。

7、按姓名排序void NameSort(Student &Stu)——堆排序,不断地把堆顶元素和未经排序子序列中最后一个元素做交换。

8、按房号排序void Housesort(Student &Stu)——直接插入排序,记录逐个后移,直到找到插入位置。

9、根据姓名查找void NameSearch(Student &Stu)——使用设置监视哨的顺序查找,设置第0个元素为哨兵,从后往前进行查找。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值