火车票务管理系统C语言
火车售票系统c课程设计
火车售票系统c 课程设计一、课程目标知识目标:1. 学生能理解火车售票系统的基本原理和功能需求,掌握系统设计的基本流程。
2. 学生能运用所学编程语言(如C语言)实现售票系统的功能模块,如用户界面、票务查询、购票、支付等。
3. 学生了解数据库原理,能运用数据库技术进行票务数据存储和管理。
技能目标:1. 学生掌握系统分析与设计的方法,能运用结构化分析方法进行问题求解。
2. 学生掌握C语言编程技巧,能编写规范、高效的代码实现系统功能。
3. 学生具备团队协作能力,能在小组合作中发挥个人特长,共同完成项目任务。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机科学的兴趣和热情,提高信息素养。
2. 学生在项目实践中,学会分析问题、解决问题,增强自信心和自主学习能力。
3. 学生树立正确的价值观,认识到科技对社会发展的作用,关注社会热点问题。
课程性质:本课程为信息技术课程,旨在通过火车售票系统项目设计,培养学生编程能力、团队协作能力和问题解决能力。
学生特点:学生具备一定的C语言基础,对编程有一定兴趣,喜欢动手实践,但个别学生可能缺乏团队协作经验。
教学要求:注重理论与实践相结合,以项目为导向,引导学生主动探究,培养其编程技能和实际操作能力。
同时,关注学生情感态度的培养,使其在学习过程中形成积极的价值观。
通过分解课程目标为具体的学习成果,便于教学设计和评估,确保课程目标的达成。
二、教学内容1. 火车售票系统概述:介绍火车售票系统的基本原理、功能模块及系统架构,关联课本第三章内容。
- 系统需求分析- 功能模块划分- 系统架构设计2. C语言编程基础:回顾C语言基础知识,为后续编程实践打下基础,关联课本第二章内容。
- 数据类型与运算符- 控制结构(分支、循环)- 函数与数组3. 数据库原理与应用:介绍数据库基本概念,学会运用数据库进行票务数据管理,关联课本第五章内容。
- 数据库基本概念- 数据表设计与创建- SQL语句操作4. 系统功能实现:根据需求分析,利用C语言和数据库技术实现火车售票系统功能,关联课本第六章内容。
c语言课程设计车票管理系统
c语言课程设计车票管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的车票管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构;–理解车票管理系统的业务逻辑和需求;–了解软件开发的基本流程。
2.技能目标:–能够使用C语言编写程序,实现车票管理系统的基本功能;–能够进行程序调试和优化,提高程序的性能和可维护性;–能够运用面向对象编程思想,设计合理的软件架构。
3.情感态度价值观目标:–培养学生的编程兴趣,增强自信心;–培养学生团队合作精神和自主学习能力;–培养学生对软件行业的热爱和对编程事业的敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、车票管理系统的需求分析、系统设计、编码实现和测试等。
具体安排如下:1.C语言基础知识:–数据类型、变量和常量;–运算符和表达式;–控制语句;–函数和数组。
2.车票管理系统的需求分析:–理解车票管理系统的业务流程;–分析系统需求,确定功能模块。
3.系统设计:–设计系统的数据结构和算法;–设计系统的界面和交互逻辑。
4.编码实现:–使用C语言编写程序,实现车票管理系统的基本功能;–进行程序调试和优化。
5.测试与总结:–对程序进行测试,确保功能正确;–总结学习过程,提高编程能力。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和车票管理系统的业务逻辑,使学生掌握相关知识。
2.案例分析法:分析实际案例,使学生更好地理解车票管理系统的需求和设计。
3.实验法:让学生动手编写程序,培养实际操作能力和编程技能。
四、教学资源本课程所需的教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》;2.参考书:《C语言编程思想》或《C语言实例教程》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等。
以上教学资源将有助于实现本课程的教学目标,提高学生的编程能力,为学生的职业发展奠定基础。
C语言课程设计报告书-火车票务管理系统
延边大学工学院C语言课程设计报告书题目:火车票务系统(A)班级:学号:姓名:指导教师:二○○九年七月一.系统功能的总体描述本系统要求实现火车票务基本信息的查询,订票、售票、退票、车次查询等。
功能要求实现:火车票的基本信息:符合条件的车次名称、开时、到时、历时、里程、票价(硬座、软座、硬卧(上、中、下)软卧(上、中、下))车次类型、站名的查询显示,统计,添加(新加车次)、更改(售出票后需修改所剩票数)和删除(已发车次信息)等。
二、系统基本功能本系统可实现火车票务信息的管理和查询等功能。
它的基本功能是建立火车票信息链表,存储火车票的基本信息,实现对已有车次票务的查询、预订、售票、退票等业务的保存、修改等。
软件输出输入形式:软件提示信息丰富、容易理解,重点是依据火车票务的特点有明显的即时性和快速性。
测试数据要求:本系统的测试数据当输入想要到达的目的地信息时输出符合的车次、到站时间、开车时间以及终到站时间,车次名称、开时、到时、历时、车次类型、站名必须用字符串数据;里程、车票剩余情况、票价情况必须用整型数据。
对车票的基本信息进行查找时按目的地、时间和车次三种查找方式查找。
测试数据要有即事性、快速性。
三、系统具体分析(一)所需的功能1 输入功能:录入目的地信息2 输出功能:查看所查信息3 查询功能:查询符合车次及相关信息4修改功能:更新系统信息5 删除功能:对已发车辆信息删除6 票务功能:负责售票和退票业务7安全功能:负责管理员密码审核、修改等安全(二)系统功能模块划分(三)各模块的功能描述——主菜单模块功能————子菜单模块功能描述——(四)函数调用过程四、系统核心算法1、ccchanxun函数——通过车次查询列车信息输入:要查询车次输出:相关信息Step1:输入要查询的列车号char[6](在中国列车号有数字和字母组成,最长为5个字符,如:k8371因此为节省内存只需定义6字符长度的数组) Step2:用c与链表中的列车号(*p).lchao相比较判断strcmp((*p).lchao,c)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻车次ccchanxun函数N-S流程图2、mddcharxun函数——通过目的地查询最终能到达目的地的全部车次,以及全部相关信息输入:要查询目的地输出:相关信息Step1:输入要查询的目的地char[20]Step2:用c与链表中的终到站(*p).zhongdaozhan相比较判断strcmp((*p).zhongdaozhan,m)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(全部车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻目的地。
C语言火车票管理系统 (1)
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>#define N 1000typedefstruct TICKET //定义新结构体TICKET {char num[10]; //车次char hour[3];char min[3];char from[10];char to[10];float hours;int max; //车载容量int now; //已售票数}CLASS;int class_num=0;CLASS records[N];int system_time();void message();void ShowTable1();void ShowTable2(i nt i);void Display();void add();void save();void load(); // 按班次查询void search(); //查询void change(); //修改void quit(); //退出void buyticket(); //售票void deleteticket(); //取消int menu_select(); //菜单int whether(int); //判断购买时间void find(char s1[],char s2[]); //按起点终点查询void deletemessage(); //删除int findnum(char s1[]); //班次查询void get(int,int); //修改及增加班次char*menu[]={" 欢迎使用车票查询系统","\n*******************菜单***********************", "\n 1. 录入班次","\n 2. 浏览班次信息","\n 3. 查询路线","\n 4. 增加班次","\n 5. 售票","\n 6. 退票","\n 7. 修改班次","\n 8. 删除班次","\n 9. 退出"};int main(){system("cls");while(1){switch(menu_select()) //菜单{case 1: message();b reak;case 2: Display();b reak;case 3: search();b reak;case 4: add();break;case 5: buyticket();break;case 6: deleteticket();break;case 7: change();b reak;case 8: deletemessage();b reak;case 9: quit();break;}}}int menu_select() //菜单{char s[5];int c,i;system("cls");for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单}i=0;while(c<0||c>9){printf("\n");printf("\n请输入选项(1-9): ");scanf("%s",s);c=atoi(s);}//输出菜单return c;}void message() //录入{int i=0,j=5,h;char s[5];FILE *fp; //定义文件型指针变量system("cls"); //刷屏if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL) //fopen打开文件{printf("增加信息\n");printf("请输入任意键返回\n");scanf("%s",s);i=1;}if(i==0){system("cls"); //刷屏printf("请输入班次总数:\n");scanf("%d",&class_num); //指向班次指针system("cls"); //刷屏for(i=0;i<class_num;i++){system("cls"); //刷屏printf("请输入%d班次信息:\n",i+1);h=-1;for(;h!=i;) ///循环输出{printf("请输入班次:\n");scanf("%s",records[i].num);for(h=0;h<i;h++)if(strcmp(records[h].num,records[i].num)==0){printf("该班次已存在\n");break;}}get(i,j); //修改及增加班次j=5;}save(); //调用保存函数}}/*******************************显示所有函数********************************/void Display() //显示所有函数{int i,j;system("cls"); //刷屏load(); // 按班次查询ShowTable1();for(i=0,j=0;i<class_num;i++,j+=2) //按班次顺序输出{if(whether(i)) //判断时间是否超出printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min, records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);elseprintf("|%10s| 已发车|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);}ShowTable2(j);printf("\n按任意键继续\n");getch();}void ShowTable1(){int i=2;system("cls"); //刷屏printf(" 班次信息\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次| 发车时间| 起点站| 终点站|行车时间|额定载量| 已售票|\n");}void ShowTable2(i nt i){printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");}void search() //查询班次{int i;char s1[10]={'\0'},s2[10]={'\0'};system("cls"); //刷屏printf("1. 按班次查询\n");printf("2. 按终点站查询\n");printf("3. 退出\n");printf("请选择(1-3):\n");scanf("%d",&i);load(); //按班次查询switch(i){case 1: printf("请输入要查询的班次:\n");scanf("%s",s1);find(s1,s2);break;case 2: printf("请输入要查询终点站:\n");scanf("%s",s2);find(s1,s2);break;case 3: break;default : printf("输入错误!\n");break;}printf("按任意键继续\n");getch();}void find(char s1[],char s2[]){int i,h=0,m;ShowTable1();if(s2[0]=='\0')m=1;else m=0;for(i=0;i<class_num;i++)if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0){printf("\n");printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);h+=2;if(m==1)break;}ShowTable2(h);if(h==0)printf("查找的班次不存在\n");}void add(){int i,j=5;load();system("cls");printf("1. 增加班次\n");printf("2. 返回\n");printf("请选择(1-2)\n");scanf("%d",&i);if(i==1){system("cls");printf("1. 输入要增加的班次:\n");scanf("%s",records[class_num].num);for(i=0;i<class_num;i++)if(strcmp(records[class_num].num,records[i].num)==0){printf("输入错误\n");getch();break;}if(i==class_num){get(i,j);class_num++;save();}}}void buyticket(){int i;char num[10];system("cls");printf("1. 售票\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){load(); // 按班次查询search();printf("请输入要订票的班次(若无请输入0):\n");scanf("%s",num);for(i=0;i<class_num;i++)if(strcmp(num,records[i].num)==0)if(records[i].max>records[i].now&&whether(i)==1){records[i].now++;printf("通向%s班次为%s的票订票成功\n",records[i].to,records[i].num);save();getch();break;}else{printf("该班次已满或已发出!\n");getch();}}}void deleteticket(){int i;char num[10];system("cls");printf("1. 退票\n");printf("2. 返回\n");printf("请选择(1-2)\n:");scanf("%d",&i);if(i==1){system("cls");load();printf("请输入要退票的班次:\n");scanf("%s",num);i=findnum(num);if(strcmp(num,records[i].num)==0)if(whether(i)){printf("是否确认");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){records[i].now--;printf("退票成功\n");save();getch();}}else{printf("该班车已发出,无法退票\n");getch();}if(i==class_num){printf("输入错误\n");getch();}}}void change(){char num[10],s[10];int h=0,j=13,i;load();system("cls");printf("请输入要修改的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("确认修改\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y'){get(i,j);save();}}}void deletemessage(){int i,h=0;char num[10];system("cls");printf("1. 删除班次\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){system("cls");printf("请输入要删除的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("是否确认\n");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){for(;i<class_num-1;i++)records[i]=records[i+1];class_num--;save();printf("删除成功\n");getch();}}}}int findnum(char s1[]){int i,h=0;ShowTable1();for(i=0;i<class_num;i++){if(strcmp(s1,records[i].num)==0){printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i] .now);h+=2;break;}}ShowTable2(h);return i;}void save(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","wb"))==NULL) //打开文件{printf("文件打开错误!\n");exit(0);}if((fp2=fopen("d:车票管理系统0.dat","wb"))==NULL){printf("文件打开错误!\n");exit(0);}fwrite(&class_num,sizeof(int),1,fp2);fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void load(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","rb"))==NULL){system("cls");printf("文件打开错误\n");getch();exit(0);}if((fp2=fopen("d:车票管理系统0.dat","rb"))==NULL){system("cls");printf("文件打开错误\n");getch();exit(0);}fread(&class_num,sizeof(int),1,fp2);fread(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void quit(){char s[5];printf("确认退出\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y')exit(0);}void get(int i,int j){for(;;){printf("请输入发车时间(xx xx)");scanf("%s%s",records[i].hour,records[i].min);if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60& &atoi(records[i].min)>=0))break;else{printf("输入错误\n");getch();}}printf("请输入起点站:\n");scanf("%s",records[i].from);printf("请输入终点站:\n");scanf("%s",records[i].to);printf("请输入行车时间:\n");scanf("%f",&records[i].hours);printf("请输入额定载量:\n");scanf("%d",&records[i].max);for(;;){printf("请输入已售票数:\n");scanf("%d",&records[i].now);if(records[i].now<=records[i].max)break;else{printf("输入错误\n");getch();}}}int whether(int i){struct tm *local;time_t t;t=time(NULL); //NULL在stdio.h中定义为0local=localtime(&t); /////获取当前系统时间if(local->tm_hour<atoi(records[i].hour)||local->tm_hour==atoi(records[i].hour)&&local->tm_min<atoi(records[i].min))//atoi将字符串转换成一个整数值return 1;elsereturn 0;}。
C语言编写车票管理系统(2024)
引言概述:车票管理系统是一种用于管理车票信息,包括购票、退票、查询票务等功能的软件系统。
本文将以C语言为编程语言,详细阐述如何编写一个车票管理系统。
该系统可以方便管理者对车票信息进行操作,同时也提供给用户便捷的购票和查询功能。
正文内容:一、数据库设计1.1数据库表的建立1.2表中字段的设置1.3数据库的连接与操作1.4数据库的备份与恢复1.5数据库的维护与优化二、用户管理2.1用户注册2.2用户登录2.3用户信息修改2.4用户权限管理2.5用户数据备份与恢复三、车票管理3.1车票添加3.2车票查询3.3车票修改3.4车票删除3.5车票排序和筛选四、订单管理4.1订单4.2订单查询4.3订单修改4.4订单删除4.5订单统计和报表五、支付管理5.1支付方式的选择5.2支付状态的更新5.3支付记录的查询5.4退款管理5.5支付安全性保证总结:通过本文详细的阐述,我们了解到了如何使用C语言编写一个车票管理系统。
在系统的开发过程中,数据库设计、用户管理、车票管理、订单管理和支付管理等方面都需要详细考虑。
通过对每个模块的分析和设计,能够使系统更加高效、安全和易用。
在实际开发中,我们还需要根据具体需求进行对系统的优化和完善,保证系统能够满足用户的需求,并且能够稳定运行。
希望本文对您有所帮助,能够指导您在C语言中编写车票管理系统的开发过程。
引言概述:C语言编写车票管理系统是一个涉及到计算机编程技术的项目,旨在帮助车票销售员和管理员更好地管理和控制车票的销售与出票过程。
本文将详细介绍该系统的设计和实现过程,包括系统的功能需求、系统的结构设计、关键代码的实现以及系统的优化与改进。
正文内容:1.功能需求车票管理系统的功能需求包括但不限于:车票销售、车票查询、座位管理、车票退换等。
具体的系统功能要求涉及到对车票信息的录入、查询、修改和删除,车票的座位分配和座位的查询,以及对车票销售记录的统计和报表等功能。
1.1车票销售功能实现车票销售功能是车票管理系统的核心功能之一。
车票管理系统c语言课程设计
车票管理系统c语言课程设计。
一、课程目标知识目标:1. 学生能掌握C语言基础语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解车票管理系统的需求分析,明确系统功能模块;3. 学生能运用C语言编写车票管理系统中各个功能模块的程序代码;4. 学生了解文件操作在车票管理系统中的应用。
技能目标:1. 学生能够运用结构体数组、链表等数据结构实现车票信息的管理;2. 学生能够使用函数实现模块化编程,提高代码的可读性和可维护性;3. 学生通过课程设计,培养分析和解决实际问题的能力;4. 学生能够运用调试工具,找出程序中的错误并进行修正。
情感态度价值观目标:1. 学生通过课程设计,培养对编程的兴趣和热情,提高自主学习能力;2. 学生在团队协作中,学会沟通与分享,培养合作精神;3. 学生在解决实际问题的过程中,体验程序设计的乐趣,增强自信心;4. 学生能够认识到编程在现实生活中的应用价值,激发对计算机科学的热爱。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、控制结构(选择、循环);2. 面向过程编程:函数定义、调用、参数传递、递归;3. 数据结构:数组、结构体、链表;4. 文件操作:文件打开、读写、关闭;5. 车票管理系统功能模块:- 车票查询:按车次、日期、起始站、终点站查询车票信息;- 车票预订:选择车次、座位,录入乘客信息,完成预订;- 车票退订:根据预订记录,进行退票操作;- 车票统计:统计各车次、日期的售票情况;6. 程序调试与优化:调试工具使用,性能分析,代码优化;7. 项目实践:按照需求分析,分阶段完成车票管理系统的设计与实现。
教学内容安排与进度:第一周:C语言基础语法复习;第二周:数据结构、函数定义与调用;第三周:文件操作;第四周:车票管理系统需求分析,功能模块设计;第五周:车票查询、预订模块实现;第六周:车票退订、统计模块实现;第七周:项目调试、优化与测试;第八周:课程总结与项目汇报。
火车票售票系统(C语言顺序存储实现)
⽕车票售票系统(C语⾔顺序存储实现)储备知识:这个程序属于C语⾔基础训练题⽬,所以⽆需太多的复杂的语法和知识;本程序包含知识有:结构体,数组,简单的条件分⽀语句;(⽂章最后有全部代码)附上⼀张程序结构图:接下来就来看看怎么实现的吧1、定义结构体,记录车次信息;typedef struct train_infor{char number[10];//车次char start[20];//始发地char end[20];//终点站int year1,month1,day1,h1,m1;//发车⽇期时间int year2,month2,day2,h2,m2;//到达⽇期时间}train;2、定义⼀些程序中要⽤到的全局变量:int cnum=0;//记录总共有多少个列车信息;train info[10000];//结构体类型的数组⽤来保存所有的车次信息;train users[100][100];//⼆维数组⽤来保存⽤户信息,每⼀⾏可以⽤来表⽰⼀个⽤户的购票信息int vcs[100]={0};//⽤来记录每⼀个⼈⾃⼰账户的票数,初始全为0;3、管理员界⾯函数(这个函数⾥⾯会⽤到⼀些在后⾯才定义到的函数哦!看到不懂得函数可以往后翻翻看):admin_menu();int choose2;while(~scanf("%d",&choose2))//选择对应的操作;{switch(choose2){case1:create();break;case2:print();break;case3:query();break;case4:update();break;case5:insert();break;case6:dele();break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}admin_menu();//每次操作结束后再次打印菜单栏}}4、按上述程序开始建造⽋缺的函数;管理员菜单:void admin_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票信息管理系统 *\n"); printf("***************************************************************\n"); printf("* 1、录⼊⽕车票信息 *\n"); printf("* 2、显⽰⽕车票信息 *\n"); printf("* 3、查询⽕车票信息 *\n"); printf("* 4、修改⽕车票信息 *\n"); printf("* 5、添加⽕车票信息 *\n"); printf("* 6、删除⽕车票信息 *\n"); printf("* 0、退出 *\n");printf("***************************************************************\n"); }5、录⼊⽕车票信息:int sum,i;printf("请输⼊要录⼊的列车信息条数:");scanf("%d",&sum);printf("请依次输⼊车次始发地终点站发车时间(年/⽉/⽇时:分)到达时间(年/⽉/⽇时:分);\n");for(i=cnum;i<cnum+sum;i++)//录⼊信息从cnum开始的原因是避免管理员先进⾏插⼊或添加操作后再来录⼊数据,发⽣覆盖;同时这样可以多次进⾏录⼊操作(在之前的信息下继续添加)scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&inf o[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("录⼊成功!\n");cnum+=sum;return;}6、显⽰⽕车票信息:void print(){if(cnum==0){printf("⽆列车信息!\n");return;}int i;printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<cnum;i++)printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i]. day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;}7、查询⽕车票信息:void query(){int i;printf("请输⼊查询车次:");char ch[10];//记录要查询的车次scanf("%s",ch);for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;//找到后直接结束⽆需再查找}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}8、修改⽕车票信息:int i;printf("请输⼊要修改的车次:");char ch[10];//记录要修改的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏修改for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("该列车原信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);printf("请输⼊新的数据:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&i nfo[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("修改成功!\n");return;//修改后直接结束⽆需再进⾏}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}9、添加⽕车票信息:void insert(){int i=cnum;printf("请输⼊插⼊的信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&info[i] .m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);cnum++;//列车信息总条数加⼀printf("插⼊成功!\n");return;}10、删除⽕车票信息:int i,vis=-1;printf("请输⼊要删除的车次:");char ch[10];//记录要删除的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏删除for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {vis=i;//将要删除的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("⽆此列车信息!\n");return;}else{for(i=vis;i<cnum-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<cnum-1是为了避免最后越界;{info[i]=info[i+1];}printf("删除成功!\n");cnum--;//列车信息总条数减⼀;return;}}11、⽤户界⾯(这个函数⾥⾯也会⽤到⼀些在后⾯才定义到的函数!看到不懂得函数可以往后翻翻看):void user(){int no;printf("请输⼊你的⽤户编码:");scanf("%d",&no);//记录⽤户编码⽤来对应的保存其购票信息user_menu();int choose3;while(~scanf("%d",&choose3))//记录⽤户选择的操作;{switch(choose3){case1:look_up(no);break;case2:out_print(no);break;case3:refund(no);break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}user_menu();}}12、⽤户菜单:void user_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票售票系统 *\n"); printf("***************************************************************\n"); printf("* 1、⽕车票区间查询 *\n"); printf("* 2、打印购票信息 *\n"); printf("* 3、退票 *\n"); printf("* 0、退出 *\n"); printf("***************************************************************\n"); }13、⽕车票区间查询:if(cnum==0){printf("⽆车次信息,请管理员进⾏车次信息录⼊!\n");return;}char starts[20];char ends[20];int cnums=0,i;//记录查询到的车次条数printf("请输⼊查询的起始终⽌区间(空格隔开哦!):\n");scanf("%s %s",starts,ends);for(i=0;i<cnum;i++){if(strcmp(starts,info[i].start)==0&&strcmp(ends,info[i].end)==0){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,i nfo[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);cnums++;}}if(cnums==0){printf("⽆此区间车次信息!\n");return;}else{printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");int choose4;//记录⽤户的选择while(~scanf("%d",&choose4)){switch(choose4){case1:buy(no);break;case2:return;default:printf("请选择有效操作对应编号哦!\n");break;}printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");}}}14、买票:int i;printf("请输⼊你要购票的车次:\n"); char che[10];scanf("%s",che);for(i=0;i<cnum;i++){if(strcmp(che,info[i].number)==0){users[no][vcs[no]]=info[i];vcs[no]++;//该⽤户的购票数加⼀;printf("购票成功!\n");return;}}printf("⽆此列车信息!\n");return;}15、退票:int vis=-1,i;if(vcs[no]==0){printf("你还尚未购票哦!\n");return;}else{printf("你的购票信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}printf("请输⼊退票车次:");char cs[10];scanf("%s",cs);for(i=0;i<vcs[no];i++){if(strcmp(cs,users[no][i].number)==0)//⽐较你所购票的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0{vis=i;//将要退票的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("你尚未购买此列车车票!\n");return;}else{for(i=vis;i<vcs[no]-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<vcs[no]-1是为了避免最后越界;{users[no][i]=users[no][i+1];}printf("退票成功!\n");vcs[no]--;//购票总条数减⼀;return;}}}16、打印购票信息:int i;if(vcs[no]==0){printf("⽆购票记录!\n");return;}else{printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}}}17、主函数部分:int main(){printf("提⽰:整个输⼊过程请严格按照格式,标点均为英⽂!\n");printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");//输⼊1表⽰进⼊管理员界⾯,2进⼊⽤户界⾯int choose1;while(~scanf("%d",&choose1))//记录选择的序号,多组测试{if(choose1==0)break;switch(choose1){case1:admin();break;case2:user();break;default:printf("请选择有效操作对应编号哦!\n");break;}printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");}return0;}18、到此这个程序就可以运⾏了,以上就是各个部分的代码,希望你的程序也可以运⾏了( ̄︶ ̄)在此附上全部代码:#include<stdio.h>#include<stdlib.h>#include<string.h>//定义结构体,记录车次信息typedef struct train_infor{char number[10];//车次char start[20];//始发地char start[20];//始发地char end[20];//终点站int year1,month1,day1,h1,m1;//发车⽇期时间int year2,month2,day2,h2,m2;//到达⽇期时间}train;int cnum=0;//记录总共有多少个列车信息;train info[10000];//结构体类型的数组⽤来保存所有的车次信息;train users[100][100];//⼆维数组⽤来保存⽤户信息,每⼀⾏可以⽤来表⽰⼀个⽤户的购票信息int vcs[100]={0};//⽤来记录每⼀个⼈⾃⼰账户的票数,初始全为0;//录⼊⽕车票信息void create(){int sum,i;printf("请输⼊要录⼊的列车信息条数:");scanf("%d",&sum);printf("请依次输⼊车次始发地终点站发车时间(年/⽉/⽇时:分)到达时间(年/⽉/⽇时:分);\n");for(i=cnum;i<cnum+sum;i++)//录⼊信息从cnum开始的原因是避免管理员先进⾏插⼊或添加操作后再来录⼊数据,发⽣覆盖;同时这样可以多次进⾏录⼊操作(在之前的信息下继续添加)scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&inf o[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("录⼊成功!\n");cnum+=sum;return;}//显⽰⽕车票信息void print(){if(cnum==0){printf("⽆列车信息!\n");return;}int i;printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<cnum;i++)printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i]. day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;}//查询⽕车票信息void query(){int i;printf("请输⼊查询车次:");char ch[10];//记录要查询的车次scanf("%s",ch);for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);return;//找到后直接结束⽆需再查找}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}//修改⽕车票信息void update(){int i;printf("请输⼊要修改的车次:");char ch[10];//记录要修改的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏修改for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {printf("该列车原信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);printf("请输⼊新的数据:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&i nfo[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);printf("修改成功!\n");return;//修改后直接结束⽆需再进⾏}}printf("⽆此列车信息!\n");//如果找到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有找到;return;}//添加⽕车票信息void insert(){int i=cnum;printf("请输⼊插⼊的信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&info[i] .m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);cnum++;//列车信息总条数加⼀printf("插⼊成功!\n");return;}//删除⽕车票信息void dele(){int i,vis=-1;printf("请输⼊要删除的车次:");char ch[10];//记录要删除的车次scanf("%s",ch);//和查询⼀样先找到该列车所在的位置,然后对其进⾏删除for(i=0;i<cnum;i++){if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {vis=i;//将要删除的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("⽆此列车信息!\n");return;}else{for(i=vis;i<cnum-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<cnum-1是为了避免最后越界;{info[i]=info[i+1];}printf("删除成功!\n");cnum--;//列车信息总条数减⼀;return;}}//管理员菜单void admin_menu(){printf("***************************************************************\n"); printf("* 欢迎进⼊⽕车票信息管理系统 *\n"); printf("***************************************************************\n"); printf("* 1、录⼊⽕车票信息 *\n"); printf("* 2、显⽰⽕车票信息 *\n"); printf("* 3、查询⽕车票信息 *\n"); printf("* 4、修改⽕车票信息 *\n"); printf("* 5、添加⽕车票信息 *\n"); printf("* 6、删除⽕车票信息 *\n"); printf("* 0、退出 *\n");printf("***************************************************************\n"); }//管理员界⾯void admin(){admin_menu();int choose2;while(~scanf("%d",&choose2))//选择对应的操作;{switch(choose2){case1:create();break;case2:print();break;case3:query();break;case4:update();break;case5:insert();break;case6:dele();break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}admin_menu();//每次操作结束后再次打印菜单栏}}//买票void buy(int no){int i;printf("请输⼊你要购票的车次:\n");char che[10];scanf("%s",che);for(i=0;i<cnum;i++){if(strcmp(che,info[i].number)==0){users[no][vcs[no]]=info[i];vcs[no]++;//该⽤户的购票数加⼀;printf("购票成功!\n");return;}}printf("⽆此列车信息!\n");return;}//⽕车票区间查询void look_up(int no){if(cnum==0){printf("⽆车次信息,请管理员进⾏车次信息录⼊!\n");return;}char starts[20];char ends[20];int cnums=0,i;//记录查询到的车次条数printf("请输⼊查询的起始终⽌区间(空格隔开哦!):\n");scanf("%s %s",starts,ends);for(i=0;i<cnum;i++){if(strcmp(starts,info[i].start)==0&&strcmp(ends,info[i].end)==0){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,i nfo[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);cnums++;}}if(cnums==0){printf("⽆此区间车次信息!\n");return;}else{printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");int choose4;//记录⽤户的选择while(~scanf("%d",&choose4)){switch(choose4){case1:buy(no);break;case2:return;default:printf("请选择有效操作对应编号哦!\n");break;}printf("------------------------\n");printf("| 是否购票 |\n");printf("------------------------\n");printf("| 1、是 | 2、否 |\n");printf("------------------------\n");}}}//退票void refund(int no){int vis=-1,i;if(vcs[no]==0){printf("你还尚未购票哦!\n");return;}else{printf("你的购票信息:\n");printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}printf("请输⼊退票车次:");char cs[10];scanf("%s",cs);for(i=0;i<vcs[no];i++){if(strcmp(cs,users[no][i].number)==0)//⽐较你所购票的列车信息⼀直到和输⼊的车次相同则找到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0{vis=i;//将要退票的车次的下标保存下来,为后边的删除操作服务;break;//找到后就可以结束循环}}if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查找后还没变说明没有找到该车次所以可以直接结束{printf("你尚未购买此列车车票!\n");return;}else{for(i=vis;i<vcs[no]-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<vcs[no]-1是为了避免最后越界;{users[no][i]=users[no][i+1];}printf("退票成功!\n");vcs[no]--;//购票总条数减⼀;return;}}}//打印购票信息void out_print(int no){int i;if(vcs[no]==0){printf("⽆购票记录!\n");return;}else{printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");for(i=0;i<vcs[no];i++){printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",users[no][i].number,users[no][i].start,users[no][i].end,users[no][i].y ear1,users[no][i].month1,users[no][i].day1,users[no][i].h1,users[no][i].m1,users[no][i].year2,users[no][i].month2,users[no][i].day2,users[no][i].h2,users[no][i]. m2);}}}//⽤户菜单void user_menu(){printf("***************************************************************\n");printf("* 欢迎进⼊⽕车票售票系统 *\n");printf("***************************************************************\n");printf("* 1、⽕车票区间查询 *\n");printf("* 2、打印购票信息 *\n");printf("* 3、退票 *\n");printf("* 0、退出 *\n");printf("***************************************************************\n");}//⽤户界⾯void user(){int no;printf("请输⼊你的⽤户编码:");scanf("%d",&no);//记录⽤户编码⽤来对应的保存其购票信息user_menu();int choose3;while(~scanf("%d",&choose3))//记录⽤户选择的操作;{switch(choose3){case1:look_up(no);break;case2:out_print(no);break;case3:refund(no);break;case0:return;//输⼊0直接退出整个函数default:printf("请选择有效操作对应编号哦!\n");break;}user_menu();}}int main(){printf("提⽰:整个输⼊过程请严格按照格式,标点均为英⽂!\n");printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");//输⼊1表⽰进⼊管理员界⾯,2进⼊⽤户界⾯int choose1;while(~scanf("%d",&choose1))//记录选择的序号,多组测试{if(choose1==0)if(choose1==0)break;switch(choose1){case1:admin();break;case2:user();break;default:printf("请选择有效操作对应编号哦!\n");break;}printf("-------------请选择⾝份-------------\n");printf("| 1、管理员 | 2、⽤户 |\n");printf("| 0、结束程序 |\n");printf("------------------------------------\n");}return0;}。
一个简单的火车票售票管理系统
1 / 18()#include<stdio.h> #include<malloc.h> #define MAX 100 #define N 50typedef struct time //时间类型{int x,y,z;//分别对应年,月,日}TIME;int id;//购票人证件号TIME date;//购票日期}CNODE;typedef struct tnode //车次信息类型{char data;//车次编号struct tnode *lchild,*rchild; CNODE *head; }TNODE;void create();//按车次建立二叉排序树void insert(int );//增加新的车次(二叉排序树的插入)void del();//取消车次(二叉排序树节点删除)void inorder(TNODE *);//中序遍历车次二叉排序树(仅显示车次信息)voidinorder_all(TNODE *);//中序遍历车次二叉排序树(显示车次及售票信息)voidpreorder(TNODE *);//先序遍历车次二叉排序树(仅显示车次信息)TNODE*search();//按车次编号搜索CNODE *insert_c(CNODE *);//插入新的售票信息(单张)2 / 18CNODE *insert_c_more(CNODE *);//插入新的售票信息(批量)CNODE *del_c(CNODE *,CNODE *);//退票处理(删除售票信息)CNODE *search_c(CNODE *,int);//按票号查询void search_c_id(CNODE *,int);//按购票人证件号搜索(限定某车次)void search_c_id_all(TNODE *,int);//按购票人证件号搜索(所有车次)void search_date(CNODE *,TIME);//按购票日期搜索(限定某车次)void search_date_all(TNODE *,TIME);//按购票日期搜索(所有车次)void print_c(CNODE *);//输出售票纪录(单张)void print_c_all(CNODE *);//输出售票纪录(批量)TNODE *root=NULL; void main(){int i,func,no,ok; TNODE *t; CNODE *c; TIME d; printf(\n\n\n);for(i=0;i<15;i++) printf(=); printf(列车售票信息管理系统);for(i=0;i<15;i++) printf(=); printf(\n); printf(\t1.车次信息管理\n); printf(\t2.售票记录管理\n);3 / 18printf(\t3.售票记录查询\n); printf(\t4.售票记录一览\n); printf(\t5.退出系统\n);for(i=0;i<N;i++) printf(=); printf(\n请选择您所需要的功能: ); fflush(stdin); scanf(%d,&func); switch(func){ case 1:printf(\n\n车次信息管理>>>>\n); for(i=0;i<N;i++) printf(=);printf(\n\t 1.增加新的车次); printf(\n\t 2.取消车次); printf(\n\t 3.返回上级菜单\n);4 / 18for(i=0;i<N;i++) printf(=); printf(\n请选择您所需要的功能: ); fflush(stdin); scanf(%d,&func); switch(func){ case 1: create(); printf(\n售票信息更新成功!\n\n); break;case 2:del();break; case 3:main();break; default:printf(\n[错误]功能号输入有误!请重新输入!);}break; case 2: printf(\n\n售票记录管理>>>>\n); for(i=0;i<N;i++) printf(=);printf(\n\t1.增加新的售票记录); printf(\n\t2.退票);5 / 18printf(\n\t3.返回上级菜单\n); for(i=0;i<N;i++) printf(=); printf(\n请选择您所需要的功能: );fflush(stdin); scanf(%d,&func); switch(func){ case 1: t=search();if(t!=NULL) t->head=insert_c_more(t->head); break; case 2:t=search();printf(需要退票的票号: );scanf(%d,&no);t->head=del_c(t->head,search_c(t->head,no)); break;case 3:main();break; default:6 / 18printf(\n[错误]功能号输入有误!请重新输入!);}break; case 3:printf(\n\n售票记录查询>>>>\n); for(i=0;i<N;i++) printf(=);printf(\n\t 1.按票号搜索); printf(\n\t2.按购票者证件号搜索); printf(\n\t3.按购票日期搜索); printf(\n\t4.返回上级菜单\n); for(i=0;i<N;i++) printf(=); printf(\n请选择您所需要的功能: );fflush(stdin); scanf(%d,&func); switch(func){ case 1: t=search();if(t!=NULL){7 / 18printf(\n请输入您所要查询的票号: );scanf(%d,&no); c=search_c(t->head,no);if(c==NULL)printf([错误]没有该票号的纪录!该票还未售出或为废票!自动返回上级菜单\n...);}break; case 2:printf(\n请输入您所要查询的购票者证件号: );scanf(%d,&no); search_c_id_all(root,no);printf(搜索完毕!自动返回上级菜单\n...); break; case 3: do{ printf(\n请输入您所要查询的日期(格式: yy-mm-dd): );scanf(%d-%d-%d,&d.x,&d.y,&d.z); if(d.y<13&&d.y>0){8 / 18if(d.y==1||d.y==3||d.y==5||d.y==7||d.y==8||d.y==10||d.y==12)if( d.z<32&&d.z>0) ok=1;else if(d.z==2)if(d.z<30&&d.z>0) ok=1; elseif(d.z<31&&d.z>0) ok=1;}else ok=0;if(!ok) printf(\n[错误]日期输入有误!请重新输入!); }while(!ok); printf(\n指定车次吗?(1->是,0->否): );scanf(%d,&ok);if(ok) search_date(search()->head,d); else search_date_all(root,d); break;case 4:main();break; default:printf(\n[错误]功能号输入有误!自动返回上级菜单\n...);}break;case 4: printf(\n\n售票记录一览>>>>\n);for(i=0;i<N;i++) printf(=); printf(\n\t 1.仅浏览车次); printf(\n\t9 / 182.指定车次已售票记录); printf(\n\t3.所有车次已售票记录); printf(\n\t4.测试:先序遍历车次); printf(\n\t5.返回上级菜单\n); for(i=0;i<N;i++) printf(=); printf(\n请选择您所需要的功能: );fflush(stdin); scanf(%d,&func); switch(func){ case 1:printf(\n+++仅浏览车次\n);if(root==NULL) printf([错误]无车次纪录!);else{inorder(root);printf(\n);} break; case 2:printf(\n+++指定车次已售票记录\n);10 / 18t=search(); if(t!=NULL){ print_c_all(t->head); printf(\n);}break; case 3:printf(\n+++所有车次已售票记录\n); if(root==NULL) printf([错误]无车次纪录!); else{inorder_all(root);printf(\n);} break; case 4: printf(\n+++测试:先序遍历车次\n);if(root==NULL) printf([错误]无车次纪录!);else{preorder(root);printf(\n);} break;case 5:main();break; default:printf(\n[错误]功能号输入有误!自动返回上级菜单\n...);}break;case 5:exit (0); default:printf(\n[错误]功能号输入有误!请重新输入!);}main();}void11 / 18inorder_all(TNODE *ptr){if(ptr!=NULL){inorder_all(ptr->lchild); printf(%d: \n,ptr->data); print_c_all(ptr->head); printf(\n); inorder_all(ptr->rchild);}}void inorder(TNODE *ptr){if(ptr!=NULL){inorder(ptr->lchild);printf(%d\t,ptr->data); inorder(ptr->rchild);}}void preorder(TNODE*ptr){if(ptr!=NULL){printf(%d\t ,ptr->data);preorder(ptr->lchild);preorder(ptr->rchild);}} void print_c(CNODE *tkt){ if(tkt!=NULL) printf(\t%d\t%d\t%d-%d-%d\n,tkt->no,tkt->id,tkt->date.x,tkt->date. y,tkt->date.z);}void print_c_all(CNODE *head){int i=0,j=0;if(head==NULL){printf(\n记录为空!\n);return;} for(i=0;i<N;i++) printf(=);printf(\nNO\t票号\t购票者证件号\t购票日期(年-月-日)\n);for(i=0;i<N;i++) printf(-); for(j=0;head!=NULL;j++){12 / 18printf(\n%d,j); print_c(head);head=head->next;}printf(\n); for(i=0;i<N;i++) printf(-); printf(\n总计%d条记录\n,j); for(i=0;i<N;i++) printf(=); printf(\n);}void create(){int n,i; int k[MAX];printf(\n您所希望增加车次的数量: );scanf(%d,&n); for(i=0;i<n;i++){printf(新增第%d列车次: ,i+1);scanf(%d,&k[i]);}for(i=0;i<n;i++)insert(k[i]);}void insert(int m){TNODE *p1,*p2;if(root==NULL){root=(TNODE *)malloc(sizeof(TNODE));root->data=m;root->lchild=root->rchild=NULL; root->head=NULL;}else {p1=root; while(m!=p1->data){if((m<p1->data)&&(p1->lchild!=NULL))p1=p1->lchild;else if((m>p1->data)&&(p1->rchild!=NULL))p1=p1->rchild;13 / 18else if((m<p1->data)&&(p1->lchild==NULL)){p2=(TNODE*)malloc(sizeof(TNODE)); p2->data=m;p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->lchild=p2; return;}else if((m>p1->data)&&(p1->rchild==NULL)){p2=(TNODE *)malloc(sizeof(TNODE)); p2->data=m;p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->rchild=p2; return;}}printf(\n[错误]未能成功增加车次%d,车次号%d已存在!,m,m);}}TNODE *search(){int key; TNODE *p; p=root;printf(\n输入您所要查找的车次编号: );scanf(%d,&key);while(p!=NULL&&p->data!=key){14 / 18if(key<p->data){p=p->lchild;}else if(key>p->data){p=p->rchild;}}if(p==NULL) printf(\n该车次不存在!);return(p);}void del(){int key;TNODE *p1,*p2,*p3,*temp; p1=p2=root; p3=temp=NULL;printf(\n请输入您想要取消的车次编号:);scanf(%d,&key);while(p2!=NULL&&p2->data!=key){ if(key<p2->data){p1=p2;p2=p2-> lchild;}elseif(key>p2->data){p1=p2;p2=p1->rchild;}}if(p2==NULL){printf(\n[错误]该车次不存在!返回上级菜单\n...);return;}else if(p2->lchild==NULL&&p2->rchild==NULL){if(p1->lchild==p2)p1->lchild=NULL;if(p1->rchild==p2) p1->rchild=NULL; temp=p2;if(root==p2){temp=root;root=NULL;}}else{ if(p2->rchild==NULL){ temp=p2->lchil d; p2->data=temp->data;15 / 18p2->lchild=temp->lchild;p2->rchild=temp->rchild;}elseif(p2->lchild==NULL){ temp=p2->rchild; p2->data=temp->data;p2->lchild=temp->lchild; p2->rchild=temp->rchild;}else{ p3=p2; temp=p2->lchild;while(temp->rchild!=NULL){p3=temp;temp=temp->rchild;}p2->data=temp->data;if(p3==p2) p3->lchild=temp->lchild; else p3->rchild=temp->lchild;}}free(temp);printf(车次%d已取消!\n\n,key);}CNODE *insert_c(CNODE*head){CNODE *k,*p;k=(CNODE *)malloc(sizeof(CNODE)); do{printf(\n车票编号: );scanf(%d,&k->no); p=search_c(head,k->no);if(p!=NULL) printf(\n[错误]该票已被购买!请重新选择!\n);16 / 18}while(p!=NULL); printf(购票者证件号: );scanf(%d,&k->id); printf(购票日期(格式: yy-mm-dd): );scanf(%d-%d-%d,&k->date.x,&k->date.y,&k->date.z); k->next=head; head=k;return(head);}CNODE *insert_c_more(CNODE *head){ int n,i; printf(\n请输入批量新增售票记录数: );fflush(stdin); scanf(%d,&n);for(i=0;i<n;i++) head=insert_c(head); printf(\n售票记录更新成功!\n);return(head);}CNODE *search_c(CNODE *head,int id){ CNODE*temp,*s; s=temp=head;17 / 18while(temp!=NULL&&temp->id!=id){s=temp;temp=temp->next;} print_c(temp);if(temp!=NULL) return(s);else return NULL;}void search_c_id(CNODE *head,int id){ CNODE *s,*head_s; s=head_s=NULL;if(head==NULL) printf(无该证件号纪录!\n);while(head!=NULL){ if(head->id==id){s=(CNODE *)malloc(sizeof(CNODE));s->no=head->no;s->id=head->id;s->date=head->date;s->next=head_s;head_s=s;}head=head->next;}print_c_all(head_s);p rintf(\n);}void search_c_id_all(TNODE *ptr,int id){if(ptr!=NULL){search_c_id_all(ptr->lchild,id); printf(\n车次: %d\n,ptr->data); search_c_id(ptr->head,id); search_c_id_all(ptr->rchild,id);}} void search_date(CNODE *head,TIME t){ CNODE *s,*head_s;s=head_s=NULL;18 / 18while(head!=NULL){ if(t.x==head->date.x) if(t.y==head->date.y)if(t.z==head->date.z){s=(CNODE *)malloc(sizeof(CNODE));s->no=head->no;s->id=head->id;s->date=head->date;s->next=head_s;head_s=s;}head=head->next;}print_c_all(head_s);p rintf(\n);}void search_date_all(TNODE *ptr,TIME t){if(ptr!=NULL){search_date_all(ptr->lchild,t); printf(\n车次: %d\n,ptr->data);search_date(ptr->head,t); search_date_all(ptr->rchild,t);}} CNODE *del_c(CNODE *head,CNODE *p){ CNODE *temp;if(p==NULL) printf([错误]该票未售出或为废票!返回上级菜单\n...);else if(p==head){head=NULL;free(p);}else{temp=p->next; p->next=temp->next; free(temp);}return(head);}。
火车票售票系统c语言设计
火车票售票系统的设计可以使用C语言来实现。
下面是一个简单的示例,展示了如何设计一个基本的火车票售票系统:```c#include <stdio.h>#include <stdlib.h>#define MAX_SEATS 100typedef struct {int seat_number;char passenger_name[50];} Ticket;Ticket tickets[MAX_SEATS];int total_tickets = 0;void displayMenu() {printf("\n=== 火车票售票系统 ===\n");printf("1. 购买票\n");printf("2. 查询票\n");printf("3. 取消票\n");printf("4. 退出\n");printf("=====================\n");printf("请输入选项: ");}void buyTicket() {if (total_tickets >= MAX_SEATS) {printf("对不起,票已售完。
\n");return;}Ticket ticket;printf("请输入座位号: ");scanf("%d", &ticket.seat_number);// 检查座位号是否已经被购买for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == ticket.seat_number) {printf("对不起,该座位已被购买。
\n");return;}}printf("请输入乘客姓名: ");scanf("%s", ticket.passenger_name);tickets[total_tickets++] = ticket;printf("购票成功!\n");}void queryTicket() {int seat_number;printf("请输入座位号: ");scanf("%d", &seat_number);for (int i = 0; i < total_tickets; i++) {if (tickets[i].seat_number == seat_number) {printf("座位号: %d\n", tickets[i].seat_number);printf("乘客姓名: %s\n", tickets[i].passenger_name); return;}}printf("对不起,该座位未被购买。
c语言火车售票系统课程设计
c语言火车售票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针、结构体等基本概念,并能运用到火车售票系统的设计与实现中;2. 掌握C语言文件操作,实现火车票信息的存储与读取;3. 理解并掌握C语言中模块化编程思想,将火车售票系统划分为多个功能模块。
技能目标:1. 能够运用C语言编写出具有良好结构和可读性的代码;2. 培养学生分析问题、解决问题的能力,通过设计火车售票系统,学会使用C 语言进行实际项目开发;3. 学会使用调试工具,对火车售票系统进行测试和优化。
情感态度价值观目标:1. 培养学生合作意识,学会在团队中共同解决问题,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养勇于探索、积极创新的精神;3. 培养学生关注社会实际问题的责任感,了解信息技术在实际应用中的作用和价值。
课程性质:本课程为C语言程序设计课程的实践环节,通过设计火车售票系统,让学生将所学理论知识运用到实际项目中。
学生特点:学生已具备C语言基础知识和一定的编程能力,但对实际项目的开发流程和模块化编程思想尚不熟悉。
教学要求:注重理论与实践相结合,引导学生自主探究,培养学生实际编程能力和团队协作能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生具备独立开发小型项目的能力。
二、教学内容1. 火车售票系统需求分析:介绍项目背景,分析系统功能需求,明确学生需要实现的功能模块,如用户登录、车次查询、购票、退票、余票显示等。
2. C语言基础知识回顾:- 数组:回顾一维数组、二维数组的概念和应用;- 函数:介绍函数定义、调用、参数传递等基本概念;- 指针:讲解指针的定义、使用和指针操作;- 结构体:回顾结构体的定义和使用。
3. 火车售票系统设计:- 系统架构设计:引导学生采用模块化设计思想,将系统划分为多个功能模块;- 数据结构设计:介绍如何使用结构体和数组来存储和管理车次、座位、用户等信息。
c语言课程设计票务系统
c语言课程设计票务系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计并实现一个票务系统。
具体的学习目标包括:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用。
3.熟悉常用的输入输出库函数。
4.了解操作系统的基本概念。
5.能够使用C语言编写简单的程序。
6.能够运用C语言实现数据的管理和操作。
7.能够运用C语言实现程序的调试和优化。
8.能够独立设计并实现一个票务系统。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生的编程自信心。
2.培养学生的问题解决能力和创新精神。
3.培养学生团队合作意识和沟通能力。
二、教学内容根据课程目标,教学内容主要包括C语言基础知识、数据结构、函数编程、文件操作和操作系统基本概念。
具体的教学大纲如下:1.C语言基础知识:介绍C语言的基本语法和数据类型,包括变量、常量、运算符、表达式等。
2.数据结构:介绍常用的数据结构,如数组、链表、栈和队列等,并讲解如何在C语言中实现和操作这些数据结构。
3.函数编程:介绍函数的定义和调用,包括递归函数和引用参数。
4.文件操作:介绍文件读写操作的基本方法,包括文件的打开、关闭、读写等。
5.操作系统基本概念:介绍操作系统的基本概念,如进程、线程、同步等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过讲解C语言的基本语法和概念,帮助学生建立基础知识框架。
2.讨论法:通过小组讨论和课堂讨论,引导学生主动思考和解决问题。
3.案例分析法:通过分析实际案例,让学生了解C语言在实际应用中的作用和局限性。
4.实验法:通过编程实验,让学生动手实践,巩固所学知识,并培养解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。
2.参考书:《C语言程序设计》(清华大学出版社)。
订票管理系统c语言课程设计
订票管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言中结构体、数组、函数等基本概念,掌握其应用方法。
2. 学会使用C语言实现简单的订票管理系统,了解系统设计的基本流程和关键环节。
3. 掌握文件操作、指针等C语言高级特性,并能将其应用于实际项目中。
技能目标:1. 培养学生运用C语言进行问题分析和解决的能力,提高编程实践技能。
2. 培养学生团队协作能力,学会与他人共同完成一个项目,提高沟通与协作效率。
3. 培养学生具备一定的项目调试和优化能力,提高代码质量和性能。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学习动力。
2. 培养学生勇于面对困难、积极解决问题的精神,增强自信心。
3. 引导学生认识到编程在实际生活中的应用价值,培养社会责任感和创新意识。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成一个简单的订票管理系统,展示其编程能力。
2. 学生能够通过团队协作,共同优化和完善订票管理系统,提高项目质量。
3. 学生在课程学习过程中,能够积极思考、提问,主动寻求解决问题的方法。
4. 学生能够体验到编程带来的成就感,激发进一步学习的兴趣和动力。
二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:- 结构体的定义和使用- 数组的基本操作- 函数的定义和调用- 指针的概念及操作2. 订票管理系统需求分析:- 了解订票管理系统的功能模块- 分析系统需求和设计思路3. 订票管理系统模块设计:- 用户模块:注册、登录、修改密码等- 航班模块:航班查询、预订、取消预订等- 管理模块:航班管理、用户管理等- 数据存储模块:文件操作、数据存储与读取4. C语言编程实践:- 编写各模块的功能函数- 实现模块间的数据传递与交互- 调试与优化程序5. 团队协作与项目展示:- 分组进行项目开发- 协作完成项目,分享开发经验- 展示项目成果,进行评价与总结教学内容按照以下教学大纲安排和进度:第一周:回顾C语言基础知识,分析订票管理系统需求第二周:设计订票管理系统各模块,学习文件操作和指针第三周:编写各模块功能函数,实现模块间数据传递与交互第四周:项目调试与优化,团队协作与项目展示教材章节关联:《C语言程序设计》第3章:结构体与数组《C语言程序设计》第4章:函数《C语言程序设计》第5章:指针《C语言程序设计》第8章:文件操作与应用三、教学方法本课程将采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 通过对C语言基础知识的回顾,为学生提供必要的概念和理论知识,为后续实践打下基础。
火车票务管理系统C语言版TXT文件改后缀即可
int n=0;
//合计计数器
char l[20];
//纠错空间
///////////////////////////////////////////////////////////////////////
////////////////主函数
int main()
{
int x;do来自{x=MENU();
printf("
请选择: ");
scanf("%d",&choice);
gets(l);
return choice;
}
///////////////////////////////////////////////////////////////////////
按任意键返回上级菜单: ");
gets(ch);
}
///////////////////////////////////////////////////////////////////////
////////////////查询模块
void SEARCH()
{
char name1[10];//车次
#define
" %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,
T[i].ap,T[i].lt,T[i].at,T[i].price //输出记录格式
#define Wrong "\n
! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输
c语言课程设计火车售票系统
c语言课程设计火车售票系统一、教学目标本章节的教学目标旨在让学生掌握C语言编程的基本知识,通过构建火车售票系统的案例,使学生能够理解和运用C语言的数据类型、控制结构、函数等核心概念。
同时,培养学生解决实际问题的能力,提高学生的编程思维和团队协作能力。
具体来说,知识目标包括:1.掌握C语言的基本语法和数据类型。
2.理解函数的定义和调用。
3.熟悉数组、指针和字符串在编程中的应用。
4.学习常用的输入输出库函数。
技能目标包括:1.能够使用C语言编写简单的程序。
2.能够运用条件语句和循环语句实现复杂逻辑。
3.能够独立完成火车售票系统的编程任务。
4.具备良好的代码调试和优化能力。
情感态度价值观目标包括:1.培养学生的创新意识和解决问题的能力。
2.增强学生对编程事业的热爱和敬业精神。
3.培养学生团队合作和沟通交流的能力。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数、数组、指针和字符串等。
通过讲解火车售票系统的案例,使学生能够将这些知识点运用到实际编程中。
具体的教学大纲如下:1.第一课时:C语言概述和基本语法。
2.第二课时:数据类型和变量。
3.第三课时:运算符和表达式。
4.第四课时:控制结构(条件语句、循环语句)。
5.第五课时:函数的定义和调用。
6.第六课时:数组、指针和字符串。
7.第七课时:文件操作和库函数。
8.第八课时:火车售票系统案例分析。
9.第九课时:火车售票系统编程实践。
10.第十课时:代码调试和优化。
三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式。
包括:1.讲授法:讲解C语言的基本语法、数据类型、控制结构等知识点。
2.案例分析法:分析火车售票系统的案例,引导学生运用所学知识解决实际问题。
3.实验法:让学生动手编写代码,进行火车售票系统的实践操作。
4.讨论法:学生进行小组讨论,分享编程心得和解决问题的方法。
四、教学资源本章节的教学资源包括:1.教材:《C程序设计语言》(K&R)。
票务系统c语言课程设计
票务系统c语言课程设计一、教学目标本课程旨在通过C语言编程实现一个简单的票务系统,让学生掌握C语言的基本语法、数据结构以及简单的算法。
通过本课程的学习,学生应能理解并运用C语言进行程序设计,掌握结构体和文件操作等高级特性,培养编程思维和问题解决能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据类型。
–理解函数、指针、结构体的概念和应用。
–学习文件操作、动态内存分配等高级特性。
–了解票务系统的基本流程和数据结构。
2.技能目标:–能够使用C语言编写简单的程序,对票务信息进行增删改查。
–学会使用结构体来表示票务信息,并实现相关功能的函数。
–掌握文件操作,实现票务数据的持久化存储。
3.情感态度价值观目标:–培养学生的编程兴趣,提升信息时代下的学习能力。
–培养学生独立思考、解决问题的能力。
–培养学生团队协作意识和创新精神。
二、教学内容本课程的教学内容围绕票务系统的实现展开,具体包括:1.C语言基础:数据类型、运算符、控制结构。
2.函数和指针:函数定义、调用、指针的基本应用。
3.数据结构:数组、结构体、队列、栈。
4.文件操作:文件的打开、读写、关闭。
5.动态内存分配:malloc、calloc、realloc和free的使用。
6.票务系统设计:票务信息结构设计、功能模块实现。
三、教学方法为了提高教学效果,将采用以下教学方法:1.讲授法:系统讲解C语言的基本语法和票务系统设计原理。
2.案例分析法:通过分析实际案例,引导学生理解并掌握结构体和文件操作等高级特性。
3.实验法:安排上机实验,让学生亲手编写代码,实现票务系统的各个功能。
4.讨论法:学生进行小组讨论,分享学习心得和编程经验。
四、教学资源为了支持教学,将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》。
2.多媒体资料:PPT课件、教学视频。
3.实验设备:计算机、网络环境。
4.在线编程平台:如LeetCode、Codeforces,供学生练习和交流。
VC车站票务管理系统(C语言(liunx))(SQLlite)
VC++062车站票务管理系统(C语言(liunx))(SQLlite)摘要:铁路客货运业务诞生已有近一个世纪了,作为现有交通工具最为普遍的一种,铁路客货运给民众的生活、出行带来了极大的方便。
铁路客货运业务中,售票是必不可少的一个环节。
自铁路运营以来,售票方式在“大提速”似的的在发展,早期的车票还是纯手工制作,且售票结构单一,每个工作人员只能完成一种工作,若要买一张票需要2-3分钟的时间。
随着科技的发展,计算机的诞生,信息技术在管理上越来越深入而广泛的应用,管理系统的实施在技术上已逐步成熟。
任何单位若想把内部活动有机的组织起来,就需要建立与自身特点适应的管理系统。
本系统是根据售票人员的需求,同时方便购票人员,改变以前购票费时的难题,开发的一套车站票务管理系统。
本系统是在Linux环境下利用C语言基于MiniGUI图形界面开发的,数据库采用的是SQLite3。
通过对数据库SQLite3的增、删、改、查等操作实现系统订票,退票,改签票务以及管理员对数据及时更新等功能,实现方便购票人员和工作人员,以达到即可提高工作人员工作效率,又节省购票人员时间的目的。
关键词:车站票务管理系统,Linux,MiniGUI,SQLite3目录毕业设计(论文)任务书I摘要IIABSTRACT III第1章绪论11.1 论文研究主要内容11.2 国内外现状21.3 论文组织结构2第2章关键技术介绍 42.1关键性开发技术的介绍42.1.1Linux环境下C编程42.1.2MiniGUI图形开发界面52.1.3SQLite数据库操作5第3章系统分析73.1体系结构73.1.1功能描述73.1.2业务模型73.2系统开发环境93.3系统任务的可行性分析93.3.1技术可行性93.3.2经济可行性9第4章系统设计114.1设计指导思想和原则114.1.1指导思想114.1.2软件设计原则114.2构架概述134.3系统的概要设计144.3.1系统结构模块与程序的关系144.3.2运行模式154.3.3数据结构164.3.4功能模块设计164.3.5系统故障处理设计16第5章系统实现185.1开发环境185.2功能说明185.3功能实现185.3.1MiniGUI图形界面185.3.2查票模块205.3.3订票模块215.3.4退票模块215.3.5改票模块22第6章系统测试236.1测试方案及测试用例236.1.1订票模块236.1.2退票模块236.1.3查票模块236.1.4改票模块23第7章结论24参考文献25致谢26功能说明车站票务管理系统的核心部分为四个模块,即订票、退票、查票、改票四个模块,实现此四个模块的主要技术就是对SQLite3数据库的增、删、改、查。
火车订票系统c语言课程设计
火车订票系统c语言课程设计一、课程目标知识目标:1. 学生理解并掌握C语言的基本语法,包括数据类型、运算符、控制结构等;2. 学生掌握数组、结构体等C语言高级数据结构的使用;3. 学生掌握文件操作、指针等C语言核心知识点的应用;4. 学生了解火车订票系统的业务流程和功能需求。
技能目标:1. 学生能够运用C语言编写出具有实际功能的火车订票系统程序;2. 学生具备分析问题、设计程序结构、编写代码、调试程序的能力;3. 学生能够运用所学知识解决实际问题,具备一定的编程实践能力。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习C语言的积极性;2. 学生养成严谨、细致、负责任的编程习惯,注重代码规范和逻辑性;3. 学生通过团队协作完成课程设计,培养沟通与协作能力;4. 学生认识到编程在生活中的实际应用,增强学以致用的意识。
课程性质:本课程为C语言程序设计课程设计,旨在通过火车订票系统项目实践,提高学生的编程能力和解决实际问题的能力。
学生特点:学生已经掌握了C语言的基本语法和常用数据结构,具有一定的编程基础,但缺乏实际项目经验。
教学要求:注重实践操作,引导学生运用所学知识解决实际问题,培养编程思维和实际应用能力。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
和教学内容相对应,写教学方法,300字。
教学方法需具体详细,结合教学内容展开,注意教学过程中师生的互动,突出学生的主体地位。
二、教学内容1. 火车订票系统的需求分析与功能设计:讲解系统需求,分析功能模块,引导学生明确系统目标;2. C语言基础语法复习:重点回顾数组、结构体、文件操作等知识点;3. 火车订票系统程序设计:指导学生进行程序结构设计,编码实现各功能模块;4. 系统测试与调试:教授测试方法,指导学生进行系统测试,分析并解决存在的问题;5. 代码优化与规范:强调编程规范,引导学生进行代码优化,提高程序质量。
三、教学方法1. 讲授与讨论相结合:教师讲解火车订票系统相关知识点,引导学生进行需求分析和功能设计讨论,激发学生思考;2. 案例分析法:通过分析实际火车订票系统案例,使学生更好地理解系统设计和实现方法;3. 任务驱动法:将课程设计任务分解为多个子任务,引导学生分阶段完成,培养学生解决问题的能力;4. 小组合作学习:鼓励学生组成学习小组,共同完成课程设计,培养学生的团队协作能力;5. 互动式教学:在教学过程中,教师及时解答学生疑问,组织学生互相交流心得,分享编程技巧;6. 实践操作:为学生提供充足的实践机会,让学生在实际操作中掌握知识点,提高编程能力;7. 反馈与评价:教师对学生的课程设计成果进行评价,及时反馈意见,指导学生改进。
C语言编程---火车订票系统源代码
火车订票系统源码(一)#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>intshoudsave=0 ;int count1=0,count2=0,mark=0,mark1=0 ;/*定义存储火车信息的结构体*/struct train{char num[10];/*列车号*/char city[10];/*目的城市*/char takeoffTime[10];/*发车时间*/char receiveTime[10];/*到达时间*/int price;/*票价*/intbookNum ;/*票数*/};/*订票人的信息*/struct man{charnum[10];/*ID*/char name[10];/*姓名*/intbookNum ;/*需求的票数*/};/*定义火车信息链表的结点结构*/typedefstruct node{struct train data ;struct node * next ;}Node,*Link ;/*定义订票人链表的结点结构*/typedefstruct people{struct man data ;struct people*next ;}bookMan,*bookManLink ;/* 初始界面*/voidprintInterface(){puts("********************************************************"); puts("* Welcome to use the system of booking tickets *");puts("********************************************************"); puts("* You can choose the operation: *");puts("* 1:Insert a train information *");puts("* 2:Inquire a train information *");puts("* 3:Book a train ticket *");puts("* 4:Update the train information *");puts("* 5:Advice to you about the train *");puts("* 6:save information to file *");puts("* 7:quit the system *");puts("********************************************************"); }/*添加一个火车信息*/voidInsertTraininfo(Link linkhead){struct node *p,*r,*s ;charnum[10];r = linkhead ;s = linkhead->next ;while(r->next!=NULL)r=r->next ;while(1){printf("please input the number of the train(0-return)");scanf("%s",num);if(strcmp(num,"0")==0)break ;/*判断是否已经存在*/while(s){if(strcmp(s->data.num,num)==0){printf("the train '%s'has been born!\n",num);return ;}s = s->next ;}p = (struct node*)malloc(sizeof(struct node));strcpy(p->data.num,num);printf("Input the city where the train will reach:");scanf("%s",p->data.city);printf("Input the time which the train take off:");scanf("%s",p->data.takeoffTime);printf("Input the time which the train receive:");scanf("%s",&p->data.receiveTime);printf("Input the price of ticket:");scanf("%d",&p->data.price);printf("Input the number of booked tickets:");scanf("%d",&p->data.bookNum);p->next=NULL ;r->next=p ;r=p ;shoudsave = 1 ;}}/*打印火车票信息*/voidprintTrainInfo(struct node*p){puts("\nThe following is the record you want:");printf(">>number of train: %s\n",p->data.num);printf(">>city the train will reach: %s\n",p->data.city);printf(">>the time the train take off: %s\nthe time the train reach: %s\n",p->data.takeoffTime,p->data.receiveTime);printf(">>the price of the ticket: %d\n",p->data.price);printf(">>the number of booked tickets: %d\n",p->data.bookNum);}struct node * Locate1(Link l,charfindmess[],char numorcity[]){Node*r ;if(strcmp(numorcity,"num")==0){r=l->next ;while(r){if(strcmp(r->data.num,findmess)==0)return r ;r=r->next ;}}else if(strcmp(numorcity,"city")==0){r=l->next ;while(r){if(strcmp(r->data.city,findmess)==0)return r ;r=r->next ;}}return 0 ;}/*查询火车信息*/voidQueryTrain(Link l){Node *p ;intsel ;char str1[5],str2[10];if(!l->next){printf("There is not any record !");return ;}printf("Choose the way:\n>>1:according to the number of train;\n>>2:according to the city:\n");scanf("%d",&sel);if(sel==1){printf("Input the the number of train:");scanf("%s",str1);p=Locate1(l,str1,"num");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}else if(sel==2){printf("Input the city:");scanf("%s",str2);p=Locate1(l,str2,"city");if(p){printTrainInfo(p);}else{mark1=1 ;printf("\nthe file can't be found!");}}}/*订票子模块*/voidBookTicket(Link l,bookManLink k){Node*r[10],*p ;charch,dem ;bookMan*v,*h ;int i=0,t=0 ;charstr[10],str1[10],str2[10];v=k ;while(v->next!=NULL)v=v->next ;printf("Input the city you want to go: ");scanf("%s",&str);p=l->next ;while(p!=NULL){if(strcmp(p->data.city,str)==0){r[i]=p ;i++;}p=p->next ;}printf("\n\nthe number of record have %d\n",i);for(t=0;t<i;t++)printTrainInfo(r[t]);if(i==0)printf("\n\t\t\tSorry!Can't find the train for you!\n"); else{printf("\ndo you want to book it?<1/0>\n");scanf("%d",&ch);if(ch == 1){h=(bookMan*)malloc(sizeof(bookMan)); printf("Input your name: ");scanf("%s",&str1);strcpy(h->,str1);printf("Input your id: ");scanf("%s",&str2);strcpy(h->data.num,str2);printf("Input your bookNum: ");scanf("%d",&dem);h->data.bookNum=dem ;h->next=NULL ;v->next=h ;v=h ;printf("\nLucky!you have booked a ticket!"); getch();shoudsave=1 ;}}}bookMan*Locate2(bookManLinkk,charfindmess[]) {bookMan*r ;r=k->next ;while(r){if(strcmp(r->data.num,findmess)==0){mark=1 ;return r ;}r=r->next ;}return 0 ;}/*修改火车信息*/voidUpdateInfo(Link l){Node*p ;charfindmess[20],ch ;if(!l->next){printf("\nthere isn't record for you to modify!\n"); return ;}else{QueryTrain(l);if(mark1==0){printf("\nDo you want to modify it?\n"); getchar();scanf("%c",&ch);if(ch=='y');{printf("\nInput the number of the train:");scanf("%s",findmess);p=Locate1(l,findmess,"num");if(p){printf("Input new number of train:");scanf("%s",&p->data.num);printf("Input new city the train will reach:");scanf("%s",&p->data.city);printf("Input new time the train take off");scanf("%s",&p->data.takeoffTime);printf("Input new time the train reach:");scanf("%s",&p->data.receiveTime);printf("Input new price of the ticket::");scanf("%d",&p->data.price);printf("Input new number of people who have booked ticket:"); scanf("%d",&p->data.bookNum);printf("\nmodifying record is sucessful!\n");shoudsave=1 ;}elseprintf("\t\t\tcan't find the record!");}}elsemark1=0 ;}}/*系统给用户的提示信息*/voidAdvicedTrains(Link l){Node*r ;charstr[10];int mar=0 ;r=l->next ;printf("Iuput the city you want to go: ");scanf("%s",str);while(r){if(strcmp(r->data.city,str)==0&&r->data.bookNum<200){mar=1 ;printf("\nyou can select the following train!\n");printf("\n\nplease select the fourth operation to book the ticket!\n"); printTrainInfo(r);}r=r->next ;}if(mar==0)printf("\n\t\t\tyou can't book any ticket now!\n");}/*保存火车信息*/voidSaveTrainInfo(Link l){FILE*fp ;Node*p ;int count=0,flag=1 ;fp=fopen("c:\\train.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=l->next ;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}/*保存订票人的信息*/voidSaveBookmanInfo(bookManLink k){FILE*fp ;bookMan*p ;int count=0,flag=1 ;fp=fopen("c:\\man.txt","wb");if(fp==NULL){printf("the file can't be opened!");return ;}p=k->next ;while(p){if(fwrite(p,sizeof(bookMan),1,fp)==1){p=p->next ;count++;}else{flag=0 ;break ;}}if(flag){printf("the number of the record which have been saved is %d\n",count); shoudsave=0 ;}fclose(fp);}int main(){FILE*fp1,*fp2 ;Node*p,*r ;char ch1,ch2 ;Link l ;bookManLink k ;bookMan*t,*h ;intsel ;l=(Node*)malloc(sizeof(Node));l->next=NULL ;r=l ;k=(bookMan*)malloc(sizeof(bookMan));k->next=NULL ;h=k ;fp1=fopen("c:\\train.txt","ab+");if((fp1==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp1)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp1)==1){p->next=NULL ;r->next=p ;r=p ;count1++;}}fclose(fp1);fp2=fopen("c:\\man.txt","ab+");if((fp2==NULL)){printf("can't open the file!");return 0 ;}while(!feof(fp2)){t=(bookMan*)malloc(sizeof(bookMan)); if(fread(t,sizeof(bookMan),1,fp2)==1){t->next=NULL ;h->next=t ;h=t ;count2++;}}fclose(fp2);while(1){system("cls");printInterface();printf("please choose the operation: "); scanf("%d",&sel);system("cls");if(sel==8){if(shoudsave==1){getchar();printf("\nthe file have been changed!do you want to save it(y/n)?\n"); scanf("%c",&ch1);if(ch1=='y'||ch1=='Y'){SaveBookmanInfo(k);SaveTrainInfo(l);}}printf("\nThank you!!You are welcome too\n");break ;}switch(sel){case 1 :InsertTraininfo(l);break ;case 2 :QueryTrain(l);break ;case 3 :BookTicket(l,k);break ;case 4 :UpdateInfo(l);break ;case 5 :AdvicedTrains(l);break ;case 6 :SaveTrainInfo(l);SaveBookmanInfo(k);break ;case 7 :return 0;}printf("\nplease press any key to continue.......");getch();}return 0;}11/11。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
火车票务管理系统
C语言
火车票务管理系统
一、课题内容和要求
设计目标:设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:
需求描述:
1.系统功能
(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到
达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询
按终点查询
按起点查询
按终点和日期查询
(3)统计
按终点统计每日的车次数
按起点统计每日的车次数
2. 系统主界面应有以下功能选项
录入火车时刻信息
查询火车时刻信息
统计火车车次
退出
注:建议用VC环境开发用户界面。
结果形式:
提交程序设计报告和可演示的系统软件
二、需求分析
系统主界面应有以下功能选项
1.录入火车时刻信息
2.查询火车时刻信息
3.统计火车车次
4.退出
(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到
达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询
按终点查询
按起点查询
按终点和日期查询
(3)统计
按终点统计每日的车次数
按起点统计每日的车次数
二、概要设计
void SearchTrainNum();//按照车次查询
void SearchToPlace();//按终点查询
void SearchFromPlace();//按起点查询
void SearchToPlaceAndDate();//按终点和日期查询void CountToPlace();//按终点统计每日的车次数
void CountFromPlace();//按起点统计每日的车次数三、详细设计
程序的源代码与注释
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void SearchTrainNum();
void SearchToPlace();
void SearchFromPlace();
void SearchToPlaceAndDate();
void CountToPlace();
void CountFromPlace();
void Star();
struct TRAIN
{
char trainNum[10];
char date[30];
char fromPlace[20];
char toPlace[20];
char inTime[30];
char outTime[30];
double price;
};
struct TRAIN train[30];
int main()
{
int request;
char ch='Y';
int i=0;
double myprice;
FILE *fp;
repeat:
Star();
printf("火车管理系统界面\n");。