数据结构课程设计题目
- 格式:doc
- 大小:33.17 KB
- 文档页数:11
数据结构课程设计题目一、题目背景在现代科技发展的背景下,数据结构作为计算机科学的重要基础课程,对于培养学生的编程思维、数据处理能力具有重要的作用。
本篇课程设计将围绕数据结构的实际应用,设计一个能够提升学生数据结构理论与实践能力的题目。
二、题目描述你需要设计一个软件,实现以下功能:能够记录学生信息并进行相关的数据操作。
具体要求如下:1. 学生信息包括:学生学号、姓名、性别、年龄、身高、体重等基本信息;2. 软件需要实现以下操作:a. 添加学生信息:可以手动添加每个学生的详细信息,并将其记录到数据库中;b. 删除学生信息:能够根据学号或姓名删除指定学生的信息;c. 修改学生信息:能够根据学号或姓名修改指定学生的信息;d. 查询学生信息:能够按照学号、姓名、性别、年龄等条件进行学生信息的查询,并将结果以列表形式展示;e. 统计学生信息:能够统计学生的平均年龄、平均身高、平均体重等统计数据,并展示在界面上;f. 数据导入导出:能够将学生信息导入/导出到文件或数据库中,实现数据的持久化存储。
三、设计思路为了实现上述功能,你可以采用以下的设计思路:1. 数据结构选择:可以使用链表、数组、树等数据结构存储学生信息,具体根据功能需求来选择合适的数据结构;2. 界面设计:考虑采用图形界面或者命令行界面,以提供方便的操作方式;3. 数据存储:可以使用文件、数据库等方式进行数据的存储和读取,以实现数据的持久化;4. 算法设计:在实现功能的过程中,需要考虑合适的算法来实现快速的查找、删除和修改等操作;5. 错误处理:在设计过程中,需要考虑各种可能的错误情况,并进行相应的处理和提示。
四、实施步骤为了顺利完成该课程设计,你可以按照以下步骤进行:1. 分析题目需求:仔细阅读以上题目描述,明确实现各项功能的具体要求;2. 设计数据结构:选择合适的数据结构来存储学生信息,考虑数据的增删改查等操作的效率;3. 设计算法:根据功能需求,设计相应的算法来实现各项操作;4. 实现界面:根据选择的界面方式,设计相应的图形界面或命令行交互界面;5. 实现功能:按照题目要求,逐个实现各项功能,并进行测试;6. 完善细节:对界面进行美化,完善用户交互体验,处理各种错误情况;7. 测试与调试:对整个软件进行全面的测试,并进行调试修复可能存在的问题;8. 编写报告:撰写课程设计报告,详细记录设计过程、实现方法、遇到的问题以及解决方案等。
题目1:图的遍历功能:实现图的深度优先, 广度优先遍历算法,并输出原图结构及遍历结果。
分步实施:1) 初步完成总体设计,搭好框架;2)完成最低要求:两种必须都要实现,写出画图的思路;3)进一步要求:画出图的结构,有兴趣的同学可以进一步改进图的效果。
要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
题目2:n维矩阵乘法:A B-1功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。
分步实施:1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2)完成最低要求:建立一个文件,可完成2维矩阵的情况;3)一步要求:通过键盘输入维数n。
有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
题目3:数组应用功能:按照行优先顺序将输入的数据建成4维数组,再按照列优先顺序输出结果,给出任意处的元素值,并给出对应的一维数组中的序号。
分步实施:1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:完成第一个功能;3.进一步要求:进一步完成后续功能。
有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
题目4:数组应用2功能:读入数组下标,求出数组A靠边元素之和;求从A[0][0]开始的互不相邻的各元素之和;当m=n时,分别求两条对角线上的元素之和,否则打印出m!=n的信息。
福建工程学院课程设计课程:数据结构课程设计题目: 1.综合应用2.折半查找3.快速排序专业:软件工程班级:1101座号:3110305129姓名:潘聪2012 年 6 月26 日设计题目1:综合应用一、问题描述有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。
然后实现以下功能:(1)将这些数据存放至文件stuf.dat中;(2)将文件中的数据读出至结构数组中,并显示之;(3)输出总分最高分和最低分的名字;(4)输出总分在340分,单科成绩不低于80分的名单;(5)求出各科平均分数;(6)按总分排名;(7)输出补考名单。
二、解决问题的算法思想描述(1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。
(3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。
(4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。
(5)各科成绩排名用冒泡排序即可。
(6)输出总分,补考名单,各科的平均分都比较简单。
三、设计1. 数据结构的设计和说明//定义结构体typedef struct{int num; //学号char name[10]; //姓名int score1; //语文int score2; //数学int score3; //物理int score4; //化学}student;student stu[MAX]; //结构数组2.模块结构图及各模块的功能:3. 关键算法的设计(必须画出流程图)打印最高成绩和最低成绩的名单算法流程图:四、测试数据及测试结果:五、课程设计总结注意细节方面,任何一个小问题都不能忽视,才能最终解决问题。
六、关键源程序的清单关键算法一:按照总成绩排名:void paiming(){read();student x;int sum[MAX],t=0,i,m,n,j;for(i=0;i<MAX; i++){sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;}for(m=0;m<MAX-1;m++)for(n=m+1;n<MAX;n++)if(sum[n]>sum[m]){t=sum[n];sum[n]=sum[m]; //总成绩交换sum[m]=t;x=stu[n];stu[n]=stu[m]; //总成绩对应的学生也要同时交换stu[m]=x;}printf("学号\t姓名\t语文\t数学\t英语\t物理\t总分\t名次\n");for(j=0;j<MAX;j++){printf("%-8d%-8s%-8d%-8d%-8d%-8d%-8d%-8d\n",stu[j].num,stu[j].name,stu[j].score1,stu[j].sc ore2,stu[j].score3,stu[j].score4,sum[j],j+1);}}关键算法二:打印出最高成绩和最低成绩的姓名:void maxmin(){int sum[MAX],i,j,m=0,n=0,max,min;read();for(i=0;i<MAX; i++){sum[i]=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;} //求书每个人的总分max=min=sum[0]; //用一维数组保存成绩,并且先令第一位学生的成绩作为最高分和最低分for(j=0;j<MAX;j++){if(sum[j]>max){m=j;max=sum[j]; //定义变量m,n分别保存最高分和最低分的下标}else if(sum[j]<min){n=j;min=sum[j];}}printf("\n最高分:%s 总分%d\n",stu[m].name,sum[m]);printf("\n最低分:%s 总分%d\n\n",stu[n].name,sum[n]);}设计题目2:折半查找一、问题描述用折半查找法,实现对任意一组数据的查找。
数据结构课程设计实例100例1. 设计一个简单的栈数据结构。
2. 实现一个简单的队列数据结构。
3. 设计一个链表数据结构。
4. 实现一个二叉树数据结构。
5. 设计一个哈希表数据结构。
6. 实现一个图数据结构。
7. 设计一个堆数据结构。
8. 实现一个优先队列数据结构。
9. 设计一个有向图数据结构。
10. 实现一个循环链表数据结构。
11. 设计一个红黑树数据结构。
12. 实现一个字典数据结构。
13. 设计一个AVL树数据结构。
14. 实现一个散列表数据结构。
15. 设计一个双端队列数据结构。
16. 实现一个字典树数据结构。
17. 设计一个多叉树数据结构。
18. 实现一个最小生成树算法。
19. 设计一个并查集数据结构。
20. 实现一个图的遍历算法。
21. 设计一个迪杰斯特拉算法。
22. 实现一个Floyd算法。
23. 设计一个拓扑排序算法。
24. 实现一个最短路径算法。
25. 设计一个Kruskal算法。
26. 实现一个插入排序算法。
27. 设计一个快速排序算法。
28. 实现一个希尔排序算法。
29. 设计一个选择排序算法。
30. 实现一个冒泡排序算法。
31. 设计一个堆排序算法。
32. 实现一个归并排序算法。
33. 设计一个桶排序算法。
34. 实现一个基数排序算法。
35. 设计一个计数排序算法。
36. 实现一个递归算法。
37. 设计一个动态规划算法。
38. 实现一个回溯算法。
39. 设计一个哈夫曼编码算法。
40. 实现一个最大子序列和算法。
41. 设计一个最长递增子序列算法。
42. 实现一个最长公共子序列算法。
43. 设计一个贪婪算法。
44. 实现一个深度优先搜索算法。
45. 设计一个广度优先搜索算法。
46. 实现一个信号量算法。
47. 设计一个分治算法。
48. 实现一个枚举算法。
49. 设计一个置换算法。
50. 实现一个位运算算法。
51. 设计一个红黑树插入算法。
52. 实现一个二进制查找算法。
53. 设计一个最小堆插入算法。
算法与数据结构课程设计一、线性表题1、建立一个单链表,显示链表中每个节点的数据,并做删除和插入处理。
例:(掌握线性表在链式存储结构下的基本运算的实现。
)1、功能(1)建立以带头结点的单链表(2)显示链表中每个结点的数据(3)在单链表中指定位置插入指定数据并输出单链表中所有数据(4)删除单链表中指定的结点并输出单链表中所有数据2、输入要求输入单链表中所有数据,插入的数据元素的位置、值,要删除的数据元素的位置。
3、测试数据单链表中所有数据:12,23,56,21,8,10,15,67,90,32插入的数据元素的位置、值:1,28要删除的数据元素的位置:10[概要设计](1)算法思想:由于在操作过程中要进行插入、删除操作,为运算方便,选用单带头结点的单链表作数据元素的存储结构。
对每个数据元素,由一个数据域和一个指针域组成,数据域放输入的数据值,指针域指向下一个结点。
(2)数据结构单链表结点类型:typedef struct Node{ int data;struct node *next;}ListNode;带头结点的单链表类型定义:typedef ListNode *LinkList;(3)模块划分:①建立点头结点的单链表CreatLinkList;②显示链表中每个结点的数据PrintList;③在单链表中指定位置插入指定数据并输出单链表中所有数据InsertList;④删除单链表中指定的结点并输出单链表中所有数据DeleteList;⑤主函数mian(),功能是给出测试数据值,建立测试数据值的带头结点的单链表,调用PrintList函数、InsertList函数、DeleteList函数实现问题要求。
[详细设计] 见程序LinkList.c题2、约瑟夫环(Joseph)问题的一种描述是:编号1,2,┉,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数),一开始,任选一个正整数作为报数上线值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。
数据结构课程设计题目及要求一、要求本次课程设计可以从以下的题目中任选其一,每个题目基本实现的要求是:有菜单功能有读写数据存盘功能成品应包括以下内容:程序设计书(Word格式)。
包括程序设计目标、问题描述、需求分析、概要设计、详细设计、源程序清单(要求格式整齐400行以上,要有注释说明)、软件说明书(给出软件如何使用,使用时的注意事项)、测试报告(每个函数的功能测试,输入条件,输出结果)和课程设计总结。
2、可执行程序源代码。
3、答辩时使用的ppt。
二、设计题目题目一:仓库管理系统(线性表应用)[问题描述]建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物以及建立新的仓库存储系统。
[实现提示]可以采用双向链表的存储结构,如可定义如下的存储结构:typedef struct dnode /*定义双向链表结构体*/{int number; /*货物编号*/char name[max]; /*货物名称*/int counter; /*货物数量*/struct dnode *prior,*next; /*定义两指针,分别指向其前驱和后继*/}dlnode;题目二:单位员工通讯录管理系统(线性表应用)[问题描述]为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[实现提示]可以采用单链表的存储结构,如可定义如下的存储结构:typedef struct { /*员工通讯信息的结构类型定义*/char num[5]; /*员工编号*/char name[10]; /*员工姓名*/char phone[15]; /*办公室电话号码*/char call[15]; /*手机号码*/}DataType;/*通讯录单链表的结点类型*/typedef struct node{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode,*LinkList;题目三: 哈夫曼编码/译码系统(树应用)[问题描述]利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。
数据结构课程设计题目请从下面四道题目中任选一道作为答辩题目。
答辩时会问每位同学1~2个问题,根据回答正确与否给出数据结构课程设计的成绩。
题目1:设计程序以实现构造哈夫曼树的哈夫曼算法。
要求:求解所构造的哈夫曼树的带全路径长度。
题目2:设计并实现一个航班信息查询和检索系统。
要求:对飞机航班信息进行排序和查找,可按照航班号、起点站、到达站、起飞时间和到达时间等信息进行查询。
航班信息表的样式如下:其中航班号一项的格式为:前两个大写字母表示航空公司的名称,后4位为航班编号,例如:CA1544,CA表示航空公司的名称,1544为航班编号。
题目3.求解迷宫问题:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
设计要求如下:(1)以链栈作为存储结构,编写一个求解迷宫的非递归程序,并将求得的通路以三元组(i,j,d)的形式输出,其中:i,j指示迷宫中的一个坐标,d表示走到下一坐标的方向;(2)编写递归形式的算法,求得迷宫中所有可能的通路;(3)以方阵形式输出迷宫及其通路。
[测试数据]左上角(1,1)为入口,右下角(9,8)为出口。
1 2 3 4 5 6 7 8[实现提示]计算机解迷宫通常用的是“穷举求解”方法,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前进;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。
假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。
可以二维数组存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(m,n)。
为处理方便起见,可在迷宫的四周加一圈障碍。
对于迷宫中任一位置,均可约定有东、南、西、北四个方向可通。
题目4.校园导游程序:用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
数据结构课程设计——一元多项式计算一、课程设计题目及要求二、设计思路和方法三、程序流程图四、程序代码及注释五、测试结果及分析六、结论七、参考文献本次课程设计的题目为“一元多项式计算”,要求设计一个程序,能够实现一元多项式的加、减、乘、求导和求值等操作。
在设计思路和方法上,我们采用了链表的数据结构来存储多项式,同时设计了相应的函数来实现各种操作。
程序的流程图如下所示:插入流程图)程序的代码及注释如下所示:插入代码及注释)在测试结果及分析方面,我们对程序进行了多组测试,并对其进行了详细的分析和比较。
结果表明,我们的程序能够正确地实现各种操作,并且具有较高的效率和稳定性。
综上所述,本次课程设计的目标已经得到了圆满地实现,我们对于所取得的成果感到非常满意。
同时,我们也希望能够通过这次课程设计,加深对于数据结构及其应用的理解和掌握,为今后的研究和工作打下坚实的基础。
设计目标:本课程设计旨在结合理论与实际应用,提高学生组织数据及编写大型程序的能力。
通过掌握数据组织、算法设计和算法性能分析的方法,培养学生良好的程序设计能力。
具体实现是利用单链表表示一元多项式,实现多项式的输入、建立、输出、相加、相减和相乘。
总体设计:2.1 数据结构描述与定义:一元多项式定义系数和指数结构如下:coef,expn和next。
定义多项式的结构为线性链表的存储结构,每个结点包含三个元素:系数coef,指数expn和指向下一个结点的指针*next。
多个单项式通过指针连接起来,形成一个多项式。
2.2 模块设计:从实现多项式运算过程的角度来分析,至少需要以下子功能模块:多项式创建、销毁、输出、相加、相减和相乘。
定义并调用的函数有:Insert、CreatePolyn、DestroyPolyn、PrintPolyn、AddPolyn、SubtractPolyn、XXX和main函数。
注:该文章中没有明显的格式错误和需要删除的段落,因此没有进行小幅度改写。
数据结构课程设计题目课程设计题一:线性表子系统一.设计目的:1.掌握线性表的特点2.掌握线性表的顺序存储结构和链式存储结构的基本运算3.掌握线性表的基本操作二.设计内容和要求:1.设计一个选择式菜单。
线性表子系统******************************************************* 1 ……建表** 2 ……插入** 3 ……删除** 4 ……显示** 5 ……查找** 6 ……求表长** 0 ……返回*******************************************************请选择菜单号(0…6):2.采用单链表创建线性表。
3.在线性表中实现插入、删除元素,显示线性表中所有元素,查找元素和求线性表长的基本操作。
课程设计题二:栈子系统一.设计目的:1.掌握栈的特点及其描述方法2.掌握链式存储结构实现一个栈3.掌握链栈的各种基本操作4.掌握栈的典型应用的算法二.设计内容和要求:1.设计一个选择式菜单。
栈子系统****************************************************** * 1 ……入栈* * 2 ……出栈* * 3 ……显示* * 4 ……数制转换* * 0 ……返回* ****************************************************** 请选择菜单号(0…4):2.设计一个整型数据元素的链栈。
3.编写入栈、出栈和显示栈中全部元素的程序。
4.编写一个把十进制数转换成八进制数的应用程序。
课程设计题三:队列子系统一.设计目的:1.掌握队列的特点及其描述方法2.掌握链式存储结构实现一个队列3.掌握队列的各种基本操作4.掌握队列简单应用的算法二.设计内容和要求:1.设计一个选择式菜单。
队列子系统******************************************************* 1 ……入队** 2 ……出队** 3 ……读队首元素** 4 ……显示** 5 ……报数问题** 0 ……退出*******************************************************请选择菜单号(0…5):2.设计一个整型数据元素的链队列。
数据结构课程设计题目以下7个题目任选其一。
1.排序算法比较利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并且(1)统计每一种排序上机所花费的时间。
(2)统计在完全正序,完全逆序情况下记录的比较次数和移动次数。
(3)比较的指标为关键字的比较次数和记录的移动次数(一次记录交换计为3次移动)。
(4)对结果作简单分析,包括对各组数据得出结果波动大小的解释。
2.图的深度遍历对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用堆栈的五种基本运算(清空堆栈、压栈、弹出、取栈顶元素、判栈空)实现图的深度优先搜索遍历。
画出搜索顺序示意图。
3.图的广度遍历对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索遍历。
画出搜索顺序示意图。
4.二叉树的遍历对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。
画出搜索顺序示意图。
5.链表操作利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。
画出搜索顺序示意图。
6.一元稀疏多项式简单计数器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。
序列按指数降序排列。
(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。
(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。
用带头结点的单链表存储多项式。
测试数据:(1)(2x+5x8-3.1x11)+(7-5x8+11x9)(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)7.实现两个链表的合并基本功能要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。
数据结构课程设计一、考核方法和容根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
评分标准:优秀:答辩所有问题都能答出+报告良好或报告良好+实现“提高部分”的功能;良好:答辩所有问题都能答出+报告一般;或报告一般+实现“提高部分”的功能;中等:答辩大部分问题能答出+报告良好;及格:答辩大部分问题能答出+报告一般;以下四种,都不及格:1)答辩几乎答不出问题;2)报告几乎都是代码;3)雷同部分达到60%;4)课设报告与数据结构和c/c++关联不大。
课设报告的装订顺序如下:任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献;课设报告打印要求:B5纸打印,报告总页数控制在10—15页,报告中不能全是代码,报告中代码总量控制在3页。
版式:无页眉,有页码,页码居中字号:小四,单倍行距字体:宋体+Times new Romar截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图”二、课程设计的题目1.长整数的加法运算2.通讯录管理系统的设计与实现——顺序表3.广义表的应用4.学生成绩管理系统的设计与实现5.家谱管理系统的设计与实现6.集合的并、交和差运算的程序7.运动会分数统计8.一元多项式计算器9.文章编辑10.哈夫曼树及其编码11.校园导游咨询12.通讯录管理系统的设计与实现——单链表13.地图着色问题14.部排序算法比较15.火车售票系统16.图书管理系统客户消费积分管理系统17.18.产品进销存管理系统19. 迷宫求解20.通讯录管理系统的设计与实现——哈希表---线性探测再散列21.语言中平衡符号的问题22.算术表达式求解23.数制转换问题24.九宫格问题25.停车场管理26.关键路径问题27.通讯录管理系统的设计与实现——哈希表——链地址法28.歌星大奖赛29.病人就医管理30.简单目录管理系统的设计与实现31.最短旅程的求解32.通讯录管理系统的设计与实现——哈希表——二次探测再散列33.宿舍管理查询软件34.表达式求值,并能给出分数,可供小学生作业练习的小程序35.服装销售系统36.机房机位预约模拟系统37.歌曲信息管理系统38.学生点名系统39.猜数游戏三、数据结构课程设计的具体容(想要优,必须实现“提高部分”的功能,其他,不用完成“提高部分”)要求:全部采用数据结构课程中的容实现,采用C或C++实现,逻辑结构只能选线性结构、树型结构、图型结构、集合结构中的一种,不能用数据库。
长整数的加法运算 1.基本要求:设计一个实现任意长的整数进行加法、减法运算的演示程序。
⑴利用链表实现长整数的存储,每个结点含一个整型变量。
提醒:任何整型变量int的围是-(2^15-1)~(2^15-1)。
⑵输入和输出形式按照中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
如:-2345,6789,3211;⑶演示程序以用户和计算机的对话方式执行,可进行多次运算。
提高部分:增加利用顺序表存储结构来实现长整数的加、减和输出功能。
2.通讯录管理系统的设计与实现——顺序表基本要求:利用顺序表完成通讯录的一般性管理工作。
其中,每条记录至少包括姓名、手机号、QQ、电子、地址等信息。
功能主要包括:(1)添加信息:可新增人员信息;(2)显示信息:可以按照手机号或联系人的姓名拼音排序显示;(3)查找:用名字和手机号分别作为查找的依据,进行查找;(4)编辑信息:修改完善人员信息;(5)删除信息:删除人员信息;(6)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。
提高部分:利用外部.txt文件同步存储通讯录信息。
3.广义表的应用基本要求:要现的广义表的建立、查找、输出、取表头和取表尾以及求深度等。
演示程序以用户和计算机的对话方式执行,并可进行多次交互。
用一个主控菜单程序控制,共分为6个子功能。
(1)建立广义表(2)输出广义表(3)结点的查找(4)求广义表表头(5)求广义表表尾(6)求广义表的深度。
(7)求广义表的长度。
文件输入数据信息建立广义表。
.txt利用外部提高部分:4.学生成绩管理系统的设计与实现基本要求:能够实现对学生成绩的常用管理功能。
⑴采用一定的存储结构对学生成绩进行管理;⑵可以进行成绩的录入、查询、修改、删除等操作;⑶可以查询某门课程的平均分,学生的排名,不同分数段的学生人数及学生信息等;⑷可以查询某学生的各课程分数,总分及学生的班级排名等;⑸可以按学号排序输出全部学生的成绩信息、总分及班级排名等。
⑹演示程序以用户和计算机的对话方式进行。
提高部分:利用外部.txt文件同步存储学生成绩信息。
5.家谱管理系统的设计与实现基本要求:设计并实现一个简单的家谱管理系统。
(1)建立家族关系树,并能存储到外部文件中。
(2)实现家族成员的添加、删除功能。
(3)可以查询家族成员的双亲、祖先、兄弟、孩子和后代等信息。
(4)按某种顺序输出家谱信息(树的遍历操作)、以树型结构输出家谱资料等功能。
(5)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。
提高部分:通过读取外部.txt文件,建立家族关系树,添加和删除后的结果同步到外部文件。
6.集合的并、交和差运算的程序基本要求:编制一个能演示执行集合的并、交和差运算的程序。
(1)集合的元素限定为大小写字母符[′a′….′z′′A′….′Z′],集合的大小n<53。
(2)集合输入的形式为一个以回车符为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去非法字符和重复字符。
(3)输出的运算结果字符串中将不含重复字符或非法字符。
(4)演示程序以用户和计算机的对话方式执行,可多次进行运算。
提高部分:采用顺表和链式两种存储结构实现。
7.运动会分数统计基本要求:参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,积分分别为11,7,4,2,1;有些项目只取前三名,积分分别为5,3,2。
哪些项目取前五名或前三名在输入比赛结果时自己设定。
写一个统计程序产生各种成绩单和得分报表。
(1)各项目结束时,输入项目编号、所有运动员的姓名、学校名称和比赛名次(成绩),并对前三名或前五名的运动员所在团体和学校,记录比赛积分;(2)产生每个学校的成绩单,容包括该学校所取得的每项成绩的项目号、运动员姓名、名次(成绩),并统计学校总分;(3)实现按学校编号查询学校的比赛情况,查询结果包含参加各项目的项目编号、运动员姓名、取得的名次、比赛的积分、学校总分、团体总分等;(4)实现按项目编号查询取得前三或前五名的学校的名称;(5)演示程序以用户和计算机的对话方式执行,可多次操作。
提高部分:实现按学校编号排序输出(至少包括学校排名,学校编号,学校名称,学校总分);按男团总分排序输出(至少包括男团排名,学校名称,男团总分);按女团总分排序输出(至少包括女团排名,学校名称,女团总分);8.一元多项式计算器基本要求:设有一元多项式A(x) 和B(x).nm123m A(x) = A+Ax+Ax+Ax+…+Ax m2m031123n B(x) = B+Bx+Bx+Bx+…+Bx n01n32试求M(x)=A(x)+B(x)、M(x)= A(x)-B(x)和M(x)= A(x)×B(x)。
nmnmmn⑴首先判定多项式是否稀疏;中无重复阶项和无零系数项;M(x)⑵要求结果⑶要求输出结果的升幂和降幂两种排列情况。
⑷演示程序以用户和计算机的对话方式执行,可进行多次运算。
提高部分:采用顺表和链式两种存储结构实现。
9.文章编辑基本要求:输入一页文字,可以统计出文字、数字、空格的个数。
(1)利用外部.txt文件存储一页文章,每行最多不超过80个字符,共N行。
(2)分别统计出其中英文字母和空格数及整篇文章总字数。
(3)统计某一字符串在文章中出现的次数,并输出该次数。
(4)删除某一子串,并将后面的字符前移,对文章的修改,同步到.txt文件中。
提高部分:采用顺表和链式两种存储结构实现。
10.哈夫曼树及其编码基本要求:设计一个利用哈夫曼算法的编码系统。
⑴初始化:利用外部.txt文件输入字符集大小n、n个字符和n个权值,建立哈夫曼树;⑵编码:利用建好的哈夫曼树生成哈夫曼编码;⑶输出哈夫曼树及哈夫曼编码;⑷演示程序以用户和计算机的对话方式执行,重复地显示并处理以上三个项目,直到选择退出为止。
假设字符集及频度如下表:字符空格 A B C D E F G H I J K L M频度197 64 13 22 32 103 21 15 47 57 5 1 20 32字符N O P Q R S T U V W X Y Z频度57 63 1 15 48 16 80 23 8 18 1 51 1提高部分:输出树形的哈夫曼树。
//////进行编码和译码11.校园导游咨询基本要求:设计一个校园导游程序,为来访的客人提供各种信息查询服务。
⑴设计华东交通大学南区的校园平面图(无向图),所含景点不少于10个。
以图中顶点表示校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
⑵为来访客人提供图中任意景点相关描述信息的查询。
⑶为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的最短路径。
提高部分:查询任意两个景点之间的所有路径。
12.通讯录管理系统的设计与实现——单链表基本要求:利用单链表完成通讯录的一般性管理工作。
其中,每条记录至少包括姓名、手机号、QQ、电子、地址等信息。
功能主要包括:(1)添加信息:可新增人员信息;(2)显示信息:可以按照手机号或联系人的姓名拼音排序显示;(3)查找:用名字和手机号分别作为查找的依据,进行查找;(4)编辑信息:修改完善人员信息;(5)删除信息:删除人员信息;(6)界面友好,演示程序以用户和计算机的对话方式进行,可反复操作。
提高部分:利用外部.txt文件同步存储通讯录信息。