火车票销售系统改进实验
2008-09-17 19:09
190 查看
对一个座位多次使用的简单实现
#include <iostream.h>
#include <stdio.h>
#include <string.h>
class Ticket
{
public:
Ticket()
{
IsSeated = false;
}
bool IsSeated;
int startNum;
int arriveNum;
int n_ticketNum;//座位号
protected:
private:
int n_price;
int n_distance;
char originStation[20];
char terminus[20];
char trainNum[16];
};
class SoldSystem
{
public:
SoldSystem()
{
p_current = NULL;
p_sold = NULL;
p_current = p_sold;
num_of_sold = 0;
ticket_code = 0;
}
void SetSeatNum(int num)
{
num_of_ticket = num;
}
void SetStationNum(int num)
{
stationNum = num;
}
bool SetAllSeat()
{
if (num_of_ticket < 1)
{
return false;
}
p_sold = new Ticket[num_of_ticket];
if (p_sold == NULL)
{
return false;
}
return true;
}
~SoldSystem()
{
if (num_of_ticket > 0)
{
delete []p_sold;
}
}
Ticket* GoHead()
{
return p_sold;
}
bool SoldTicket(int startNum, int arrNum);
void PrintTicket();
void SetStationName();
void PrintStation();
Ticket* p_current;
int num_of_ticket;
int num_of_sold;
int ticket_code;
char startTime[16];
char arriveTime[16];
char date[16];
char stationName[20][32];
protected:
private:
int stationNum;
Ticket* p_sold;
};
//1.等票售完之后再开始分配还是开始就采用分配方式
//这里采用先按顺序发票,等票售完之后再开始分配
bool SoldSystem::SoldTicket(int startNum, int arrNum)
{
if (num_of_sold < num_of_ticket)
{
p_current->startNum = startNum;
p_current->arriveNum = arrNum;
p_current->IsSeated = true;
p_current->n_ticketNum = ++ticket_code;
num_of_sold++;
PrintTicket();
p_current++;
}
else
{
p_current = GoHead();
for (int i = 0; i < num_of_ticket; i++)
{
if (p_current->arriveNum <= startNum)
{
p_current->startNum = startNum;
p_current->arriveNum = arrNum;
p_current->IsSeated = true;
PrintTicket();
num_of_sold++;
break;
}
p_current++;//
}
if (i == num_of_ticket)
{
cout << "No seat left!" << endl;
return false;
}
}
return true;
}
void SoldSystem::SetStationName()
{
// cout << "按顺序输入各终点名称: ";
// for (int i = 0; i < stationNum; i++)
// {
// cout << "第 " << i + 1 << "个站点:";
// cin >> stationName[i];
// }
char buf[255] = "";
FILE* file = fopen("D://to//station_name.txt", "rb");
if (file == NULL)
{
return;
}
int i = 0;
int lenth = 0;
while ( i < stationNum )
{
fgets(buf,255,file);
strcpy(stationName[i], buf);
lenth = strlen(stationName[i]);
stationName[i][lenth - 2] = '/0';//13,10, -2;
i++;
}
fclose(file);
}
void SoldSystem::PrintTicket()
{
cout << "===========================" << endl;
cout << "Start station " << p_current->startNum ;
cout << stationName[p_current->startNum - 1] << " ";
cout << "Terminus " << p_current->arriveNum ;
cout << stationName[p_current->arriveNum - 1];
cout << "Seat Number " << p_current->n_ticketNum << endl;
cout << "===========================" << endl;
}
void SoldSystem::PrintStation()
{
for (int i = 0; i < stationNum; i++)
{
cout << i + 1 << ". " << stationName[i] << " ";
}
}
int main(int argc, char** argv)
{
int start, stationNum;
int terminus;
SoldSystem nj2zz;
cout << "输入站点数:";
cin >> stationNum;
nj2zz.SetStationNum(stationNum);
nj2zz.SetStationName();
nj2zz.PrintStation();
nj2zz.SetSeatNum(4);
nj2zz.SetAllSeat();
nj2zz.p_current = nj2zz.GoHead();
// for (int i = 0; i < 6; i++)
// {
// cout << "起点站:";
// cin >> start;
// cout << "终点站:";
// cin >> terminus;
// nj2zz.SoldTicket(start, terminus);
// }
char out_sign = 'k';
while (out_sign != 'y')
{
cout << "/n起点站:";
cin >> start;
cout << "终点站:";
cin >> terminus;
nj2zz.SoldTicket(start, terminus);
cout << "是否退出售票系统:(y/n)";
cin >> out_sign;
}
return 0;
}
打开文件内容形式
南京
蚌埠
徐州
商丘
开封
郑州
#include <iostream.h>
#include <stdio.h>
#include <string.h>
class Ticket
{
public:
Ticket()
{
IsSeated = false;
}
bool IsSeated;
int startNum;
int arriveNum;
int n_ticketNum;//座位号
protected:
private:
int n_price;
int n_distance;
char originStation[20];
char terminus[20];
char trainNum[16];
};
class SoldSystem
{
public:
SoldSystem()
{
p_current = NULL;
p_sold = NULL;
p_current = p_sold;
num_of_sold = 0;
ticket_code = 0;
}
void SetSeatNum(int num)
{
num_of_ticket = num;
}
void SetStationNum(int num)
{
stationNum = num;
}
bool SetAllSeat()
{
if (num_of_ticket < 1)
{
return false;
}
p_sold = new Ticket[num_of_ticket];
if (p_sold == NULL)
{
return false;
}
return true;
}
~SoldSystem()
{
if (num_of_ticket > 0)
{
delete []p_sold;
}
}
Ticket* GoHead()
{
return p_sold;
}
bool SoldTicket(int startNum, int arrNum);
void PrintTicket();
void SetStationName();
void PrintStation();
Ticket* p_current;
int num_of_ticket;
int num_of_sold;
int ticket_code;
char startTime[16];
char arriveTime[16];
char date[16];
char stationName[20][32];
protected:
private:
int stationNum;
Ticket* p_sold;
};
//1.等票售完之后再开始分配还是开始就采用分配方式
//这里采用先按顺序发票,等票售完之后再开始分配
bool SoldSystem::SoldTicket(int startNum, int arrNum)
{
if (num_of_sold < num_of_ticket)
{
p_current->startNum = startNum;
p_current->arriveNum = arrNum;
p_current->IsSeated = true;
p_current->n_ticketNum = ++ticket_code;
num_of_sold++;
PrintTicket();
p_current++;
}
else
{
p_current = GoHead();
for (int i = 0; i < num_of_ticket; i++)
{
if (p_current->arriveNum <= startNum)
{
p_current->startNum = startNum;
p_current->arriveNum = arrNum;
p_current->IsSeated = true;
PrintTicket();
num_of_sold++;
break;
}
p_current++;//
}
if (i == num_of_ticket)
{
cout << "No seat left!" << endl;
return false;
}
}
return true;
}
void SoldSystem::SetStationName()
{
// cout << "按顺序输入各终点名称: ";
// for (int i = 0; i < stationNum; i++)
// {
// cout << "第 " << i + 1 << "个站点:";
// cin >> stationName[i];
// }
char buf[255] = "";
FILE* file = fopen("D://to//station_name.txt", "rb");
if (file == NULL)
{
return;
}
int i = 0;
int lenth = 0;
while ( i < stationNum )
{
fgets(buf,255,file);
strcpy(stationName[i], buf);
lenth = strlen(stationName[i]);
stationName[i][lenth - 2] = '/0';//13,10, -2;
i++;
}
fclose(file);
}
void SoldSystem::PrintTicket()
{
cout << "===========================" << endl;
cout << "Start station " << p_current->startNum ;
cout << stationName[p_current->startNum - 1] << " ";
cout << "Terminus " << p_current->arriveNum ;
cout << stationName[p_current->arriveNum - 1];
cout << "Seat Number " << p_current->n_ticketNum << endl;
cout << "===========================" << endl;
}
void SoldSystem::PrintStation()
{
for (int i = 0; i < stationNum; i++)
{
cout << i + 1 << ". " << stationName[i] << " ";
}
}
int main(int argc, char** argv)
{
int start, stationNum;
int terminus;
SoldSystem nj2zz;
cout << "输入站点数:";
cin >> stationNum;
nj2zz.SetStationNum(stationNum);
nj2zz.SetStationName();
nj2zz.PrintStation();
nj2zz.SetSeatNum(4);
nj2zz.SetAllSeat();
nj2zz.p_current = nj2zz.GoHead();
// for (int i = 0; i < 6; i++)
// {
// cout << "起点站:";
// cin >> start;
// cout << "终点站:";
// cin >> terminus;
// nj2zz.SoldTicket(start, terminus);
// }
char out_sign = 'k';
while (out_sign != 'y')
{
cout << "/n起点站:";
cin >> start;
cout << "终点站:";
cin >> terminus;
nj2zz.SoldTicket(start, terminus);
cout << "是否退出售票系统:(y/n)";
cin >> out_sign;
}
return 0;
}
打开文件内容形式
南京
蚌埠
徐州
商丘
开封
郑州
相关文章推荐
- 模拟火车票销售系统--线程同步+安全问题(初期 1)
- Java商户管理系统 客户管理 库存管理 销售报表 SSM项目源码
- 高级软件工程2017第5次作业—— 团队项目:需求改进&系统设计
- 销售管理系统技术介绍
- 信息安全系统设计基础实验三
- 深圳浩瀚技术有限公司(haohantech)推出的无线移动批发管理PDA解决方案------无线移动POS销售开单系统
- B2C电子商务系统研发——对交叉销售和向上销售业务的产品关联推荐分析和设计
- 20145229&20145316《信息安全系统设计基础》实验一 开发环境的熟悉
- 20145214 《信息安全系统设计基础》实验五 网络通信
- 20145218《信息安全系统设计基础》实验四 驱动程序设计
- 信息安全系统设计基础实验五实验报告
- 20145213《信息安全系统设计基础》实验一 Linux开发环境的配置
- 20145213《信息安全系统设计基础》实验二 固件设计
- 20145209&20145309信息安全系统设计基础实验报告 (4)
- jffs2文件系统在nand flash上的移植(实验平台为MPC8315ERDB开发板)
- 《信息安全系统设计基础》实验三实验报告
- 信息安全系统设计基础实验五 20135213林涵锦20135231何佳
- OOAD综合性实验答辩总结--UML系统建模
- 算法实验一:二分查找算法改进: 当搜索元素x不存在时,返回小于x的最大元素位置i和大于x的最小元素位置j. 当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
- 改进旧代码库的推荐路线:可扩展可维护系统的11条经验