赞
踩
- #include <iostream>
- #include <fstream>
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <iomanip>
-
-
- //公交中最大的账户数量
- #define MAXA 20000
- #define INITNUMBER 1
-
- int tol=0;//初始车辆为零
-
- using namespace std;
- //欢迎界面
- void welcome();
- //用户界面
- void mainFrame();
- //管理员登陆
- void login();
-
- //统计总共的车辆数
- int total=0;
- //用于查找车辆信息
- int searchAccount(long accNumber);
- //用于文件的读取
- void save();
- //用于文件的读取
- void read();
- //用于卡号的自增加
- long autoCreament();
-
- class Bus
- {
- public:
- Bus(){number=0;}
- long number; //公交编号
- char name[20]; //公交名称
- char type[20];//公交类型
- char start[20];//公交起点
- char terminal[20];//公交终点
- };
-
- //公交车中所有信息
- Bus array[MAXA];
-
- void AddBus();//增加车辆信息
- void DeleteBus_name();//删除车辆信息按照名字
- void DeleteBus_number();//删除车辆信息按照数字
- void FindBus_name(); //查找车辆信息通过站点
- void FindBus_number(); //通过数字超找信息
- void DispAll(); //显示所有信息
- void playstop(); //显示所有的车站
-
-
- void AddBus()
- {
- cout<<"请输入车辆名称:"<<endl;
- cin>>array[total].name;
- cout<<"请输入车辆类型:普通车 空调车 双层车 其他"<<endl;
- cin>>array[total].type;
- cout<<"请输入车辆起点"<<endl;
- cin>>array[total].start;
- cout<<"请输出车辆终点"<<endl;
- cin>>array[total].terminal;
- cout<<"添加公交车成功"<<endl;
- //写卡号
- array[total].number=autoCreament();
-
- cout<<"请您按任意键继续。。。。。。"<<endl;
- fflush(stdin);
- getchar();
- total++;
- mainFrame();
-
- }
-
- void welcome()
- {
- cout<<" +------------------------------------------+"<<endl;
- cout<<" |-----------欢迎登陆公交查询系统v1.0-------|"<<endl;
- cout<<" +------------------------------------------+"<<endl;
- }
-
-
- void save()
- {
- ofstream outfile("Bus.txt",ios::out);
- if(!outfile)
- {
- cerr<<endl<<"文件不存在!"<<endl;
- exit(1);
- }
- for(int i=0;i<total;i++) //依次写入文件
- {
- outfile<<array[i].number<<" "<<array[i].name<<" "<<array[i].type<<" "<<array[i].start<<" "<<array[i].terminal<<endl;
- }
- outfile.close();
- cout<<" 所有数据保存完毕!"<<endl;
- cout<<endl;
- mainFrame();
-
- }
-
- void read()
- {
- ifstream account("Bus.txt",ios::in);
- if(!account)
- {
- cerr<<"open error!"<<endl;
- exit(1);
- }
- while(!account.eof())
- {
- account>>array[total].number;
- account>>array[total].name;
- account>>array[total].type;
- account>>array[total].start;
- account>>array[total].terminal;
- total++;
- }
- total-=1;
- account.close();
- cout<<" 所有数据载入完毕!"<<endl;
- cout<<endl;
- }
-
-
-
- //管理员登陆
- void login()
- {
- char loginName[20];
- char loginPwd[20];
- int i;
- //测试
- for(i=1;i<4;i++)
- {
- cout<<"请输入管理员账号:";
- fflush(stdin);
- gets(loginName);
- cout<<"请输入管理员密码:";
- fflush(stdin);
- gets(loginPwd);
- //判断
- if(strcmp(loginName,"main")==0&&strcmp(loginPwd,"******")==0)
- {
- break;
- }
- else
- {
- if(i<3)
- {
- cout<<"账号或密码错误!请核对后重新输入\n";
- cout<<"您还有"<<3-i<<"次机会重新输入账号和密码。"<<endl;
- }
- else
- {
- cout<<"密码错误超过3次,退出系统……\n";
- exit(0);
- }
- }
- }
- }
- //用户界面
- void mainFrame()
- {
- int order,num;
- cout<<"请选择您要进行的操作;\n";
- cout<<" 1.添加车辆\n";
- cout<<" 2.删除车辆\n";
- cout<<" 3.显示全部车辆\n";
- cout<<" 4.查找车辆\n";
- cout<<" 5.查看所有车站\n";
- cout<<" 6.存储到文件\n";
- cout<<" 7.退出系统\n";
- cout<<"请输入操作指令:"<<endl;
- cin>>order;
- switch(order)
- {
- case 1: AddBus();
- break;
- case 2: cout<<"1.按照数字删除:"<<endl;
- cout<<"2.按照名字删除:"<<endl;
- cout<<"请您按键选着:"<<endl;
- cin>>num;
- if(num==1)
- {
- DeleteBus_number();
- }
- if(num==2)
- {
- DeleteBus_name();
- }else{
- cout<<"选择错误!"<<endl;
- mainFrame();
- }
-
- break;
- case 3: DispAll();
- mainFrame();
- break;
- case 4: cout<<"1.按照名称查找:"<<endl;
- cout<<"2.按照站点查找:"<<endl;
- cout<<"请您按键选着:"<<endl;
- cin>>num;
- if(num==1)
- {
- FindBus_number();
- }
- if(num==2)
- {
- FindBus_name();
- }else{
- cout<<"选择错误!"<<endl;
- mainFrame();
- }
- break;
- case 5: playstop();
- case 6: save();
- case 7: cout<<endl<<"祝您心情愉快!"<<endl;
- cout<<endl<<"欢迎您下次使用!"<<endl;
- cout<<endl;
- exit(1);
- default:
- break;
- }
-
- }
-
- int main()
- {
- //read();
- //欢迎界面
- int select;
- welcome();
- //登录
- login();
- while(1)
- {
- cout<<endl;
- cout<<"请选择数据来源:"<<endl;
- cout<<"1.文件读取:"<<endl;
- cout<<"2.键盘输入:"<<endl;
- cin>>select;
- if(select==2)
- {
- mainFrame();
- }
- if(select==1)
- {
- read();
- mainFrame();
- }
- }
-
- return 0;
- }
-
-
- //显示所有的站点
- void playstop()
- {
- int i,j,m;
- string name[400];
- cout<<"所有站点为:"<<endl;
- cout<<endl;
- cout<<array[0].start<<" "<<array[0].terminal<<" ";
- for(i=0;i<total;i++)
- {
- name[2*i]=array[i].start;
- name[2*i+1]=array[i].terminal;
- m=2*i+1;
- }
- for(j=0;j<m;j++)
- {
- if((name[j]!=array[0].start)&&(name[j]!=array[0].terminal))
- cout<<name[j]<<" ";
- }
-
- cout<<endl<<endl;
- mainFrame();
- }
- //实现卡号的涨涨
- long autoCreament()
- {
- if(total==0){
- return INITNUMBER;
- }else{
- return array[total-1].number+1;
- }
- }
-
- //按照名字删除车辆
- void DeleteBus_name()
- {
- char a[20],b;
- int i;
- DispAll();
- cout<<"请输入要删除的车辆(如109路):";
- cin>>a;
- for(i=0;i<total;i++)
- {
- if(strcmp(array[i].name,a)==0)
- {
- cout<<"您将删除该车的信息!!!!!!"<<endl;
- cout<<" 确定请按Y 按其他键返回主菜单 "<<endl;
- cin>>b;
- if(b=='Y' || b=='y')
- {
- getchar();
- array[i].number=-1;
- strcpy(array[i].name,"无");
- strcpy(array[i].type,"无");
- strcpy(array[i].start,"无");
- strcpy(array[i].terminal,"无");
- cout<<endl<<"删除成功,按enter键返回"<<endl;
- // total--;
- fflush(stdin);
- getchar();
- mainFrame();
-
- }
- else{
-
- mainFrame();
- }
- }
- }
- cout<<"输入错误!"<<endl;
- mainFrame();
-
- }
-
-
- //按照数字删除车辆
- void DeleteBus_number()
- {
- char a;
- int pos,accNum,m=0;
- cout<<endl<<"删除车的信息:"<<endl;
- DispAll();
- cout<<"请输入要删除车辆的序号:";
- cin>>accNum;
- pos=searchAccount(accNum);
- if(pos==-1)
- {
- //卡号有误
- m++;
- if(m>3)
- {
- mainFrame();
- }
-
- else{
- cout<<"序号不存在,请重新输入序号"<<endl;
- DeleteBus_number();
- }
-
- }
- else
- {
- cout<<"您将删除该车的信息!!!!!!"<<endl;
- cout<<" 确定请按Y 按其他键返回主菜单 "<<endl;
- cin>>a;
- if(a=='Y' || a=='y')
- {
- getchar();
- array[pos].number=-1;
- strcpy(array[pos].name,"无");
- strcpy(array[pos].type,"无");
- strcpy(array[pos].start,"无");
- strcpy(array[pos].terminal,"无");
- cout<<endl<<"删除成功,按enter键返回"<<endl;
- // total--;
- fflush(stdin);
- getchar();
- mainFrame();
-
- }
- else{
-
- mainFrame();
- }
- }
- }
-
- //显示所有车辆的信息
- void DispAll()
- {
- int i;
- cout<<setw(10)<<setiosflags(ios::left)<<"编号"<<setw(10)<<"名称"<<setw(10)<<"类型"<<setw(18)<<"起点站"<<setw(18)<<"终点站"<<endl;
- for(i=0;i<total;i++)
- {
- cout<<setw(10)<<setiosflags(ios::left)<<array[i].number<<setw(10)<<array[i].name<<setw(10)<<array[i].type<<setw(18)<<array[i].start<<setw(18)<<array[i].terminal<<endl;
- }
-
- }
-
- //输出指定车辆的信息
- void printAccount(int acc)
- {
- cout<<endl;
- cout<<setw(10)<<setiosflags(ios::left)<<"编号"<<setw(10)<<"名称"<<setw(10)<<"类型"<<setw(18)<<"起点站"<<setw(18)<<"终点站"<<endl;
- cout<<setw(10)<<setiosflags(ios::left)<<array[acc].number<<setw(10)<<array[acc].name<<setw(10)<<array[acc].type<<setw(18)<<array[acc].start<<setw(18)<<array[acc].terminal<<endl;
-
- }
-
- /*根据车卡号查找卡的下标
- * 若返回值>=0,车卡号是正确
- * 若返回值=-1,车卡号有误
- */
- int searchAccount(long accNumber)
- {
- int i,pos=-1;
- for(i=0;i<total;i++)
- {
- if(array[i].number==accNumber)
- {
- //找到了这张卡
- pos=i;
- break;
- }
-
- }
- return pos;
- }
-
- //按照数字查找车辆
- void FindBus_number()
- {
- char a[20];
- int i;
- cout<<"请输入要查找的车辆(如109路):";
- cin>>a;
- for(i=0;i<total;i++)
- {
- if(strcmp(array[i].name,a)==0)
- {
- printAccount(i);
- }
-
- }
- mainFrame();
-
- }
-
- //按照名字查找车辆
- void FindBus_name()
- {
- int i;
- char m[20];
- cout<<"请您输入查找的站点名字:"<<endl;
- cin>>m;
- for(i=0;i<total;i++)
- {
- if(strcmp(array[i].start,m)==0)
- {
- printAccount(i);
- }
- if(strcmp(array[i].terminal,m)==0)
- {
- printAccount(i);
- }
-
- }
- cout<<"查找结束!"<<endl<<endl;
- mainFrame();
-
- }
-
输出结果:
心得体会:
总结应用,实践一下!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。