c语言的期末作业
主要考查对指针链表数据结构的使用
模块化程序设计
上代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct train
{
char num[10];//列车号
char city[10];//目的城市
char takeoffTime[10];//发车时间
char receiveTime[10];//到达时间
int price;
int bookNum;//票数
}train;
typedef struct man
{
char num[10];//ID
char name[10];//姓名
int bookNum;//所需票数
}man;
typedef struct node//火车的节点
{
train data;
struct node *next;
}node,*Link;
typedef struct pnode//创建用户链表的节点
{
man data;
struct pnode *next;
}bookMannode,* bookManLink;
void InsertTrain(Link linkhead)//录入火车信息
{
node *p,*q;
q=linkhead;
while(q->next!=NULL)
{
q = q -> next;
}
p = (node *)malloc(sizeof(node));
if(!p)
{
printf("\t\t\t\t 录入未成功");
return;
}
printf("\t\t\t\t 请输入列车号:");scanf("%s",p->data.num );
printf("\t\t\t\t 请输入目的城市:");scanf("%s",p->data.city );
printf("\t\t\t\t 请输入发车时间:");scanf("%s",p->data.takeoffTime );
printf("\t\t\t\t 请输入到达时间:");scanf("%s",p->data.receiveTime );
printf("\t\t\t\t 请输入票价:");scanf("%d",&p->data.price);
while(p->data.price<0) //判断列车票是否符合常理
{
printf("\t\t\t\t 列车票价钱有误\n");
printf("\t\t\t\t 请重新输入:");
scanf("%d",&p->data.price);
}
printf("\t\t\t\t 请输入票数:");scanf("%d",&p->data.bookNum );
while(p->data.bookNum <=0) //判断列车票是否符合常理
{
printf("\t\t\t\t 列车票票数有误\n");
printf("\t\t\t\t 请重新输入:");
scanf("%d",&p->data.bookNum );
}
p->next=NULL;
q->next =p;
q=p;
printf("\t\t\t\t 录入成功!!\n\n");
}
void QueryTrain(Link linkhead)//查询车票
{
int cho;
printf("\t\t\t\t 请选择查询方式:\n");
printf("\t\t\t\t 1.按车次查询!!\n");
printf("\t\t\t\t 2.按到达的目的地查询!!\n");
printf("\t\t\t\t 请选择: