学生管理系统文档格式.docx
- 文档编号:15343442
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:15
- 大小:350.07KB
学生管理系统文档格式.docx
《学生管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《学生管理系统文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
抽象数据定义:
课程结构体的定义:
typedefstructClass{
charname[20];
intscore;
charteacher[20];
Class*next;
}Class,*ClassList;
课程结构体的定义
学生信息结构体的定义:
typedefstruct{
charnumber[10];
intage;
charsex[10];
structClass*classes;
}Student;
数据类型的定义:
structElemType
{
intkey;
Studentstudent;
};
哈希结构体的定义:
ElemType*elem;
intcount;
intsizeindex;
}HashTable;
用于排序的结构体的定义:
ElemTyper[MAXSIZE+1];
intlength;
}SqList;
基本操作:
InitHashTable(HashTable&
H)
操作结果:
初始化一个哈希表
Hash(intK)
哈希函数,返回计算得的结果
collision(int&
p,intc)
处理冲突,返回计算得的结果
SearchHash(HashTableH,intK,int&
p,int&
c)
查找哈希表,返回查找到的结果
RecreateHashTable(HashTable&
开辟更大空间,重新构造一个哈希表
InsertHash(HashTable&
H,ElemTypee)
哈希表的插入,插入一个数据
SeInsertHash(HashTable&
H,ElemTypee,fstreamdataFile)
初始哈希表插入,从文件中将数据拷贝到哈希表中
ListTraverse(ClassListL)
遍历线性链表,打印输出
TraverseHash(HashTableH)
遍历哈希表,打印输出
Partition(SqList&
L,intlow,inthigh)
一趟快速排序,并返回枢轴所在位置
QSort(SqList&
对顺序表L中的子序列L.r[low…high]作快速排序
QuickSort(SqList&
L)
对顺序表L作快速排序
HeapAdjust(SqList&
H,ints,intm)
调整H.r[s]的关键字,使H.r[s…m]成为一个小顶堆
HeapSort(SqList&
对顺序表H进行堆排序
Merge(ElemTypeSR[],ElemTypeTR[],inti,intm,intn)
将有序的SR[i…m]和SR[m+1…n]归并为有序的TR[i…n]
MSort(ElemTypeSR[],ElemTypeTR1[],ints,intt)
将SR[s…t]归并为TR1[s…t]
MergeSort(SqList&
对顺序表L作归并排序
CreateList(ClassList&
L,fstreamdataFile,intn)
初始从文件中读数据创建课程链表
Pricreat(HashTable&
people)
初始化从文件读入构造哈希表
print(ElemTypee)
打印输出单个学生信息
Isvalue(chara[],intn)
判断数组a的前n个字符是否为数字
NumSearch(HashTableH)
按学号查找,打印输出
NameSearch(HashTableH)
按姓名查找,打印输出
SexSearch(HashTableH)
按性别查找,打印输出
GradeSearch(HashTableH)
按年级查找,打印输出
TeacherSearch(HashTableH)
按教师查找,打印输出
ClassSearch(HashTableH)
按课程查找,打印输出
ShowQSort(SqListpeople1,HashTablepeople)
显示快速排序后的结果
ShowHSort(SqListpeople1,HashTablepeople)
显示堆排序后的结果
ShowMSort(SqListpeople1,HashTablepeople)
显示归并排序后的结果
AddSex(HashTableH)
统计男/女生人数
PerAverage(HashTableH)
计算个人平均成绩、总成绩
GradeAverage(HashTableH)
计算某年级平均年龄
ClassAverage(HashTableH)
计算某课程平均成绩
AddCreateList(ClassList&
L,intn)
添加数据时创建课程链表
AddHash(HashTable&
添加一个数据
ClearList(ClassList&
删除数据时清空课程链表
DeleteHash(HashTable&
删除一个记录
EditHash(HashTable&
修改一个记录
headshow(void)
显示主菜单
show1(void)
显示子菜单1
Show2(void)
显示子菜单2
Show3(void)
显示子菜单3
Show4(void)
显示子菜单4
三、调试分析
1.初始化采用文件操作,且选取的数据需要作冲突处理,测试数据具有较好的典型性,通过运行对哈希表有了具体的认识和实践。
2.查找时按学号、性别查找对用户的输入有查错处理,另外根据实际情况将个人平均成绩强制转换为了整数(采用四舍五入)。
3.排序时分别采用了快速排序、堆排序和归并排序,其中归并排序是稳定的,选取的数据也基本是无序的,且排序后不影响原来数据的结构。
4.插入、删除、修改数据在程序未关闭时是会表现出来的,但并不改变测试数据文件中的内容,这三个操作只是起一个演示作用。
5.在读文件中的数据的时候,起初我是将数据从文件中读到一个结构体数组中,然后再将结构体中的数据用哈希表的形式存下来,但这样明显浪费了空间,所以我写了两个哈希表的插入函数,一个用来作初始化的插入,另一个用来添加数据时的哈希插入,同样的理由我也写了两个建立课程链表的函数。
这样无需过渡,直接从文件中将记录读入了哈希表中。
6.为了区别哈希表中的一个单位有无数据,在初始化哈希表时我将关键字全部赋为了NULLKEY即为0,另外为了凸显关键字,我新定义了一个数据类型:
ElemType作为哈希表中的数据类型,事实上这种做法在使我在后来的编程中方便了不少。
7.在处理哈希表的容量的问题时,我定义了一个整型数组hashsize[]用来表示哈希表的容量的递增,另外定义了一个全局变量m来记录当前哈希表的最大容量。
8.在处理冲突时采用的是线性探测再散列的方法,当冲突次数过多时就重建哈希表,重建哈希表时,我先将原来哈希表中的数据用数组记录下来,在为哈希表开辟了更大的空间后,再调用InsertHash函数将原有数据插入到新的哈希表中。
9.我所遇到的最大问题是空间分配出错的问题,在创建课程链表时由于没有处理好空间分配的问题,没有对课程链表的头结点分配空间,导致遍历时学生课程数据读不出来,在处理好空间分配的问题后,以后的编程就顺畅多了。
10.在排序阶段由于我写的排序是将数组的1号位作为数据存放的首位置,而哈希表中是将0号位作为数据存放的首位置,这样在调用的时候就出问题了,为此在排序时我多分配了一个空间,将哈希表中的数据按顺序连续的赋到一个新的结构体数组中(从1号位开始赋值)。
四、用户手册
1.本程序的运行环境为DOS操作系统。
2.进入演示程序后,即显示用户界面(如图1),有五种操作可选择,选择这五种操作中的前四个的任何一个即进入相关子菜单(如图2,3,4,5所示),有另外的具体操作供选择。
3.如前面的调试分析所述,插入、删除、修改数据在程序未关闭时是会表现出来的,但并不改变测试数据文件中的内容,这三个操作只是起一个演示作用。
图1
图2
图3
图4
图5
五、测试结果
对初始数据进行了测试,程序运行正常,基本实现了预先所要求的各种操作。
1.查询部分:
测试数据的全部显示如图1-1所示,按学号查找的显示结果如图1-2所示。
其他排序显示结果也正常,篇幅有限就不显示截图了。
2.排序部分:
按学号排序的结果如图2-1所示,按年龄排序的结果如图2-2所示,按总成绩排序的结果如图2-3所示。
3.统计部分:
按男女生统计的结果如图3-1所示。
其他统计结果经检验也是正确的。
4.系统维护:
插入删除一个数据的结果分别如图4-1和4-2所示。
执行插入删除后关于查询、排序和统计的部分显示如图4-3,4-4,4-5所示。
5.退出:
选择退出后的显示如图5-1所示。
图1-1
图1-2
图2-1
图2-2
图2-3
图3-1
图4-1
图4-2
图4-3
图4-4
图4-5
图5-1
六、附录
源程序文件名:
student.cpp
存放初始数据的文件名:
students.txt
其内容为:
080710308朱啸天23男数据结构99叶延风数学分析97陈芳启
080810310徐若寒21女综合英语89王素敏数学分析90王泽军
080810313何展风20男综合英语90王素敏数学分析95王泽军
080710314刘伊蓝22女数据结构87叶延风数学分析91陈芳启
080710320郎雨筝24女数据结构90叶延风数学分析88陈芳启
080710315李文风22男数据结构93叶延风数学分析98陈芳启
080810312龙轩风21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)