学生学籍管理系统(c语言实现)本科学位论文 下载本文

攀枝花学院学生课程设计(论文) 数据功能设计及数据结构设计

3 数据功能设计及数据结构设计

3.1数据功能设计

这个系统实现了对学生学籍的管理,主要实现了8个功能模块:

模块一、创建学生学籍信息表,输入需要创建的人数及对应学生的学号、姓名、性别、家庭住址、获奖情况等基本信息。

模块二、浏览学生的学籍信息,把所有学生的学籍信息打印出来。 模块三、插入学生的信息,输入插入学生的人数,要判断待插入学生的学号在数据库中是否已经存在,如果已经存在,则不能插入,若不存在就把该生的基本信息插入到表中。

模块四、按学号排序,采用折半插入排序算法,按学号从小到依次有序。 模块五、按学号查找及修改,先使用折半查找找到这个学生,然后提示是否修改此生的信息,如果要修改,就从新输入该生的信息修改信息。

模块六、按姓名查找及修改,先使用顺序查找找到这个学生,然后提示是否修改此生的信息,如果要修改,就从新输入该生的信息修改信息。

模块七、删除学生,首先找到该学生,然后删除该学生。 模块八、菜单,显示给用户,提示用户操作。

3.2数据结构设计

根据需求分析将用折半查找,顺序查找,折半插入排序算法实现学生学籍系统的管理:

① 顺序查找:在0号位置设立一个哨兵,从表中最后一个记录开始,逐个

进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,并且不在0号位置,则查找成功,找到所查记录;反之,若直到第0号位置是才相等,则表明表中没有所查记录,查找不成功。 ② 折半查找:假设指针low和high分别指示待查元素所在范围的下界和上

界,指针mid指示区间的中间位置。已处于中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至中间位置记录的关键字等于给定值或者查找区间的大小小于零时为止。

③ 折半插入排序:折半插入排序就是和折半查找算法的思想一样进行排序。

4

攀枝花学院学生课程设计(论文) 算法设计、数据流图及程序结构框图

攀枝花学院

学生课程设计(论文)

题 目: 学生学籍管理系 4 算法设计、数据流图及程序结构框图

4.1算法设计 学生姓名: 谢伟明 学 号: 201410804114

所在院4.1.1顺序查找算法 (系): 数学与计算机学院 把待查关键字key存入表头或表尾(俗称“哨兵”),这样可以加快执行速度。若将待查找的特定值key存入顺序表的首部(如0号单元),则顺序查找的实现方案为:从后向前逐个比较!

{ int i;

ST.elem[0].key=key; //设置监视哨 for( i=ST.length ; ST.elem[i].key!=key ; i-- ) ; return i; } //seqsearch

专 业: 软件工程 班 级: 软件工程3班 int seqsearch( stable ST, keytype key) 指 导 教 师: 何 志 国 职称: 教 授 ST.elem[0].key=key 2019年 06月 30日 攀枝花学院教务处制 i++ ST.elem[i].key!=key Y N return i

图4.1.1顺序查找算法流程图

5

攀枝花学院学生课程设计(论文) 算法设计、数据流图及程序结构框图

4.1.2折半查找算法

首先将给定值与正中元素关键字相比,若给定值比关键字值小,则缩小至左半部内查找,否则缩小至右半部内查找,每次缩小1/2的范围,然后在缩小范围的元素内取其中间值比较,直到查找成功或失败为止。

void search_Bin(SStable st ,Keytype Key) {

int mid,low=1,high=st.length; while(low<=high) {

mid=(low+high)/2;

if(key==st.elem[mid].key) return mid;

else if(st.elem[mid].key

high=mid-1;//继续在前半区查找

}

return 0; }

6

攀枝花学院学生课程设计(论文) 算法设计、数据流图及程序结构框图

return 0 Ylow=mid+1 N return mid Y Y N low<=high Low=1,high=st.length, m=(low+high)/2 key==st.elem[mid].key N st.elem[mid].key

图4.1.2折半查找算法流程图

7