1、 广东海洋大学信息学院 课程设计报告 设计题目 公交换乘系统 课程名称 数据结构 姓名(学号) XXX 联系电话 XXX 专业名称 计算机科学与技术 所在班级 XXX 指导教师 XXX 教师职称 教授 起止时间 2011 年12月26日至 2012年1月6日 评定成绩 一、 课程设计的主要内容 1、 公交线路中,为用户查找最短路径,有【0】次换乘就能到达目的地和【1】次换乘就能到达目的地。 2、 为用户计算出路程所
2、需费用。 3、 该课程设计的公交系统中有分权限;分管理员用户和普通用户,管理员的登陆需要帐号和密码(暗文),普通用户可以直接登陆。 4、 管理员可以重新输入新公交路线、输出公交路线、读取已经存盘的公交路线资料、存入新公交路线资料(慎用!)、查找最短公交路线、新增管理员用户和删除管理员用户。 5、 普通用户只能输出公交路线和查找最短公交路线两个功能。 二、 功能和结构设计 1、 为用户分权限 2、 管理员有重新输入新公交路线、输出公交路线、读取已经存盘的公交路线资料、存入新公交路线资料(慎用!)、查找最短公交路线、新增管理员用户和删除管理员用户 3、 普通用户只能输出公交路线和查找
3、最短公交路线两个功能。
注:系统默认的公交线路图(系统开发者为用户事先存好的,在f1.txt文档中)
三、 流程图和算法设计
算法:(给出查找最短路径的方法)
void Bus
4、 cin>>y;
if((x/100)>lineNum||(x/100)<=0||(x%100)>=busStationNum[x/100-1]||(y/100)>lineNum||(y/100)<=0||(y%100)>=busStationNum[y/100-1])//前两个是判断车站编码的首位的,第三个是判断车站编码的后两位的
cout<<"----找不到您所输入站点,请重新输入!----"< 5、0】次换乘到达目的地,路线如下:"< 6、 cout< 7、eName[2][5];//存放两条路线上可转乘车站的名称;
int takeNum[2][5];//存放两条路线上可转乘车站的编号;
int a,b;//a、b是计数的
for(a=0;a<2;a++)
for(b=0;b<5;b++)
{
takeName[a][b]=" ";
takeNum[a][b]=0;
}
//遍历每条路线可换乘的站点
for(a=0,b=0;a 8、Name[0][b]=line[x/100-1][a].busStationName;
takeNum[0][b]=line[x/100-1][a].number;
b++;
}
for(a=0,b=0;a 9、
//比较可换乘的站点是否有相同的,如果有,可以了一次换乘到达目的地;否则不可以
bool nn=false;
for(a=0;a<5;a++)
{
for(b=0;b<5;b++)
{
if(takeName[0][a]!=" "&&takeName[1][b]!=" "&&takeName[0][a]==takeName[1][b])
{
cout<<"您可以【1】次换乘到达目的地(换乘点前面有“*”提示),为你选择的路线如下:"< 10、i>0)
{
for(k=0;k 11、 {
for(k=0;k>l-i;k--)
{
cout< 12、0;
if(j-l>0)
{
longers+=line[y/100-1][l].longer;
for(k=1;k 13、//money+=line[y/100-1][l-1].longer;
for(k=-1;k>j-l;k--)
{
cout< 14、路程所需费用:"< 15、ass Bus
{
public:
struct BusStation
{
int number; //车站编号
string busStationName;//车站名称
bool take; //是否可乘换
int longer; //到下一个车站的路程
};
Bus();
~Bus();
void input();
void output();
void findline();//查找线路
void readfile();//读取公交路线数据
void 16、 writefile();//存入公交路线数据
typedef BusStation* Pointer;
private:
Pointer *line; //指向三条路线的指针
int lineNum;//路线数
int *busStationNum;//每条路线的车站数
};
template 17、nistrator();//存入管理员资料
void addAdministrator();//增加用户
void deleteAdministrator();//删除用户
bool land();
private:
string *name;
string *mima;
int num;
};
///////////////////////////////////////////////////////////////////////////
Bus.cpp
#include"Bus.h"
#include 18、ame T>
Bus 19、d Bus 20、tionNum[b]];//依据每条线路的车站数创建每条线路
int k,m,i,j;//k指前一线,m指后一线,i指要比较的前一线的车站,j指要比较的后一线的车站
cout<<"请依次输入每个车站的名称、到下一站点的距离:"< 21、se;//初始化每个车站为不可换乘
cin>>line[i][j].busStationName;
if(j 22、tionNum[m];j++)
{
if(line[k][i].busStationName==line[m][j].busStationName)
{
line[k][i].take=true;
line[m][j].take=true;
}
}
if(m>=lineNum-1)
{
k++;
m=k;
}
m++;
}
}
template 23、 ";
cout<<"到下一站的距离 ";
cout<<"是否可以乘换"< 24、e[i][j].take)
cout<<"是 "< 25、";
cin>>x;
cout<<" 终止站点编号:";
cin>>y;
if((x/100)>lineNum||(x/100)<=0||(x%100)>=busStationNum[x/100-1]||(y/100)>lineNum||(y/100)<=0||(y%100)>=busStationNum[y/100-1])//前两个是判断车站编码的首位的,第三个是判断车站编码的后两位的
cout<<"----找不到您所输入站点,请重新输入!----"< 26、00;
if((x/100)==(y/100))
{
cout<<"您可【0】次换乘到达目的地,路线如下:"< 27、
else
{
for(k=0;k>j-i;k--)
{
cout< 28、途愉快!----"< 29、
if(line[x/100-1][a].take)
{
takeName[0][b]=line[x/100-1][a].busStationName;
takeNum[0][b]=line[x/100-1][a].number;
b++;
}
for(a=0,b=0;a 30、]=line[y/100-1][a].number;
b++;
}
//比较可换乘的站点是否有相同的,如果有,可以了一次换乘到达目的地;否则不可以
bool nn=false;
for(a=0;a<5;a++)
{
for(b=0;b<5;b++)
{
if(takeName[0][a]!=" "&&takeName[1][b]!=" "&&takeName[0][a]==takeName[1][b])
{
cout<<"您可以【1】次换乘到达目的地(换乘点前面有“*”提示),为你选择的路线如下:"< 31、 32、1][x%100+k].longer;
}
else
{
for(k=0;k>l-i;k--)
{
cout< 33、0+k].longer;
}
l=takeNum[1][b]%100;
if(j-l>0)
{
longers+=line[y/100-1][l].longer;
for(k=1;k 34、ame< 35、[y/100-1][l+k].longer;
}
cout<<"----路程所需费用:"< 36、dfile()
{
ifstream infile("f1.txt",ios::in);
if(!infile)
{
cerr<<"open error!"< 37、b++)
line[b]=new BusStation[busStationNum[b]];//依据每条线路的车站数创建每条线路
for(int i=0;i 38、"< 39、ineNum;i++)
for(int j=0;j 40、////////////////
template 41、 Administrator::readAdministrator()
{
ifstream infile("Administrator.txt",ios::in);
if(!infile)
{
cerr<<"open error!"< 42、 A>
void Administrator::writeAdministrator()
{
ofstream outfile("Administrator.txt",ios::out);
if(!outfile)
{
cerr<<"open error!"< 44、
//cin>>mymima;
readAdministrator();
for(int i=0;i 45、
for(int i=0;i 46、ma_aux[j];
}
delete [] name_aux;
delete [] mima_aux;
name_aux=NULL;
mima_aux=NULL;
cout<<"请输入要新建的管理员帐户:";
cin>>name[num-1];
cout<<" 密码:";
cin>>mima[num-1];
for(int k=0;k 47、ak;
}
else if(k==num-2)
cout<<"----新管理员用户创建成功----";
}
writeAdministrator();
}
template 48、
for(int i=0;i 49、t<<"----您要删除的用户不存在!----";
}
}
getch();
}
//////////////////////////////////////////////////////////////////////////
main.cpp
/*
日期:2011.12.28~2011.12.30
作者:周钦雄
声明:我只是编程世界中小兵,程序中不足之处请多多提点,不胜感激
*/
#include"Bus.cpp"
#include 50、
{
//system("Color 3D");
Bus






