火车售票系统设计 c语言,C语言火车售票系统
#include
#include
#include//getch
#include//动态分配
typedef struct route//路线
{
char num[30];//车次
char start[40];//起点
char end[40];//终点
char time[10];//时间
struct route *next;
}r;
typedef struct ticket//车票
{
char num[30];//车次
int n;//总数量
int n1;//剩余数
float price;//票价
struct ticket *next;
}t;
r * rhead=NULL,*ri=NULL;//全局指针
t * thead=NULL,*ti=NULL;//全局指针
void initialr()
{
FILE *fp;
fp=fopen("route.txt","r");
if(!fp){ printf("/n/n火车路线文件不存在!/n/n"); return ; }
fseek(fp,0,SEEK_END);
int n=ftell(fp)/sizeof(r);
rewind(fp);
int i=0;
for(;i
{
r *p;
p=(r*)malloc(sizeof(r));
p->next=NULL;
fread(p,sizeof(r),1,fp);
if(rhead==NULL)rhead=ri=p;
else{ ri->next=p;ri=p; }
}
fclose(fp);
printf("/n/n初始化%d个火车路线信息成功!/n/n",n);
}
void initialt()
{
FILE *fp;
fp=fopen("ticket.txt","r");
if(!fp){ printf("/n/n车票文件不存在!/n/n"); return; }
fseek(fp,0,SEEK_END);
int n=ftell(fp)/sizeof(t);
rewind(fp);
int i=0;
for(;i
{
t *p;
p=(t*)malloc(sizeof(t));
p->next=NULL;
fread(p,sizeof(t),1,fp);
if(thead==NULL)thead=ti=p;
else{ ti->next=p;ti=p; }
}
fclose(fp);
printf("/n/n初始化%d个车票信息成功!/n/n",n);
}
void newr()
{
printf("/n/n/n█新建火车路线█/n/n");
loop:
r *p;
p=(r *)malloc(sizeof(r));
p->next=NULL;
loop1:
printf("/n请输入火车号/n/n");
scanf("%s",p->num);
//检验
r *pj=rhead;
while(pj)
{
if(strcmp(pj->num,p->num)==0){ printf("/n/n错误,该火车号已经存在,请重新输入!/n"); goto loop1; }
pj=pj->next;
}
//检验
printf("/n请输入起始站/n/n");
scanf("%s",p->start);
printf("/n请输入终点站/n/n");
scanf("%s",&p->end);
printf("/n请输入发车时间(时:分)/n/n");
scanf("%s",&p->time);
if(rhead==NULL)rhead=ri=p;
else{ ri->next=p; ri=p; }
printf("/n/n创建新火车路线成功!/n/n");
char c;
printf("/n/n您想---继续新建(A)--退出新建(E)---/n");
c=getch();
if(c=='A'||c=='a')goto loop; else return;
}
void newt()
{
printf("/n/n/n█新建车票█/n/n");
loop:
t *p;
p=(t *)malloc(sizeof(t));
p->next=NULL;
printf("/n请输入要新建车票的火车号/n/n");
scanf("%s",p->num);
//检验是否已经售票
int y=0;
t *pt=thead;
while(pt)
{
if(strcmp(pt->num,p->num)==0){y=1;break;}
pt=pt->next;
}
if(y) { printf("/n错误,该火车号已经开始售票!/n/n");goto loop;}
//检验是否存在
y=1;
r *pj=rhead;
while(pj)
{
if(strcmp(pj->num,p->num)==0){y=0;break;}
pj=pj->next;
}
if(y) { printf("/n错误,无该火车号!/n/n");goto loop;}
//-----------------------------------------------------------
printf("/n请输入总票数:/n/n");
scanf("%d",&p->n);
p->n1=p->n;
printf("/n请输入票价:(元)/n/n");
scanf("%f",&p->price);
if(thead==NULL)thead=ti=p;
else{ ti->next=p; ti=p; }
printf("/n/n创建火车票成功!/n/n");
char c;
printf("/n/n您想---继续新建(A)--退出新建(E)---/n");
c=getch();
if(c=='A'||c=='a')goto loop; else return;
}
void showr()
{
r *p;
p=rhead;
printf("/n/n/n █火车信息数据库█ ");
printf("/n|--------------------------------------------------------------------------|");
int i=0;
while(p)
{
i++;
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
//-----------------------
int jy=1;
t*p1=thead;
while(p1)
{ if(strcmp(p1->num,p->num)==0) {printf("/t[已售票]"); jy=0; } p1=p1->next; }
if(jy) printf("/t[未售票]");
//-----------------------
printf("/n|--------------------------------------------------------------------------|");
p=p->next;
}
printf("/n█火车总数: %d ",i);
printf("/n|--------------------------------------------------------------------------|/n/n/n/n/n/n");
}
void showt()
{
printf("/n/n/n █火车票信息数据库█ ");
printf("/n|--------------------------------------------------------------------------|");
int i=0;
t*p=thead;
while(p)
{ i++;
printf("/n|车号:%s 票价:%f 剩余:%d 总数:%d 已卖:%d",p->num ,p->price ,p->n1 ,p->n,p->n-p->n1);
printf("/n|--------------------------------------------------------------------------|");
p=p->next;
}
}
void modifyr()
{
printf("/n/n/n █修改路线█ ");
loop:
printf("/n/n/n请输入要修改的火车号:");
char n[20];
scanf("%s",n);
r *p=rhead;
int y=1;
while(p)
{
if(strcmp(n,p->num)==0)
{y=0;
printf("/n请输入新起始点/n/n");
scanf("%s",p->start);
printf("/n请输入新终点站/n/n");
scanf("%s",p->end);
printf("/n请输入新发车时间/n/n");
scanf("%s",p->time); }
p=p->next;
}
if(y)printf("/n/n错误,要修改的车号不存在!/n/n");
else printf("/n/n修改成功!/n/n");
char c;
printf("/n/n您想---继续修改(A)--退出修改(E)---/n");
c=getch();
if(c=='A'||c=='a')goto loop;else return;
}
void delr()
{
printf("/n/n/n █删除路线█ ");
loop:
printf("/n/n/n请输入要删除的火车号:");
char n[20];
scanf("%s",n);
r *p=rhead,*p1=rhead;
int y=0;
int jy=1;
while(p)
{
if(strcmp(n,p->num)==0)
{
//检验-----------------------------------------------------------
t *p2=thead;
while(p2)
{
if(strcmp(p->num,p2->num)==0&&p2->n!=p2->n1)
printf("/n/n错误,已售票,无法删除!!/n/n");
p2=p2->next;
}
//检验---------------------------------------------------------
jy=0;
if(p==rhead)rhead=rhead->next;
else p1->next=p->next;
break;
}
y++;
if(y>1)p1=p1->next;
p=p->next;
}
if(jy)printf("/n/n错误,要删除的车号不存在!/n/n");
else printf("/n/n删除成功!/n/n");
char c;
printf("/n/n您想---继续删除(A)--退出删除(E)---/n");
c=getch();
if(c=='A'||c=='a')goto loop;else return;
}
void lookr()
{
char c,m[20];
do
{//do的开始。
printf("/n/n/n [火车查询菜单]");
printf("/n|----------------------------------|");
printf("/n| 请选择查询方式: |");
printf("/n|----------------------------------|");
printf("/n| A[ 火车号查询 ] |");
printf("/n|----------------------------------|");
printf("/n| B[ 起始地查询 ] |");
printf("/n|----------------------------------|");
printf("/n| C[ 目的地查询 ] |");
printf("/n|----------------------------------|");
printf("/n| D[ 退 出 ] |");
printf("/n|----------------------------------|");
r *p=rhead;
c=getch();
int y;
switch (c)
{
//switch的开始
case 'A':
case'a':
y=1;
printf("/n/n请输入要查找的火车号/n/n");
scanf("%s",m);
while(p)
{
if(strcmp(p->num,m)==0)
{y=0;
printf("/n|--------------------------------------------------------------------------|");
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
//检验
int jy=1;
t*p1=thead;
while(p1)
{
if(strcmp(p1->num,p->num)==0) { printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }
p1=p1->next; }
if(jy) printf("/t[未售票]");
//检验
printf("/n|--------------------------------------------------------------------------|");
}
p=p->next;
}
if(y) printf("失败,您查询的火车不存在!/n/n");
break;
case'B':
case'b':
y=0;
printf("/n/n请输入要查找的起始地/n/n");
scanf("%s",m);
while(p)
{
if(strcmp(p->start,m)==0)
{y=0;
printf("/n|--------------------------------------------------------------------------|");
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
//检验
int jy=1;
t*p1=thead;
while(p1)
{
if(strcmp(p1->num,p->num)==0) { printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }
p1=p1->next; }
if(jy) printf("/t[未售票]");
//检验
printf("/n|--------------------------------------------------------------------------|");
}
p=p->next;
}
if(y) printf("失败,您查询的火车不存在!/n/n");
break;
case'C':
case'c':
y=0;
printf("/n/n请输入要查找的终点站/n/n");
scanf("%s",m);
while(p)
{
if(strcmp(p->end,m)==0)
{y=0;
printf("/n|--------------------------------------------------------------------------|");
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
//检验
int jy=1;
t*p1=thead;
while(p1)
{
if(strcmp(p1->num,p->num)==0) { printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0; }
p1=p1->next; }
if(jy) printf("/t[未售票]");
//检验
printf("/n|--------------------------------------------------------------------------|");
}
p=p->next;
}
if(y) printf("失败,您查询的火车不存在!/n/n");
break;
}//switch的结束
}while(c!='D'&&c!='d');
}
void sell()
{
printf("/n/n/n [火车售票]");
char m[20];
int y=1;
printf("/n/n请输入要购买的火车号/n/n");
scanf("%s",m);
r *p=rhead;
while(p)
{
if(strcmp(p->num,m)==0)
{y=0;
printf("/n|--------------------------------------------------------------------------|");
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
int jy=1;
t*p1=thead;
while(p1)
{
if(strcmp(p1->num,p->num)==0)
{
printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0;
if(p1->n1==0){printf("/n/n错误,您要购买的火车号已经售完!/n/n");goto loop;}
loop1:
printf("/n/n请输入要购买的数量:/n/n");
int nn;
scanf("%d",&nn);
if(nn>p1->n1){printf("/n/n错误,您要购买的数量不足!/n/n");goto loop1;}
else{p1->n1-=nn;printf("/n/n请付%f元!",p1->price*nn);printf("/n/n买票操作成功!/n/n");goto loop;}
}
p1=p1->next; }
if(jy) printf("/t[未售票]");
//检验
printf("/n|--------------------------------------------------------------------------|");
}
p=p->next;
}
if(y) printf("失败,您查询的火车不存在!/n/n");
loop:;
}
void back()
{
printf("/n/n/n [火车退票]");
char m[20];
int y=1;
printf("/n/n请输入要退票的火车号/n/n");
scanf("%s",m);
r *p=rhead;
while(p)
{
if(strcmp(p->num,m)==0)
{y=0;
printf("/n|--------------------------------------------------------------------------|");
printf("/n|车号:%s 路线: %s---------->%s 发车时间:%s",p->num ,p->start ,p->end ,p->time);
int jy=1;
t*p1=thead;
while(p1)
{
if(strcmp(p1->num,p->num)==0)
{
printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p1->n ,p1->n1 ,p1->n-p1->n1 ); jy=0;
if(p1->n1==p1->n){printf("/n/n错误,您要退的火车号未起售!/n/n");goto loop;}
loop1:
printf("/n/n请输入要退票的数量:/n/n");
int nn;
scanf("%d",&nn);
if(nn+p1->n1>p1->n){printf("/n/n错误,您要退的数量有误!/n/n");goto loop1;}
else{p1->n1+=nn;printf("/n/n请收%f元!",p1->price*nn);printf("/n/n退票操作成功!/n/n");goto loop;}
}
p1=p1->next; }
if(jy) printf("/t[未售票]");
//检验
printf("/n|--------------------------------------------------------------------------|");
}
p=p->next;
}
if(y) printf("失败,您查询的火车不存在!/n/n");
loop:;
}
void add()
{
printf("/n/n/n [添加车票] ");
char m[20];
printf("/n/n请输入要增加的火车号/n/n");
scanf("%s",m);
int y=1;
t*p=thead;
while(p)
{
if(strcmp(m,p->num)==0)
{ y=0;
printf("/n 总票数: %d 剩余票数 %d 已卖票数:%d ",p->n ,p->n1 ,p->n-p->n1 );
loop1:
printf("/n/n请输入要增加的数量:/n/n");
int nn;
scanf("%d",&nn);
if(nn<0){printf("/n/n错误,您的输入为负!/n/n");goto loop1;}
else{p->n1+=nn;p->n+=nn;printf("/n/n增加后总票数为%d,剩余票数为%d!/n/n",p->n,p->n1);printf("/n/n增加车票操作成功!/n/n");break;}
}
p=p->next;
}
}
void stop()
{
printf("/n/n/n [停止售票] ");
char m[20];
printf("/n/n请输入要停止售票的火车号/n/n");
scanf("%s",m);
int y=1;
t*p=thead,*q;
if(p==NULL) {printf("/n/n无该文件!/n/n");goto loop;}
if(strcmp(m,p->num)==0){thead=thead->next;free(p);goto loop;}//为首结点时
while(p)
{
if(strcmp(m,p->next->num)==0)
{ q=p->next;break;}
p=p->next;
}
p->next=q->next;
free(q);
loop:;
printf("/n/n%s停止售票成功/n/n",m);
}
void saver()
{
FILE * fp;
fp=fopen("route.txt","w");
r *p=rhead;
int i=0;
while(p)
{
i++;
fwrite(p,sizeof(r),1,fp);
p=p->next;
}
fclose(fp);
printf("/n/n保存%d个火车信息成功!/n",i);
}
void savet()
{
FILE * fp;
fp=fopen("ticket.txt","w");
t *p=thead;
int i=0;
while(p)
{
i++;
fwrite(p,sizeof(t),1,fp);
p=p->next;
}
fclose(fp);
printf("/n/n保存%d个火车票信息成功!/n",i);
}
void clear()
{
r *p=rhead;
while(p)
{
r *temp=p->next;
free(p);
p=temp;
}
rhead=NULL;
printf("/n/n清空火车票路线信息成功!/n");
r *p1=rhead;
while(p1)
{
r *temp=p1->next;
free(p1);
p1=temp;
}
rhead=NULL;
printf("/n/n清空火车票信息成功!/n");
}
void show1()
{
printf("/n |----------------------------------------|");
printf("/n | █主 菜 单 █ |");
printf("/n |----------------------------------------|");
printf("/n | A 火 车 查 询 |");
printf("/n |----------------------------------------|");
printf("/n | B 购 买 车 票 |");
printf("/n |----------------------------------------|");
printf("/n | C 退 回 车 票 |");
printf("/n |----------------------------------------|");
printf("/n | D 系 统 管 理 |");
printf("/n |----------------------------------------|");
printf("/n | E 清 空 数 据 |");
printf("/n |----------------------------------------|");
printf("/n | F 退 出 程 序 |");
printf("/n |----------------------------------------|");
printf("/n | 请您选择一个任务 |");
printf("/n |----------------------------------------|/n/n/n");
}
void show2()
{
printf("/n |--------------------------- -|");
printf("/n | █管 理 菜 单█ |");
printf("/n |-----------------------------|");
printf("/n | A 增 加 路 线 |");
printf("/n |-----------------------------|");
printf("/n | B 修 改 路 线 |");
printf("/n |-----------------------------|");
printf("/n | C 新 建 车 票 |");
printf("/n |-----------------------------|");
printf("/n | D 增 加 车 票 |");
printf("/n |-----------------------------|");
printf("/n | E 取 消 路 线 |");
printf("/n |--------------------------- -|");
printf("/n | F 退 出 程 序 |");
printf("/n |----------------------------|");
printf("/n | 请您选择一个任务 |");
printf("/n |----------------------------|/n/n/n");
}
void show()
{
printf("/n |--------------------------- -|");
printf("/n | █查 询 菜 单█ |");
printf("/n |-----------------------------|");
printf("/n | A 查 询 火 车 |");
printf("/n |-----------------------------|");
printf("/n | B 查 询 车 票 |");
printf("/n |-----------------------------|");
printf("/n | C 具 体 查 询 |");
printf("/n |-----------------------------|");
printf("/n | D 退 出 程 序 |");
printf("/n |-----------------------------|/n/n");
}
void main()
{
initialr();
initialt();
char c1;
do {//do 1
show1();
c1=getch();
switch ( c1 )
{//switch
case 'a':
case 'A':
char c;
do{
show();
c=getch();
switch(c)
{
case 'a':
case 'A':showr();break;
case 'b':
case 'B':showt();break;
case 'c':
case 'C':lookr();break;
case 'd':
case 'D':break;
}
}while(c!='D'&&c!='d');
break;
case 'b':
case 'B':sell();break;
case 'c':
case 'C':back();break;
case 'd':
case 'D':
char c2;
do{
show2();
c2=getch();
switch ( c2)
{
case 'a':
case 'A':newr();break;
case 'b':
case 'B':modifyr();break;
case 'c':
case 'C':newt();break;
case 'd':
case 'D':add();break;
case 'e':
case 'E': stop();break;
case 'f':
case 'F': break;
}
}while(c2!='f'&&c2!='F');
break;
case 'e':
case 'E':clear();break;
case 'f':
case 'F': break;
}//switch
}//do1
while(c1!='f'&&c1!='F');
saver();
savet();
printf("/n/n ★ 谢谢您的使用!★");
}
火车售票系统设计 c语言,C语言火车售票系统相关推荐
- 河南理工大学c语言报告封面,河南理工大学图书信息管理系统设计_纯c语言课程设计.doc...
河南理工大学图书信息管理系统设计_纯c语言课程设计 C语言课程设计报告 题 目:图书信息管理系统设计 河南理工大学计算机学院 目 录 第一章 题目与要求 1.1 问题提出1 1.2 本系统涉及的知识点 ...
- c语言售票系统主要函数,c语言课设电影院售票系统.docx
struct inf { char rate[20]; char name[20]; int time_hour; int time_min; int seat; int sell; }inf[10] ...
- C语言课程设计 - 火车票预订系统
C语言课程设计 - 火车票预订系统 文件介绍 代码 main.c(全) mymac.h(全) database.c(不全) mainWindow.c (全) user.c (不全) manager.c ...
- java毕业设计C语言程序设计》在线自学习系统Mybatis+系统+数据库+调试部署
java毕业设计C语言程序设计>在线自学习系统Mybatis+系统+数据库+调试部署 java毕业设计C语言程序设计>在线自学习系统Mybatis+系统+数据库+调试部署 本源码技术栈: ...
- 考试自动评分系统C语言改错,基于XML结构的C语言考试的自动评分系统.doc
基于XML结构的C语言考试的自动评分系统 摘 要:在C程序设计语言考试中为了解决定位难.一题多解和对于主观题没有统一的评价标准的情况,对考试系统中客观题和程序题的评分方法进行了研究.在比较结果的评分基 ...
- c语言主界面设计菜单系统,c语言界面设计代码的操作步骤,你学会了吗
学计算机的人都知道C语言,而这也是非常常用的一种计算机编程语言.其实c语言运用得当,完全可以编程很多设计代码,帮助你进行界面设计.今天就让小编为大家介绍c语言界面设计. c语言界面设计代码的操作步骤 ...
- 航班系统C语言程序流程图,飞机订票系统(C语言代码及流程图)
飞机订票系统(C语言代码及流程图) 目录 第一部分 源程序---------------------------------------------------3 第二部分 函数流程图-------- ...
- c语言点餐系统毕业设计任务书,毕业设计(论文)-基于c语言的智能点餐系统的设计与实现.doc...
综合实践(论文) 题 目 基于C语言的智能点餐系统的设计与实现 学 院 通信与电子工程学院 专业班级 学生姓名 指导教师 成 绩 2013年 月 日 continually developing an ...
- 机票退订c语言程序,c语言程序设计告飞机票预订系统.doc
c语言程序设计告飞机票预订系统 目录 目录i 1课程设计的目的1 2需求分析1 2.1设计一个飞机订票系统,完成以下功能1 2.2该系统中用到的数据结构1 3概要设计2 3.1总体功能模块2 3.1. ...
- 为什么我们需要一门新语言——Go语言
编程语言已经非常多,偏性能敏感的编译型语言有 C.C++.Java.C#.Delphi和Objective-C等,偏快速业务开发的动态解析型语言有 PHP.Python.Perl.Ruby.JavaS ...
最新文章
- 生物学的机器学习:使用K-Means和PCA进行基因组序列分析 COVID-19接下来如何突变?...
- Overlay 网络 — Overview
- Maven-Dependency Mechanism
- PostgreSQL数据库修改sql表的方法汇总
- python编程入门单例_python实现单例模式怎么写啊?
- 密码与确认密码自动验证html,HTML确认密码
- verify code
- java 接口 白名单,SpringBoot HTTP接口跨域调用及白名单实现
- Java程序员需要了解的几个开源协议介绍
- Mac苹果Time Machine 备份速度太慢的解决方法!
- 翻译:iOS上的MVVM + RxSwift架构对比 MVC,MVVM,MVP和VIPER
- 利用octave求矩阵的转置
- 主键和外键(MySQL)
- Win10环境下VMware安装Mac OS虚拟机并在虚拟机中安装xcode
- 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
- 【NLP】Representation Learning for Natural Language Processing
- ASP.NET MVC+Bootstrap 实现短信验证
- 长尾理论,长尾示意图,读书笔记
- 汉诺塔(Hanoi) ——递归思想
- 计算机歌曲谱凡人歌,歌曲《凡人歌 - (电视剧《碧海情天》主题曲)》歌词及歌词的寓意?...