当前位置:首页 > 单链表的学生成绩管理系统设计与实现
长春建筑学院《数据结构》课程设计(论文)
按姓名 查找开始 输入要查找姓名 判断 Y 输出该学生的信息 N 抱歉没有该学生 结束
图4.3按姓名查找学生成绩信息流程图
在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为NULL时查找失败。单链表查找过程如图4.4所示。
图4.4单链表查找过程的示意图
按学号查询学生成绩信息同按姓名查找学生成绩信息,此处不再详细列出。 (3)学生成绩修改模块
首先要查找与要修改数据相匹配的信息,若没有则返回失败。否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。
(4)学生成绩删除模块
当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学
- 9 -
长春建筑学院《数据结构》课程设计(论文)
号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图4.5如下:
开始删除操作 输入姓名 输入学号 姓名学号一致 Y N
执行删除功能 返回主菜单
图4.5删除学生信息模块流程图
删除操作定义为将单链表的第i个结点删去。因为在单链表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai 从链上摘下来,最后释放结点ai的存储空间,如图4.6所示。
图4.6在单链表中删除结点指针的变化情况
(5)学生成绩输出模块
从单链表表头遍历整个单链表,将所有数据输出。其部分代码如下: void Function::Show() { char choose;
- 10 -
长春建筑学院《数据结构》课程设计(论文)
Student *temp; system(\
temp=Student_First->Next; if(!temp) { cout<<\文件无数据\\n\\n \
cout<<\返回主菜单\
cin>>choose; while(choose!='1')
{ cout<<\返回主菜单\
cin>>choose;
}
Menu(); } else
{ cout<<\姓名\\t学号\\t语文成绩\\t数学成绩\\t英语成绩\\n\
while(temp!=NULL) { temp->Out();
temp=temp->Next;
}
}
cout<<\返回主菜单\ cin>>choose; while(choose!='1')
{ cout<<\返回主菜单\ cin>>choose; }
Menu(); }
- 11 -
长春建筑学院《数据结构》课程设计(论文)
第4章 概要设计
利用单链表设计一个学生成绩管理系统,使之提供以下功能: (1) 录入学生信息记录 (2) 查询学生信息记录 (3) 删除学生信息记录 (4) 修改学生信息记录 (5) 显示全部学生信息记录
需求说明:
(1) 学生信息包括学号、姓名、性别、数学成绩、英语成绩、计算机成绩、总分、平均分、名次,并且要求学号不重复;
(2) 录入记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入学生记录。当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
(3) 对学生信息应能够分别按学号及按姓名两种方式进行查询,要求能返回所有符合条件的学生的信息;若找到该学生的记录,它则返回该学生记录的指针。否则,它返回一个值为NULL的空指针,并打印出未找到该学生记录的提示信息。
(4) 更新学生信息:要求可以对其进行修改、删除、排序、插入等操作,进行了这些操作之后,需要将修改的数据存入源数据文件;
(5) 输出要求:对学生记录存盘操作,即将单链表中的各节点中存储的学生记录信息写入数据文件中,并将单链表中存储的学生记录信息以表格的形式在屏幕上打印出来;
(6) 学生信息的显示要求有一定的规范格式;
(7) 并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。 二、总体设计
初步提出解决方案,以及系统的体系结构和数据结构的设计方案,并写出书面总体设计说明书。 三、详细设计 四、编写代码 调试总结
- 12 -
共分享92篇相关文档