数据结构之反黄牛火车票订票系统
2015-09-05 10:54
555 查看
这是我大二数据结构课设的项目,现在看来当时的代码写的惨不忍睹,不过那仍是我宝贵的过去。反黄牛是基于现在黄牛党刷票的一个现状:由于火车票实行实现实名制,黄牛只能先用自己收集的***预先订票,当你因为没有余票去找黄牛党订票时他们会退订自己的票,同时及时的用你的信息去刷他们刚退出来的那张票。而我的反黄牛思路就是每个订票人排队(队列),当重新出现余票时系统会自动将余票分配给队列中的第一个人,这样黄牛党就无法操作余票了。下面上代码+图片(图片与顺序无关)
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h> #include"Visual.h"//界面文件 #include"TRAIN_BOX.h"//链表内存储车厢 #include"TRAIN_NUM.h"//链表内存储列车 #include"stack_ZHANGTE.h"//栈内存储旅客信息 #include"Book_tickt.h"//订票头文件 int book_ticket_num();//函数 int main(int argc, char*argv[]) { int chose; TrainType *p;//指向某一列火车 InitStack(s0);//初始化旅客栈 initrain_addressUniti();//初始化单元组 train_addressUniti[0] = Creat_Traingroup();//列车组指针指向列车组 // Search_n_Stack(s0); /********************默认三列火车四位旅客******************************/ Insert_Train_ceshi1(train_addressUniti[0],0); Insert_Train_ceshi2(train_addressUniti[0],1); Insert_Train_ceshi3(train_addressUniti[0],2); Push_Stack_Ceshi1(s0); Push_Stack_Ceshi2(s0); Push_Stack_Ceshi3(s0); Push_Stack_Ceshi4(s0); /**********************************************************************/ /*********************用户登录*****************************************/ while(1) { switch(face2()) { case 1 :{ getchar(); if(!Test_n_Stack(s0)) break; } case 2 : getchar();face5();break; case 3 : getchar();face4();break; default: printf("未知错误(1)!");break; } /******************************************************************************************/ getchar(); } /****************************************************************************************** p = train_addressUniti[0]->next->zhang; printf("\n该列车组共有火车:%d 列\n",Length_Tarin_group(train_addressUniti[0])); Vist_Traingroup(p); book_ticket_num(s0,0); getchar(); book_ticket_num(s0,1); Visit_Stack(s0); /*******************************************************************************************/ //return 0; } /********************************* int warn_1(int i)//对话框颤抖 目前对话框颤抖会清空内容 { for(;i>0;i--) { system("mode con cols=44 lines=14"); system("mode con cols=44 lines=15"); } } **************************************/ /*******************************************/ /*函数功能:初始化列车组单元 */ /*函数参数: */ /*返回值:初始化成功返回1 */ /*******************************************/ int initrain_addressUniti() { int i; for(i=0;i<18;i++)//初始化列车组单元 { train_addressUniti[i] = 0; } return 1; } /*******************************************/ /*函数功能:查询余票信息 */ /*函数参数:point_train-指向列车的指针 */ /*返回值:查询成功返回1 */ /*******************************************/ int surplus_tick(TrainType *point_train) { printf("剩余硬座:%d 张\n",point_train->surplus_tick_seat); printf("剩余卧铺:%d 张",point_train->surplus_sleeper_seat); return 1; } /*******************************************/ /*函数功能:订票(根据始发站终点站) */ /*函数参数:point_train-指向列车的指针 */ /*返回值:查询成功返回1 */ /*******************************************/ /* int book_ticket_place() { } */
#ifndef _BOOK_TICKT_H #define _BOOK_TICKT_H //#include <afx.h> #include<Windows.h> #include<stdio.h> #include"wait_queue.h" #include"Visual.h"//界面文件 #include"TRAIN_BOX.h"//链表内存储车厢 #include"TRAIN_NUM.h"//链表内存储列车 #include"stack_ZHANGTE.h"//栈内存储旅客信息 /*******************************************/ /*函数功能:订票(根据车次) */ /*函数参数: */ /*返回值:查询成功返回1 */ /*******************************************/ Train_group *train_addressUniti[18];//定义一个存储列车组的数组单元最多可以储存18个列车组(18个铁路局)使用时需先Creat_Traingroup函数建立列车组 /********************************************************/ /*函数功能:硬座空座订票(按顺序检索) */ /*函数参数:h-指向列车的指针 */ /*返回值:成功返回1,失败返回0 */ /********************************************************/ int tick_tickt(TrainType *h,SqStack *s,int guess)//传入要定票的列车,旅客所在栈及位置 { int i = 0,num_Seat=0,num_Box=0,lp=0,/*lp用来标记是否有空座*/test1; LNode *Length ; char str1,str2;//用于整型转换为字符 Length = h->train_box->next; while(Length) { num_Box ++; if(Length->judg == 1)//判断车厢类型 { for(num_Seat=0;num_Seat<SEAT;num_Seat++) { if(Length->zhang[num_Seat] == 0)//查找空座 { Length->zhang[num_Seat] = 1; s->sleeper_tick[guess] = 1; s->seat_num[guess] = num_Seat; //座位编号存入个人信息(注意从0开始) h->surplus_tick_seat --; lp = 1;//有空座 test1 = SEAT;//测试进入if语句条件 goto LOOP3; } } } Length = Length->next; } LOOP3: /*if(lp == 0) //判断是否有余票。订票总函数有替代 { MessageBox(NULL,"对不起,没有余票","温馨提示",MB_YESNO); return 0; }*/ if( IDYES == MessageBox(NULL,"订票成功:请您2小时内付款","温馨提示",MB_YESNO)) system("start file:///D:/专业/新建文件夹/数据结构作业/课程设计/支持包/支付网站.html"); s->seat_num[guess] = num_Seat+1;//座位信息存入旅客信息结构体 s->num_Box[guess] = num_Box;//车厢信息存入旅客信息结构体 return num_Box; } /********************************************************/ /*函数功能:卧铺空座订票(按顺序检索) */ /*函数参数:h-指向列车的指针 */ /*返回值:成功返回1,失败返回0 */ /********************************************************/ int sleeper_tickt(TrainType *h,SqStack *s,int guess)//传入要定票的列车,旅客所在栈及位置 { int i = 0,num_Seat=0,num_Box=0; LNode *Length ; char str1,str2;//用于整型转换为字符 // CString string1; Length = h->train_box->next; while(Length) { num_Box ++; if(Length->judg == 2)//判断车厢类型 { for(num_Seat=0;num_Seat<SEAT;num_Seat++) { if(Length->zhang[num_Seat] == 0)//查找空座 { Length->zhang[num_Seat] = 1; s->sleeper_tick[guess] = 2; s->seat_num[guess] = num_Seat; //座位编号存入个人信息(注意从0开始) h->surplus_sleeper_seat --; goto LOOP4; } } } Length = Length->next; } LOOP4: MessageBox(NULL,"订票成功:请您2小时内付款","温馨提示",MB_OK); system("start file:///D:/专业/新建文件夹/数据结构作业/课程设计/支持包/支付网站.html"); s->seat_num[guess] = num_Seat+1;//座位信息存入旅客信息结构体 s->num_Box[guess] = num_Box;//车厢信息存入旅客信息结构体 return num_Box; } /********************************************************/ /*订票总函数 */ /********************************************************/ int book_ticket_num(SqStack *s,char ID[])//传入旅客所在的栈,及***号 { char a[10]; // HWND hConsole = FindWindow("ConsoleWindowClass",NULL); //获取控制台句柄 // POINT pt;//存储光标位置变量 int guess =0,i = 0,JUDG = 0;//JUDG用来判断是否有符合条件的车次 int book; Train_group *P; guess = Serach_Position(s,ID);//查询旅客在栈中位置 printf("\n请输入查询车次(字母大写):"); // getchar();//接收一个回车键!调用函数需要输入回车.用getch()与getche()不需要 gets(a); while(train_addressUniti[i]) { P = train_addressUniti[i]; i = i + 1; while(P->next) { if(strcmp(a,P->next->zhang->train_num)==0) { s->train[guess] = P->next->zhang; Vist_Traingroup(P->next->zhang); //***************************订票代码****************************************** printf("\n我要预定 1.硬座 2.卧铺 3.退出"); printf("\n请输入序号:"); scanf("%d",&book); // GetCursorPos(&pt); //获取当前光标Desktop坐标 // ScreenToClient(hConsole,&pt);// Desktop坐标转化为控制台坐标 switch(book) { case 1 :{ if(!surplus_tick_tickt(P->next->zhang))//判断是否有硬座余票 { MessageBox(NULL,"对不起,没有余票","温馨提示",MB_ICONEXCLAMATION); if( IDYES == MessageBox(NULL,"是否加入队列","温馨提示",MB_YESNO)) In_P_Queue(q0,s0,a,ID,s0->Priority[guess]);//加入队列 } else { tick_tickt(P->next->zhang,s0,guess);//订票子函数(查询空票及完成订票) strcpy(s->train_num[guess],a); gotoxy(56,5);RED_BLACK; puts(" ");//清理原来显示的字符 gotoxy(56,5);RED_BLACK; puts(s->train_num[guess]);// 订票信息显示在旅客信息栏 switch(s->sleeper_tick[guess]) { case 2 :{gotoxy(62,5); printf("(卧铺)"); break ;} case 1 :{gotoxy(62,5); printf("(硬座)"); break ;} default : {gotoxy(56,5); printf("您没有订票"); break ;} } } // gotoxy(pt.x,pt.y);//光标位置恢复 return 0; } case 2 :{ if(!surplus_sleeper_tickt(P->next->zhang))//判断是否有硬座余票 MessageBox(NULL,"没有余票","温馨提示",MB_ICONEXCLAMATION); else { sleeper_tickt(P->next->zhang,s0,guess);//订票子函数(查询空票及完成订票) strcpy(s->train_num[guess],a); gotoxy(56,5);RED_BLACK; puts(" ");//清理原来显示的字符 gotoxy(56,5);RED_BLACK; puts(s->train_num[guess]); switch(s->sleeper_tick[guess]) { case 2 :{gotoxy(62,5); printf("(卧铺)"); break ;} case 1 :{gotoxy(62,5); printf("(硬座)"); break ;} default : {gotoxy(56,5); printf("您没有订票"); break ;} } } return 0; } default: printf("未知错误(2)!");return 0; } //***************************************************************************** //其余部分为依次遍历列车组单元内所有列车组,查找是否有符合车次条件的列车 //*****************************************************************************/ ++ JUDG ; } P = P->next; } } if(!JUDG) { printf("\n没有该车次!"); return 0; } else return 1; } int refund_tick(SqStack *s,char ID[])//传入要退票的列车,旅客所在栈及位置 { int i = 0,guess =0; TrainType *h; LNode *Length ; int book; guess = Serach_Position(s,ID);//查询旅客在栈中位置 h = s->train[guess]; if(s->train[guess]==NULL) { MessageBox(NULL,"您还没有订票","温馨提示",MB_OK); return 0; } else { Length = h->train_box->next; h->surplus_tick_seat--; for(i=0;i<s->num_Box[guess];i++)//找到对应车厢 { Length = Length->next; } printf("%d",s->seat_num[guess]); // (s->seat_num[guess])-1 Length->zhang[s->seat_num[guess]-1] = 0;//该座位标记清零表示空座 strcpy(s->train_num[guess],"0");//旅客所订车票清零 MessageBox(NULL,"退票成功","温馨提示",MB_OK); gotoxy(56,5);RED_BLACK; puts(" ");//清理原来显示的字符 gotoxy(56,5); if (strcmp(s->train_num[guess],"0")==0) { RED_BLACK; gotoxy(56,5); printf("您没有订票"); } else { puts(s->train_num[guess]); switch(s->sleeper_tick[guess]) { case 2 :{gotoxy(62,5); printf("(卧铺)"); break ;} case 1 :{gotoxy(62,5); printf("(硬座)"); break ;} default : {gotoxy(56,5); printf("您没有订票"); break ;} } } return 1; } } #endif // _BOOK_TICKT_H
#ifndef _Visual_H_ #define _Visual_H_ #include<stdio.h> #define P_QueueSize 100 #define DataType int typedef struct Priority_QueueType{ DataType item[P_QueueSize]; int Priority[P_QueueSize]; int rear; }P_QueueType; int Init_P_Queue(P_QueueType *Q);//初始化队列 int In_P_Queue(P_QueueType *Q,DataType data,int P_);//入队 int Out_P_Priority_Queue(P_QueueType *Q);//出队 int Length_P_Queue(P_QueueType *Q);//求队长 int Visit_P_Queue(P_QueueType *Q);//遍历队 int main(int argc,char *argv[]) { P_QueueType Queue,*address; int i,a; system("title 优先级队列测试"); address = &Queue; Init_P_Queue(address); for(i=1;i<3;i++) In_P_Queue(address,i,i); for(i=1;i<7;i++) In_P_Queue(address,i+4,i); In_P_Queue(address,10,5); In_P_Queue(address,20,4); In_P_Queue(address,30,8); Visit_P_Queue(address); printf("队长为:%d\n\n",Length_P_Queue(address)); printf("出队一个元素:%d\n",Out_P_Priority_Queue(address)); printf("队长为:%d\n",Length_P_Queue(address)); return 0; } /******************************/ /*函数功能:初始化优先级队列 */ /*函数参数:Q-指向队列的指针 */ /*返回值:插入成功返回1 */ /******************************/ int Init_P_Queue(P_QueueType *Q) { int i,j = P_QueueSize; Q->rear = 0; for(i=0;i<j;i++)//初始化优先级编号 Q->Priority[i] = 0; return 1; } /**********************************************/ /*函数功能:入队 */ /*函数参数:Q-指向队列的指针 ,item- 入队元素 P_优先级 */ /*返回值:入队成功返回1 */ /**********************************************/ int In_P_Queue(P_QueueType *Q,DataType data,int P_) { int i = P_QueueSize,j,m; if(Q->rear == i) { printf("\n\a队列已满!"); return 0; } if(P_ <= 0) { printf("\n\a最高优先级为1!"); return 0; } for(j=Q->rear-1;j>=0;j--) { if(Q->Priority[j] <= P_) //判读是否直接追加在队尾 { Q->item[Q->rear] = data; Q->Priority[Q->rear] = P_; Q->rear ++; return 0; } if( Q->Priority[j]>P_ && Q->Priority[j-1] <= P_) //判读插入位置 { for(m=Q->rear;m>j;m--) {Q->item[m] = Q->item[m-1]; Q->Priority[m] = Q->Priority[m-1];} Q->item[j] = data; Q->Priority[j] = P_; Q->rear ++; return 1; } } if(Q->rear == 0)//队列中优先级没有高于插入数据优先级数据,执行插入 { for(m=Q->rear;m>0;m--) {Q->item[m] = Q->item[m-1]; Q->Priority[m] = Q->Priority[m-1];} Q->item[0] = data; Q->Priority[0] = P_; Q->rear ++; return 1; } printf("\n\a未知错误!"); return 0; } /*******************************/ /*函数功能:出队 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队元素 */ /*******************************/ int Out_P_Priority_Queue(P_QueueType *Q) { int i; DataType a; if(Q->rear == 0) { printf("\n\a队列已空!"); return 0; } a = Q->item[0]; for(i=0;i<Q->rear;i++) Q->item[i] = Q->item[i+1]; Q->rear --; return a; } /******************************/ /*函数功能:求队列长度 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队长 */ /******************************/ int Length_P_Queue(P_QueueType *Q) { return Q->rear; } /*******************************/ /*函数功能:遍历队 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队长 */ /*******************************/ int Visit_P_Queue(P_QueueType *Q) { int i; if(Q->rear == 0) { printf("\n\a队列空!"); return 0; } printf("\n队列数据\t优先级\n"); for(i=0;i<Q->rear;i++) {printf("%d\t\t",Q->item[i]); printf("%d \n",Q->Priority[i]);} return 1; }
#ifndef _WAIT_QUEUE_H_ #define _WAIT_QUEUE_H_ #include<stdio.h> //#include"stack_ZHANGTE.h" #define P_QueueSize 100 #define DataType SqStack *//指向旅客所在栈类型 typedef struct Priority_QueueType{ DataType item[P_QueueSize];//指向旅客所对应的栈 char train_num[P_QueueSize][10];//旅客需要预定的车次 char ID[P_QueueSize][20];//旅客***号 int Priority[P_QueueSize];//存储优先级 int rear; }; typedef struct Priority_QueueType P_QueueType ; P_QueueType queue0; P_QueueType *q0 = &queue0;//默认生成存储旅客的一个优先级队列 int Init_P_Queue(P_QueueType *Q);//初始化队列 int In_P_Queue(P_QueueType *Q,DataType data,char train_num_value[],char ID_value[],int P_);//入队 int Out_P_Priority_Queue(P_QueueType *Q);//出队 int Length_P_Queue(P_QueueType *Q);//求队长 int Visit_P_Queue(P_QueueType *Q);//遍历队 /* int main(int argc,char *argv[]) { P_QueueType Queue,*address; int i,a; system("title 优先级队列测试"); address = &Queue; Init_P_Queue(address); for(i=1;i<3;i++) In_P_Queue(address,i,i); for(i=1;i<7;i++) In_P_Queue(address,i+4,i); In_P_Queue(address,10,5); In_P_Queue(address,20,4); In_P_Queue(address,30,8); Visit_P_Queue(address); printf("队长为:%d\n\n",Length_P_Queue(address)); printf("出队一个元素:%d\n",Out_P_Priority_Queue(address)); printf("队长为:%d\n",Length_P_Queue(address)); return 0; } */ /******************************/ /*函数功能:初始化优先级队列 */ /*函数参数:Q-指向队列的指针 */ /*返回值:插入成功返回1 */ /******************************/ int Init_P_Queue(P_QueueType *Q) { int i,j = P_QueueSize; Q->rear = 0; for(i=0;i<j;i++)//初始化优先级编号 Q->Priority[i] = 0; return 1; } /**********************************************/ /*函数功能:入队 */ /*函数参数:Q-指向队列的指针 ,item- 入队元素 P_优先级 */ /*返回值:入队成功返回1 */ /**********************************************/ int In_P_Queue(P_QueueType *Q,DataType data,char train_num_value[],char ID_value[],int P_) /*分别传入队列,旅客对应的栈地址,旅客需要订购的火车车次,旅客的***号,旅客的优先级*/ { int i = P_QueueSize,j,m; if(Q->rear == i) { printf("\n\a队列已满!"); return 0; } if(P_ <= 0) { printf("\n\a最高优先级为1!"); return 0; } for(j=Q->rear-1;j>=0;j--) { if(Q->Priority[j] <= P_) //判读是否直接追加在队尾 { Q->item[Q->rear] = data;//旅客所在栈入队 Q->Priority[Q->rear] = P_;//优先级标记 strcpy(Q->ID[0],ID_value);//***入队 strcpy(Q->train_num[0],train_num_value); //车次入队 Q->rear ++; MessageBox(NULL,"排队成功","温馨提示",MB_OK); return 0; } if( Q->Priority[j]>P_ && Q->Priority[j-1] <= P_) //判读插入位置 { for(m=Q->rear;m>j;m--) {Q->item[m] = Q->item[m-1]; Q->Priority[m] = Q->Priority[m-1];} Q->item[j] = data; Q->Priority[j] = P_; strcpy(Q->ID[0],ID_value);//***入队 strcpy(Q->train_num[0],train_num_value); //车次入队 MessageBox(NULL,"排队成功","温馨提示",MB_OK); Q->rear ++; return 1; } } if(Q->rear == 0)//队列中优先级没有高于插入数据优先级数据,执行插入 { for(m=Q->rear;m>0;m--) {Q->item[m] = Q->item[m-1]; Q->Priority[m] = Q->Priority[m-1];} Q->item[0] = data; Q->Priority[0] = P_; strcpy(Q->ID[0],ID_value);//***入队 strcpy(Q->train_num[0],train_num_value); //车次入队 MessageBox(NULL,"排队成功","温馨提示",MB_OK); Q->rear ++; return 1; } printf("\n\a未知错误!"); return 0; } /*******************************/ /*函数功能:出队 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队1 */ /*******************************/ int Out_P_Priority_Queue(P_QueueType *Q) { int i; DataType a; if(Q->rear == 0) { printf("\n\a队列已空!"); return 0; } a = Q->item[0]; for(i=0;i<Q->rear;i++) { Q->item[i] = Q->item[i+1];//旅客所在栈指针出队(删除!无法找回) strcpy(Q->ID[i],Q->ID[i+1]);//***出队(删除!无法找回) strcpy(Q->train_num[i],Q->train_num[i+1]); //车次出队(删除!无法找回) Q->Priority[i] = Q->Priority[i+1];//优先级出队(删除!无法找回) } Q->rear --; return 1; } /******************************/ /*函数功能:求队列长度 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队长 */ /******************************/ int Length_P_Queue(P_QueueType *Q) { return Q->rear; } /*******************************/ /*函数功能:遍历队 */ /*函数参数:Q-指向队列的指针 */ /*返回值:返回出队长 */ /*******************************/ int Visit_P_Queue(P_QueueType *Q) { int i; if(Q->rear == 0) { printf("\n\a队列空!"); return 0; } printf("\n队列数据\t优先级\n"); for(i=0;i<Q->rear;i++) { printf("%d\t\t",Q->item[i]); printf("优 先 级:%d \n",Q->Priority[i]); printf("***号:%s\t\t",Q->ID[i]); printf("列车车次:%d \n",Q->train_num[i]); } return 1; } #endif //_WAIT_QUEUE_H_
#ifndef _Visual_H_ #define _Visual_H_ #include<stdio.h> #include <string.h> #include "color.h" #include"stack_ZHANGTE.h"//栈内存储旅客信息 #include<windows.h> //*******************设置光标位置函数*************************** void gotoxy(int x, int y) { HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(hOut, pos); /* 设置光标位置 */ } //************************************************************* int face1()//用户界面 { int i,j = 0,a; system("mode con cols=84 lines=37"); system("title 欢迎乘坐中国火车"); char text1[8][38]={ {" 铁路乘车提示 \n"}, {" ①: 旅途保持心情愉悦 \n"}, {" ②:不带危险品上车 \n"}, {" ③:遇到危险果断求助警察\n"}, {" ④: 不要太天真 \n"}, {" ⑤:上车后尽量记着给亲朋好友报平安 \n"}, {" ⑥: 常回家看看 \n"}, {" ⑦:每张***限购一张 \n"}, }; //system("fontsize:70"); system("color f1"); for(i=0;i<7;i++) { for(a=0; a<10000000;a++); gotoxy(0, i); YELLOW_RED; puts(" "); for(j=i*6;j<i*6+6;j++) { for(a=0; a<7;a++) {gotoxy(42+j, a); RED_BLACK; puts(" ");} } for(j=i*4;j<i*4+4;j++) { gotoxy(42, j+7); BLUE_RED; puts(" "); } } //****************************第一版块内容**************************************** gotoxy(3,1); YELLOW_RED; printf("1.我要订票 2.我要退票"); gotoxy(3,3); printf("3.铁道部官网 4.计算器"); gotoxy(3,5); printf("5.退出 6.关于"); //****************************第二版块内容**************************************** gotoxy(45,1); RED_BLACK; printf("姓 名:"); gotoxy(45,3); printf("***号:"); gotoxy(45,5); printf("已订车票:"); /****************************第三版块内容****************************************/ for(i=0;i<8;i++) { BLUE_WHITE; gotoxy(45,10+2*i);//输出间隔一行 for(j=0;j<38;j++) { putchar(text1[i][j]); } } //*****************************************************************************/ gotoxy(0,5);WHITE_BLUE;//背景色还原 gotoxy(0,7); return 0; } int face2()//用户/管理员选择界面--返回选择值 { int a; system("mode con cols=44 lines=14"); system("color 1f"); system("title 权限选择"); DBLUE_RED; printf("\n\n\n\n\n\n\n\n\n\n\n\n Copyrighr(c)ZhangTe All Rights Reserved "); LOOP2:DBLUE_YELLOW; gotoxy(16,2);printf("1.我要登录 "); gotoxy(16,4);printf("2.我要注册 "); gotoxy(16,6);printf("3.我是管理员 "); gotoxy(16,9); printf("请选择:"); gotoxy(22,10); printf("  ̄ "); gotoxy(24,9); scanf("%d",&a); if(a!=1&&a!=2&&a!=3) { system("title 请输入正确选项"); DBLUE_GREEN; gotoxy(15,0);printf("请输入正确选项\a\n"); gotoxy(24,9);printf(" "); goto LOOP2; //goto LOOP2 } DBLUE_RED; return a; } int Test_n_Stack(SqStack *s) /*用户登录界面 使用时需要将***号与密码一纸主函数或者引入用户个人信息指针 及用户功能界面和函数调用*/ { int i,j=0,a,x,y,clean_y;//clean_y是清理屏幕是用到的 char ID[20];//到时候用指针引入个人信息结构体 char password[7]={0,0,0,0,0,0};//密码小于等于6位 char chose;//用户菜单选择变量 system("color f1"); //************************此段代码修改时注意******************************************* system("title 用户登录");gotoxy(38,19); system("mode con cols=84 lines=37"); for(j=83;j>=0;j--) { gotoxy(j,2);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,3);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,4);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,5);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,7);RED_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,8);RED_BLACK;printf(" ");WHITE_BLACK; } for(i=0;i<37;i++) { gotoxy(20,i); YELLOW_DBLUE; printf(" ");WHITE_BLACK; gotoxy(3,i); RED_BLACK; printf(" ");WHITE_BLACK; } gotoxy(38,17);printf("***号:"); gotoxy(38,19);printf("密 码:"); LOOP1: gotoxy(48,17); //LOOP1 gets(ID); gotoxy(48,19); for(i=0;i<6;i++) { password[i] = getch(); printf("●"); } //********************判断***号与密码是否正确******************************** for(i=s->top;i>=0;i--) { if(strcmp(ID,s->IDcard[i])==0 && strcmp(password,s->Password[i])==0) { //***********************加载条滚动*************************************** gotoxy(3,6); printf("加载中....."); for(x=0;x<82;x+=1) { gotoxy(x,7);BLACK_DPURPLE; printf("█"); gotoxy(x,8);BLACK_DPURPLE; printf("█"); for(y=0;y<10050000;y++); } face1(); //进入用户界面的页面 /*****************************用户功能代码部分*******************************/ Find_Guess_ID(s0,ID);//个人信息载入 while(1) { for(clean_y=7;clean_y<37;clean_y++)//清理屏幕 { gotoxy(0,clean_y); WHITE_BLACK; printf(" "); } gotoxy(0,7); RED_WHITE; printf("菜单选项:");WHITE_BLACK; chose = getchar(); switch(chose) { case '1': getchar(); book_ticket_num(s0,ID); break; case '2': getchar();refund_tick(s0,ID); break; case '3': system("start www.12306.cn"); break; case '4': system("D:\\专业\\新建文件夹\\数据结构作业\\课程设计\\支持包\\计算器.exe");break; case '6': system("start file:///D:/专业/新建文件夹/数据结构作业/课程设计/支持包/关于.txt");break; case '5': return 0; //退出 default : break;//输入其它值直接结束,没有提示(提示显得多此一举) } } /*****************************************************************************/ return 1; } } /***************************密码帐号输入错误处理**********************************/ gotoxy(40,21); BLACK_WHITE;printf("密码或者***号错误!\a"); WHITE_BLACK; gotoxy(46,17);printf(" ");//原来输入的显示屏清理 gotoxy(46,19);printf(" "); strcpy(ID,"0");//***变量清零 strcpy(password,"0");//密码变量清零 goto LOOP1;//返回重新输入 //goto LOOP1 //*********************************************************************************** return 0; } int face4()//管理员登陆界面 { int i,j=0,a; system("mode con cols=114 lines=24"); system("color 03"); system("title 管理员登录"); //----------------------第一行 for(j=0;j<4;j++) {RED_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,2);RED_WHITE;printf("A.广州铁路集团"); for(j=0;j<4;j++) {BLUE_BLACK ;gotoxy(28,j);printf(" ");} gotoxy(33,2);BLUE_WHITE;printf("B.哈尔滨铁路局"); for(j=0;j<4;j++) {GRAY_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,2);GRAY_WHITE;printf("C.沈阳铁路局 "); //----------------------第二行 for(j=4;j<8;j++) {GREEN_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,6);GREEN_WHITE;printf("D.北京铁路局 "); for(j=4;j<8;j++) {BLACK_BLUE ;gotoxy(28,j);printf(" ");} gotoxy(33,6);BLACK_WHITE;printf("E.太原铁路局 "); for(j=4;j<8;j++) {YELLOW_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,6);YELLOW_WHITE;printf("F.呼和浩特铁路局 "); //----------------------第三行 for(j=8;j<12;j++) {BLUE_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,10);BLUE_WHITE;printf("G.郑州铁路局"); for(j=8;j<12;j++) {GRAY_BLACK ;gotoxy(28,j);printf(" ");} gotoxy(33,10);GRAY_WHITE;printf("H.武汉铁路局"); for(j=8;j<12;j++) {RED_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,10);RED_WHITE;printf("Y.西安铁路局"); //----------------------第四行 for(j=12;j<16;j++) {YELLOW_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,14);YELLOW_WHITE;printf("J.济南铁路局 "); for(j=12;j<16;j++) {BLUE_BLACK ;gotoxy(28,j);printf(" ");} gotoxy(33,14);BLUE_WHITE;printf("K.上海铁路局"); for(j=12;j<16;j++) {GRAY_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,14);GRAY_WHITE;printf("L.南昌铁路局"); //----------------------第五行 for(j=16;j<20;j++) {PURPLE_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,18);PURPLE_WHITE;printf("J.柳州铁路局 "); for(j=16;j<20;j++) {RED_BLACK ;gotoxy(28,j);printf(" ");} gotoxy(33,18);RED_WHITE;printf("K.成都铁路局 "); for(j=16;j<20;j++) {BLUE_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,18);BLUE_WHITE;printf("L.昆明铁路局 "); //----------------------第六行 for(j=20;j<24;j++) {CYAN_BLACK; gotoxy(0,j);printf(" ");} gotoxy(5,22);CYAN_WHITE;printf("J.兰州铁路局 "); for(j=20;j<24;j++) {GREEN_BLACK ;gotoxy(28,j);printf(" ");} gotoxy(33,22);GREEN_WHITE;printf("K.乌鲁木齐铁路局"); for(j=20;j<24;j++) {GRAY_BLACK;gotoxy(56,j);printf(" ");} gotoxy(61,22);GRAY_WHITE;printf("L.青藏铁路公司"); //----------------------管理员登录输入 BLACK_GREEN;gotoxy(89,6);puts("选择铁路局:"); gotoxy(89,10);puts(" 帐 号:"); gotoxy(89,14);puts(" 密 码:"); gotoxy(89,20);puts("(任意状态按exit返回)"); /*————————————————————————————加载滚动条——————————————————*/ gotoxy(84,23);printf("-----------------------------"); for(i=84;i<113;i+=1) { gotoxy(i,23); printf(">"); for(j=0;j<10050000;j++); } } int face5()//注册界面 { int j,i; system("color f1"); system("mode con cols=54 lines=20"); system("title 中国铁路欢迎您"); char Password_test[10]; char name[10];//姓名 char IDcard[20];//***号 char Password[10];//密码小于等于6位 for(j=53;j>=0;j--) { gotoxy(j,1);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,2);BLUE_BLACK;printf(" ");WHITE_BLACK; gotoxy(j,4);RED_BLACK;printf(" ");WHITE_BLACK; } for(i=0;i<20;i++) { gotoxy(10,i); YELLOW_DBLUE; printf(" ");WHITE_BLACK; gotoxy(2,i); RED_BLACK; printf(" ");WHITE_BLACK; } gotoxy(20,8);puts("姓 名:"); gotoxy(20,10);puts("***号:"); gotoxy(20,12);puts("密 码:"); gotoxy(20,14);puts("是否会员:"); Push_Stack(s0); /*————————————————————————————加载滚动条——————————————————*/ gotoxy(0,19);printf("-----------------------------------------------------"); for(i=0;i<53;i+=1) { gotoxy(i,19); printf(">"); for(j=0;j<10050000;j++); } gotoxy(22,9);puts(" ______________"); gotoxy(22,10);puts("│ 注册成功 │"); gotoxy(22,11);puts("  ̄ ̄ ̄ ̄ ̄ ̄ ̄"); gotoxy(0,19); } #endif // _Visual_H_
#ifndef _TRAIN_NUM_H_ #define _TRAIN_NUM_H_ #include<stdio.h> #include"TRAIN_BOX.h" #include"stack_ZHANGTE.h"//栈内存储旅客信息 #define LEN1 sizeof(struct Train_group)//开辟一个结构体内存,该内存内存一列火车 #define LEN_TRAIN sizeof(struct train)//开辟一列火车 typedef struct train //定义火车信息结构体 { char train_num[10];//车次 char city_takeoff[10];//始发站 char city_arrive[10];//终点站 char time_takeoff[10];//出发时间 char time_through[10];//行驶时间/小时 int price_tick_seat;//硬座价格 int price_sleeper_seat;//卧铺价格 int surplus_tick_seat;//硬座余票 int surplus_sleeper_seat;//卧铺余票 LNode *train_box;//定义车厢。变量指向列车车厢链表。每个结点代表一个车厢 }TrainType; typedef struct Train_group{//一列火车 TrainType *zhang;//指向列车信息的指针 struct Train_group *next; }Train_group; Train_group *Creat_Traingroup()//建立一个头结点(一个列车组),返回指向该结点的指针,注意指向结第一个点指针为list->next { Train_group *h; h = malloc(LEN1); h->zhang = 1; h->next = NULL; return h; } /********************************************************/ /*函数功能:插入一列火车 */ /*函数参数:h-指向列车组的指针, pos为插入位置, */ /*返回值:插入成功返回1,插入失败0 */ /********************************************************/ int Insert_Train(Train_group *h,int pos) { Train_group *newlist, *movefind; int i = 0; if(pos<0) { printf("插入位置出错!\n\a"); return 0; }; movefind = h; while (i < pos)//寻找被插入位置的前驱 { if(movefind->next == NULL&&i < pos) { printf("插入位置出错!\n\a"); return 0; }; movefind = movefind->next; i++; } newlist = malloc(LEN1); newlist->zhang = malloc(LEN_TRAIN); printf("\n请输入车次:"); gets((newlist->zhang)->train_num); printf("\n请输入始发站:"); gets((newlist->zhang)->city_takeoff); printf("\n请输入终点站:"); gets((newlist->zhang)->city_arrive); printf("\n请输入出发时间:"); gets((newlist->zhang)->time_takeoff); printf("\n请输入行驶时间:"); gets((newlist->zhang)->time_through); printf("\n请输入硬座价格:"); scanf("%d",&(newlist->zhang)->price_tick_seat); printf("\n请输入卧铺价格:"); scanf("%d",&(newlist->zhang)->price_sleeper_seat); getchar(); (newlist->zhang)->train_box = Creat_Train(); ((newlist->zhang)->surplus_sleeper_seat) = surplus_sleeper_tickt(newlist->zhang);//卧铺余票 ((newlist->zhang)->surplus_tick_seat) = surplus_tick_tickt(newlist->zhang);//硬座余票 newlist->next = movefind->next;//插入元素 movefind->next = newlist; return 1; } /********************************************************/ /*函数功能:打印列车信息 */ /*函数参数:h-指向列车的指针 */ /*返回值:打印成功返回1 */ /********************************************************/ int Vist_Traingroup(TrainType *h)//打印列车信息 { if(h) { printf("_________________________________________"); printf("\n车次:%s ",h->train_num); printf("\n始发站:%s ",h->city_takeoff); printf("\n终点站:%s ",h->city_arrive); printf("\n出发时间:%s ",h->time_takeoff); printf("\n行驶时间:%s ",h->time_through); printf("\n硬座价格:%d ",h->price_tick_seat); printf("\n卧铺价格:%d ",h->price_sleeper_seat); printf("\n硬座余票:%d ",h->surplus_tick_seat); printf("\n卧铺余票:%d ",h->surplus_sleeper_seat); printf("\n_________________________________________"); return 1; } else { printf("怎么回事?");system("pause"); MessageBox(NULL,"没有该趟列车","温馨提示",MB_OK); } return 0; } /********************************************************/ /*函数功能:统计硬座余票 */ /*函数参数:h-指向列车的指针 */ /*返回值:返回硬座余票 */ /********************************************************/ int surplus_tick_tickt(TrainType *h)//统计硬座余票,返回硬座余票 { int i = 0,num=0; LNode *Length ; Length = h->train_box->next; while(Length) { if(Length->judg == 1)//判断车厢类型 { for(i=0;i<SEAT;i++) { if(Length->zhang[i] == 0)//统计余票 num ++; } } Length = Length->next; } return num; } /********************************************************/ /*函数功能:统计卧铺余票 */ /*函数参数:h-指向列车的指针 */ /*返回值:返回卧铺余票 */ /********************************************************/ int surplus_sleeper_tickt(TrainType *h)//统计卧铺座余票,返回卧铺余票 { int i = 0,num=0; LNode *Length ; Length = h->train_box->next; while(Length) { if(Length->judg == 2)//统计卧铺余票 { for(i=0;i<SLEEP;i++) if(Length->zhang[i] == 0) num++; } Length = Length->next; } return num; } /********************************************************/ /*函数功能:统计列车组长度 */ /*函数参数:h-指向列车组指针 */ /*返回值:返回列车组长度 */ /********************************************************/ int Length_Tarin_group(Train_group *h)//求列车组长度 { int i = 0; Train_group *Length ; Length = h->next; while(Length) { i++; Length = Length->next; } return i; } /********************************************************/ /*函数功能:初始三列火车K8100 , K5200, K4120 */ /*函数参数:h-指向列车组的指针, pos为插入位置, */ /*返回值:插入成功返回1,插入失败0 */ /********************************************************/ /********************************************************/ int Insert_Train_ceshi1(Train_group *h,int pos) { Train_group *newlist, *movefind; int i = 0; if(pos<0) { printf("插入位置出错!\n\a"); return 0; }; movefind = h; while (i < pos)//寻找被插入位置的前驱 { if(movefind->next == NULL&&i < pos) { printf("插入位置出错!\n\a"); return 0; }; movefind = movefind->next; i++; } newlist = malloc(LEN1); newlist->zhang = malloc(LEN_TRAIN); strcpy((newlist->zhang)->train_num,"K8100"); strcpy((newlist->zhang)->city_takeoff,"西安"); strcpy((newlist->zhang)->city_arrive,"榆林"); strcpy((newlist->zhang)->time_takeoff,"23:29"); strcpy((newlist->zhang)->time_through,"7小时28分钟"); (newlist->zhang)->price_tick_seat = 81; (newlist->zhang)->price_sleeper_seat = 128; (newlist->zhang)->train_box = Creat_Train(); ((newlist->zhang)->surplus_sleeper_seat) = surplus_sleeper_tickt(newlist->zhang);//卧铺余票 ((newlist->zhang)->surplus_tick_seat) = surplus_tick_tickt(newlist->zhang);//硬座余票 newlist->next = movefind->next;//插入元素 movefind->next = newlist; return 1; } int Insert_Train_ceshi2(Train_group *h,int pos) { Train_group *newlist, *movefind; int i = 0; if(pos<0) { printf("插入位置出错!\n\a"); return 0; }; movefind = h; while (i < pos)//寻找被插入位置的前驱 { if(movefind->next == NULL&&i < pos) { printf("插入位置出错!\n\a"); return 0; }; movefind = movefind->next; i++; } newlist = malloc(LEN1); newlist->zhang = malloc(LEN_TRAIN); strcpy((newlist->zhang)->train_num,"K5200"); strcpy((newlist->zhang)->city_takeoff,"成都"); strcpy((newlist->zhang)->city_arrive,"北京"); strcpy((newlist->zhang)->time_takeoff,"23:29"); strcpy((newlist->zhang)->time_through,"15小时20分钟"); (newlist->zhang)->price_tick_seat = 85; (newlist->zhang)->price_sleeper_seat = 140; (newlist->zhang)->train_box = Creat_Train(); ((newlist->zhang)->surplus_sleeper_seat) = surplus_sleeper_tickt(newlist->zhang);//卧铺余票 ((newlist->zhang)->surplus_tick_seat) = surplus_tick_tickt(newlist->zhang);//硬座余票 newlist->next = movefind->next;//插入元素 movefind->next = newlist; return 1; } int Insert_Train_ceshi3(Train_group *h,int pos) { Train_group *newlist, *movefind; int i = 0; if(pos<0) { printf("插入位置出错!\n\a"); return 0; }; movefind = h; while (i < pos)//寻找被插入位置的前驱 { if(movefind->next == NULL&&i < pos) { printf("插入位置出错!\n\a"); return 0; }; movefind = movefind->next; i++; } newlist = malloc(LEN1); newlist->zhang = malloc(LEN_TRAIN); strcpy((newlist->zhang)->train_num,"K4120"); strcpy((newlist->zhang)->city_takeoff,"西安"); strcpy((newlist->zhang)->city_arrive,"鄂尔多斯"); strcpy((newlist->zhang)->time_takeoff,"23:15"); strcpy((newlist->zhang)->time_through,"8小时15分钟"); (newlist->zhang)->price_tick_seat = 90; (newlist->zhang)->price_sleeper_seat = 142; (newlist->zhang)->train_box = Creat_Train(); ((newlist->zhang)->surplus_sleeper_seat) = surplus_sleeper_tickt(newlist->zhang);//卧铺余票 ((newlist->zhang)->surplus_tick_seat) = surplus_tick_tickt(newlist->zhang);//硬座余票 newlist->next = movefind->next;//插入元素 movefind->next = newlist; return 1; } /********************************************************************/ #endif // _TRAIN_NUM_H_
#ifndef _TRAIN_BOX_H_ #define _TRAIN_BOX_H_ #include<stdio.h> #define LEN sizeof(struct Node) #define SEAT 2//硬座座位数 #define SLEEP 1//卧铺座位数 typedef struct Node{ int judg;//judg=1为普通车厢,等于2为卧铺车厢 int zhang[SEAT];//代表座位,硬座SEAT个座位,卧铺随便个小于硬座个座位 struct Node *next; }LNode , *PNode,*LinkList; int Insert_Box(LNode *h,int pos,int type) {/*插入车厢,h为需插入列车指针,pos为插入位置,type为插入普车厢类型 插入成功返回1,插入失败(输入位置大于链表长度或小于0)返回0*/ LNode *newlist, *movefind; int i = 0; if(pos<0) { printf("插入位置出错!\n\a"); return 0; }; movefind = h; while (i < pos)//寻找被插入位置的前驱 { if(movefind->next == NULL&&i < pos) { printf("插入位置出错!\n\a"); return 0; }; movefind = movefind->next; i++; } newlist = malloc(LEN); newlist->judg = type; for(i=0;i<SEAT;i++) newlist->zhang[i] = 0; newlist->next = movefind->next;//插入元素 movefind->next = newlist; return 1; } LNode *Creat_Train()//建立一个火车,返回指向该车的指针,注意指向第一个车厢指针为list->next。默认0-6,12-17硬座。7-11卧铺 { int i; LNode *h; h = malloc(LEN); h->next = NULL; for(i=0;i<1;i++)//只有一个硬座车厢 { Insert_Box(h,i,1); } for(i=1;i<2;i++)//只有一个卧铺车厢一个座位 { Insert_Box(h,i,2); } /* for(i=12;i<18;i++) { Insert_Box(h,i,1); } */ return h; } int Delete_Box_pos(LNode *h,int pos)//删除车厢 {/*h为指向列车的指针,pos为删除车厢位置, 如果没有列车为空或者删除位置不存在返回0,删除成功返回1*/ LNode *movefind1,*movefind2; int i = 0; if(!h->next||pos<0)//判链表是否为空,或者删除位置小于0 printf("删除出错!\n\a"); movefind1 = h; if(!movefind1->next) return 0; while(i <= pos-1)//指向删除结点前驱 { if(((movefind1->next)->next)==NULL&&i <= pos-1)//如果被删除结点后继为空,pos还有值(上溢),返回0 printf("删除出错!\n\a"); movefind1 = movefind1->next; i++; } movefind2 = movefind1->next; if(movefind2->next) movefind1->next = movefind2->next; else movefind1->next = NULL; free(movefind2); return 1; } #endif
/************************************************************ /*Copyright (c) 2014.张特.陕西科技大学 /*All rights reserved. /* /*文件名称:stack_ZHANGTE.h /*说 明:本文件为数据结构栈头文件,其中头文件默认 /* 定义了四个容量为100的栈分别为stick0, /* stick1,stick2,stick3.以及分别指向它们的指 /* 针s0,s1,s2,s3.使用时需要对栈用InitStack函数 /* 进行初始化,用户如有更多需求可自行参照定义 /* /*当前版本:0.1 /*作 者:张特 /*完成日期:2014年5月18日 /************************************************************/ #ifndef _STACK_ZHANGTE_H_ #define _STACK_ZHANGTE_H_ #include"TRAIN_NUM.h"//链表内存储列车 #include<stdio.h> #include"TRAIN_BOX.h"//链表内存储车厢 #define STACKSIZE 150 struct stack_1{//旅客信息 char name[STACKSIZE][10];//姓名 char IDcard[STACKSIZE][20];//***号 char Password[STACKSIZE][10];//密码小于等于6位 int seat_num[STACKSIZE]; //旅客的座位编号 int num_Box[STACKSIZE]; //编号车厢 int sleeper_tick[STACKSIZE]; //车厢类型,1为普通车厢,等于0为卧铺车厢 char train_num[STACKSIZE][10];//车次 char Priority[STACKSIZE]; TrainType *train[STACKSIZE]; //指向旅客所在列车 int top ; }; typedef struct stack_1 SqStack ; SqStack stick0; SqStack *s0 = &stick0; SqStack stick1; SqStack *s1 = &stick1; SqStack stick2; SqStack *s2 = &stick2; SqStack stick3; SqStack *s3 = &stick3; /***********************************************************/ /*Functionality function:初始化(建立空栈) */ /*Function Parameters;s-指向栈的指针 */ /*Function return value:建栈成功返回1 ;栈顶默认存储NULL */ /***********************************************************/ int InitStack(SqStack *s) { s->top = -1; return 1; } /*******************************************************************/ /*Functionality function:入栈(旅客订票入栈) */ /*Function Parameters:s-指向栈的指针 i-座位类型(1为硬座,2为卧铺)*/ /* seat_num-座位编号 Box-座位所在车厢 */ /*Function return value:栈满返回0;入栈成功返回1,否则提示未知错误 */ /*******************************************************************/ int Push_Stack(SqStack *s) { if(s->top >= STACKSIZE-1) { printf("\n内存已满!\a"); return 0; } else { s->top++; //getchar();//接收回车 //printf("\n\n姓 名:"); gotoxy(30,8); gets(s->name[s->top]); // printf("\n***号:"); gotoxy(30,10); gets(s->IDcard[s->top]); // printf("\n密码:"); gotoxy(30,12); gets(s->Password[s->top]); gotoxy(30,14); scanf("%d",&s->Priority[s->top]);; return 1;} } /**************************************************************/ /*Functionality function:遍历栈(本函数遍历结果打印在屏幕上)*/ /*Function Parameters:s-指向栈的指针 */ /*Function return value:遍历完成返回1,空栈返回0 */ /*Remarks:栈中元素从栈顶开始依次打印 */ /**************************************************************/ int Visit_Stack(SqStack *s) { int i; if (s->top<0) return 0; else for(i=0;i<=s->top;i++) { printf("\n姓名:%s ",s->name[i]); printf("\n***号:%s ",s->IDcard[i]); printf("\n车次:%s ",s->train_num[i]); printf("\n车厢号:%d ",s->num_Box[i]); printf("\n座位号:%d ",s->seat_num[i]); } return 1; printf("未知错误!\a\n"); } /**************************************************************/ /*Functionality function:统计栈旅客人数 */ /*Function Parameters:s-指向栈的指针 */ /*Function return value:遍历完成返回个数,空栈返回0 */ /**************************************************************/ int Statistics_Stack(SqStack *s) { int i=(s->top); printf("共有旅客人数:%d",++i); return 1; } /*****************************************************/ /*Functionality function:查询中旅客信息(***号,密码)*/ /*Function parameters;s-指向栈的指针 n-返回栈顶元素 */ /*Function return value:栈空返回0,取出返回1 */ /*****************************************************/ /* int Test_n_Stack(SqStack *s) { char a[20]; int i; if (s->top <= -1) { printf("没有旅客!\n"); return 0; } printf("\n请输入您的***号:"); gets(a); for(i=s->top;i>=0;i--) if(strcmp(a,s->IDcard[i])==0 && 1) { printf("\n姓名:%d ",s->name[i]); printf("\n***号:%d ",s->IDcard[i]); } printf("错误!\a"); return 0; } */ /*****************************************************/ /*Functionality function:取栈中旅客信息(按***号)*/ /*Function parameters;s-指向栈的指针 n-返回栈顶元素 */ /*Function return value:栈空返回0,取出返回1 */ /*****************************************************/ /* int Search_n_Stack(SqStack *s,) { char a[20]; int i; if (s->top <= -1) { printf("没有旅客!\n"); return 0; } printf("\n请输入您的***号:"); gets(a); for(i=s->top;i>=0;i--) if(strcmp(a,s->IDcard[i])==0) { printf("\n姓名:%d ",s->name[i]); printf("\n***号:%d ",s->IDcard[i]); } printf("查找元素未知错误!\a"); return 0; }*/ /* /**************************************************************/ /*Functionality function:遍历栈(寻找相应旅客)(按***) */ /*Function Parameters:s-指向栈的指针 */ /*Function return value:遍历完成返回1,空栈返回0 */ /*Remarks:栈中元素从栈顶开始依次打印 */ /**************************************************************/ int Find_Guess_ID(SqStack *s,char ID[]) { int i; if (s->top<0) return 0; else { for(i=s->top;i>=0;i--) if(strcmp(ID,s->IDcard[i])==0) { gotoxy(56,1); RED_BLACK;printf("%s ",s->name[i]); gotoxy(56,3); printf("%s ",s->IDcard[i]); gotoxy(56,5); printf("%s ",s->train_num[i]); if(s->Priority[i]==1)//判断是否会员。是会员则加一个V { gotoxy(76,3);PURPLE_BLACK;printf(" ");RED_BLACK; gotoxy(76,4);PURPLE_BLACK;printf(" ");RED_BLACK; gotoxy(76,5);PURPLE_BLACK;printf(" ");RED_BLACK; gotoxy(78,4);PURPLE_BLUE;printf("V");RED_BLACK; } switch(s->sleeper_tick[i]) { case 2 :{gotoxy(66,5); printf("(卧铺)"); break ;} case 1 :{gotoxy(66,5); printf("(硬座)"); break ;} default : {gotoxy(56,5); printf("您没有订票"); break ;} } } return 1;} printf("未知错误!\a\n"); } /**************************************************************/ /*Functionality function:遍历栈(寻找相应旅客)(按姓名) */ /*Function Parameters:s-指向栈的指针 */ /*Function return value:遍历完成返回1,空栈返回0 */ /*Remarks:栈中元素从栈顶开始依次打印 */ /**************************************************************/ /* int Find_Guess_Name(SqStack *s,char Name[]) { int i; if (s->top<0) return 0; else {for(i=s->top;i>=0;i--) printf("\n姓名:%d ",s->name); printf("\n***号:%d ",s->IDcard); return 1;} printf("未知错误!\a\n"); }*/ /*******************************************************************/ /*Functionality function:初始化4个人入栈(旅客订票入栈) */ /*Function Parameters:s-指向栈的指针 i-座位类型(1为硬座,2为卧铺)*/ /* seat_num-座位编号 Box-座位所在车厢 */ /*Function return value:栈满返回0;入栈成功返回1,否则提示未知错误 */ /*******************************************************************/ /**************************四个人*******************************/ int Push_Stack_Ceshi1(SqStack *s) { if(s->top >= STACKSIZE-1) { printf("\n内存已满!\a"); return 0; } else { s->top++; strcpy(s->name[s->top],"王建华"); strcpy(s->IDcard[s->top],"612753198505064045"); strcpy(s->Password[s->top],"111111"); s->Priority[s->top] = 2;//优先级 return 1;}; printf("输入未知错误!\a\n"); } int Push_Stack_Ceshi2(SqStack *s) { if(s->top >= STACKSIZE-1) { printf("\n内存已满!\a"); return 0; } else { s->top++; strcpy(s->name[s->top],"章子怡"); strcpy(s->IDcard[s->top],"123456"); strcpy(s->Password[s->top],"222222"); s->Priority[s->top] = 1;//优先级 return 1;}; printf("输入未知错误!\a\n"); } int Push_Stack_Ceshi3(SqStack *s) { if(s->top >= STACKSIZE-1) { printf("\n内存已满!\a"); return 0; } else { s->top++; strcpy(s->name[s->top],"朱元璋"); strcpy(s->IDcard[s->top],"612732132810213013"); strcpy(s->Password[s->top],"333333"); s->Priority[s->top] = 3;//优先级 return 1;}; printf("输入未知错误!\a\n"); } int Push_Stack_Ceshi4(SqStack *s) { if(s->top >= STACKSIZE-1) { printf("\n内存已满!\a"); return 0; } else { s->top++; strcpy(s->name[s->top],"方舟子"); strcpy(s->IDcard[s->top],"1543543"); strcpy(s->Password[s->top],"444444"); s->Priority[s->top] = 4;//优先级 return 1;}; printf("输入未知错误!\a\n"); } /**************************************************************/ /*Functionality function:遍历栈(根据***号查询旅客在栈中位置)*/ /*Function Parameters:s-指向栈的指针 */ /*Function return value:遍历完成返回位置,空栈返回0 */ /*Remarks:栈中元素从栈顶开始依次打印 */ /**************************************************************/ int Serach_Position(SqStack *s,char ID[]) { int i ; if (s->top<0) return 0; else for(i=s->top;i>=0;i--) { if(strcmp(ID,s->IDcard[i])==0) { return i; } return 0;} printf("未知错误!\a\n"); } #endif // _STACK_H_
#include <stdio.h> #include <stdlib.h> #include <windows.h> #define WHITE_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE ) #define WHITE_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_BLUE) #define WHITE_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_BLUE) #define WHITE_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define WHITE_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define WHITE_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_GREEN) #define WHITE_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_GREEN) #define WHITE_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED |FOREGROUND_GREEN) #define WHITE_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED |FOREGROUND_GREEN) #define WHITE_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED |FOREGROUND_BLUE) #define WHITE_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED |FOREGROUND_BLUE) #define WHITE_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_GREEN|FOREGROUND_BLUE) #define WHITE_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_GREEN|FOREGROUND_BLUE) #define GRAY_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY) #define GRAY_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_RED) #define GRAY_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_GREEN) #define GRAY_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_BLUE) #define GRAY_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN) #define GRAY_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE) #define GRAY_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE) #define GRAY_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY|FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN) #define GRAY_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_RED) #define GRAY_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_GREEN) #define GRAY_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_BLUE) #define GRAY_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN) #define GRAY_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE) #define GRAY_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE) #define BLACK_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED ) #define BLACK_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN) #define BLACK_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE) #define BLACK_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_BLUE) #define BLACK_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN ) #define BLACK_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN | FOREGROUND_BLUE) #define BLACK_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED ) #define BLACK_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE) #define BLACK_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN) #define BLACK_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_BLUE) #define BLACK_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN ) #define BLACK_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE) #define BLACK_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define RED_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED ) #define RED_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED) #define RED_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_GREEN) #define RED_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_BLUE) #define RED_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_GREEN ) #define RED_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_BLUE) #define RED_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define RED_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED |FOREGROUND_RED) #define RED_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | FOREGROUND_GREEN) #define RED_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | FOREGROUND_BLUE) #define RED_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_GREEN ) #define RED_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_BLUE) #define RED_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define GREEN_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN ) #define GREEN_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED) #define GREEN_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_GREEN) #define GREEN_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_BLUE) #define GREEN_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_GREEN ) #define GREEN_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_BLUE) #define GREEN_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_GREEN | FOREGROUND_BLUE) #define GREEN_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN |FOREGROUND_RED) #define GREEN_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | FOREGROUND_GREEN) #define GREEN_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | FOREGROUND_BLUE) #define GREEN_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_GREEN ) #define GREEN_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_BLUE) #define GREEN_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | FOREGROUND_GREEN | FOREGROUND_BLUE) #define BLUE_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE ) #define BLUE_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED) #define BLUE_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_GREEN) #define BLUE_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_BLUE) #define BLUE_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define BLUE_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define BLUE_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define BLUE_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE |FOREGROUND_RED) #define BLUE_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE | FOREGROUND_GREEN) #define BLUE_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE | FOREGROUND_BLUE) #define BLUE_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define BLUE_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define BLUE_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define YELLOW_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED) #define YELLOW_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN) #define YELLOW_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_BLUE) #define YELLOW_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_GREEN ) #define YELLOW_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_BLUE) #define YELLOW_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN | FOREGROUND_BLUE) #define YELLOW_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED) #define YELLOW_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN) #define YELLOW_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_BLUE) #define YELLOW_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_GREEN ) #define YELLOW_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_BLUE) #define YELLOW_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN | FOREGROUND_BLUE) #define YELLOW_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN ) #define PURPLE_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE ) #define PURPLE_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED) #define PURPLE_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN) #define PURPLE_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_BLUE) #define PURPLE_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define PURPLE_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define PURPLE_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define PURPLE_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED) #define PURPLE_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN) #define PURPLE_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_BLUE) #define PURPLE_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define PURPLE_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define PURPLE_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define CYAN_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE ) #define CYAN_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define CYAN_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN) #define CYAN_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_BLUE) #define CYAN_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define CYAN_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define CYAN_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define CYAN_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define CYAN_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN) #define CYAN_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_BLUE) #define CYAN_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define CYAN_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define CYAN_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DRED_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED ) #define DRED_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED) #define DRED_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_GREEN) #define DRED_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_BLUE) #define DRED_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_GREEN ) #define DRED_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_BLUE) #define DRED_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DRED_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED |FOREGROUND_RED) #define DRED_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | FOREGROUND_GREEN) #define DRED_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | FOREGROUND_BLUE) #define DRED_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_GREEN ) #define DRED_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED |FOREGROUND_RED | FOREGROUND_BLUE) #define DRED_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DGREEN_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN ) #define DGREEN_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED) #define DGREEN_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_GREEN) #define DGREEN_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_BLUE) #define DGREEN_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_GREEN ) #define DGREEN_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_BLUE) #define DGREEN_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DGREEN_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN |FOREGROUND_RED) #define DGREEN_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_GREEN) #define DGREEN_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_BLUE) #define DGREEN_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_GREEN ) #define DGREEN_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN |FOREGROUND_RED | FOREGROUND_BLUE) #define DGREEN_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DBLUE_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE ) #define DBLUE_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED) #define DBLUE_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_GREEN) #define DBLUE_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_BLUE) #define DBLUE_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DBLUE_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DBLUE_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DBLUE_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE |FOREGROUND_RED) #define DBLUE_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | FOREGROUND_GREEN) #define DBLUE_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | FOREGROUND_BLUE) #define DBLUE_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DBLUE_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DBLUE_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DYELLOW_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED) #define DYELLOW_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN) #define DYELLOW_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_BLUE) #define DYELLOW_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_GREEN ) #define DYELLOW_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_BLUE) #define DYELLOW_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN | FOREGROUND_BLUE) #define DYELLOW_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED) #define DYELLOW_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN) #define DYELLOW_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_BLUE) #define DYELLOW_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_GREEN ) #define DYELLOW_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN|FOREGROUND_RED | FOREGROUND_BLUE) #define DYELLOW_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN| FOREGROUND_GREEN | FOREGROUND_BLUE) #define DYELLOW_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN ) #define DPURPLE_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE ) #define DPURPLE_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED) #define DPURPLE_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN) #define DPURPLE_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_BLUE) #define DPURPLE_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DPURPLE_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DPURPLE_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DPURPLE_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED) #define DPURPLE_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN) #define DPURPLE_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_BLUE) #define DPURPLE_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DPURPLE_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DPURPLE_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DCYAN_BLACK SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE ) #define DCYAN_RED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define DCYAN_GREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN) #define DCYAN_BLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_BLUE) #define DCYAN_YELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DCYAN_PURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DCYAN_CYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) #define DCYAN_DRED SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED) #define DCYAN_DGREEN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN) #define DCYAN_DBLUE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_BLUE) #define DCYAN_DYELLOW SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_GREEN ) #define DCYAN_DPURPLE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED | FOREGROUND_BLUE) #define DCYAN_DCYAN SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE) //183 #define GREEN_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define RED_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define BLUE_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_BLUE | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define CYAN_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define PURPLE_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED| BACKGROUND_BLUE | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define YELLOW_WHITE SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY| BACKGROUND_RED| BACKGROUND_GREEN | FOREGROUND_GREEN| FOREGROUND_RED| FOREGROUND_BLUE) #define DRED_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_RED ) #define DGREEN_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_GREEN ) #define DBLUE_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_BLUE ) #define DYELLOW_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_GREEN ) #define DPURPLE_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_BLUE) #define DCYAN_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY |BACKGROUND_BLUE |BACKGROUND_GREEN ) #define RED_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_RED ) #define GREEN_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_GREEN ) #define BLUE_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY|BACKGROUND_BLUE ) #define YELLOW_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_GREEN ) #define PURPLE_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_BLUE) #define CYAN_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_BLUE |BACKGROUND_GREEN ) #define WHITE_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_INTENSITY |BACKGROUND_RED |BACKGROUND_BLUE |BACKGROUND_GREEN) #define BLACK_GRAY SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_INTENSITY ) /* int handle() { HANDLE consoleHwnd; consoleHwnd = GetStdHandle(STD_OUTPUT_HANDLE); } */
相关文章推荐
- 数据结构在软件编程中的地位
- 单链表的基本操作-数据结构
- PTA 数据结构与算法题目集 5-1 最大子列和问题
- 2014找工作总结-机会往往留给有准备的人
- 数据结构学习之直接插入排序
- 数据结构--图的相关操作实现
- 数据结构学习之选择排序
- 数据结构之单链表 C++实现
- 中国大学MOOC-陈越、何钦铭-数据结构 Maximum Subsequence Sum
- 【数据结构】图
- 数据结构必须掌握 栈---压栈和出栈
- Android开发中高效的数据结构用SparseArray代替HashMap
- 2015.09.04 数据结构笔记
- 堆数据结构
- 数据结构---数组(5)
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 数据结构学习之路-第二章:一元多项式的表示及相加
- 半边数据结构及其使用
- 【算法设计与数据结构】二分法解决最大值最小化问题—进阶篇— URAL 2034 Caravans
- 紫影龙的编程日记 —— 算法与数据结构