资源简介
设计你的学校的平面图,至少包括10个以上的景点(场所),每两个景点间可以有不同的路,且路长也可能不同,找出从任意景点到达另一景点的最佳路径(最短路径)。
要求:
(1)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。
(4)提供图的编辑功能:增加、修改、删除景点;增加、修改、删除道路等。
(5)校园导游图的仿真界面。
8.学生成绩管理系统
学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生注册、考试成绩的录入及修改、成绩的统计分析等等。设计一个系统实现对学生成绩的管理。
要求系统应具有以下基本功能:
(1)学生注册登记;
(2)增加、删除某一班级的学生;
(3)成绩录入:输入学生的考试成绩;
要求采用二叉排序树存放学生成绩,一门课程对应一棵二叉排序树;
(4)成绩修改:若输入错误可进行修改;
(5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求出成绩处于指定分数段内的学生人数;求出每个学生一学期各科的平均成绩等;
(6)查找:查找某个学生的某门课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。
(7)打印:打印一个班级学生的单科成绩;打印某一课程成绩处于指定分数段内的学生名单;打印学生在某一学期的成绩报告单。
代码片段和文件信息
#include “string.h“
#include “stdio.h“
#include “stdio.h“
#include “malloc.h“
#include “stdlib.h“
#define Max 20000
#define NUM 10
typedef struct ArcCell{
int adj; /* 相邻接的景点之间的路程 */
}ArcCell; /* 定义边的类型 */
typedef struct VertexType{
int number; /* 景点编号 */
char* sight; /* 景点名称 */
char* info; /* 景点描述 */
}VertexType; /* 定义顶点的类型 */
typedef struct{
VertexType vex[NUM]; /* 图中的顶点,即为景点 */
ArcCell arcs[NUM][NUM]; /* 图中的边,即为景点间的距离 */
int vexnumarcnum; /* 顶点数,边数 */
}MGraph; /* 定义图的类型 */
MGraph G; /* 把图定义为全局变量 */
int P[NUM][NUM]; /* */
long int D[NUM]; /* 辅助变量存储最短路径长度 */
int x[9]={0};
void CreateUDN(int vint a); /* 造图函数 */
void narrate(); /*说明函数*/
void ShortestPath(int num); /*最短路径函数*/
void output(int sight1int sight2); /*输出函数*/
char Menu(); /* 主菜单 */
void search(); /* 查询景点信息 */
char SearchMenu(); /* 查询子菜单 */
void HaMiTonian(int); /* 哈密尔顿图的遍历 */
void NextValue(int);
void display(); /* 显示遍历结果 */
void main() /* 主函数 */
{
int v0v1;
char ck;
CreateUDN(NUM11);
do
{
ck=Menu();
switch(ck)
{
case ‘1‘:
system(“cls“);
narrate(); /* 输出景点列表 */
printf(“\n\n\t\t\t请选择起点景点(0~9):“);
scanf(“%d“&v0);
printf(“\t\t\t请选择终点景点(0~9):“);
scanf(“%d“&v1);
ShortestPath(v0); /* 计算两个景点之间的最短路径 */
output(v0v1); /* 输出结果 */
printf(“\n\n\t\t\t\t请按任意键继续...\n“);
getchar();
getchar();
break;
case ‘2‘:search();
break;
case ‘3‘:
system(“cls“);
narrate();
x[0]=1;
HaMiTonian(1);
printf(“\n\n\t\t\t\t请按任意键继续...\n“);
getchar();
getchar();
break;
};
}while(ck!=‘e‘);
}
char Menu() /* 主菜单 */
{
char c;
int flag;
do{
flag=1;
system(“cls“);
narrate(); /* 输出景点列表 */
printf(“\n\t\t\t┏━━━━━━━━━━━━━━━┑\n“);
printf(“\t\t\t┃ ┃\n“);
printf(“\t\t\t┃ 1、查询景点路径 ┃\n“);
printf(“\t\t\t┃ 2、查询景点信息 ┃\n“);
printf(“\t\t\t┃ 3、推荐参观路线 ┃\n“);
printf(“\t\t\t┃ e、退出 ┃\n“);
printf(“\t\t\t┃ ┃\n“);
printf(“\t\t\t┗━━━━━━━━━━━━━━━┛\n“);
printf(“\t\t\t\t请输入您的选择:“);
scanf(“%c“&c);
if(c==‘1‘||c==‘2‘||c==‘3‘||c==‘e‘)
flag=0;
}while(flag);
return c;
}
char SearchMenu() /* 查询子菜单 */
{
char c;
int flag;
do{
flag=1;
system(“cls“);
narrate();
printf(“\n\t\t\t┏━━━━━━━━━━━━━━━┑\n“);
printf(“\t\t\t┃ ┃\n“);
printf(“\t\t\t┃ 1、按照景点编号查询 ┃\n“);
printf(“\t\t\t┃ 2、按照景点名称查询 ┃\n“);
printf(“\t\t\t┃ e、返回 ┃\n“);
printf(“\t\t\t┃ ┃\n“);
printf(“\t\t\t┗━━━━━━━━━━━━━━━┛\n“);
printf(“\t\t\t\t请输入您的选择:“);
scanf(“%c“&c);
if(c==‘1‘||c==‘2‘||c==‘e‘)
flag=0;
}while(flag);
return c;
}
void search() /* 查询景点信息 */
{
int num;
int i;
char c;
char name[20];
do
{
system(“cls“);
c=SearchMenu();
switch (c)
{
case ‘1‘:
- 上一篇:C++ 分治法解决邮局选址问题
- 下一篇:SLR1分析表的生成
评论
共有 条评论