数据结构--宿舍管理查询软件

本文介绍了一款景德镇陶瓷大学实践周课程设计的宿舍管理查询软件,该软件采用交互工作方式,实现了按姓名、学号、房号排序和查询等功能。使用冒泡排序进行数据排序,二分查找进行查询,具备信息输入、显示、排序、查找、插入、删除和打印等功能。此外,还讨论了功能模块和系统流程设计,涉及链表存储结构和学生信息的管理。
摘要由CSDN通过智能技术生成

景德镇陶瓷大学

 

 

实践周课程设计报告

 

 

实验名称

编写宿舍管理查询软件

姓    名

杨茹

班    级

17信管一班

学    号

117060300109

完成日期

2018年12月27日

 

 

 

 

 

 

 

  • 实验目的

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

  • 设计要求
  1. 采用交互工作方式 
  2. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种) 
  3. 查询菜单(用二分查找实现以下操作)
  1. 按姓名查询  
  2. 按学号查询  
  3. 按宿舍号查询 
  1. 打印任一查询结果(可以连续操作)
  • 需求分析
    1. 性能分析

宿舍内入住若干学生,每个宿舍都有唯一独立编码,入住学生有唯一的姓名、学号。编写宿舍管理系统,添加学生的姓名、学号、宿舍号为关键字,创建相应函数实现各种排序、查找和插入删除等操作。使用这些关键字及函数方便进行宿舍管理。

    1. 功能分析
  1. 实现交互工作方式,各项操作结束后均应返回主菜单; 
  2. 建立数据文件:系统本无任何信息数据,需开发一个“信息输入”功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,学生信息包括:姓名,学号,宿舍号;
  3. 显示:信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;
  4. 排序:本系统按关键字(姓名、学号、房号)进行冒泡排序;
  5. 查询:采用二分查找方式,分别实现按关键字(姓名、学号、房号)查询功能; 
  6. 删除:于有些同学因为不同原因而离校,所以设计了删除功能;
  7. 插入:由于有新同学入校,所以设计了插入功能;、
  8. 打印:将查询到的某一学生信息或全部学生信息打印;
  9. 退出:退出交互工作系统。

 

功能

输入

查询   

排序

显示

插入

删除

退出

 

 
   

 

 

 

 

 

 

 

 

 

(图1  功能简图)

    1. 用户需求
  1. 创建欢迎界面;
  2. 创建线性表,提示用户输入信息,并现实显示信息,输出各种关键字信息,便于用户查阅;
  3. 创建主界面,建立主选择菜单和子选择菜单,便于用户操作;
  4. 创建返回主菜单的函数,人性化设计;
  5. 提供推出选项,操作完毕需要退出时,提供选项,便于使用者退出交互工作系统;
  6. 优化程序,提供友好界面,操作键如下:

0:退出程序       1:按姓名排序     2:按学号排序     

 3:按宿舍号排序   4:按姓名查找     5:按学号查找  

 6:按宿舍号查找   7:按学号插入     8:按学号删除

 

  • 框架设计

 

宿舍管理系统功能模块图及流程图

姓名

学号

宿舍号

按照姓名排序,冒泡排序

按照学号排序,冒泡排序

 

按照宿舍排序,冒泡排序

 

排序模块

按照姓名从小到大查找,二分法查找

按照学号从小到大查找,二分法查找

按照宿舍从小到大查找,二分法查找

 

查找模块

按照学号从小到大插入

按照学号从小到大删除

 

插入和删除

 

(图2 功能模块图)

 

y

1<=f<=8

f<0或f>8

f=0

显示学生信息

是否继续

按姓名排序

按学号排序

按宿舍号排序

按姓名查找

按学号查找

按宿舍号查找

按学号插入

按学号删除

输入

姓名

输入

学号

输入

宿舍号

输入

信息

输入

学号

退出

开始

(主界面)

输入学生信息

是否继续输入

输入整数t

判断t

y

 

 

 

(图 3 系统流程图)

 

  • 概要设计
  1. 存储结构

单链表存储,结构体定义为

typedef struct{           //定义结构体成员

     char name[20];

     int num;                 //学号宿舍号为整型

     int room;

}stu;

stu stud;

typedef struct{

     int Length;              //当前长度

     stu *Elem;               //存储空间基址

     int ListSize;            //当前分配的存储容量

}LinkList;

  1. 数据设计

int f                  全局变量,指选择的操作键数

char name[20]          姓名

int num                学号

int room               宿舍号

int Length            为线性表的当前长度

stu *Elem;          指示线性表的基地址  

int Listsize          当前分配的存储容量 

char c                 进入主界面的任意键

ch                    判断字符y或n 

int i,j               冒泡排序中,i为外层循环次数,j为内层循环次数

int i                打印学生信息时,i作为循环变量

int m;,int n;,int a   m,n,a在二分查找中分别代表房号,学号,姓名

int i,j,k;           i,j,k在按学号插入中作为循环变量 

int i,j,k=-1          i,j,k在按学号删除中作为循环变量

  1. 函数设计

int menu();                //列出主菜单

void Init(LinkList &L)     //初始化线性表

void Create(LinkList &L)   //创建学生信息表

void Shuru(LinkList L)     //学生信息录入

void Disp()                //返回主界面,调用menu()函数实现

void Sorte(LinkList &L)    //按照姓名由小到大排序,冒泡排序

void Sortn(LinkList &L)    //按照学号由小到大排序,冒泡排序

void Sortr(LinkList &L)    //按照宿舍号由小到大排序,冒泡排序

void chazhaoe(LinkList &L) //按姓名从小到大查找,二分查找

void chazhaon(LinkList &L) //按学号从小到大查找,二分查找

void chazhaor(LinkList &L) //按宿舍号从小到大查找,二分查找

void Insert(LinkList &L)  //按学号从小到大插入该学生

void Delete(LinkList &L)  //按学号从小到大删除该学生

摘 要:本系统是为方便宿舍管理人员实现宿舍管理查询而开发的,具有信息录入、显示查询、排序、插入和删除功能,能实现信息修改和通过别的途径导入大量数据,但不能实现信息存盘,使用简单方便,点击“宿舍管理查询系统.exe”即可运行。(使用详解见“说明.txt”) 宿舍管理查询软件 1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: A. 采用交互工作方式 B. 建立数据文件 ,数据文件按关键字(姓、学号、房号)进行排序(冒泡、选择、插入排序等任选一种) 2) 查询菜单: (用二分查找实现以下操作) A. 按姓查询 B. 按学号查询 C. 按房号查询 3) 打印任一查询结果(可以连续操作) 根据上述要求,我们开始考虑系统应具备的功能: (1)要实现交互工作方式,各项操作结束后均应返回主菜单; (2)系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能; (3)信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能; (4)本系统按关键字(姓、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓、学号、房号)查询功能; (5)由于有些同学因为不同原因而离校,所以设计了删除功能; (6)由于有新同学入校,所以设计了插入功能; (7)当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值