⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.cpp

📁 这个程序可以查看景点简介,订票,查看各景点人数,查看各景点人数排序,选择所想参观的景点,计算时间和费用,查看推荐旅游景点等等。
💻 CPP
📖 第 1 页 / 共 3 页
字号:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <CTYPE.H>
#include <conio.h>

typedef int BOOL ;
#define MAX_PATH 256
#define TRUE 1
#define FALSE 0

#define TOURSITE_NUMBER  8	//The number of toursites	
#define CURRENTSELECT_NUMBER 100	//The max number of current store
#define MIDSEASON_START 7		//Beginning of midseason
#define MIDSEASON_END 10		//End of midseason
#define PASSWORDLEN 16			//Max length of the password of administrator
typedef struct{
	int   MidseasonTicket;		//Prices for midseason tickets
	int   LowseasonTicket;		//Prices for lowseason tickets
	int   Peoplelimit;		//Quota of every tuorsite
	int   M_MaintenanceCost;	//Maintenance cost in midseason
	int   L_MaintenanceCost;	//Maintenance cost in lowseason
	int   CostOfLiving;		//Cost of accommodation locally
	double StudentDiscount;		//Discount for student
	double SoldierDiscount;		//Discount for soldier
	double ElderDiscount;		//Discount for elder 
	double ChildDiscount;		//Discount for chlid
	double GroupDiscount;       	//Discount for group
	double VisitTime;		//Time needed for visiting

}TOURSITEINFOMATION;			//Information of toursites

typedef struct{
	int MidseasonIncome;		//Current income in midseason
	int LowseasonIncome;		//Current income in lowseason
	int MidseasonPeople;		//Current number of tourists in midseason
	int LowseasonPeople;		//Current number of tourists in lowseason
	int Date[12][31];		//The number of tourists everyday
}TOURSITEDATA;				//Datas of toursites

typedef struct{
	int Month;			//Visiting month	
	int Day;			//The number of days visiting	
	int PeopleNumber;		//The total number of tourists	
	int Price;			//Prices of tickets	
	double Discount;		//Discount	
	int TotalPrice;			//Total cost	
	char TourSite[128];			
	char TouristIdentity[32];	//Identity of tourists(student,elder,child)
}CURRENTSELECT;				//Current selection of customer	

typedef struct{
	int Index;
	int Val;
}SORTITEM;                               //Use for sequencing
					
char TourSiteStr[TOURSITE_NUMBER][128]=		//Character string of toursites
{
	"ForbiddenCity ",			
	"SummerPalace  ",			
	"GreatWall     ",			
	"BeiHai        ",			
	"Yuanmingyuan  ",                       
	"TempleOfHeaven",                       
        "Xiangshan     ",                       
        "LamaTemple    "                        
};
char TouristIdentityStr[][32]=			//Character string of tourist's identity
{
	"Child",
	"Student",
	"Soldier",
	"Elder",
	"Adult",
	"Group"
};

TOURSITEINFOMATION TourSiteInfo[TOURSITE_NUMBER];	//Variable of toursite information
TOURSITEDATA TourSiteData[TOURSITE_NUMBER];		//Variable of toursite data
SORTITEM SortItem[TOURSITE_NUMBER];			//Variable of sequence
CURRENTSELECT CurrentSelect[CURRENTSELECT_NUMBER];	//Select resultant variable
int CurrentSelectCount =0;				//Select resultant counter
char Password[PASSWORDLEN+1]="";		//Variable of passwords of administrator
BOOL SelectToDataFlag;				//Identifier	

BOOL IsdigitStr(char *digitStr);		//Function	
void Clear();
void Initialize();
void WriteData();
void ViewSelect();
void SelectToData();
void Introduction();
void ViewSite(char *FileName);
void TicketSystem();
void QueryTourSitePeople();
void QueryData();
BOOL VerifyPassword();
void ChangePassword();
void QueryMidseasonIncome(int SelectedTourSite);
void QueryLowseasonIncome(int SelectedTourSite);
void QueryYearIncome(int SelectedTourSite);
int SelectTourSite();
int SelectMonth();
int SelectDate(int *SelectedMonth,int *SelectedDay);
void encrypt();
int GetPeopleInfo(int *TouristIdentity,int *PeopleNumber);
int CheckAllData();
double GetDiscount(int SelectedTourSite,int TouristIdentity);
void FreeCurrentSelect();
void DeleteCurrentSelect(int Index);
void QueryIncomeAndGain(int SelectedTourSite);
void TourSitePeopleSort();
void TourSiteIncomeSort();
void SortData();
void EstimateCost();
void Recommendation();


void main()
{
	int ch;

	Initialize();

	while(1)
	{
		printf("Main Menu\n\n");	
		printf("1.Brief Introduce For Each PLace Of Interest.\n");
		printf("2.Book Tickets.\n");
		printf("3.Inquire about the number of people of every toursite\n");
		printf("4.The sequence of numbers of tourists of every toursite\n");
		printf("5.Choose the toursite and caculate the time and money needed\n");
		printf("6.The toursites recommended\n");
		printf("7.Inquire About Data(Only For Administrator).\n");
		printf("8.Exit\n\n");
		printf("Select:");
		ch = getche();
		printf("\n\n");	
		switch(ch)
		{
			case '1':
				Introduction();
			break;
			case '2':
				TicketSystem();
				if(SelectToDataFlag)
				{
					SelectToDataFlag = FALSE;
					WriteData();
				}
				Clear();
			break;
			case '3':
				QueryTourSitePeople();
				Clear();
			break;
			case '4':
				TourSitePeopleSort();
				Clear();
			break;
			case '5':
				EstimateCost();
				Clear();
			break;
			case '6':
				Recommendation();
				Clear();
			break;
			case '7':
				QueryData();
				Clear();
			break;
			case '8':
				exit(0);
			default:
			break;
		}
	}

}

BOOL IsdigitStr(char *digitStr)	    //Check if the customer is entering characters
{
	int rtn;
	if(!digitStr)	return FALSE;
	int Len = strlen(digitStr);
	if(!Len)	return FALSE;
	char *Temp = digitStr;
	for(int i=0;i<Len;i++,Temp++)
	{
		rtn = isdigit( *Temp );
		if(!rtn)
			return FALSE;
	}
	return TRUE;

}
void Clear()	//Press ESC and return
{
	char ch;
	printf("Press ESC Key for return menu!\n");
	while(1)
	{
		ch = getch();
		if(ch == 27)
			break;
	}
	printf("\n");	

}

void Initialize()	//Initializing datas
{
	int i=0;
	FILE *fp = NULL;

	for(i=0;i<TOURSITE_NUMBER;i++)
	{
		memset(&SortItem[i],0,sizeof(SORTITEM));
		memset(&TourSiteInfo[i],0,sizeof(TOURSITEINFOMATION));
	}
        TourSiteInfo[0].ChildDiscount = 0;     //Forbidden City
        TourSiteInfo[0].StudentDiscount = 0.4;
	TourSiteInfo[0].SoldierDiscount = 0.95;
	TourSiteInfo[0].ElderDiscount = 0.5;
	TourSiteInfo[0].GroupDiscount = 0.75;
	TourSiteInfo[0].MidseasonTicket = 60;
	TourSiteInfo[0].LowseasonTicket = 40;
	TourSiteInfo[0].M_MaintenanceCost = 10000;
	TourSiteInfo[0].L_MaintenanceCost = 4000;
	TourSiteInfo[0].Peoplelimit = 30000;
	TourSiteInfo[0].VisitTime = 1;
	TourSiteInfo[0].CostOfLiving = 400;


        TourSiteInfo[1].ChildDiscount = 0;    //Summer Palace
        TourSiteInfo[1].StudentDiscount = 0.5;
	TourSiteInfo[1].SoldierDiscount = 0;
	TourSiteInfo[1].ElderDiscount = 0.5;
	TourSiteInfo[1].GroupDiscount = 0.6;
	TourSiteInfo[1].MidseasonTicket = 30;
	TourSiteInfo[1].LowseasonTicket = 20;
	TourSiteInfo[1].M_MaintenanceCost = 10000;
	TourSiteInfo[1].L_MaintenanceCost = 3000;
	TourSiteInfo[1].Peoplelimit = 20000;
	TourSiteInfo[1].VisitTime = 0.5;
	TourSiteInfo[1].CostOfLiving = 280;

	TourSiteInfo[2].ChildDiscount = 0;    //Great Wall
	TourSiteInfo[2].StudentDiscount = 0.55;
	TourSiteInfo[2].SoldierDiscount = 0;
	TourSiteInfo[2].ElderDiscount = 0.55;
	TourSiteInfo[2].GroupDiscount = 0.65;
	TourSiteInfo[2].MidseasonTicket = 45;
	TourSiteInfo[2].LowseasonTicket = 40;
	TourSiteInfo[2].M_MaintenanceCost = 10000;
	TourSiteInfo[2].L_MaintenanceCost = 2500;
	TourSiteInfo[2].Peoplelimit = 30000;
	TourSiteInfo[2].VisitTime = 1;
	TourSiteInfo[2].CostOfLiving = 380;

	TourSiteInfo[3].ChildDiscount = 0;	//BeiHai Park
	TourSiteInfo[3].StudentDiscount = 0.5;
	TourSiteInfo[3].SoldierDiscount = 0;
	TourSiteInfo[3].ElderDiscount = 0.5;
	TourSiteInfo[3].GroupDiscount = 0.55;
	TourSiteInfo[3].MidseasonTicket = 10;
	TourSiteInfo[3].LowseasonTicket = 5;
	TourSiteInfo[3].M_MaintenanceCost = 3000;
	TourSiteInfo[3].L_MaintenanceCost = 1500;
	TourSiteInfo[3].Peoplelimit = 20000;
	TourSiteInfo[3].VisitTime = 0.5;
	TourSiteInfo[3].CostOfLiving = 280;

	TourSiteInfo[4].ChildDiscount = 0;	//Yuanmingyuan
	TourSiteInfo[4].StudentDiscount = 0.5;
	TourSiteInfo[4].SoldierDiscount = 0;
	TourSiteInfo[4].ElderDiscount = 0.5;
	TourSiteInfo[4].GroupDiscount = 0.6;
	TourSiteInfo[4].MidseasonTicket = 10;
	TourSiteInfo[4].LowseasonTicket = 10;
	TourSiteInfo[4].M_MaintenanceCost = 4000;
	TourSiteInfo[4].L_MaintenanceCost = 2500;
	TourSiteInfo[4].Peoplelimit = 25000;
	TourSiteInfo[4].VisitTime = 0.5;
	TourSiteInfo[4].CostOfLiving = 240;

	TourSiteInfo[5].ChildDiscount = 0;	//Temple of Heaven
	TourSiteInfo[5].StudentDiscount = 0.65;
	TourSiteInfo[5].SoldierDiscount = 0;
	TourSiteInfo[5].ElderDiscount = 0.65;
	TourSiteInfo[5].GroupDiscount = 0.7;
	TourSiteInfo[5].MidseasonTicket = 15;
	TourSiteInfo[5].LowseasonTicket = 10;
	TourSiteInfo[5].M_MaintenanceCost = 8000;
	TourSiteInfo[5].L_MaintenanceCost = 5500;
	TourSiteInfo[5].Peoplelimit = 15000;
	TourSiteInfo[5].VisitTime = 0.5;
	TourSiteInfo[5].CostOfLiving = 250;

	TourSiteInfo[6].ChildDiscount = 0;	//Xiangshan
	TourSiteInfo[6].StudentDiscount = 0.5;
	TourSiteInfo[6].SoldierDiscount = 0;
	TourSiteInfo[6].ElderDiscount = 0.5;
	TourSiteInfo[6].GroupDiscount = 0.55;
	TourSiteInfo[6].MidseasonTicket = 10;
	TourSiteInfo[6].LowseasonTicket = 5;
	TourSiteInfo[6].M_MaintenanceCost = 3000;
	TourSiteInfo[6].L_MaintenanceCost = 1000;
	TourSiteInfo[6].Peoplelimit = 25000;
	TourSiteInfo[6].VisitTime = 0.5;
	TourSiteInfo[6].CostOfLiving = 200;
	
	TourSiteInfo[7].ChildDiscount = 0;	//Lama Temple
	TourSiteInfo[7].StudentDiscount = 0.45;
	TourSiteInfo[7].SoldierDiscount = 0;
	TourSiteInfo[7].ElderDiscount = 0.45;
	TourSiteInfo[7].GroupDiscount = 0.5;
	TourSiteInfo[7].MidseasonTicket = 25;
	TourSiteInfo[7].LowseasonTicket = 25;
	TourSiteInfo[7].M_MaintenanceCost = 4500;
	TourSiteInfo[7].L_MaintenanceCost = 2000;
	TourSiteInfo[7].Peoplelimit = 15000;
	TourSiteInfo[7].VisitTime = 0.5;
	TourSiteInfo[7].CostOfLiving = 220;


	fp=fopen("sitedata.dat","r+b");	  //The file storing datas of toursites
	if (fp==NULL){
		fp=fopen("sitedata.dat","wb");
		for(i=0;i<TOURSITE_NUMBER;i++)
		{
			memset(&TourSiteData[i],0,sizeof(TOURSITEDATA));
			fwrite(&TourSiteData[i],1,sizeof(TOURSITEDATA),fp);
		}
	}
	else
	{
		for(i=0;i<TOURSITE_NUMBER;i++)
		{
			fread(&TourSiteData[i],1,sizeof(TOURSITEDATA),fp);
		}
	}

	fclose(fp);

	for(i=0;i<CURRENTSELECT_NUMBER;i++)
	{
		memset(&CurrentSelect[i],0,sizeof(CURRENTSELECT));
	}

	SelectToDataFlag = FALSE;

}

void WriteData()	//Write data into the file
{
	FILE *fp = NULL;
	int i=0;
		
	fp=fopen("sitedata.dat","wb");
	for(i=0;i<TOURSITE_NUMBER;i++)
	{
		fwrite(&TourSiteData[i],1,sizeof(TOURSITEDATA),fp);
	}
	fclose(fp);
}

void ViewSelect()	//Chect the selecting datas 
{
	int i=0;
	int TotalPrice=0;

	
	printf("    TourSite\t\tMonth\tDay\tTour-ID\tPeople\tPrice\tDisct.\tTotal\n");
	for(i=0; i < CurrentSelectCount; i++)
	{
		printf("%d. %s\t%d\t%d\t%s\t%d\t%d\t%.1f\t%d\n",i+1,
			CurrentSelect[i].TourSite,CurrentSelect[i].Month,CurrentSelect[i].Day,
			CurrentSelect[i].TouristIdentity,CurrentSelect[i].PeopleNumber,
		CurrentSelect[i].Price,CurrentSelect[i].Discount,CurrentSelect[i].TotalPrice);
		TotalPrice += CurrentSelect[i].TotalPrice;
	}
	printf("\t\t\t\t\t\t\t\t\t%d\n\n",TotalPrice);

}

void SelectToData()	//Write the selecting datas into the datas of toursites
{
	int i,j;
	for(i=0;i<CurrentSelectCount;i++)
	{
		for(j=0;j<TOURSITE_NUMBER;j++)
		{
			if(strcmp(CurrentSelect[i].TourSite,TourSiteStr[j])==0)
			{
				TourSiteData[j].Date[CurrentSelect[i].Month-1][CurrentSelect[i].Day-1]+=CurrentSelect[i].PeopleNumber;
				if(CurrentSelect[i].Month>=MIDSEASON_START && CurrentSelect[i].Month<=MIDSEASON_END)
				{
					TourSiteData[j].MidseasonPeople += CurrentSelect[i].PeopleNumber;
					TourSiteData[j].MidseasonIncome += CurrentSelect[i].TotalPrice;
				}
				else
				{
					TourSiteData[j].LowseasonPeople += CurrentSelect[i].PeopleNumber;
					TourSiteData[j].LowseasonIncome += CurrentSelect[i].TotalPrice;
				}
			}
		}

		memset(&CurrentSelect[i],0,sizeof(CURRENTSELECT));   //Memorize datas and reset to zero
	}

	CurrentSelectCount = 0; //Reset the counter to zero
	
}

void Introduction()	//Introduction to every toursite
{
	int ch;
	while(1)
	{
		printf("Brief Introduce For Each Place Of Interest.\n\n");
		printf("1.Forbidden City\n");
		printf("2.Summer Palace\n");
		printf("3.Great Wall\n");
		printf("4.BeiHai Park\n");
                printf("5.YuanMingYuan Park\n");
                printf("6.Temple Of Heaven\n");
                printf("7.XiangShan Park\n");
                printf("8.Lama Temple\n");
		printf("9.Return\n\n");
		printf("Select:");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -