train订票系统优化最终版

2024-06-15 20:32

本文主要是介绍train订票系统优化最终版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

.h文件#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct train {//车次的属性int id;char name[50];int remainTickets;
};struct node {//普通节点的属性struct node *next;struct train * train_inform;	
};struct head {//头节点属性struct node * nd;int fg;
};struct list{//链表的属性struct head * listhead;int len;
};struct list * initList();struct list * createList(struct list * l);struct node * searchTrain(struct list * l,int id);int printNode(struct node * train);int printList(struct list * l);int bookTrain(struct list * l,int id);int returnTrain(struct list * l,int id);struct list * addTainInform(struct list * l);struct list * deleteTainInform(struct list * l,int id);struct list * createAllTrainInform();int login();int userUsage(struct list * l);int administratorUsage(struct list * l);int userMenu(struct list * l);int administratorMenu(struct list * l);.c文件#include "train优化.h"int main()
{login();return 0;
}struct list * initList(){struct list * l;l = (struct list *)malloc(sizeof(struct list));l->listhead = (struct head *)malloc(sizeof(struct head));l->listhead->nd = (struct node *)malloc(sizeof(struct node));l->listhead->nd->train_inform = (struct train *)malloc(sizeof(struct train));l->listhead->nd->next=NULL;l->len=0;return l;
}struct list * createList(struct list * l){int id;char name[50];int remainTickets;struct node * p, * last;last=l->listhead->nd;printf("依次输入:列车id号,名称,剩余票数(id==-1终止!)\n");scanf("%d%s%d",&id,&name,&remainTickets);while(id!=-1){p=(struct node *)malloc(sizeof(struct node));p->train_inform=(struct train *)malloc(sizeof(struct train));p->train_inform->id=id;strcpy(p->train_inform->name,name);p->train_inform->remainTickets=remainTickets;l->len++;last->next=p;  last=p;  p->next=NULL;scanf("%d%s%d",&id,&name,&remainTickets);}return l;
}struct node * searchTrain(struct list * l,int id){//查询,返回节点信息struct node * p;p = l->listhead->nd;while(p!=NULL){if(p->train_inform->id==id){break;}p=p->next;}return p;
}int printNode(struct node * train){//打印节点信息if(train!=NULL){printf("列车id: %d\n",train->train_inform->id);printf("列车名称:%s\n",train->train_inform->name);printf("剩余票数:%d\n",train->train_inform->remainTickets);}else{printf("系统内无此列车信息!\n");}return 0;
}int printList(struct list * l){struct node * p;p = l->listhead->nd->next;while(p!=NULL){printNode(p);p=p->next;}return 0;
}int bookTrain(struct list * l,int id){//订票struct node * p;p = l->listhead->nd;while(p!=NULL){if(p->train_inform->id==id){p->train_inform->remainTickets--;break;}p=p->next;}printNode(p);return 0;
}int returnTrain(struct list * l,int id){//退票struct node * p;p = l->listhead->nd;while(p!=NULL){if(p->train_inform->id==id){p->train_inform->remainTickets++;break;}p=p->next;}printNode(p);return 0;
}struct list * addTainInform(struct list * l){int id;char name[50];int remainTickets;struct node * p, * last , * check;last = l->listhead->nd;while(last->next!=NULL){last=last->next;}printf("依次输入:列车id号,名称,剩余票数!\n");scanf("%d%s%d",&id,&name,&remainTickets);check = l->listhead->nd;while(check!=last){check=check->next;if(id==check->train_inform->id||strcmp(name,check->train_inform->name)==0){printf("添加失败!id号或列车名称重复!\n");return l;}}p=(struct node *)malloc(sizeof(struct node));p->train_inform=(struct train *)malloc(sizeof(struct train));p->train_inform->id=id;strcpy(p->train_inform->name,name);p->train_inform->remainTickets=remainTickets;l->len++;last->next=p;  last=p;  p->next=NULL;printf("%s列车信息已添加!\n",p->train_inform->name);return l;
}struct list * deleteTainInform(struct list * l,int id){struct node * p;p = l->listhead->nd;while(p!=NULL){if(p->train_inform->id==id){break;}p=p->next;}if(l->listhead->nd->next==NULL){printf("列车信息为空!删除失败!\n");}else{p = l->listhead->nd->next;l->listhead->nd->next=p->next;printf("%s列车信息被删除!\n",p->train_inform->name);free(p);}return l;
}struct list * createAllTrainInform(){struct list * l;l=initList();printf("请输入列车原始信息!\n");l = createList(l);return l;
}int login(){int x;struct list * l;l = createAllTrainInform();printf("请登录!\n1.管理员登录 2.用户登录\n");scanf("%d",&x);switch(x){case 1:administratorUsage(l);break;case 2:userUsage(l);break;default:return 0;}return 0;
}int userUsage(struct list * l){//打印用户提示界面printf("请按提示输入完成操作!\n");printf("1.查询车次信息\n");printf("2.订票\n");printf("3.退票\n");printf("4.退出系统\n");userMenu(l);return 0;
}int administratorUsage(struct list * l){//打印管理员提示界面int pass;
loop:	printf("请输入管理员密码:");scanf("%d",&pass);if(pass==123456){printf("请按提示输入完成操作!\n");printf("1.查询车次信息\n");printf("2.增加车次信息\n");printf("3.删除车次信息\n");printf("4.打印所有车次信息\n");printf("5.退出系统\n");administratorMenu(l);}else{printf("密码错误!请重新输入!\n");goto loop;}return 0;
}int userMenu(struct list * l){int x,id;int k=1;struct node * p;while(k){printf("请输入序列号:");scanf("%d",&x);switch(x){case 1:printf("输入所要查询的列车的id号:");scanf("%d",&id);p = searchTrain(l,id);if(p==NULL){printf("//\n");break;}printNode(p);printf("//\n");break;case 2:printf("输入所要订票的列车的id号:");scanf("%d",&id);bookTrain(l,id);printf("//\n");break;case 3:printf("输入所要订票的列车的id号:");scanf("%d",&id);bookTrain(l,id);printf("//\n");break;case 4:k=0;printf("已退出系统……\n");printf("//\n");break;default:return 0;}}return 0;
}int administratorMenu(struct list * l){int x,id;int k=1;struct node * p;while(k){printf("请输入序列号:");scanf("%d",&x);switch(x){case 1:printf("输入所要查询的列车的id号:");scanf("%d",&id);p = searchTrain(l,id);printNode(p);printf("//\n");break;case 2:printf("添加列车信息!\n");l=addTainInform(l);printf("//\n");break;case 3:printf("输入所要删除的列车的id号:");scanf("%d",&id);l=deleteTainInform(l,id);printf("//\n");break;case 4:printList(l);printf("//\n");break;case 5:k=0;printf("已退出系统……\n");printf("//\n");break;default:return 0;}}return 0;
}

这篇关于train订票系统优化最终版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064498

相关文章

系统优化要点

这是常用的系统优化要考虑的点,在系统设计和代码评审以及代码优化时加以考虑,最大限度提高系统性能:  1. 优化算法,选择合适高效算法,降低不必要递归,循环,多层循环嵌套,避免循环内初始化等。  2. 避免申请过多不必要的内存  3. 及时释放资源,降低资源使用时间,包括内存,IO,网络,数据库等。  4. 使用缓存:缓存常用的,不易变化的。  5. 慎用数据库锁。确

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—11.5实例使用-Cinder存储服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

VC环境下字符串转整型最终版

剑指Offer 字符串转化为整型 今天闲来无事,就搜了下这方面的知识,结果发现,这个题就是一个经典的算法题,在剑指Offer里已经详细分析了 直接上代码了,运行可靠,如果大家继续深入理解的话,参考这本书:《剑指Offer——名企面试官精讲典型编程题》 博主:http://blog.csdn.net/cadcisdhht/article/details/36875535 ---------

基于Spring Boot的火车订票管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:JAVA语言 + Spring Boot框架 工具:IDEA/Eclipse、Navicat、Tomcat 系统展示 首页 管理员界面 用户购票 订单管理 摘要 随着网络技术的不断发展,火车订票管理系统逐渐由传统的线下操作转变为线上服