数据结构课程设计报告
题目:学生管理系统的设计与实现
——采用顺序表结构
目 录
- 1 -
一、需求分析 – –– –– –– –––– –– –– –– 2
二、概要设计 – –– –– –– –––– –– –– –– 2
1. 学生管理系统顺序表存储结构– –– –– –– 2
2. 抽象数据类型的定义 – –– –– –– –– – 3
3. 程序模块之间的层次(调用)关系 – –– –– 5
4. 学生管理系统程序模块图 – –– –– –– – 5
三、详细设计 – –– –– –– –––– –– –– – 5
1. 伪代码算法 – –– –– –– –– –– –– 5
2. 执行流程图 – –– –– –– –– –– –– 11
四、调试分析– –– –– –– –––– –– –– –– 11
五、测试结果– –– –– –– –––– –– –– –– 14
六、参考文献– –– –– –– –––– –– –– –– 16
- 2 -
一:需求分析
本程序要求设计一个包含学生信息(学号,姓名,成绩)的学生管理系统(可
以不考虑重名的情况),以顺序表的结构实现,系统包含的功能如下:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 给定一个学生信息,插入到表中指定的位置;
(4) 删除指定位置的学生记录;
(5) 统计表中学生个数;
(6) 利用直接插入排序或者折半插入排序按照姓名进行排序;
(7) 利用快速排序按照学号进行排序;
(8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成
绩;
(9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和
成绩。
要求:设计具有一定的健壮性,美观及界面友好,具有保存功能。
二:概要设计
1. 学生管理系统顺序表存储结构:
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 20
typedef struct{ //定义学生信息(学号,姓名,成绩)数据结构类型
int num; //学号
char name[10]; //姓名
int score;//成绩
}Student;
typedef struct{//定义存放学生信息的顺序表
Student *elem;
int total; //当前学生总数
int listsize; //当前分配的顺序表长度
}Stu_List;
- 3 -
2. 抽象数据类型的定义:
ADT Stu_List{
数据对象:D={ stu
i
| stu
i
:Student}
数据关系:R={ <stu
i-1
,stu
i
>}
基本操作:
read(&L)
初始条件:保存学生信息的文件已存在
操作结果:读取文件信息到学生表
re_save(L)
初始条件:学生信息表 L 已存在
操作结果:保存 L 的信息到文件
Input_stu(&L)
初始条件:线性表已存在
操作结果:构造一个学生线性表并输入学生信息。
show_stu(L)
初始条件:学生表 L 已存在
操作结果:逐个显示学生表 L 中的学生信息
Insert_stu(&L,pos)
初始条件:学生表 L 已存在
操作结果:在 L 的 pos 位置插入一个学生的信息
Delete_stu(&L,pos)
初始条件:学生表 L 已存在
操作结果:在 L 中删除 pos 位置的信息
name_Binsert_sort(&L)
初始条件:学生表 L 已存在
操作结果:返回按照姓名折半插入排序的结果
Quick_oneTime(&L,low,high)
初始条件:学生表 L 已存在
操作结果:返回根据学号用快速排序进行的一趟排序返回枢轴位置
- 4 -
QSort(&L,low,high)
初始条件:学生表 L 已存在
操作结果:返回将子区间快速排序的结果
num_QuickSort(&L)
初始条件:学生表 L 已存在
操作结果:返回按照学号快速排序的结果
name_search_bin_stu(L)
初始条件:学生表 L 已存在
操作结果:按照姓名折半查找,查找成功返回此姓名在顺序表中的位置,
否则返回-1.
Search(L,low,high,name[10])
初始条件:学生表 L 已存在
操作结果:查找并返回与 name 相同的记录在表中的位置
num_search_bin_stu(L)
初始条件:学生表 L 已存在
操作结果:按照学号折半查找,查找成功返回此学号在顺序表中的位置
}ADT Stu_List
图 2-4-1 学生管理系统程序功能模块图
学生管理系统
重新输入学生信息
逐个
显示
学生
信息
插入
学生
信息
到指
定位
置
删除
指定
位置
的信
息
统
计
学
生
个
数
按
姓
名
排
序
按
学
号
排
序
按姓
名查
找
按学
号查
找
载入文本信息
保存学生信息