利用单向链表实现简单的学生信息管理.doc

利用单向链表实现简单的学生信息管理.doc

ID:2011749

大小:145.50 KB

页数:10页

时间:2017-11-14

利用单向链表实现简单的学生信息管理.doc_第1页
利用单向链表实现简单的学生信息管理.doc_第2页
利用单向链表实现简单的学生信息管理.doc_第3页
利用单向链表实现简单的学生信息管理.doc_第4页
利用单向链表实现简单的学生信息管理.doc_第5页
资源描述:

《利用单向链表实现简单的学生信息管理.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、编号:34河北工业大学计算机软件技术基础(VC)课程设计报告学院班级姓名__学号___成绩______一、题目:利用单向链表实现简单的学生信息管理(34)二、设计思路1、总体设计1)分析程序的功能创建单向链表保存学生的各项信息,学号、姓名和成绩,并完成学生信息的插入、删除及信息的显示等功能.2)系统总体结构:学生信息管理信息的输入信息的插入信息的删除信息的输出结束开始第10页/共10页编号:34按照程序要求的功能采用结构化的设计思想,划分为五个功能模块:①创建链表函数creatList:建立单向链

2、表,每个结点包括:学号(intnum),姓名(charname[20]),成绩(doublescore)。按照学号顺序从小到大输入学生的信息。当输入学生学号为0时,表示输入结束。②插入函数insert:给出某个同学的信息,按照学号的顺序将其插入该链表中,使原链表仍然有序。③删除函数delete:给定某个同学的学号,找到该同学的信息后,将其从链表中删除。④显示函数output:输出链表中各个同学的信息。⑤主函数main:控制整个构成的输入输出。2、各功能模块的设计:说明各功能模块的实现方法①头文件:

3、对自定义函数进行原型说明。②主函数:对各函数进行调用,实现各函数的功能,达到学生信息管理的目的。③函数定义部分:定义各个功能函数:创建链表函数、插入函数、删除函数、显示函数,以便执行程序时供主函数调用。3、设计中的主要困难及解决方案①链表的创建时,需依据学号判断链表的建立过程是否结束。输入结束后,表尾结点所指向的下一个结点应为空。②插入新信息时,先根据学号找到程序中新结点的位置。因插入点有表头、中间、表尾三种情况,为此采用讨论的方法,把三种情况进行讨论使其分开进行。③删除信息时,删除的信息有头结点

4、和中间结点两种情况,把两种情况进行讨论使其分开进行。4、所设计的程序最终完成的功能1)保存学生的各项信息,如学号、姓名和成绩,并完成学生信息的插入、删除及信息的显示功能从而实现学生管理。2)数据测试及运行结果①测试数据输入数据学号姓名成绩98023LiLi8598044WangTao6999764ZhangXiaobao7299812LiuLifang91插入数据学号姓名成绩96085WangLiping7798120Zhangli7599912LiuHua80第10页/共10页编号:34删除数据

5、学号98044②运行结果第10页/共10页编号:34第10页/共10页编号:34三、程序清单本程序包含f1.cpp、f2.cpp、f3.cpp、f4.cpp、f5.cpp和tou.h六个文件。1.f1.cpp文件清单#include#include"tou.h"intn;student*creatlist(){student*head;//表头指针student*p1;//p1指向新建结点student*p2;//p2指向表尾结点n=0;//n为结点个数,初值为0head=

6、NULL;//在没有创建任何结点时,表头指向空p1=new(student);//创建一个新结点p2=p1;//表尾p2也指向p1cin>>p1->num>>p1->name>>p1->score;//输入第一个结点的学生数据while(p1->num!=0)//链表建立过程结束的判断条件第10页/共10页编号:34{n++;if(n==1)head=p1;//将链表中第一个新建结点作为表头elsep2->next=p1;//原表尾结点所指向的下一个结点应为新建结点p2=p1;//新建结点成为新的

7、表尾结点p1=new(student);//新建一个结点cin>>p1->num>>p1->name>>p1->score;//输入新建结点的学生数据}delete(p1);//对于num=0的结点不应被连接到链表中,应删除其空间p2->next=NULL;//输入结束,表为结点所指向的下一个结点应为空returnhead;//返回表头指针}2.f2.cpp文件清单#include#include"tou.h"student*insert(student*head,stud

8、ent*t){student*p0;//待插入结点student*p1;//p0插入p1之前、p2之后student*p2;p1=head;p0=t;if(head==NULL)//原链表是空表{head=p0;p0->next=NULL;}else{while((p0->num>p1->num)&&(p1->next!=NULL))//查找待插入位置{p2=p1;p1=p1->next;}if(p0->num<=p1->num)//从链表中找到一个比插入的num大的结点{if(p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。