景德镇陶瓷大学
实践周课程设计报告
实验名称 |
编写宿舍管理查询软件 |
姓 名 |
杨茹 |
班 级 |
17信管一班 |
学 号 |
117060300109 |
完成日期 |
2018年12月27日 |
- 实验目的
为宿舍管理人员编写一个宿舍管理查询软件
- 设计要求
- 采用交互工作方式
- 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
- 查询菜单(用二分查找实现以下操作)
- 按姓名查询
- 按学号查询
- 按宿舍号查询
- 打印任一查询结果(可以连续操作)
- 需求分析
- 性能分析
宿舍内入住若干学生,每个宿舍都有唯一独立编码,入住学生有唯一的姓名、学号。编写宿舍管理系统,添加学生的姓名、学号、宿舍号为关键字,创建相应函数实现各种排序、查找和插入删除等操作。使用这些关键字及函数方便进行宿舍管理。
-
- 功能分析
- 实现交互工作方式,各项操作结束后均应返回主菜单;
- 建立数据文件:系统本无任何信息数据,需开发一个“信息输入”功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,学生信息包括:姓名,学号,宿舍号;
- 显示:信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;
- 排序:本系统按关键字(姓名、学号、房号)进行冒泡排序;
- 查询:采用二分查找方式,分别实现按关键字(姓名、学号、房号)查询功能;
- 删除:于有些同学因为不同原因而离校,所以设计了删除功能;
- 插入:由于有新同学入校,所以设计了插入功能;、
- 打印:将查询到的某一学生信息或全部学生信息打印;
- 退出:退出交互工作系统。
功能 |
输入 |
查询 |
排序 |
显示 |
插入 |
删除 |
退出 |
(图1 功能简图)
-
- 用户需求
- 创建欢迎界面;
- 创建线性表,提示用户输入信息,并现实显示信息,输出各种关键字信息,便于用户查阅;
- 创建主界面,建立主选择菜单和子选择菜单,便于用户操作;
- 创建返回主菜单的函数,人性化设计;
- 提供推出选项,操作完毕需要退出时,提供选项,便于使用者退出交互工作系统;
- 优化程序,提供友好界面,操作键如下:
0:退出程序 1:按姓名排序 2:按学号排序
3:按宿舍号排序 4:按姓名查找 5:按学号查找
6:按宿舍号查找 7:按学号插入 8:按学号删除
- 框架设计
宿舍管理系统功能模块图及流程图 |
姓名 |
学号 |
宿舍号 |
学 生 信 息 表 |
按照姓名排序,冒泡排序 |
按照学号排序,冒泡排序
|
按照宿舍排序,冒泡排序
|
排序模块 |
按照姓名从小到大查找,二分法查找 |
按照学号从小到大查找,二分法查找 |
按照宿舍从小到大查找,二分法查找
|
查找模块 |
按照学号从小到大插入 |
按照学号从小到大删除
|
插入和删除 |
(图2 功能模块图)
y |
1<=f<=8 |
f<0或f>8 |
f=0 |
显示学生信息 |
是否继续 |
按姓名排序 |
按学号排序 |
按宿舍号排序 |
按姓名查找 |
按学号查找 |
按宿舍号查找 |
按学号插入 |
按学号删除 |
输入 姓名 |
输入 学号 |
输入 宿舍号 |
输入 信息 |
输入 学号 |
退出 |
开始 (主界面) |
输入学生信息 |
是否继续输入 |
输入整数t |
判断t |
y
|
(图 3 系统流程图)
- 概要设计
- 存储结构
单链表存储,结构体定义为
typedef struct{ //定义结构体成员
char name[20];
int num; //学号宿舍号为整型
int room;
}stu;
stu stud;
typedef struct{
int Length; //当前长度
stu *Elem; //存储空间基址
int ListSize; //当前分配的存储容量
}LinkList;
- 数据设计
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在按学号删除中作为循环变量
- 函数设计
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) //按学号从小到大删除该学生