📄 train_booking_debug.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 + -