目录
数据结构项目1:计算机设计大赛赛事统计
一,问题描述及基本要求:
1.问题描述:
参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。
2.基本要求:
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称查询,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
3.设计要求:
1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。
2)输出形式:有中文提示,各学校分数为整数
3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,完成相关功能的要求。
4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。
4.测试数据
要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的稳定。
5.实现提示
假设3<赛事项目数量<=10,学校名称长度不超过20个字符。每个赛事结束时,将其编号、名称输入,并依次输入参赛学校编号、学校名称和成绩。
二,问题分析和任务定义:
1.数据要求:
1)每个学校的总分 ;2)各项目总分数;3)学校项目的获奖情况;4)各项目的前三名学校
2.限制条件:
1)项目区间为3~10;2)学校名称字符不超过20;3)各学校最多6支队伍参赛;4)项目至少10支参赛队;5)获奖只取前三名
3.输出要求:
1)照学校编号或名称查询;2)各项目的总分排序;3)按学校编号查询学校某个项目的获奖情况;4)可以按项目编号查询取得前三名的学校。
三.逻辑设计:
1.抽象数据类型的定义
1)结构体Team表示参赛队伍情况:参加的项目(string) 所在学校(string)获得成绩(int)项目的排名(int);
2)结构体School来记录学校的信息其中有:学校的名称和编号(string)参赛队伍的数(int)学校的总分(int)
2.各抽象数据类型
1)学校数组 a[n];2)比赛项目b[m];3)参加队伍c[o];4)参加项目人数d[m];5)学校总分f[n]
3.基本操作的功能说明
1)Prim()函数用来对处理的数据进行初始化;
2)用sort()函数进行排序;
3)Sum()函数进行学校求总分并输出;
4)Print1()对各项目排序输出
5)Acquire()函数用来学校查询;
6)Print2()用于项目三种等奖的输出;
四.物理设计
结构体Team:string 项目,学校;int 成绩
结构体School:string 名字 编码;int 队伍数
Prim(){初始化 a[n],b[m],c[k];计算出 d[m];
Sum(){按学校对c[k]中的数据进行求和再输出}
Print1(){对e[m][d[m]]进行输出}
Acquire(){用来学校在e[m][d[m]]中进行获奖情况查询}
Print2(){用e[m][d[m]]对三种等奖进行输出}
数据结构课程项目二——校园导游咨询
一 问题描述:
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
二 基本要求:
1)设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
2) 为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三 问题分析:
1.数据结构的选取
使用无向图作为该项目的数据结构。图的顶点分别为学校的景点并包括景点的名称,代号,简介等信息;以无向图的边表示两个景点之间连通,并以边的权重表示两个景点之间的路径长度。
2.结构体的定义
校园平面为无向网,网图中的每个结点代表校园内的一个景点,该结构体中包含该景点的详细信息——String类型的景点名称,int类型的景点代号,String类型的景点简介等。
3.功能分析
1)用户可以通过输入景点代号或者景点名称来查询对应景点的详细信息。
2)用户通过输入景点名称查询两个景点的最短路径
4限制条件
考虑校园道路为双向通行
四 逻辑设计:
1.数据类型
struct学校
string景点名称
int景点代号
string景点简介
int景点间的最短距离
2.模块划分以及调用关系图
五 物理设计:
伪代码:
1主函数
1)定义景点数n
2)将n中存储相关信息
3)设计用户选择景点和定义最短路径
2景点信息
1)将景点详细信息存入设置为结点
2)用户交互选择景点或得信息
3景点路径
1)选取两个景点的结点
2)计算最短路径
3)返回值并反馈给用户
数据结构项目3算术表达式求解
一 问题描述:
设计一个简单的算术表达式计算器。
二 基本要求:
实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入)
【测试数据】
(30+2*70)/3-12*3
5+(9*(62-37)+15)*6
要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
【实现提示】
可以设计以下辅助函数
status isNumber(char ReadInChar); //视ReadInchar 是否是数字而返回 TRUE 或 FALSE 。
int TurnToInteger(char IntChar); // 将字符’0’.’9’ 转换为整数 9
三 问题分析:
1.使用栈来解决该问题;
2.将中缀表达式写成后缀表达式;
①从中缀表达式中从左往右依次取出数据
②如遇到操作数,直接输出到后缀的队列里。
③如果遇到操作符(包括括号),再定义一个存放操作符的栈,则:
3.后缀表达式求值
①.从左至右扫描表达式,遇到数字时,将数字压入栈中,遇到运算符时,弹出栈顶的两个数,其中先出栈的是右操作数,后出栈的是左操作数。
②.用运算符对它们做相应的计算,将结果重新入栈;
③.重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果