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

📄 train_booking_debug.c

📁 火车定标系统...用VC编译通过的
💻 C
字号:
//	train_booking_debug.c -- 包含调试程序使用的函数
//
/////////////////////////////////////////////////////////////////////////////

#ifndef TRAIN_BOOKING_DEBUG_C_
#define TRAIN_BOOKING_DEBUG_C_

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

#include "train_booking_declare.h"
#include "train_booking_const.h"
#include "train_booking_unit.h"


/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// 函数功能:	依次显示车次链表中的所有结点信息
//
// 函数参数:	train_sq_head:车次链表头结点指针
//				type:查看类型:0为普通用户,1为管理员
//
/////////////////////////////////////////////////////////////////////////////
status show_sq_links(train_sq_info *train_sq_head, char type)
{
	int count = 0, i;
	train_info *train_info_pt;
	station_info *station_info_head;

	if (!(train_sq_head->next))
	{
		printf("【警告】车次链表中无信息可显示!\n");
		WAIT;
		
		return OK;
	}
	train_sq_head = train_sq_head->next;	// 跳过头结点

	while (train_sq_head)
	{
		CR;
		printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n");
		printf("【系统信息】第(%d)条车次记录\n", count + 1);
		printf("【系统信息】车次编号:%s\n", train_sq_head->train_sq_id);
		printf("【系统信息】隶属车站:%s\n", train_sq_head->master);

		if (type)
		{
			printf("【系统信息】目前运营列车数量:%d\n", train_sq_head->running_amount);
			printf("【系统信息】发车间隔天数:%d\n", train_sq_head->days_per_train);
		}

		// 取得一趟列车的信息
		train_info_pt = &train_sq_head->train_list;
		train_info_pt = train_info_pt->next;

		printf("【系统信息】始发站:%s\n", train_info_pt->start);
		printf("【系统信息】终点站:%s\n", train_info_pt->final);

		// 取得站点链表,直接跳过头结点
		station_info_head = &train_info_pt->station_links.next;

		for (i = 0; i < train_info_pt->total_station - 1; i++)
		{
			printf("【系统信息】途经车站:\n");
			printf("【%d】【%s】 ", i + 1, station_info_head->station_id);
			if (!i)
			{
				printf("发车时间:%d时%d分\n", 
					station_info_head->reach_time.tm_hour,
					station_info_head->reach_time.tm_min);
			}
			else
			{
				printf("到达时间:%d时%d分\n", 
					station_info_head->reach_time.tm_hour,
					station_info_head->reach_time.tm_min);
			}
		}
		CR;
		printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n");
		train_sq_head = train_sq_head->next;
		getch();
	}
	CR;
	message(TIP, "按任意键继续...", C);

	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函数功能;	显示系统信息
//
// 函数参数:	system_info_pt:系统信息体指针
//
// 函数说明:	仅供管理员程序代码使用
//
/////////////////////////////////////////////////////////////////////////////
status show_system_info(system_info *system_info_pt)
{
	int i;
	char ch;
	train_info *train_info_head;

	CR;
	printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄【系统配置信息】┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n");
	printf("【系统信息】系统数据库绑定车站:%s\n", system_info_pt->location);

	printf("【系统信息】是否开放订票功能:");
	if (system_info_pt->open)
	{
		printf("是\n");
	}
	else
	{
		printf("否\n");
	}

	printf("【系统信息】是否锁定:");
	if (system_info_pt->locked)
	{
		printf("是\n");
	}
	else
	{
		printf("否\n");
	}

	printf("【系统信息】总运营车次数量:%d\n", system_info_pt->total_train_sq);
	train_info_head = &system_info_pt->train_sq_list;	// 取得车次信息链
	if (train_info_head->next)
	{
		message(TIP, "按V键查看所有车次信息,其它键跳过。", NULL);
		ch = getch();
		if ('v' == ch)
		{
			show_sq_links(&system_info_pt->train_sq_list, 1);
		}
	}

	printf("【系统信息】总运营列车数量:%d\n", system_info_pt->total_train);
	printf("【系统信息】管理员数量:%d\n", system_info_pt->admin_amount);
	if (system_info_pt->admin_amount)
	{
		message(TIP, "按V键查看所有管理员信息,其他键跳过", NULL);
		ch = getch();
		if ('v' == ch)
		{
			for (i = 0; i < system_info_pt->admin_amount; i++)
			{
				printf("【%d】%s", system_info_pt->admin[i]);
				if (!(i % 4))
				{
					CR;
				}
			}
		}
		else
		{
			printf("【警告】放弃查看管理员信息。\n");
		}
	}
	printf("【系统信息】乘客数量:%d\n", system_info_pt->psngr_amount);

	printf("【系统信息】每公里软卧票价:%.2f元\n", system_info_pt->price_sbed_per_km);
	printf("【系统信息】每公里硬卧票价:%.2f元\n", system_info_pt->price_hbed_per_km);
	printf("【系统信息】每公里硬座票价:%.2f元\n", system_info_pt->price_hseat_per_km);
	printf("【系统信息】乘客退票打折率:%.0f%\n", system_info_pt->bounce_off * 100);
	printf("【系统信息】特殊乘客订票打折率:%.0f%\n", system_info_pt->special_off * 100);
	printf("【系统信息】总售出票数:%d元\n", system_info_pt->total_sold);
	printf("【系统信息】车站总收入:%ld元\n", system_info_pt->total_income);

	CR;
	printf("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄\n");
	WAIT;

	return OK;
}

	
/////////////////////////////////////////////////////////////////////////////
// 函数功能:	显示全部的乘客信息链
//
// 函数参数:	psngr_info_head:乘客信息链头结点指针
//
/////////////////////////////////////////////////////////////////////////////
status show_psngr_info_list(passenger_info *psngr_info_head)
{
	char tmp[64];
	
	if (psngr_info_head->next)
	{
		message(WARN, "当前的乘客信息链中无可用数据!", W);

		return FAIL;
	}

	while (psngr_info_head->next)
	{
		psngr_info_head = psngr_info_head->next;

		printf("【乘客信息】称呼:%s\n", psngr_info_head->passenger_id);
		printf("【乘客信息】密码:%s\n", psngr_info_head->password);
		printf("【乘客信息】注册车站:%s\n", psngr_info_head->station_id);
		
		if (0 == psngr_info_head->type)
		{
			strcpy(tmp, "管理员");
		}
		else if (1 == psngr_info_head->type)
		{
			strcpy(tmp, "普通乘客");
		}
		else 
		{
			strcpy(tmp, "特殊乘客");
		}

		printf("【乘客信息】注册类型:%s\n", tmp);
		printf("【乘客信息】总订票列车数:%d\n", psngr_info_head->total_booked_train);
		printf("【乘客信息】总订票票数:%d\n", psngr_info_head->total_booked_tickets);
		printf("【乘客信息】总消费:%d\n", psngr_info_head->total_cost);
		printf("【乘客信息】系统消息数:%d\n", psngr_info_head->sysmsg_amount);
		printf("【乘客信息】系统新到消息数:%d\n", psngr_info_head->sysmsg_new);

		// 此处加入显示全部订票信息的代码

		// 此处加入显示全部系统消息的代码

	}

	return OK;
}

/////////////////////////////////////////////////////////////////////////////
// 函数功能:	显示单个乘客数据
//
// 函数参数:	psngr_info_pt:乘客数据单元指针
//
/////////////////////////////////////////////////////////////////////////////
status show_single_psgnr_info(passenger_info *psngr_info_pt)
{
	char tmp[64];
	
	if (!(psngr_info_pt))
	{
		message(WARN, "乘客数据单元为空!", W);
	}

	printf("【乘客信息】称呼:%s\n", psngr_info_pt->passenger_id);
	printf("【乘客信息】密码:%s\n", psngr_info_pt->password);
	printf("【乘客信息】注册车站:%s\n", psngr_info_pt->station_id);
		
	if (0 == psngr_info_pt->type)
	{
		strcpy(tmp, "管理员");
	}
	else if (1 == psngr_info_pt->type)
	{
			strcpy(tmp, "普通乘客");
	}
	else 
	{
		strcpy(tmp, "特殊乘客");
	}

	printf("【乘客信息】注册类型:%s\n", tmp);
	printf("【乘客信息】总订票列车数:%d\n", psngr_info_pt->total_booked_train);
	printf("【乘客信息】总订票票数:%d\n", psngr_info_pt->total_booked_tickets);
	printf("【乘客信息】总消费:%d\n", psngr_info_pt->total_cost);
	printf("【乘客信息】系统消息数:%d\n", psngr_info_pt->sysmsg_amount);
	printf("【乘客信息】系统新到消息数:%d\n", psngr_info_pt->sysmsg_new);

	// 此处加入显示全部订票信息的代码

	// 此处加入显示全部系统消息的代码

	return OK;
}

/////////////////////////////////////////////////////////////////////////////


#endif

⌨️ 快捷键说明

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