栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构课程设计预习报告

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构课程设计预习报告

文章目录
  • 一、项目1:计算机设计大赛赛事统计
    • 1.问题描述
    • 2.实验分析
    • 3.实验设计
  • 二、项目2:校园导游咨询
    • 1.问题描述
    • 2.实验分析
    • 3.实验设计
  • 三、项目3:算术表达式求解
    • 1.问题描述
    • 2.实验分析
    • 3.实验设计

一、项目1:计算机设计大赛赛事统计 1.问题描述

参加计算机设计大赛的n个学校编号为1到n。赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。符合以下基本和设计要求:
1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
2)能统计各学校的总分;
3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;
5)数据存入文件并能随时查询
6)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;
7)能统计各学校的总分;
8)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;
9)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得 前三名的学校;
10)数据存入文件并能随时查询
【数据结构课设第一题补充】
为大家测试时,设计的数据逻辑统一,做以下约束:
每个学校的每个参赛队伍只能参加一个赛事项目

2.实验分析 3.实验设计 二、项目2:校园导游咨询 1.问题描述

设计一个校园导游程序,为来访的客人提供各种信息查询服务。符合要求:
(1) 设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介 等信息;以边表示路径,存放路径长度等相关信息。
(2) 为来访客人提供图中任意景点相关信息的查询。
(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

2.实验分析 3.实验设计 三、项目3:算术表达式求解 1.问题描述

设计一个简单的算术表达式计算器。符合要求: 实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
【测试数据】
(30+270)/3-123
5+(9*(62-37)+15)*6
要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。

2.实验分析

1)首先能完成包含可多层嵌入的括号的四则运算
2)对于非法表达式,可以保证程序的稳定。对于非法表达式,可以使其无法运行,意识到表达式非法,然后进行整补。

3.实验设计

计算器上带括号的四则运算实际上利用的是栈后进先出的原则

1.首先需要存储操作数和运算符

stack numbers; 
stack operations; 

2.设定运算符的优先级,其中以’#'作为operations的栈底元素

int priority(char operate) {
	switch (operate) {
		case '#':case 'n': return 0; 
		case '(':case ')': return 1; 
		case '+':case '-': return 2;
		case '*':case '/': return 3;
	}
}

3.通过栈和运算符优先级等编写函数

void calculate(char command) {
	double num, leftNum, rightNum, result; 
	switch (command) {
	
		case '0':case'1':case '2':case'3':case '4':case'5':case '6':case'7':case '8':case'9':
		cin.putback(command); 
		cin >> num;
		numbers.push(num);
		break; 
		case '(':case ')':case '+':case '-':case '*':case '/':case 'n': 
			
			if (operations.empty()) 
				operations.push('#'); 
			
			if (priority(command) > priority(operations.top()) || command == '(') 
				operations.push(command);
				
			else {
				while (priority(command) <= priority(operations.top())) {
					 
					if (operations.top() == '#' && command == 'n') { 
						result = numbers.top();
						cout << "答案为 " << result << endl << endl; 
						numbers.pop();
						operations.pop();
						break; 
					}
					 
					else if (operations.top() == '(' && command == ')') {
						operations.pop(); 
						cin >> command;
					}
					
					else { 
						rightNum = numbers.top(); 
						numbers.pop(); 
						leftNum = numbers.top(); 
						numbers.pop(); 
						switch (operations.top()) {
						case '+': numbers.push(leftNum + rightNum); 
						operations.pop();
						break; 
						case '-': numbers.push(leftNum - rightNum); 
						operations.pop();
						break; 
						case '*': numbers.push(leftNum * rightNum); 
						operations.pop();
						break; 
						case '/': numbers.push(leftNum / rightNum);
							operations.pop(); 
							break;
						} 
					}
				}
				
				if (command != 'n')
					operations.push(command); 
			}
			break; 
	} 
}

4.管理系统界面


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号