`
ldb2741
  • 浏览: 32901 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

数据结构课程设计(1)

阅读更多

计算机系的同学总是很倒霉,期末考结束后都不能回家,还要留下来做课程设计。至少我们学校是这样,直到7月21号我才回家过暑假,下面就和大家分享一下本学期的课程设计题目。
题目:全国交通咨询模拟
【问题描述】处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。

【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。

(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。

(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。

(4)旅途中耗费的总时间应该包括中转站的等候时间。

(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地

源程序
function.h
#include
using namespace std;
const int max=50;
const int lim_max=99999; //定义极限值

class time //定义时间类
{
private: //私有成员
int hour; //定义私有变量
int minute; //定义私有变量

public: //公有成员
void givevalue(int h,int m) //定义公有成员函数
{
hour=h;
minute=m;
}
void showvalue() //定义公有成员函数
{
cout< <":"<<minute<<" ?;
typedef struct
{
int weight; //定义城市之间的距离
int road[max]; //存储城市之间路过的顶点
int length; //定义最短路径的长度
time tstarttime; //定义火车出发时间
time tendtime; //定义火车到达时间
time pstarttime; //定义飞机出发时间(未用)
time pendtime; //定义飞机到达时间(未用)
}node;

typedef struct
{
char *vexs[max]; //定义城市的名称
node arcs[max][max]; //定义边之间的信息
int vexnum; //定义城市数
int arcnum; //定义边数
}Mgraph;


// 以下为函数声明
Mgraph *create(); //创建函数
void floyd(Mgraph *mg); //最短路径算法
Mgraph *addnewcity(Mgraph *mg);//添加城市信息
Mgraph *delcity(Mgraph *mg); //删除城市信息
int distime(time a,time b); //计算时间差
void view(Mgraph *mg); //查看系统信息
void list(); //菜单系统
void picture(); //图形界面
int logo(); //管理员登陆
int logoclient(); //用户登陆
void pic1(); //退出界面
void searchtime(Mgraph *mg); //查询函数
void showtime(int minute); //输出时间函数

resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Script1.rc
//
#define IDI_ICON1 101

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Script1.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Chinese (中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON DISCARDABLE "1.ico"

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END

#endif // APSTUDIO_INVOKED

#endif // Chinese (中国) resources
/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

class.cpp
#include
#include "function.h"
using namespace std;

int distime(time a,time b) //返回b-a的时间差,用分表示
{
int ah,am;
int bh,bm;
int asum,bsum;
ah=a.outputhour();
am=a.outputminute();
bh=b.outputhour();
bm=b.outputminute();
asum=ah*60+am;
bsum=bh*60+bm;
if(asum<=bsum)
return (bsum-asum);
else
return (24*60-asum+bsum);
}

void showtime(int minute) //时间格式转换
{
int hour;
if(minute<60)
cout<<"分钟";
else
{
hour=minute/60;
minute=hour*60-minute;
cout<<"小时"<<MINUTE<<"分钟";< P>

}
}
file.cpp
#include
#include
#include
#include "function.h"
using namespace std;

Mgraph *addnewcity(Mgraph *mg)
{
int way,i;
int hour,minute;
char city1[20],city2[20]; //city1为新增的城市,文件中第一列为新增的城市,第二列为已存在的城市
char flag[20]="aaa";
ifstream infile("d:\\traffic.txt");
while(!infile.eof())
{
infile>>city1>>city2>>way>>hour>>minute;
if(strcmp(city1,flag))
{
mg->vexnum++;
mg->vexs[mg->vexnum]=new char [20];
strcpy(mg->vexs[mg->vexnum],city1);
strcpy(flag,city1);
}
for(i=1;ivexnum;i++)
{
if(strcmp(mg->vexs[i],city2)==0)
{
mg->arcs[i][mg->vexnum].weight=mg->arcs[mg->vexnum][i].weight=way;
mg->arcnum++;
mg->arcs[mg->vexnum][i].tstarttime.givevalue(hour,minute);
infile>>hour>>minute;
mg->arcs[mg->vexnum][i].tendtime.givevalue(hour,minute);
infile>>hour>>minute;
mg->arcs[i][mg->vexnum].tstarttime.givevalue(hour,minute);
infile>>hour>>minute;
mg->arcs[i][mg->vexnum].tendtime.givevalue(hour,minute);

}
else if(mg->arcs[i][mg->vexnum].weight<0||mg->arcs[i][mg->vexnum].weight>lim_max)
{
mg->arcs[i][mg->vexnum].weight=mg->arcs[mg->vexnum][i].weight=lim_max;
mg->arcs[mg->vexnum][i].tstarttime.givevalue(0,0);
mg->arcs[mg->vexnum][i].tendtime.givevalue(0,0);
mg->arcs[i][mg->vexnum].tstarttime.givevalue(0,0);
mg->arcs[i][mg->vexnum].tendtime.givevalue(0,0);
}


}
mg->arcs[mg->vexnum][mg->vexnum].weight=0;


}
mg->vexnum--; //奇怪
return mg;
}

Mgraph *delcity(Mgraph *mg)
{
char city[20];
char flag='a';
while(flag!=' ')
{
cout<<"输入要删除城市的名称:"<
cin>>city;
for(int count=1;count<=mg->vexnum;count++)
{
if(strcmp(city,mg->vexs[count])==0)
{
break;
}
}
for(int i=1;i<=mg->vexnum;i++)
{
mg->arcs[count][i].weight=mg->arcs[i][count].weight=lim_max;
mg->arcs[count][i].tstarttime.givevalue(0,0);
mg->arcs[count][i].tendtime.givevalue(0,0);
mg->arcs[i][count].tstarttime.givevalue(0,0);
mg->arcs[i][count].tendtime.givevalue(0,0);

}
mg->arcs[count][count].weight=0;
cout<<"结束请按空格键,继续请按任意键:"<
cin.ignore();
flag=cin.get();
}
return mg;
}


search.cpp
#include
#include "function.h"
using namespace std;


void view(Mgraph *mg)
{
char city1[20],city2[20];
int num1,num2;

cout<<"请输入要查找两城市的名称:"<
cin>>city1>>city2;
for(int count=1;count<=mg->vexnum;count++)
{
if(strcmp(mg->vexs[count],city1)==0)
{
num1=count;
break;
}
}

for(count=1;count<=mg->vexnum;count++)
{
if(strcmp(mg->vexs[count],city2)==0)
{
num2=count;
break;
}
}

cout<<"从"< <"到"<<city2<<"最短路径为:"<<endl;
cout<<" --> ";
for(count=1; mg->arcs[num1][num2].road[count]!=0; count++)
{
cout<vexs[mg->arcs[num1][num2].road[count]]<<" --> ";
}
cout<
cout<<"路径长度为: "<arcs[num1][num2].length<
cout<<"火车出发时间为: ";
mg->arcs[num1][num2].tstarttime.showvalue();
cout<<endl<<"火车到达时间为: ";
mg->arcs[num1][num2].tendtime.showvalue();
cout<
}

分享到:
评论

相关推荐

    数据结构课程设计航空客运订票系统源代码+报告文档和可执行文件.zip

    数据结构课程设计航空客运订票系统源代码+报告文档和可执行文件数据结构课程设计航空客运订票系统源代码+报告文档和可执行文件数据结构课程设计航空客运订票系统源代码。数据结构课程设计航空客运订票系统源代码+...

    数据结构课程设计模板

    数据结构课程设计是计算机科学与技术专业的重要实践环节,它要求学生通过实际操作来理解和掌握数据结构的基本概念、原理和方法。在这个“数据结构课程设计模板”中,我们可以期待找到一系列帮助学生完成这一任务的...

    数据结构课程设计毕业设计

    数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构课程设计数据结构...

    数据结构课程设计

    数据结构课程设计是计算机科学与技术专业的重要课程之一,它主要关注如何在计算机系统中高效地组织和管理数据。在这个项目中,我们将深入探讨各种基本和高级的数据结构,包括数组、链表、栈、队列、树、图、哈希表等...

    迷宫--数据结构课程设计

    在数据结构课程设计中,"迷宫"是一个经典的主题,它涵盖了多个重要的计算机科学概念,尤其是数据结构。这里我们将深入探讨这个主题,并基于提供的文件名,我们有两个不同的迷宫设计和相关的文档论文。 首先,迷宫...

    数据结构课程设计——排序综合课程设计

    数据结构课程设计是计算机科学与技术专业中一项重要的实践性教学环节,主要目的是让学生深入理解并熟练掌握数据结构的基本概念、原理以及应用。在“排序综合课程设计”中,学生通常会被要求实现多种排序算法,并对...

    数据结构课程设计C++语言停车场管理系统源码.zip

    数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加了UI数据结构课程设计C++语言停车场管理系统源码,添加...

    shujujiegou.rar_数据结构 课程设计_数据结构课程设计

    文档“数据结构课程设计1.doc”很可能包含了详细的项目概述、任务要求、算法实现以及可能的分析报告。通常,这样的课程设计会涵盖以下几个关键知识点: 1. **线性结构**:包括数组和链表。数组是最基本的数据结构,...

    学生成绩管理系统论文+代码 数据结构课程设计C语言版

    《学生成绩管理系统论文+代码 数据结构课程设计C语言版》是针对计算机专业学生的数据结构课程设计项目,旨在让学生通过实际编程应用,深入理解和掌握数据结构的基本概念、算法及其在实际问题中的应用。这个项目使用...

    数据结构课程设计任务书

    数据结构课程设计任务书 数据结构课程设计任务书是计算机专业的专业基础课,以C/C++语言进行课程设计,旨在培养学生使用数据结构解决实际问题的能力。该课程设计任务书共包括三个部分:课程设计目的、课程设计内容...

    数据结构课程设计总结报告

    数据结构课程设计是计算机科学与技术专业的重要实践环节,旨在加深学生对数据结构的理解和应用。本报告聚焦于一个基于链表实现的员工信息管理系统,该系统涵盖了数据结构中的链表操作,包括插入、删除、查找、计数、...

    数据结构课程设计所有题目源程序

    武汉理工大学的数据结构课程设计提供了丰富的实践机会,让学生深入理解和应用这些概念。这个压缩包包含的源程序涵盖了课程设计的所有题目,旨在帮助学生提升算法设计、分析和实现的能力。 1. **数组与链表**:在...

    数据结构课程设计-宿舍管理查询软件

    数据结构课程设计是计算机科学与技术专业的重要实践环节,它旨在通过实际操作加深对数据结构的理解,提升编程能力。在这个项目中,我们看到的主题是“宿舍管理查询软件”,这是一个典型的数据库管理和信息检索应用,...

    数据结构课程设计-排课系统源码.zip

    在这个“数据结构课程设计-排课系统源码.zip”压缩包中,我们可以深入理解如何应用数据结构来解决实际问题,比如排课系统的实现。 排课系统是一个典型的调度问题,它需要在满足各种约束(如教室容量、教师时间冲突...

    数据结构课程设计银行排队系统

    数据结构课程设计C语言,用到知识数据结构中的队列,课程设计

    数据结构课程设计——族谱管理系统

    数据结构课程设计是计算机科学与技术专业学生在学习过程中的一项重要任务,旨在加深对数据组织方式的理解,并通过实践提升编程能力。在这个名为“族谱管理系统”的项目中,开发者使用了C语言来构建一个树形结构的...

    数据结构课程设计-文本文件压缩

    数据结构课程设计是计算机科学教育中的一个重要环节,它旨在让学生深入理解各种数据组织方式及其在实际问题中的应用。本项目聚焦于"文本文件压缩",采用了一种经典的压缩方法——霍夫曼编码,这是一种基于频率的无损...

    数据结构课程设计魔王语言解释

    在"数据结构课程设计魔王语言解释"中,我们可能会深入研究如何为一种名为"魔王语言"的虚构编程语言设计并实现数据结构的解析器。 在数据结构的设计中,常见的类型包括数组、链表、栈、队列、树(如二叉树、堆)、图...

    C++数据结构课程设计大作业-员工管理系统(带完整报告)

    在这个C++数据结构课程设计大作业中,学生构建了一个员工管理系统,这是一项综合性的实践项目,旨在提升对C++编程语言、数据结构以及文件操作的理解。这个系统可以在命令行环境下运行,适合在Linux环境中编译,同时...

Global site tag (gtag.js) - Google Analytics