目录

项目一、计算机设计大赛赛事统计

1.问题描述

2.基本要求

3.设计要求

4.问题分析

5.流程图描述

6.代码实现

项目二、校园导游咨询

1.问题描述

2.基本要求

3.问题分析

4.校园图例

5.拓补图

6.代码实现

项目三、 算数表达式求解

1.问题描述

2.基本要求

3.测试数据

4.问题分析

5.流程图描述

6.代码实现


项目一、计算机设计大赛赛事统计

1.问题描述

参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项目,项目的编号为1~m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表。

2.基本要求

1)每个比赛项目至少有10支参赛队;每个学校最多有6支队伍参赛;

2)能统计各学校的总分;

3)可以按照学校编号或名称,学校的总分、各项目的总分排序输出;

4)可以按学校编号查询学校某个项目的获奖情况;可以按项目编号查询取得前三名的学校;

5)数据存入文件并能随时查询

3.设计要求

(1)输入数据形式和范围:可以输入学校的名称,赛事项目的名称。

(2)输出形式:有中文提示,各学校分数为整数

(3)界面要求:交互设计要合理,每个功能可以设立菜单,根据提示,可以完成相关功能的要求。

(4)存储结构:学生自己根据系统功能要求自己设计,但是赛事相关数据要存储在文件中。

4.问题分析

问题是为计算机设计大赛设计一个统计程序来产生成绩单和得分报表,要求能统计各学校的总分,并能按照学校编号或名称、学校总分、项目总分、实现排序输出,并且数据能存入文件随时查询。要记录存储每个学校的参赛数据,而且要实现对学校分数的查询输出统计工作,那么需要对每个学校参加的每个项目的得分进行排序,再定义一个数据类型存储每个学校的队伍以及其参加的项目、得分、排名,然后设计排序函数方便查询,最后在记录存储数据,所以应该选择数据结构中的顺序表。

5.流程图描述

6.算法设计

【冒泡排序法】

 //冒泡排序 int temp,temp1;int xu;for(i=2;i<n+1;i++){temp=a.project[m+3][i];for(j=i-1;j>=1&&temp>a.project[m+3][j];j--)//寻找插入位置{a.project[m+3][j+1]=a.project[m+3][j];//交换总分列for(xu=0;xu<m+4;xu++){if(xu!=m+3)//总分不交换 其他都交换                 {temp1=a.project[xu][j+1];a.project[xu][j+1]=a.project[xu][j];a.project[xu][j]=temp1;}}}a.project[m+3][j+1]=temp;//小于当前值的,插到当前值后面}//赋值名次

【交互界面】

int n,m;printf("           计算机设计大赛赛事统计系统                \n\n\n");printf("             1.各学校总分排名;\n\n");printf("             2.按编号查询项目总分及名次;\n\n ");printf("            3.按项目编号查询前三名:\n\n");   printf("请输入学校个数:");scanf("%d",&n);printf("请输入项目个数:");scanf("%d",&m);int c;int i,j;struct projectnode a;

【运行结果分析】

项目二、校园导游咨询

1.问题描述

设计一个校园导游程序,为来访的客人提供各种信息查询服务(以江苏科技大学长山校区为例)。

2.基本要求

(1)设计你所在学校的校园平面图,所含景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介  等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点相关信息的查询。

(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

3.问题分析

主要是用迪杰斯特拉求单源最短路算法,将学校各代表景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。

将学校各代表景点信息及名称运用结构体进行存储,各景点之间的权值存入二维数组map[ ]中,查询景点信息直接运用printf输出函数%s输出存储好的信息;利用迪杰斯特拉算法求出单源最短路,及输出路径。

4.校园图例

5.拓补图

6.代码实现

【主要代码】

struct A     //定义结构体存储景点信息
{char name[100];char introduction[800];
}q[100];void cunchu()       //存储景点信息,各景点各边距离信息
{int i,j;strcpy(q[1].name,"北门");strcpy(q[1].introduction,"进出入校园的主要门路");strcpy(q[2].name,"梦溪园");strcpy(q[2].introduction,"有许多花花草草,园里也有几条小道");strcpy(q[3].name,"图书馆");strcpy(q[3].introduction,"学校图书馆以及自习室"); strcpy(q[4].name,"东苑食堂");strcpy(q[4].introduction,"东片区食堂,饭菜种类多,一楼有面包房和水果店");strcpy(q[5].name,"东操场");strcpy(q[5].introduction,"东片区操场"); strcpy(q[6].name,"文心园");strcpy(q[6].introduction,"有一个小湿地,有黑天鹅,还有个湖");strcpy(q[7].name,"文理大楼");strcpy(q[7].introduction,"12号教学楼,兼学院楼实验楼办公楼");strcpy(q[8].name,"文体中心");strcpy(q[8].introduction,"大学生文体中心,体育馆,有羽毛球,篮球,排球等室内馆");strcpy(q[9].name,"七号组团");strcpy(q[9].introduction,"53栋女生宿舍楼");strcpy(q[10].name,"西食堂");strcpy(q[10].introduction,"西片区食堂,一楼比较便宜,二楼菜品多,还有奶茶店");for(i=1;i<=12;i++)for(j=1;j<=12;j++){if(i==j)map[i][j]=0;elsemap[i][j]=inf;}map[1][2]=40;map[1][3]=80;map[1][9]=270;  //各景点间距离 map[2][1]=40;map[2][3]=50;map[2][7]=40;map[3][2]=50;map[3][4]=40;map[3][1]=80;map[3][6]=50;map[4][3]=40;map[4][5]=30;map[5][4]=30;map[5][6]=60;map[6][3]=50;map[6][7]=110;map[6][8]=80;map[7][2]=40;map[7][6]=110;map[7][8]=80;map[7][9]=50;map[8][6]=80;map[8][7]=80;map[8][9]=90;map[8][10]=40;map[9][1]=270;map[9][10]=20;map[9][7]=50;map[9][8]=90;map[10][9]=20;map[10][8]=40;for(i=1;i<=10;i++)for(j=1;j<=10;j++)map[j][i]=map[i][j];}void view()           //景点
{system("cls");           //清屏 printf("\n\n\n");printf("\t\t\t\t\t                     *景点*                      \n");printf("\t\t\t\t\t      <1>北门   <2>梦溪园  <3>图书馆   <4>东苑食堂   \n");printf("\t\t\t\t\t        <5>东操场    <6>文心园    <7>文理大楼        \n");printf("\t\t\t\t\t       <8>文体中心   <9>七号组团   <10>西食堂        \n");
}//按照编号查询景点信息 以及实现最短路径
int number(char s[])
{int f=0,i;for(i=1;i<=10;i++){if(strcmp(q[i].name,s)==0)return i;}return -1;
}void Dijkstra(int v0,int s)        //  Dijkstra法求最短路径,并输出路线
{int min,i,j,u,v;int p[110],l[110];memset(p,-1,sizeof(p));memset(l,0,sizeof(l));memset(book,0,sizeof(book));for(i=1;i<=10;i++){dis[i]=map[v0][i];if(dis[i]<inf)          //v0能直接到达,即上一站点为v0 p[i]=v0;}book[v0]=1;for(i=1;i<10;i++){min=inf;for(j=1;j<=10;j++)          //每次找出距离v0最近点 {if(book[j]==0&&dis[j]<min){min=dis[j];u=j;}}book[u]=1;           //标记该点 for(v=1;v<=10;v++){if(book[v]==0&&dis[v]>dis[u]+map[u][v])          //通过最近点更新其他边 {p[v]=u;                  //存储更新的边,即为最短路线 dis[v]=dis[u]+map[u][v];}}}v=s;i=1;while(p[v]!=v0)          //将路线存入栈中,正序输出 {l[i++]=p[v];v=p[v];}printf("\n");u=i-1;printf("路线为:\n");printf("%s--->",q[v0].name);for(i=u;i>=1;i--)printf("%s--->",q[l[i]].name); printf("%s\n",q[s].name);printf("最短路径长度为:%d 米\n",dis[s]);
}//导航界面
void daohang()
{int x,m,n,u,v,i,j;char c[100];system("cls");         //清屏 printf("\t\t\t\t ■■■■■■■■■■■■■■■■■■■■■■■\n");printf("\t\t\t\t ■                                          ■\n");printf("\t\t\t\t ■  江 苏 科 技 大 学 校 园 导 游 系 统     ■\n");printf("\t\t\t\t ■                                          ■\n");printf("\t\t\t\t ■■■■■■■■■■■■■■■■■■■■■■■\n");printf("\n");printf("\t           1、当前位置遍历景点路线;\t\t\t     2、查询任意景点信息;\n\n");printf("\t           3、查询任意两景点间的最短路径;                   4、退出程序;");printf("\n\n\n");}

【运行结果】

项目三、 算数表达式求解

1.问题描述

设计一个简单的算术表达式计算器。

2.基本要求

实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入)。

3.测试数据

( 30 + 2 * 70 ) / 3 - 12 * 3
 5 +( 9 *( 62 - 37)+ 15)* 6
 要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。

4.问题分析

1、本题要求我们计算算数表达式的值,在程序中需要大量的重复运用栈的基本操作。在程序设计过程需要考虑到运算符的优先级,熟悉栈的操作从而来进行计算 。
     2、表达式可看做是一个字符串,其中字符分为操作数和运算符两类,因此需要两个工作栈,命名为OPTR(运算符栈)和OPND(操作数栈),以此判断字符串中的字符,如果是操作数则压入操作数栈,如果是运算符栈,则压入运算符栈。

5.流程图描述

6.代码实现

【主要代码:双栈法实现】

//初始化
void initStacki(StackI *st){st->top = st->base=0;
}void initStackc(StackC *st){st->top = st->base=0;st->List[st->top] = '=';st->top++;
}//判断栈是否为空int stackempty(StackC sc){if(sc.top==sc.base){return 1;}else{return 0;}}//得到栈顶的数据
char getTopC(StackC st){if (st.top==st.base)return('!');elsereturn(st.List[st.top-1]);
}int getTopI(StackI st){if (st.top==st.base)return('!');elsereturn(st.List[st.top-1]);
}//往栈里面增加数据
void pushC(StackC *st,char c){st->List[st->top] = c;st->top++;
}
void PushI(StackI *st,float n){st->List[st->top] = n;st->top++;
}//数据出栈
char popC(StackC *st){if (st->top==st->base)return('!');else { st->top--;return(st->List[st->top]);}}
float popI(StackI *st){if (st->top==st->base)return('!');else { st->top--;return(st->List[st->top]);}
}//判断输入的是数字还是运算符
bool isDigti(char a){if('0'<= a && a<='9'){return 1;} else{return 0;}
}
bool isC(char d){if(('a'<=d && d<='z')||('A'<=d && d<='Z')){return 1;}else{return 0;}
}

【运行结果】

数据结构课程设计预习报告相关推荐

  1. 数据结构课程设计解题报告 前言

    首先,大大说可以发博客我才斗胆敢发. 其次,我会逐渐给出每题的伪代码,当前已经完成了部分题的分析(A,B同A,C,D,I,G) 为什么要写伪代码 其一,80行以上代码至少我一般是看不下去的,但是20~ ...

  2. 数据结构课程设计预习——项目1:中国计算机设计大赛赛事统计

    项目1: 中国计算机设计大赛赛事统计 问题描述 参加计算机设计大赛的n个学校编号为1~n,赛事分成m个项,项目的编号为1-m.比赛获奖按照得分降序,取前三名,写一个统计程序产生各种成绩单和得分报表.( ...

  3. 数据结构课程设计预习准备(三)有优先级的加减乘除计算器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.要求 二.思路 三.重难点 四.实现 五.总结 前言 ` [问题描述] 设计一个简单的算术表达式计算器. [实现提 ...

  4. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  5. C/C++《数据结构课程设计》任务书[2022-12-27]

    C/C++<数据结构课程设计>任务书[2022-12-27] <数据结构课程设计>任务书 一.任务总体安排: 班级 设计时间 地点 指导老师 21软件开发 17周每周一至周五五 ...

  6. c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...

    数据结构课程设计报告一元多项式的计算. 题目:一元多项式的计算 --链表 摘要(题目) 一元多项式计算 任务:能够按照指数降序排列建立并输出多项式: 能够完成两个多项式的相加.相减,并将结果输入: 目 ...

  7. 学生搭配问题数据结构报告c语言,数据结构课程设计_学生搭配问题.doc

    数据结构课程设计_学生搭配问题 数据结构课程设计 题 目: 学生搭配问题 学 院: 班 级: 学 生 姓 名: 学 生 学 号: 指 导 教 师: 2012 年 12 月 3 日 课程设计任务书 姓名 ...

  8. 数据结构课程设计——迷宫问题课程设计报告

    上学时没学过数据结构和算法,于是现在有机会就自学.下面是我最近在等待进入项目组期间,花了1小时学习了一下迷宫问题.下面是我学习时找到的一篇课程设计的报告,然后自己先看懂,然后又在VC6.0下运行了. ...

  9. 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx

    课 程 设 计 报 告 题目: 武昌地区公交查询与换乘推荐 课程名称: 数据结构课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 任 务 书 设计内容 掌握图.查 ...

最新文章

  1. IDEA调试SpringMvc项目时,出错:找不到ContextLoaderListener
  2. 一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)
  3. windows10 系统设置一键备份
  4. sklearn的简单使用
  5. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
  6. Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源
  7. 这是自己的第一篇博客
  8. arcore与unity_Android ARCore –与相机的距离
  9. 编译异常例子java_Java中异常发生时代码执行流程
  10. angular之service、factory预provider区别
  11. 在Mac电脑上如何将TXT文本转成PDF?
  12. php采集过滤内容,PHP采集利器:根据开始字符串和结束字符串截取需要的采集内容数据...
  13. 【大数据】一图了解大数据发展历程
  14. pl/sql Developer 1303注册码
  15. edm邮件直投_EDM邮件直投专家V3.8.5官方版下载 - 下载吧
  16. 猿创征文|瑞吉外卖——移动端_地址管理
  17. Linux7/CentOS7 磁盘结构与分区
  18. (转)李开复的美东AI见闻
  19. Broadcom博通 EDI 成功案例
  20. 小目标的检测算法PGan

热门文章

  1. Java-具有新建、打开和保存功能的简单记事本
  2. 【网络跳转】电脑双网卡互通
  3. 小程序跳转H5页面,修复线上环境无法打开问题
  4. Transformer | DETR目标检测中的位置编码position_encoding代码详解
  5. css实现摩天轮动画
  6. mapbox 天地图 底图切换组件
  7. vscode中的正则替换用法
  8. 异或的妙用(C语言)
  9. .NETWeb-图书管理系统
  10. 深陷低效内耗,没有哪家企业是无病呻吟