初学C语言小白,记录自己完成火车票订票系统的过程(链表相关操作+文件相关操作)

初学C语言大概两个月,最近开始完成练习“火车票订票系统”,主要为熟悉链表的相关操作及文件相关操作,在这里记录一下。

首先是创建项目,为了后续方便查阅,我把各个模块分别创建了一个.c文件,然后在主函数中以外部函数的方式进行引用各个模块的创建
主函数中引用各个模块函数
第一步是定义结构体,包含车票相关信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价),为方便引用,我把结构体设置为了头文件。
结构体定义
然后就是创建链表:

#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
#include"Trainticket.h"

struct Trainticket *pHead = NULL;      //链表头结点
struct Trainticket *pEnd = NULL;       //链表尾结点
int iCloud = 0;          //记录当前车次数量

struct Trainticket *Chuanjian()
{
   
	struct Trainticket *pNew = (struct Trainticket *)malloc(sizeof(struct Trainticket));
	int Checishu;        //链表长度
	printf("请输入本次需要添加的车次数量:\n");
	scanf("%d", &Checishu);
	printf("请输入车次信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价)\n");
	while (iCloud < Checishu)
	{
   
		struct Trainticket *pNew = (struct Trainticket *)malloc(sizeof(struct Trainticket));
		scanf("%s%s%s%s%s%d%d", &pNew->Checi, &pNew->Shifa, &pNew->Zhongdian, &pNew->Facheshijian, &pNew->Daozhanshijian, &pNew->Piaoshu, &pNew->Piaojia);
		pNew->pNex = NULL;
		iCloud++;
		if (iCloud == 1)
		{
   
			pHead = pNew;
		}
		else
		{
   
			pEnd->pNex = pNew;
		}
		pEnd = pNew;
	}
	return pHead;
}

然后是添加链表成员函数,为方便,创建链表及添加成员函数是在同一个.c文件当中,因此这个文件中我定义了全局变量pHead、pEnd、iCloud。



void ADD(struct Trainticket *pHead)          //插入链表成员函数   尾插入
{
   
	struct Trainticket *pAdd = (struct Trainticket *)malloc(sizeof(struct Trainticket));
	printf("请输入车次信息(车次、始发站、终点站、发车时间、到站时间、剩余票数、票价)\n");
	scanf("%s%s%s%s%s%d%d", &pAdd->Checi, &pAdd->Shifa, &pAdd->Zhongdian, &pAdd->Facheshijian, &pAdd->Daozhanshijian, &pAdd->Piaoshu, &pAdd->Piaojia);
	pAdd->pNex = NULL;                       //pAdd为新增的链表成员
	struct Trainticket *pTempA = pHead;      //遍历并指向尾节点
	while (pTempA != NULL)                   //循环遍历
	{
   
		if (pTempA->pNex == NULL)            //判断当前成员是否为尾节点
		{
   
			pTempA->pNex = pAdd;             //将新增节点地址与当前尾节点连接
			pEnd = pAdd;                   
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值