资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
广东海洋大学信息学院课程设计报告设计题目公交换乘系统公交换乘系统课程名称数据结构姓名(学号)XXX联系电话XXX专业名称计算机科学与技术所在班级XXX指导教师XXX 教师职称教授起止时间2011 年 12 月 26 日至 2012 年 1 月 6 日评定成绩1一、课程设计的主要内容1、 公交线路中,为用户查找最短路径,有【0】次换乘就能到达目的地和【1】次换乘就能到达目的地。2、 为用户计算出路程所需费用。3、 该课程设计的公交系统中有分权限;分管理员用户和普通用户,管理员的登陆需要帐号和密码(暗文) ,普通用户可以直接登陆。4、 管理员可以重新输入新公交路线、输出公交路线、读取已经存盘的公交路线资料、存入新公交路线资料(慎用!) 、查找最短公交路线、新增管理员用户和删除管理员用户。5、 普通用户只能输出公交路线和查找最短公交路线两个功能。二、功能和结构设计1、 为用户分权限2、 管理员有重新输入新公交路线、输出公交路线、读取已经存盘的公交路线资料、存入新公交路线资料(慎用!) 、查找最短公交路线、新增管理员用户和删除管理员用户3、 普通用户只能输出公交路线和查找最短公交路线两个功能。2注:系统默认的公交线路图(系统开发者为用户事先存好的,在 f1.txt 文档中)三、流程图和算法设计34567算法:(给出查找最短路径的方法)void Bus:findline() int x,y,i,j,k,l,longers; longers=0; /x、y是起始和终止车站的编码;i、j是每个站点后两位编码;k是每个站点后两位编 码的差值;l是转乘站点的后两位编码 while(1) coutx; couty; if(x/100)lineNum|(x/100)=busStationNumx/100- 1|(y/100)lineNum|(y/100)=busStationNumy/100-1)/前两个是判断车站 编码的首位的,第三个是判断车站编码的后两位的 cout0) for(k=0;k“; longers+=linex/100-1x%100+k.longer; coutj-i;k-) cout“; longers+=linex/100-1x%100+k-1.longer; cout0) for(k=0;k“; longers+=linex/100-1x%100+k.longer; cout“; / money+=linex/100-1x%100+k.longer; else for(k=0;kl-i;k-) cout“; longers+=linex/100-1x%100+k-1.longer; cout“; / money+=linex/100-1x%100+k.longer; l=takeNum1b%100; if(j-l0) longers+=liney/100-1l.longer; for(k=1;k“; longers+=liney/100-1l+k.longer; coutj-l;k-) cout“; longers+=liney/100-1l+k.longer; cout #include using namespace std; template class Bus public: struct BusStation int number; /车站编号 string busStationName;/车站名称 bool take; /是否可乘换 int longer; /到下一个车站的路程 ; Bus(); Bus(); void input(); void output(); void findline();/查找线路 void readfile();/读取公交路线数据 void writefile();/存入公交路线数据 typedef BusStation* Pointer; private: Pointer *line; /指向三条路线的指针 int lineNum;/路线数 int *busStationNum;/每条路线的车站数 ; template class Administrator public: Administrator(); Administrator(); void readAdministrator();/读取管理员资料11void writeAdministrator();/存入管理员资料 void addAdministrator();/增加用户 void deleteAdministrator();/删除用户 bool land(); private: string *name; string *mima; int num; ; /Bus.cpp #include“Bus.h“ #include template Bus:Bus() lineNum=0; line=new PointerlineNum;/三条线路 busStationNum=new int lineNum;/每条线路的车站数 template Bus:Bus() for(int i=0;i void Bus:input() coutlineNum; line=new PointerlineNum;/三条线路 busStationNum=new int lineNum;/每条线路的车站数 for(int a=0;abusStationNuma; for(int b=0;blineij.busStationName; if(jlineij.longer;/到下一站点有3公里 else cinlineij.longer; /以下是要找出线路中可换乘的车站 for(k=0,m=k+1;k=lineNum-1) k+; m=k; m+; template void Bus:output() cout void Bus:findline() int x,y,i,j,k,l,longers; longers=0; /x、y是起始和终止车站的编码;i、j是每个站点后两位编码;k是每个站点后两位编 码的差值;l是转乘站点的后两位编码 while(1) coutx; couty; if(x/100)lineNum|(x/100)=busStationNumx/100- 1|(y/100)lineNum|(y/100)=busStationNumy/100-1)/前两个是判断车站 编码的首位的,第三个是判断车站编码的后两位的 cout0)14 for(k=0;k“; longers+=linex/100-1x%100+k.longer; coutj-i;k-) cout“; longers+=linex/100-1x%100+k-1.longer; cout0) for(k=0;k“; longers+=linex/100-1x%100+k.longer; cout“; / money+=linex/100-1x%100+k.longer; else for(k=0;kl-i;k-) cout“; longers+=linex/100-1x%100+k-1.longer; cout“; / money+=linex/100-1x%100+k.longer; l=takeNum1b%100; if(j-l0) longers+=liney/100-1l.longer; for(k=1;k“; longers+=liney/100-1l+k.longer; coutj-l;k-) cout“; longers+=liney/100-1l+k.longer; cout void Bus:readfile() ifstream infile(“f1.txt“,ios:in); if(!infile) cerrlineNum; line=new PointerlineNum;/三条线路 busStationNum=new int lineNum;/每条线路的车站数 for(int a=0;abusStationNuma; for(int b=0;blineij.number; infilelineij.busStationName; infilelineij.longer; infilelineij.take; cout void Bus:writefile() ofstream outfile(“f1.txt“,ios:out); if(!outfile) cerr Administrator:Administrator() num=0; name=new stringnum; mima=new stringnum;18 template Administrator:Administrator() num=0; delete name; delete mima; name=NULL; mima=NULL; template void Administrator:readAdministrator() ifstream infile(“Administrator.txt“,ios:in); if(!infile) cerrnum; name=new stringnum; mima=new stringnum; for(int i=0;inameimimai; template void Administrator:writeAdministrator() ofstream outfile(“Administrator.txt“,ios:out); if(!outfile) cerr bool Administrator:land()19 string myname; string mymima; coutmyname; coutmymima; readAdministrator(); for(int i=0;i void Administrator:addAdministrator() string *name_aux,*mima_aux; name_aux=new stringnum+1; mima_aux=new stringnum+1; for(int i=0;inamenum-1; coutmimanum-1;for(int k=0;k void Administrator:deleteAdministrator() string dname,dmima;/分别存放要删除的管理员用户的帐号和密码 coutdname; coutdmima; for(int i=0;i=num-1) cout #include #include void main() /system(“Color 3D“); Bus b; Adminis
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号