链表结构系统设计讲解_第1页
链表结构系统设计讲解_第2页
链表结构系统设计讲解_第3页
链表结构系统设计讲解_第4页
链表结构系统设计讲解_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、常州大学怀德 学院 计算机141 班 周尧明 同学一、设计题目2链表结构系统设计 二、C语言课程设计的目的和意义C语言课程设计是C语言程序设计课程的一个重要的环节。它是根据教学计划的要求,在老师指导下,对学生实施程序设计训练的必要过程,是对前期课堂教学效果的检验。其目标在于培养学生综合应用理论知识来分析和解决实际问题的能力。通过本次课程,要求学生能够遵循软件开发过程的基本规范,应用结构化程序设计的方法,按照题目要求,独立完成设计任务,使学生更加深刻地理解和掌握C语言的基本概念、语言特点和编程技巧,为以后相关课程的学习打下良好基础。三、设计内容本课程设计的内容分三个阶段来完成。各部分目的及内容:

2、任务二 链表结构系统设计目的:(1)熟悉使用结构体和链表进行复杂数据的表示方法 ;(2)掌握结构体和链表数据的的常用操作的实现方法;(3)熟悉一个完整的信息管理软件的开发流程、设计和表示方法。内容和要求:(1) 使用多文件结构形式完成本设计。基本要求同任务一:通过函数调用实现学生成绩的增加、显示、指定成绩的删除、查找和排序功能。各功能使用相应的函数实现,各函数包含在不同的文件中。为各项操作功能设计菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。(2) 使用结构体存储每位学生的信息(包括成绩),将多位学生的信息以链表方式组织。(3)使用指针操作访问学生结构体数组的

3、每一个学生信息。(4)使用动态申请和释放内存函数完成对学生信息的增删操作。(5)构造独立的头文件,包含所需的所有的头文件和函数原型说明。(6)设计报告包括课题的需求分析、系统设计、详细设计、系统实现和测试。(7)扩展:如任务一。任务二 链表结构系统设计.11 问题描述.12 系统设计.12.1 系统功能结构图. .12.2 系统流程设计图.12.3 数据设计.22.4 系统文件结构图.23 详细设计.23.1结构体定义. . .23.2文件和自定义函数间的关系. .23.3 函数之间调用关系.33.4 函数设计.34 系统实现.45 系统测试和结果.9总结.39参考文献.39致谢.39任务二

4、链表结构系统设计1 问题描述本程序是通过链表来实现对动态数据结构来保存学生信息,并在链表中实现数据的输入、删除、查询、排序、显示、插入的功能。本课题需要实现一些拓展,并且用多文件操作。将成绩存入文件中,还要从文件中读出成绩。2 系统设计2.1系统功能结构图如图1所示学生信息管理系统输入学生信息删除学生信息查询学生信息学生成绩排序输出学生信息插入学生信息图1 系统功能结构图2.2系统流程设计图如图2所示欢迎界面1.成绩输入,并判断成绩是否有效进入菜单选项2.循环删除成绩3.循环查找学生成绩4.学生成绩排序,并输出成绩0.退出系统5.输出学生成绩6.循环插入成绩,并判断学号是否相同图2 系统流程设

5、计图2.3数据设计定义结构体,包括以下成员:学号:num 整型数据姓名:name2020位长的数字字符串成绩:score浮点型数据2.4系统文件结构图如图3所示zym_task2.h-头文件zym_main.c-主函数zym_menu.c-主菜单zym_input.c- -成绩输入zym_del.c-成绩删除zym_find.c-成绩查询zym_scort.c-成绩排序zym_display.c-成绩显示zym_insert.c-成绩插入图3 系统文件结构图3详细设计3.1 结构体定义结构体是一种构造类型数据,可以将一组不同的数据组合在一起统一管理。对于学生成绩管理程序,每个学生的信息除了成绩

6、以外,还可以包含学号、姓名等不同类型的数据。因此,可构造结构体来表示每一个学生的信息,结构体的数据包括学号、姓名、成绩。结构体定义如下:typedef structint num;char name20;float score; STU;3.2文件和自定义函数间关系文件名文件所对应的函数功能说明zym_main.cvoid main()主函数,进行选择功能选项zym_menu.cvoid menu()主函数,输入功能选项zym_ input.cSTU *input()输入学生信息,并对数据有效判断,可循环输入zym_ del.cSTU* del(STU*h)删除学生信息,可循环删除zym_fi

7、nd.cvoid find(STU*h)按学号查询成绩,可循环查询zym_sort.cSTU *scort(STU * h)成绩排序,并输出学生信息zym_display.cvoid display(STU *h)学生成绩显示zym_insert.cSTU *insert(STU *h)在链表的结尾插入学生信息,并输出3.3函数之间调用关系如图5所示void menu()void main()STU *insert(STU *h)void display(STU *h)void find(STU*h)STU* del(STU*h)STU *input()STU *scort(STU * h)图

8、5 函数之间调用关系3.4函数设计(1) 主函数A.函数原型:void main()B.功能:显示学生信息管理系统的7个功能C.入口函数:无D.出口函数:无E.通过键盘的输入,实现函数调用从而实现相应的功能。(2) 菜单函数A.函数原型:vois menu()B.功能:显示菜单主界面C.入口函数:无D.出口函数:无E.描述:输出菜单选项(3) 学生的信息输入A.函数原型:STU *input()B. 功能:输入学生信息C.入口函数:无D. 出口函数:h:头指针E.描述:循环输入学生信息,并判断输入的信息是否有效,有效就写入链表中,无效则不写入链表。(4) 学生信息删除A.函数原型:STU* d

9、el(STU*h)B.功能:学生信息删除C.入口函数: h:头指针D.出口函数: h:头指针E.描述:循环按学号删除学生信息;删除之后,输出剩余学生信息。(5)学生信息查询A.函数原型:void find(STU*h)B.功能;学生信息查询C.入口函数:h:头指针D.出口函数:无E.描述:循环按学号查询学生信息,并输出学生信息(6)学生信息排序A.函数原型:STU *scort(STU * h)B. 功能:学生信息排序C. 入口函数:h:头指针D. 出口函数:h:头指针E.描述:对学生的信息排序,最后再输出。(7)学生信息显示A.函数原型:void display(STU *h)B.功能:学生

10、信息显示C.入口函数:h:头指针D.出口函数:无E.描述:将所有学生的信息显示出来。(8)插入学生信息A.函数原型:STU *insert(STU *h)B.功能:插入学生成绩C.入口函数:h:头指针D.出口函数:h:头指针E.描述:将要插入的学生信息插入到链表末端,最后再输出所有学生成绩。4函数实现(1)头文件 zym_task2.h#includestdio.h/定义输入输出头文件#includestdlib.h/定义库函数头文件#includeconio.htypedef struct/学生信息int num;/学生学号char name20; /学生姓名float score;/学生成

11、绩DATA;struct sDATA date;struct s*next;typedef struct s STU;/结构体声明void menu();/主菜单声明STU *input();/学生信息写输入声明STU *scort(STU * h);/学生信息排序声明void find(STU*h);/学生信息查询声明void display(STU *h);/学生信息输出声明STU* del(STU*h);/学生信息删除声明(2)主函数 zym_main.c#includezym_task2.hvoid main() /程序主函数int j;STU *h; while(1) menu();

12、scanf(%d,&j); /输入读取的选项的数字switch(j) /判断所选项目case 1: h=input();break; case 2: h=del(h);display(h);break; case 3: find(h);break; case 4: h=scort(h);display(h);break; case 5: display(h);break; case 6: h=insert(h);display(h);break; case 0: exit(0);(3)主菜单 zym_menu.c#includezym_task2.hvoid menu() /主菜单显示syst

13、em(cls);/清屏printf(nnntt 欢迎使用学生信息管理系统nnn);printf(tt*n);printf(tt* 主菜单 *n);printf(tt*nnn);printf(t 1 学生信息输入 2 学生信息删除n);printf(t 3 学生信息查询 4 学生信息排序n);printf(t 5 显示学生信息 6 学生信息插入n); printf(t 0 退出系统n);printf(t 请选择1/2/3/4/5/6/0:);(4)学生信息输入 zym_input.c#includezym_task2.hSTU *input()/学生信息输入STU *p1,*h,*p2;stat

14、ic int n=1,j;system(cls);/清屏doprintf(请输入学生的信息:n学号t姓名t成绩n);p1=(STU*)malloc(sizeof(STU);scanf(%dt%st%f,&p1-date.num,,&p1-date.score);/输入学生信息if(p1-date.score=0&p1-date.scorenext=p1;p2=p1;n+;elseprintf(成绩无效,继续输入);printf(继续请按1,结束请按0:);scanf(%d,&j);while(j);/循环输入学生信息p2-next=NULL; printf(按回车键返回

15、:);getch();return h;(5) 学生信息删除 zym_del.c#includezym_task2.hSTU* del(STU*h)/学生学习删除int i,j,k=0,m;STU*p1,*p2;int num;system(cls);doprintf(当前学生的信息是:n);for(p1=h;p1!=NULL;p1=p1-next)/输出当前学生信息printf(%dt%st%.1fn,p1-date.num,,p1-date.score);printf(n);if(h=NULL)return h;printf(请输入要删除的学生的学号:);scanf

16、(%d,&num);/输入要删除的学生的学号for(p1=h;p1!=NULL;p1=p1-next) if(num=p1-date.num)break;else p2=p1;if(p1)if(p1=h)h=p1-next;elsep2-next=p1-next;printf(删除成功n);free(p1);elseprintf(找不到要删除的成绩n);printf(继续请按1,结束请按0:);scanf(%d,&m);while(m);/循环删除学生的信息printf(按回车键返回:);getch();return h;(6) 学生信息排序 zym_scort.c#includezym_ta

17、sk2.hSTU *scort(STU * h)/学生信息排序DATA t;STU *p1,*p2;for(p1=h;p1-next;p1=p1-next)/冒泡排序for(p2=p1-next;p2;p2=p2-next)if(p1-date.score)date.score)t=p1-date;p1-date=p2-date;p2-date=t;printf(n输出排序结果:n); for(p1=h;p1;p1=p1-next)/输出排序后的结果 printf(%dt%st%.1fn,p1-date.num,,p1-date.score);printf(n);pri

18、ntf(按回车键返回:);getch();return h;(7)学生信息显示 zym_display.c#includezym_task2.hvoid display(STU *h)/输出学生信息STU *p;system(cls);/清屏printf(学号t姓名t成绩n);for(p=h;p;p=p-next)/输出学生信息printf(%dt%st%.1fn,p-date.num,,p-date.score);printf(n);printf(按回车键返回:);getch();(8) 学生信息查询 zym_find.c#includezym_task2.hvoid find(STU*h)/学生信息查询int k=0,j;int num;STU * p;system(cls);if(h=NULL)return;doprintf(n请输入要查询的学号:);scanf(%d,&num);/输入要查询的学生的学号for(p=h;p;p=p-next)if(num=p-date.num)printf(已找到:);printf(%dt%st%.1fn,p-date.num,,p-date.score);break;if(p=NULL)printf(找不到!n);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论