课程设计:公交线路管理系统

#include <iostream>
#include <string>
#include<iomanip>
#include <fstream>
using namespace std;
#define N 20
class Bus
{
public:
	Bus();
	Bus(int nu, string na, string ty, string st, string te);
	~Bus() { }
	int number;     //编号
	string name;    //名称(即路线)
	string type;    //车型
	string start;   //起点站
	string terminal;//终点站
};
Bus::Bus()
{
	number = 0;
	name = '0';
	type = '0';
	start = '0';
	terminal = '0';
}
Bus::Bus(int nu, string na, string ty, string st, string te)
{
	number = nu;
	name = na;
	type = ty;
	start = st;
	terminal=te;
}
class Busline
{
public:
	int size;
	Bus* bus[N];
	Bus* bus1;
	void busline();
	~Busline() { cout << "destrtctor" << endl; }
	void welcome();
	void Keyboard_entry();
	void AddBus();
	bool AddBus1(int number, string name, string type, string start, string terminal);
	void DeleteBus();
	bool DeleteBus1(int number);
	void Find();
	void Alter();
	bool FindBusNum1(int number);
	bool FindBusNam1(char* name1);
	bool FindBusStart1(char* start1);
	bool FindBusterminal1(char* terminal1);
	void showall();
	void show();
	void Check_station();
	void Save_file();
	void File_input();                                  //从文件读取
};
void Busline::busline()
{
	size = 0;
	for (int i = 0; i < N; i++)
	{
		bus+ = NULL;
	}
}
void Busline::welcome()                                //欢迎界面,主菜单
{
	int choose;
	cout << "------------------------------" << endl;
	cout << "    欢迎使用公交车管理系统    " << endl;
	cout << "------------------------------" << endl << endl;
	cout << "请选择数据来源:" << endl;
	cout << "1、从文件输入     2、键盘录入" << endl;
	cin >> choose;
	switch (choose)
	{
	case 1:File_input(); break;
	case 2:Keyboard_entry(); break;
	default:cout << "输入有误!请重新输入" << endl;
		welcome(); break;
	}
}
void Busline::Keyboard_entry()
{
	int order;
	cout << "=======公交线路管理系统=======" << endl;
	cout << "    1、添加公交线路信息      " << endl;
	cout << "    2、删除公交线路信息    " << endl;
	cout << "    3、修改公交线路线路信息   " << endl;
	cout << "    4、显示全部线路信息   " << endl;
	cout << "    5、查找线路信息   " << endl;
	cout << "    6、查看所有车站信息   " << endl;
	cout << "    7、存储到文件   " << endl;
	cout << "    8、退出公交线路管理系统   " << endl;
	cout << "请选择你需要实现的功能(1~8)" << endl;
	cin >> order;
	switch (order)
	{
	case 1:AddBus(); break;
	case 2:DeleteBus(); break;
	case 3:Alter(); break;
	case 4:showall(); break;
	case 5:Find(); break;
	case 6:Check_station(); break;
	case 7:Save_file(); break;
	case 8:cout << "您已退出程序!" << endl;
		exit(1); break;
	default:cout << "输入错误,请重新输入" << endl;
		Keyboard_entry();
	}
}
void Busline::File_input()
{
	int i = 0;
	Bus* BB;
	ifstream infile("Busline.txt", ios::in);
	if (!infile)
	{
		cerr << "open error!" << endl;
		exit(1);
	}
	for (i = 0; i < size; i++)
	{
		BB = bus+;
		infile >> BB->number >> BB->name >> BB->start >> BB->terminal;
		cout << "添加公交车 " << BB->name << "成功" << endl;
	}
	cout << "读取到" << i << "组数据" << endl;
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
bool Busline::AddBus1(int number, string name,string type,string start, string terminal)
{
	int i;
	Bus* bb;
	bb = new Bus(number, name, type, start, terminal);
	for (i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->name==name)
		{
			if (bus1->type==type)
			{
				if (bus1->start==start)
				{
					if (bus1->terminal==terminal)
					{
						cout << "此公交车信息已存在,录入失败!" << endl;
						return false;
					}
				}
			}
		}
	}
	if (i == size)
	{
		bus[size] = bb;
		size++;
		cout << "车辆信息录入成功!" << endl;
		return true;
	}
	else
		return false;
}
void Busline::AddBus()
{
	int number2, type, n, i;
	string ty, type2, name2, start2, terminal2;
	cout << "*****************添加车辆*****************" << endl;
	cout << "您正在增加车辆..." << endl;
	cout << "请输入你要添加车辆的总数;" << endl;
	cin >> n;
	for (i = 0; i < n; i++)
	{
		cout << "请输入车辆编号:" << endl;
		cin >> number2;
		cout << "请输入车辆名称:" << endl;
		cin >> name2;
		cout << "请输入车辆类型:" << endl;
		cout << "0-其他 1-普通车 2-空调车 3-双层车" << endl;
		cin >> type;
		switch (type)
		{
		case 0:type2 =="其他类型" ; break;
		case 1:type2 == "普通车";break;
		case 2:type2 == "空调车";break;
		case 3:type2 == "双层车";break;
		default:
			cout << "输入有误,请重新输入!" << endl;
			AddBus();
		}
		cout << "请输入车辆起点:" << endl;
		cin >> start2;
		cout << "请输入车辆终点:" << endl;
		cin >> terminal2;
		AddBus1(number2, name2, type2, start2, terminal2);
	}
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
bool Busline::DeleteBus1(int  number)
{
	int i;
	for (i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->number == number)
		{
			for (int j = i; j < size; j++)
			{
				bus1 = bus[j];
				(bus1->number)--;
				bus[j] = bus[j + 1];
				if (j == size - 1)
					number = bus1->number;
			}
			cout << "该车信息已删除!" << endl;
			size--;
			return true;
		}
	}
	if (i == size)
	{
		cout << "未找到该车信息,无法删除!" << endl;
		return false;
	}
	return false;
}
void Busline::DeleteBus()
{
	int num;
	cout << "*****************删除车辆*****************" << endl;
	show();
	cout << "请选择要删除的车辆的编号:" << endl;
	cin >> num;
	DeleteBus1(num);
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
void Busline::Alter()//修改公交线路信息
{
	int num, account,number,i,num11;
	char name11[10], start11[10], terminal11[10],type11[10];
	cout << "*****************修改信息*****************" << endl;
	show();
	cout << "请输入要修改的车辆编号:";
	cin >> number;
	cout << "请选择你要修改的内容:" << endl;
	cout << "1、修改公交车编号" << endl;
	cout << "2、修改公交车名称" << endl;
	cout << "3、修改起点站" << endl;
	cout << "4、修改终点站" << endl;
	cout << "5、修改公交车类型" << endl;
	cin >> account;
	cout << "您正在修改中..." << endl;
	switch (account)
	{
	case 1:
		cout << "请输入新的车牌编号" << endl;
		cin >> num11;
		for (i = 0; i < size; i++)
		{
			bus1 = bus+;
			if (bus1->number == number)
			{
				bus1->number = num11;
				cout << bus1->number << "号公交车的信息为:" << endl;
				cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
					<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			}
		}break;
	case 2: cout << "请输入新的公交名称" << endl;
		cin >> name11;
		for (i = 0; i < size; i++)
		{
			bus1 = bus+;
			if (bus1->number == number)
			{
				bus1->name = name11;
				cout << bus1->number << "号公交车的信息为:" << endl;
				cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
					<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			}
		}break;

	case 3:	cout << "请输入新的起始站" << endl;
		cin >> start11;
		for (i = 0; i < size; i++)
		{
			bus1 = bus+;
			if (bus1->number == number)
			{
				bus1->start == start11;
				cout << bus1->number << "号公交车的信息为:" << endl;
				cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
					<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			}
		}break;
	case 4:	cout << "请输入新的终端站" << endl;
		cin >> terminal11;
		for (i = 0; i < size; i++)
		{
			bus1 = bus+;
			if (bus1->number == number)
			{
				bus1->terminal == terminal11;
				cout << bus1->number << "号公交车的信息为:" << endl;
				cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
					<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			}
		}break;
	case 5:cout << "请输入新的型号" << endl;
		cin >> type11;
		for (i = 0; i < size; i++)
		{
			bus1 = bus+;
			if (bus1->number == number)
			{
				bus1->type == type11;
				cout << bus1->number << "号公交车的信息为:" << endl;
				cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
					<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			}
		}break;
	default:cout << "输入错误!请重新选择" << endl;
		Alter(); break;
	}
	cout << "你修改的内容已保存!" << endl;
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
void Busline::Find()      //判断车辆信息是否存在,查找车辆
{
	int account;
	int num;
	char name11[10], start11[10], terminal11[10];
	cout << "请选择查找车辆的方式:" << endl;
	cout << "1、按名称查找" << endl;
	cout << "2、按编号查找" << endl;
	cout << "3、按始发站查找" << endl;
	cout << "4、按终点站查找" << endl;
	cin >> num;
	switch (num)
	{
	case 1:	cout << "请输入要查找的车辆编号:";
		cin >> account;
		FindBusNum1(account); break;
	case 2:	cout << "请输入要查找车辆的名称:" << endl;
		cin >> name11;
		FindBusNam1(name11); break;
	case 3:
		cout << "请输入要查找车辆的始发站:" << endl;
		cin >> start11;
		FindBusStart1(start11); break;
	case 4:	cout << "请输入要查找车辆的终点站:" << endl;
		cin >> terminal11;
		FindBusterminal1(terminal11); break;
	default:cout << "输入错误!请重新选择" << endl;
		Find(); break;
	}
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
bool Busline::FindBusNum1(int number)
{
	int i;
	for (i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->number == number)
		{
			cout << bus1->number << "号公交车的信息为:" << endl;
			cout << setiosflags(ios::left) << "*" <<'\t' << "编号" << '\t' << "名称" << '\t' << "类型"
				<< '\t' << "起点站" << '\t' << "终点站" << "*" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
				<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			return true;
		}
	}
	if (i == size)
	{
		cout << "无该车任何信息!" << endl;
		return false;
	}
	return false;
}
bool Busline::FindBusNam1(char* name1)
{
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->name==name1)
		{
			cout << "路线名称为" << bus1->name << "的公交车的信息为:" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << "编号" << '\t' << "名称" << '\t' << "类型"
				<< '\t' << "起点站" << '\t' << "终点站" << "*" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
				<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			return true;
		}
		if (i == size)
		{
			cout << "无该车任何信息!" << endl;
			return false;
		}
		return false;
	}
}
bool Busline::FindBusStart1(char* start1)
{
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->start==start1)
		{
			cout << "始发站为" << bus1->start << "的公交车的信息为:" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << "编号" << '\t' << "名称" << '\t' << "类型"
				<< '\t' << "起点站" << '\t' << "终点站" << "*" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
				<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			return true;
		}
		if (i == size)
		{
			cout << "无该车任何信息!" << endl;
			return false;
		}
		return false;
	}
}
bool Busline::FindBusterminal1(char* terminal1)
{
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		if (bus1->terminal==terminal1)
		{
			cout << "终点站为" << bus1->terminal << "的公交车的信息为:" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << "编号" << '\t' << "名称" << '\t' << "类型"
				<< '\t' << "起点站" << '\t' << "终点站" << "*" << endl;
			cout << setiosflags(ios::left) << "*" << '\t' << bus1->number << '\t' << bus1->name << '\t'
				<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
			return true;
		}
		if (i == size)
		{
			cout << "无该车任何信息!" << endl;
			return false;
		}
		return false;
	}
}
void Busline::showall()              //显示全部车辆
{
	cout << setiosflags(ios::left) << " *" << '\t' << "编号" << '\t' << "名称" << '\t' << "类型" <<
		'\t' << "起点站" << '\t' << "终点站" << "*" << endl;
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		cout << setiosflags(ios::left) << " *" << '\t' << bus1->number << '\t' << bus1->name << '\t'
			<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
	}
	cout << endl;
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
void Busline::show()                //显示车辆信息,用于删除车辆
{
	cout << " *" << '\t' << "编号" << '\t' << "名称" << '\t' << "类型" <<
		'\t' << "起点站" << '\t' << "终点站" << "*" << endl;
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		cout << " *" << '\t' << bus1->number << '\t' << bus1->name << '\t'
			<< bus1->type << '\t' << bus1->start << '\t' << bus1->terminal << '\t' << "*" << endl;
	}
	cout << endl;
}
void Busline::Check_station()         //查看所有车站
{
	cout << "所有公交车站有:" << endl;
	for (int i = 0; i < size; i++)
	{
		bus1 = bus+;
		cout << bus1->start << ", " << bus1->terminal << "  ";
	}
	cout << endl << endl;
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
void Busline::Save_file()            //存储到文件
{
	ofstream outfile("Busline.txt", ios::out);
	if (!outfile)
	{
		cerr << "open error!" << endl;
		exit(1);
	}
	for (int i = 0; i < size; i++)
	{
		outfile << bus+ << endl;
	}
	outfile.close();
	cout << "读入文件成功" << endl << endl;
	cout << "请按任意键继续..." << endl;
	Keyboard_entry();
}
int main()
{
	Busline bus;
	bus.welcome();
	system("pause");
	return 0;
}
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据库公交车管理系统课程设计 课程设计 课题题目: 公交车管理系统 学 部: 理工学部 专 业: 班 级: 学 号: 姓 名: 指导老师: 例如: 1. 数据库设计(全局E-R图及各表) 例如: Bus(车辆信息表): "主码 "列名 "数据类型 "宽度 "小数位 "空否 "取值范围 "备 注 " "Pk "Cid "char "5 " "N " "公交车编号 " "外码 "id "char "5 " "N " "司机编号 " " "Nid "Char "10 " "N " "路线编号 " " "leixing "Char "5 " "N " "车辆类型 " " "nian "Int "5 " "N " "使用年限 " " "time "Datetime "1 " "N " "购买时间 " siji表: "主码 "列名 "数据类型 "宽度 "小数位 "空否 "取值范围 "备 注 " "Pk "id "char "5 " "N " "司机编号 " " "mingzi "char "5 " "N " "司机名字 " " "xingbie "Char "10 " "N " "司机性别 " " "age "Char "5 " "N " "年龄 " " "Age2 "Int "5 " "N " "驾龄 " (注意各表有无联系) 2. 系统实现(各页面及描述) 建立siji表: 建立bus表: 增加: 修改: 删除: 单表查询: 多表查询: 嵌套查询: 3. 小结(心得体会) 通过这次课程设计,我学到了如何运用SQL2008实现各种增加删除和修改功能,丰富自己 的知识并且提高对SQL等软件的实际操作能力。使我们对已经学习过的数据库课程的进一 步的掌握,对知识进行最大程度的消化融汇。因此这次的课程设计对我们来说具有非常 重要的作用:为以后学生工作做必要的准备和实践,提高自身对数据库开发的能力。 此次设计的公交车管理系统,虽然简单,但是却十分实用,极大的方便了用户对公交车 信息和线路的操作,节省了大量的工作量。对以后开发各种数据库积累了宝贵的经验。 4. 开发工具和参考文献 操作系统:Window7 软件配置:Microsoft SQL Server 2008 数据库配置:Microsoft SQL Server 2008 在PC机中新建数据库,建立各个数据表 、关系图 数据库系统概论(第五版)作者:王珊 5. 源程序清单 建表 建立bus 表: CREATE table bus (cid char(10)not null primary key, id char(10)not null, Nid char(10)not null, leixing char(10)not null, nian char(10)not null, time DATETIME not null primary key cid foreign key (id) references siji(id) ); 建立siji表: CREATE table siji (id char(10)not null primary key, mingzi char(10)not null, xingbie char(2)not null, age int not null, age2 char(5)not null, constraint C1 check(age>=25 and age2>=5), tel char(12) not null) 增加数据到bus表中 insert into bus(cid,id,nid,leixing,nian,time) values('1','1','1','单层公车,'8','2016 06 01'); insert into bus(cid,id,nid,leixing,nian,time) values('2','2,'2','单层公车,'5','2016 06 01'); insert into bus(cid,id,nid,leixing,nian,time) values('3','3','3','双层公车,'8','2016 06 01'); 删除数据: delete from bus where id='1'; 修改数据: update bus set nian=10 where id='1'; 单表查询: select cid,id,nid,leixing,nian,time from bus where id=1; 多表查询: select cid,xingbie from bus,siji where bus.id=siji.id and age='30'; 嵌套查询: select Nid from bus where
出行是人类生活的基本活动之一。城市的快速发展、科技的发展以及环保意识的增强,对城市公共交通的发展趋势的快速性、舒适性、便捷性、环保等方面提出更高要求。先进的信息技术也促进了公共交通技术的发展,从而为乘客提供了良好的出行条件,并且能够逐渐满足市民出行多样化的交通需求。为城市的进-步发展提供便捷条件,对于城市公共交通来说,必然要优先发展公交,因此,公共交通的地位也不断得到提升。 2005年以来,中国先后印发了关于优先发展城市公共交通的意见等系列文件正式确立了公交优先发展的战略思想,为优先发展城市公共交通指明了方向,有力推动了中国城市公交事业的发展。截止2009年底到全国公共汽电车运营线路网总长度28.9万公里公交专用车道里程达7452公里,10余个城市开通运营快速公交路线,公交运输总量达到780亿人次。随着时代发展,需要更便捷的生活,因此乘客需要实时的查询公交系统的信息以便出行,在此背景下,本文最主要采用vs2010来实现公交查询系统的设计采用SQLServer2008数据库来实现系统所需的数据需求。 在公交查询系统设计过程中考虑用户查询的模块为:线路查询、站点查询、换乘查询,管理员模块则应该包括对数据增、删、查、改等操作,对于数据库设计应该体现出数据之间明确的联系关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值