火车票订票系统(简化版)

本文介绍了一个简单的列车票务管理系统的设计与实现,通过C语言构建了包括查询车次信息、订票、退票等功能在内的基本票务操作流程。系统采用链表来存储列车信息,并提供了友好的交互界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "train简化.h"

int main()
{
	usage();
	return 0;
}


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

struct train{
	int id;
	char name[50];
	int remainTickets;
	struct train * next;
};


struct train * addTailNode(){
	struct train * L;
	L = (struct train *)malloc(sizeof(struct train));
	struct train * p,* last;
	last=L;
	int id;
	char name[50];
	int remainTickets;
	printf("请分别输入列车的id号,名称,剩余票数!输入终止id==-1\n");
	scanf("%d%s%d",&id,&name,&remainTickets);
	while(id!=-1){
		p = (struct train *)malloc(sizeof(struct train));
		p->id=id;
		strcpy(p->name,name);
		p->remainTickets=remainTickets;
		last->next=p;
		last=p;
		p->next=NULL;
		scanf("%d%s%d",&id,&name,&remainTickets);
	}
	return L;
}

struct train * searchTrain(struct train * L,int id){
	struct train * p;
	p = L;
	while(p!=NULL){
		if(p->id==id){
			break;
		}
		p=p->next;
	}
	return p;
}

int printNode(struct train * p){//打印节点信息
	printf("列车id: %d\n",p->id);
	printf("列车名称:%s\n",p->name);
	printf("剩余票数:%d\n",p->remainTickets);
	return 0;
}

int bookTrain(struct train * L,int id){//订票
	int count=0;
	struct train * p;
	p = L;
	while(p!=NULL){
		if(p->id==id){
			p->remainTickets--;
			break;
		}
		p=p->next;
	}
	return 0;
}

int returnTrain(struct train * L,int id){//订票
	struct train * p;
	p = L;
	while(p!=NULL){
		if(p->id==id){
			p->remainTickets++;
			break;
		}
		p=p->next;
	}
	return 0;
}

int menu(){//具体实现usage
	printf("请输入列车原始信息!\n");
	struct train * L;
	L = addTailNode();
	int x,id;
	int k=1;
	while(k){
		printf("请输入序列号:");
		scanf("%d",&x);
		switch(x){
		case 1:
			printf("输入所要查询列车的id号:");
			scanf("%d",&id);
			printNode(searchTrain(L,id));
			break;
		case 2:
			printf("输入所要订票列车的id号:");
			scanf("%d",&id);
			bookTrain(L,id);
			printNode(searchTrain(L,id));
			break;
		case 3:
			printf("输入所要订票列车的id号:");
			scanf("%d",&id);
			returnTrain(L,id);
			printNode(searchTrain(L,id));
			break;
		case 4:k=0;
		default:return 0;
		}
	}
	return 0;
}

int usage(void){//打印提示界面
	printf("请按提示输入完成操作!\n");
	printf("1.查询车次信息\n");
	printf("2.订票\n");
	printf("3.退票\n");
	printf("4.退出系统\n\n");
	menu();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值