版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数 据 结 构 课 程 设 计设计题目:利用单链表实现学生基本信息管理 课题名称利用单链表实现学生基本信息管理院 系年级专业学 号姓 名成 绩课题设计目的与设计意义课题设计目的:(1)学会单链表结点的定义(2)掌握单链表的基本运算,熟悉对单链表的一些基本操作和具体函数的定义。(3)加深对链表的理解,逐步培养解决实际问题的编程能力(4)创建一个初始链表,通过调用定义的基本操作函数来实现单链表上的插入、删除元素等操作。调试程序并对相应的输出做出分析;修改输入数据,预期输出并验证输出的结果。加深对有 关意义:一般来讲,课程设计教学实验复杂一些,深度更广并且更加接近实用.通过课程设计的综合训练,培养学
2、生实际分析问题,编程和动手能力,使学生 对数据结构进行更深一层的了解,培养同学们对学习数据结构这门课程的兴趣, 让同学们学会如何去查找资料和整合处理这些资料的能力, 也为以后的大学毕业 设计论文打下了一个初步的基础.这些课程设计都是比较难的,要分成几个小项 目, 几个学生一组, 培养团队协作精神. 最终帮助学生系统掌握课程的主要内容, 更好地完成教学任务. 基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握数据结构的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题. 指导教师:年 月 日目 录一 : 课程设计目的和意义- 1 -1、课程设计目的:- 1 -
3、2、课程设计意义:- 1 -二 :需求分析与要求 :- 1 -1、程序功能:- 1 -2、基本要求:- 2 -3、功能要求:- 2 -(1)信息录入功能:- 2 -(2)查询功能:- 2 -(3)插入功能:- 2 -(4)删除功能:- 2 -(5)输出功能:- 2 -4、说明:- 2 -5、输入输出的形式:- 3 -6、开发环境:- 3 -三、概要设计:- 3 -四、模块图:- 5 -五、详细设计:- 5 -六、 运行结果与分析:- 10 -1 、主界面- 10 -2.建立学生信息表- 11 -3、查询某学生的所有信息。- 11 -4.插入学生信息- 12 -5、删除某学生的所有信息。- 13
4、 -七 、总结:- 14 -八:源代码- 14 -九、参考文献- 19 -一 : 课程设计目的和意义1、课程设计目的:(1)学会单链表结点的定义(2)掌握单链表的基本运算,熟悉对单链表的一些基本操作和具体函数的定义。(3)加深对链表的理解,逐步培养解决实际问题的编程能力(4)创建一个初始链表,通过调用定义的基本操作函数来实现单链表上的插入、删除元素等操作。调试程序并对相应的输出做出分析;修改输入数据,预期输出并验证输出的结果。加深对有 关2、课程设计意义:一般来讲,课程设计教学实验复杂一些,深度更广并且更加接近实用.通过课程设计的综合训练,培养学生实际分析问题,编程和动手能力,使学生 对数据结
5、构进行更深一层的了解,培养同学们对学习数据结构这门课程的兴趣, 让同学们学会如何去查找资料和整合处理这些资料的能力, 也为以后的大学毕业 设计论文打下了一个初步的基础.这些课程设计都是比较难的,要分成几个小项 目, 几个学生一组, 培养团队协作精神. 最终帮助学生系统掌握课程的主要内容, 更好地完成教学任务. 基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握数据结构的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题. 二 :需求分析与要求 :1、程序功能:该系统实现对学生的基本信息的管理,其中包括学生的学号、姓名、性别、年龄、身份证号、家庭住址、联系电话
6、、总成绩等。2、基本要求:1 要求利用C语言面向过程的编程思想来完成系统的设计; 2 突出C语言的函数特征,以多个函数实现每一个子功能; 3 画出功能模块图; 4 进行简单界面设计,能够实现友好的交互5 具有清晰的程序流程图和数据结构的详细定义;6 熟练掌握C语言对文件的各种操作。3、功能要求:(1)信息录入功能: 主要是输入和记录学生的基本信息,包括学生的学号、姓名,性别、年龄、身份证号、家庭住址、联系电话、总成绩等。(2)查询功能: 通过输入学生的学号,找到该学生的所有信息。(3)插入功能: 用于实现学生信息的插入。(4)删除功能: 用于实现学生信息的删除。(5)输出功能: 输出所有学生的
7、基本信息。4、说明:(1)功能各方面越完善越好(2)自定义的数据结构使用数组,链表等,然后根据不同的数据结构,设计不同的排序,查找算法。其中,排序算法至少有两种,可以使用多种数据结构来存放数据,然后在其上使用不同的排序算法。(3)若用数组,必须动态分配空间(文本文件中最好有一行表示学生人数)5、输入输出的形式: 本系统是一个学生成绩管理系统,采用VC+6.0 编译器作为开发环境,这个环境是我们在学习C+的平台。输入数据类型主要是char、int等数据类型,输入内容包括:学生的学号、姓名、性别、年龄、身份证号、家庭住址、联系电话、总成绩等。学号、姓名、性别,年龄,身份证号和电话号码。用户在输入学
8、生数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确,输出形式与输入形式类似。 6、开发环境:Visual C+不仅仅是是一个C+编译器,而是一个基于Windows操作系统的可视化集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。 三、概要设计:1、先编入系统所需的库函数和需要宏定义的变量以及结构体的定义,从而使程序可运行。#include <stdio.h> #define maxsize 100typedef struct int num; /学号 char namemaxsize; /姓名 char s
9、exmaxsize; /性别 char admaxsize; /年龄 char adimaxsize; /身份证号 char adrmaxsize; /家庭住址 char telmaxsize; /联系电话 float score;/总成绩 st;typedef struct node st datamaxsize; struct node *next;list;2、Main()函数的设计 在main()函数中主要运用switch()-case选择判断语句来调用相关功能模块。系统的运行是在一个永远重复循环里进行的,只有在主界面并选择“退出”时,才会跳出永真循环,并退出程序。3、主界面的设计主界
10、面:在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作,所有操作均有提示语,比较人性化的管理,易懂,简单。在主界面中包括: 1、建立学生的基本信息 2、查找某学生信息 3、删除某学生有关的基本信息 4、插入某学生的基本信息 5、输出所有学生的基本信息 6、退出等全部的功能。之所以设计这么一个主界面,一是因为能使用户对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统不会打开文件紊乱或者出现致命的错误。4、以下是函数声明:list * create( ) 函数功能 :输入学生信息表,建立学生信息库。list *insert(list *h
11、) 函数功能:插入某学生的所有相关信息。list * reaserch(list *h) 函数功能:利用通过学号查找某学生的所有信息。list *delet(list *h) 函数功能:利用通过学号查找某学生的所有信息病删除掉。void output(list *h) 函数功能:输出所有学生的所有信息。四、模块图: 学生信息管理系统初始化链表输入学生个数保存所有学生信息查找某学生的信息删除某学生所有信息输出所有学生信息退出五、详细设计:1、先编入系统所需的库函数和需要宏定义的变量以及结构体的定义,从而使程序可运行。2、建立main函数大致构建在算法的过程当中所需要调用的一些函数以及利用swit
12、chcase和while循环构造一个可以永远重复调用的环境,除非用户终止循环也就退出了系统了。并且为了界面的友好化,可以利用printf()函数输出一些来美化界面的字和提示语。具体的函数如下void main() int i,j=1; list *p; while(j) printf(" -n"); printf(" | 学生信息管理 |n"); printf(" |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|n"); printf(" | 1. 登记学生信息 |n"); printf(&q
13、uot; | 2. 查询学生信息 |n"); printf(" | 3. 插入学生信息 |n"); printf(" | 4. 删除学生信息 |n"); printf(" | 5. 输出所有学生信息 |n"); printf(" -n"); printf(" 请输入你的选择:n"); scanf("%d",&i); switch(i) case 1: p=create();break; case 2: p=reaserch(p);break; case 3:
14、 p=insert(p);break; case 4: p=delet(p);break; case 5: output(p);break; default: printf("选择错误,重新开始!n"); printf("t0:退出nt1继续:"); scanf("%d",&j); 3、建立单链表,储存学生信息。首先是将建立的链表初始化,并在初始化以后利用printf()函数输出接下来用户接下来要做事情的一些指令即提示,目的是使界面友好化。list * create( ) list *p,*r; int i,n; head=(
15、list *)malloc(sizeof(list); head->next=error; r=head; printf("请输入学生人数:n"); scanf("%d",&n); for(i=1;i<=n;i+) p=(list *)malloc(sizeof(list); printf("输入学生的学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩:n"); scanf("%d%s%s%s%s%s%s%.2f",&p->datai.num,&p->dat
16、,&p->datai.sex,&p->datai.ad,&p->datai.adi,&p->datai.adr,&p->datai.tel,&p->datai.score); p->next=error; r->next=p; r=r->next; return (head); 4、根据界面的提示信息,调用不同的函数,从而实现不同的算法功能,插入函数功能是用来插入某个学生的相关信息,具体算法如下,具体操作根据提示:list *insert(list *h) list *p,*q,
17、*r,*head; head=h; r=h; p=h->next; q=(list *)malloc(sizeof(list); printf("输入待插入学生的学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩:n"); scanf("%d%s%s%s%s%s%s%.2f",&q->data->name,&q->data->sex,&q->data->ad,&q->data->adi,&q->data->adr,&q->da
18、ta->tel,&q->data->score); q->next=error; while(p!=error) r=p; p=p->next; r->next=q; r=r->next; return(head);5、查找函数式为了查找某学生信息时节约时间而设计的,从而实现对该学生信息的管理,输入学生的学号即可,操作时有提示信息,具体算法如下:list * reaserch(list *h) int k; list *p; p=h->next; printf("输入要查找学生的学号:n"); scanf("
19、%d",&k); while(p && p->data->num!=k) p=p->next; if(p) printf("学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩n"); printf("%dt%st%st%st%st%st%st%.2fn", p->data->num,p->data->name,p->data->sex,p->data->ad, p->data->adi,p->data->adr,p->
20、;data->tel,p->data->score); return p; else printf("没找到!n"); return NULL; 6、若要删除某学生的所有信息即可调用删除函数,删除时根据学生的学号可找到该学生的所有信息,并对该学生所有信息进行删除。list *delet(list *h)int k; list *p,*q; q=h; p=h->next; printf("请输入待删除学生的学号:n"); scanf("%d",&k); while(p && p->d
21、ata->num!=k) q=p; p=p->next; if(p) q->next=p->next; free(p); else printf("没有这个学生信息,无法删除!n"); return(h);7、输出函数式对所有学生的所有信息进行输出。void output(list *h) list *p; p=h->next; while(p!=error) printf("学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩n"); printf("%dt%st%st%st%st%st%st%.2fn&
22、quot;, p->data->num,p->data->name,p->data->sex,p->data->ad, p->data->adi,p->data->adr,p->data->tel,p->data->score); p=p->next; 六、 运行结果与分析:1 、主界面(图6.1) 图6.1 主界面2.建立学生信息表(图6.2) 图6.2 建立信息表3、查询某学生的所有信息。(图6.3) 图6.3 查询学生信息 4.插入学生信息。(插入前如图6.4-1。插入后如图6.4-2)
23、 图6.4-1 插入前 图6.4-2 插入后5、删除某学生的所有信息。(删除前如图6.5-1,删除后如图6.5-2) 图6.5-1 删除前 图6.5-2 删除后七 、总结:首先,经过这么长时间的编程及报告总结,我对C语言这门学科有了新的认识,感觉自己真的收获了很多!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。其次, 通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅!更
24、重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!第三,此次课程设计之初遇到了许多问题,我深刻体会到老师发挥的重要作用,在匆忙的学习中C语言程序对我们来说还不熟练,但在老师的帮助下我学会了如何掌握编写的思想,如何查找系统没有提示的错误,最后终于在一遍又一遍地把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。编完此程序后,我体会到学C语言不能死记硬背,一定要灵活的使用才行。在编写程序过程中我遇到了不少问题。也学到了不少东西。经过两个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学
25、好它重在实践,要不断的上机操作才能更好地学好C语言。从中又发现我对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。在学习当中,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,以后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机。通过这次课程设计我认识了自己,学会怎样利用C语言的函数,数组,关键字来设计自己所需要程序等的收获即有了深刻的认识,对我今后的学习以及将来走向工作岗位打下了稳固的基础。最后,非常感谢编程过程中老师的帮助和教诲
26、。八:源代码#include <stdio.h>#define maxsize 100#define error 0typedef struct int num; /学号 char namemaxsize; /姓名 char sexmaxsize; /性别 char admaxsize; /年龄 char adimaxsize; /身份证号 char adrmaxsize; /家庭住址 char telmaxsize; /联系电话 float score;/总成绩 st;typedef struct node st datamaxsize; struct node *next;li
27、st; list *head,*p; list * create( ) list *p,*r; int i,n; head=(list *)malloc(sizeof(list); head->next=error; r=head; printf("请输入学生人数:n"); scanf("%d",&n); for(i=1;i<=n;i+) p=(list *)malloc(sizeof(list); printf("输入学生的学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩:n"); scanf(&qu
28、ot;%d%s%s%s%s%s%s%.2f",&p->datai.num,&p->,&p->datai.sex,&p->datai.ad,&p->datai.adi,&p->datai.adr,&p->datai.tel,&p->datai.score); p->next=error; r->next=p; r=r->next; return (head); list *insert(list *h) list *p,*q,*r,*he
29、ad; head=h; r=h; p=h->next; q=(list *)malloc(sizeof(list); printf("输入待插入学生的学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩:n"); scanf("%d%s%s%s%s%s%s%.2f",&q->data->name,&q->data->sex,&q->data->ad,&q->data->adi,&q->data->adr,&q->data->
30、;tel,&q->data->score); q->next=error; while(p!=error) r=p; p=p->next; r->next=q; r=r->next; return(head);list * reaserch(list *h) int k; list *p; p=h->next; printf("输入要查找学生的学号:n"); scanf("%d",&k); while(p && p->data->num!=k) p=p->next
31、; if(p) printf("学号t姓名t性别t年龄t身份证号t家庭住址t联系电话t总成绩n"); printf("%dt%st%st%st%st%st%st%.2fn", p->data->num,p->data->name,p->data->sex,p->data->ad, p->data->adi,p->data->adr,p->data->tel,p->data->score); return p; else printf("没找到!n&q
32、uot;); return NULL; list *delet(list *h)int k; list *p,*q; q=h; p=h->next; printf("请输入待删除学生的学号:n"); scanf("%d",&k); while(p && p->data->num!=k) q=p; p=p->next; if(p) q->next=p->next; free(p); else printf("没有这个学生信息,无法删除!n"); return(h);void output(list *h) list *p; p=h->next; while(p!=error) printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消防报警系统升级清工合同标准文本3篇
- 年度印刷品、记录媒介复制品产业分析报告
- 无缝钢管施工方案
- 2025年金融理财产品销售合同修订与风险披露机制2篇
- 2025年度离婚财产分割协议书及无形资产评估范本3篇
- CISP0501信息安全法规、政策和标准-含网络安全法
- 2024离婚冷静期婚姻家庭关系咨询与辅导服务合同3篇
- 二零二五版反担保动产质押仓储管理服务合同2篇
- 路口施工方案
- 2025年生态旅游PPP项目合同范本3篇
- 全过程造价咨询项目保密及廉政执业措施
- 定制柜子保修合同协议书
- GB/T 712-2011船舶及海洋工程用结构钢
- GB/T 26846-2011电动自行车用电机和控制器的引出线及接插件
- GB/T 18015.1-1999数字通信用对绞或星绞多芯对称电缆第1部分:总规范
- 院医学实习请假审批表
- 2020-2021学年青岛版五年级上册期末考试数学试卷(1)1
- 导师指导记录表
- 七年级数学家长会课件
- 陕西省安康市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 陕西省渭南市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
评论
0/150
提交评论