#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#define MAXSIZE 100
//定义车厢信息为结构体类型
typedef struct carriage
{
char NO[10];//序号
char year[10];//使用日期
//char state[20];//状态
}elemtype;//定义车厢记录信息的结构类型为elemtype列表
//定义火车栈
struct train
{
elemtype data[MAXSIZE];//定义一维数组
int top;//定义栈顶
}train;//栈类型为train
//定义轨道
struct Pathway
{
elemtype data1[MAXSIZE];//轨道
int top1;//定义栈顶
}Pathway;//栈类型为Pathway
//定义用户信息
typedef struct _Account
{
char szUsername[12];//用户名
char szAccountNum[20];//注册的账号
char szPassword[9];//密码,字符串终止字符\0
}Account;//定义记录用户信息的结构类型为Account列表
//链表来实现
typedef struct _Node
{
Account account;//数据域
struct _Node *next;//下一个节点指针域
}Node;//定义记录用户信息的结构类型为Node列表
Node *g_pHead = NULL;//g_pHead是指向Node类型的指针变量并初始化
//创建链表查找修改信息
typedef struct node
{
elemtype data2;//节点数据域
struct node *next;//节点指针域
}Trainnode; //定义记录用户信息的结构类型为Trainnode列表
Trainnode *head=NULL;//Trainnode 指向head 并初始化
//定义所以输出序列
struct node1
{
int sdata[MAXSIZE]; //定义一维数组 sdata
int stop; //定义栈顶
}node1;//定义栈结构类型
int n;//定义输入序列总个数 输出所有可能序列
/*函数声明*/
void console();//车厢调度站。
void outboundone();//车厢调度出站(一个)
void outbound();//车厢调度出站(多辆)
void inbound();//车厢调度进站
int chageinformation();//输出所以可能出现的序列
void Init_node();//初始化车厢信息
void Init_train();//初始化火车
void Init_Pathway();//初始化轨道
void exit1();//退出系统
int CreateAccount();//注册
int Login();//登录
int Menu(Node *pNode);//功能菜单
int carinformation();//打印所有存在车厢信息
int train1();//显示调度完成的列车车厢序列
int push_Pathway(elemtype *x);//车厢入轨道
int push_train(elemtype* x);//车厢接火车 (入栈)
int push_trainnode(elemtype *x);//车厢信息入栈
int pop_Pathway(elemtype* x);//车厢出栈
int pop_train(elemtype* x);//火车序列 (出栈)
int pop_trainnode(elemtype* x);//显示车厢所有信息出栈
int binarysearch();//查找位置函数
int m = 0;//初始化m,为车厢出站数目
//注册信息 链表
int CreateAccount()
{
system("cls");
Node *pNewNode = (Node *)malloc(sizeof(Node));//生成头结点并赋给Node的指针域pNewNode结点
pNewNode->next = NULL;//下一个节点初始化
printf("\t\t\t\t请输入手机号码:\n");
scanf("%s", pNewNode->account.szUsername);
char szPassword[9];//定义密码
while (1)
{
while (1)
{
printf("\t\t\t\t请设置你的密码(长度为6):\n");
scanf("\t\t\t\t%s", szPassword);
int length1 = strlen(szPassword);//获取输入密码的长度
if (length1 == 6)
{
printf("\t\t\t\t请输入确认密码:\n");
scanf("\t\t\t\t%s", pNewNode->account.szPassword);
break;//退出if循环 进入比较if
}
else
{
printf("\t\t\t\t输入密码有误!长度为6\n");
continue;//返回上一级 输入密码
}
}
if (0 != strcmp(szPassword, pNewNode->account.szPassword))//比较密码长度和是否相同
{
printf("\t\t\t\t你两次输入的密码不一致,请重新设置:\n");
continue;//返回输入密码
}
break;
}
srand((unsigned int)time(NULL));//获取随机数账号
sprintf(pNewNode->account.szAccountNum, "%d", rand() %
车厢调度程序主函数:系统入口,监控程序运行。 建立调度站 车厢调度进站 车厢调度出站(一个) 车厢调度出站(多个)
最新推荐文章于 2024-06-04 08:21:16 发布
本文介绍了一个基于C语言的车厢调度系统,系统入口监控程序运行,包括建立调度站、车厢进站和出站(单个及多个)等关键操作,采用链表和栈的数据结构进行管理。
摘要由CSDN通过智能技术生成