标题:[求助]链表学生信息管理
取消只看楼主
rqwd
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-6-25
 问题点数:0 回复次数:0 
[求助]链表学生信息管理

设计方法和基本原理
1.课题功能描述
本程序要求创建单向链表保存学生的各项信息,如学号、姓名和成绩等,并完成学生信息的插入、删除及信息的显示等功能。
2. 问题详细描述
某班有若干个学生,每个学生的成绩信息包括学号、姓名和某门课成绩。要求编写多个函数分别实现下列功能,而后在main函数中进行调用。
(1)创建链表函数creatList:建立单向链表,每个结点包括:学号(int num),姓名(char name[20]),成绩(double score)。按照学号顺序从小到大输入学生的信息。当输入学生学号为0时,表示输入结束。



(2)插入函数insert:给出某个同学的信息,按照学号的顺序将其插入该链表中,使原链表仍然有序。如插入学生信息为:
96085 WangLiping 77
98120 ZhangLi 75
99912 LiuHai 80
(3)删除函数delete:给定某个同学的学号,找到该同学的信息后,将其从链表中删除。如删除学号为98044的同学信息。
(4)显示函数output:输出链表中各个同学的信息。
3. 问题的解决方案
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想,划分为五个功能模块。
(1) 采用结构体类型存储学生信息。
(2) 创建链表时,要给各个结点输入数据(每个结点存储一个学生的信息),并建立起前后结点相互联结的关系。
(3) 插入时使用new操作符开辟新的存储空间,用来存放新结点,而后找到与该学号对应的结点,将新结点插入到其后。删除时,先输入某一个学号,而后找到与该学号对应的结点将其从链表中删除,即将该结点从链表中分离出来,并释放其内存空间。
(4) 提供菜单选项,供用户选择各个功能模块,例如:
1. 插入新信息,请选择:1
2. 删除信息,请选择:2
3. 显示信息,请选择:3
4. 结束程序,请选择:4
选择1,执行插入操作时,应提示用户输入待插入的学生信息;选择2,执行删除操作时,提示用户输入要删除的学生学号。
四、主要技术问题的描述
根据三的分析,主要问题在于链表的创建、插入和删除。
(1)链表的创建
依据学号判断链表的建立过程是否结束。输入结束后,表尾结点所指向的下一个结点应为空。
(2)结点的插入
先根据学号找到新结点的位置,例如设指针变量q指向新结点,若要将其插入到指针变量p指向的结点后,可执行如下操作:
t=p->next; //t为指针变量
p->next=q;
q->next=t;
n++;//结点数目增加
这样就将该新结点插入到了指定位置,注意考虑要插入的结点可能位于最后的位置。
(3)结点的删除
删除时,要考虑待删除结点是否为第一个结点;若为中间结点,设指针变量p1指向待删除结点,p2指向其前一个结点,则删除p1结点的操作为:
p2->next=p1->next;
delete(p1);
五、创新要求
在基本要求达到后,进行创新设计:
(1)使用多文件,即主函数和各个函数分别存放在不同的.cpp文件中,在头文件中进行函数原型声明。
(2)对程序功能进行拓展,使其更加实用。例如,将该链表按照成绩进行排序。
六、课程设计的考核方式及评分方法
1.考核方式
(1) 学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里(如果是基于MFC的编程,另外还包括源程序的压缩包)上传到所对应班级的学生名称相应文件夹中。
(2) 课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。
2.评分方法
根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。

搜索更多相关主题的帖子: 链表 信息管理 学生 学号 函数 
2007-06-26 15:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-150486-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.090339 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved