车票管理系统c语言

合集下载

车票管理系统实习报告

车票管理系统实习报告

一、实习背景随着社会经济的快速发展,人们的出行需求日益增加,车票管理系统作为现代化交通工具的重要组成部分,其重要性不言而喻。

为了提高车票管理效率,减少人工操作带来的不便,我国各大交通部门纷纷研发和实施车票管理系统。

本人在实习期间,有幸参与了某汽车站车票管理系统的设计与开发,以下为实习报告。

二、实习目的1. 熟悉车票管理系统的基本概念、设计原则和开发流程。

2. 掌握C语言编程技术,提高编程能力。

3. 了解数据库技术,提高数据库应用能力。

4. 培养团队协作和沟通能力。

三、实习内容1. 系统需求分析在实习初期,我首先对车票管理系统进行了需求分析。

通过对汽车站售票业务的了解,我发现车票管理系统应具备以下功能:(1)车次信息管理:录入、修改、删除车次信息,包括车次号、发车时间、起点站、终点站、行车时间、额定载客量等。

(2)票务信息管理:录入、修改、删除票务信息,包括车票号、票价、座位号、乘客姓名、联系方式等。

(3)售票查询:根据车次、时间、站点等信息查询车票信息。

(4)售票操作:进行售票、退票、改签等操作。

(5)统计报表:生成售票统计报表,包括车次售票情况、票价统计、售票员业绩等。

2. 系统设计在需求分析的基础上,我进行了系统设计。

系统采用模块化设计,主要包括以下模块:(1)数据模块:负责数据的存储、检索和更新。

(2)功能模块:实现售票、查询、统计等功能。

(3)界面模块:提供用户界面,方便用户进行操作。

3. 系统实现在系统实现阶段,我主要使用C语言进行编程,并结合数据库技术实现系统功能。

具体如下:(1)数据模块:采用关系型数据库MySQL存储数据,设计数据库表结构,实现数据的增删改查。

(2)功能模块:编写售票、查询、统计等功能模块的代码,实现系统功能。

(3)界面模块:使用C语言中的图形界面库,如GTK+等,设计用户界面。

4. 系统测试与优化在系统开发完成后,我对系统进行了测试和优化。

主要测试内容包括:(1)功能测试:验证系统功能是否满足需求。

c语言编程 电影院票务系统

c语言编程 电影院票务系统

电影院票务系统程序设计C语言编程需自行编辑TXT文件1--6#include<stdio.h>#include<stdlib.h>void menu(){FILE *fp;char ch;fp=fopen("menu.txt","r");for(ch=fgetc(fp);ch!=EOF;ch=fgetc(fp))putchar(ch);fclose(fp);}void book(){int a1,b1,c1,d1,m,k;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&k);switch(k){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&a1,&b1,&c1,&d1);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",a1,b1,c1,d1); if(d1<1) printf(" 对不起,票已售完,请下次再来\n");else {printf("确定订票?1(Y)/0(N)\n");scanf("%d",&m);if(m==1) {c1++;d1--;printf(" 谢谢购买!祝您观影愉快!\n"); rewind(fp);fprintf(fp,"%d %d %d %d",a1,b1,c1,d1); }}fscanf(fp,"%d %d %d %d",&a1,&b1,&c1,&d1);fclose(fp);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",a1,b1,c1,d1); }void cancel(){int e1,f1,g1,h1,m,w;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&w);switch(w){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&e1,&f1,&g1,&h1);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",e1,f1,g1,h1); if(g1<1) printf(" 对不起您的输入有误,请重试!\n");else {printf("确定退票?1(Y)/0(N)\n");scanf("%d",&m);if(m==1) {g1--;h1++;printf(" 已退票,欢迎下次再来\n"); rewind(fp);fprintf(fp,"%d %d %d %d",e1,f1,g1,h1); }}fscanf(fp,"%d %d %d %d",&e1,&f1,&g1,&h1);fclose(fp);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",e1,f1,g1,h1); }void inquire(){int i,j,k,l,t;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&t);switch(t){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&i,&j,&k,&l);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",i,j,k,l);}main(){int c;int w;start:printf(" *************************************\n");printf(" Welcome to our ticket system!\n" );printf(" 1. Movies menu \n");printf(" 2. book the ticket. \n");printf(" 3. cancel the ticket \n");printf(" 4. inquire the ticket \n");printf(" 5. exit \n");printf(" *************************************\n");scanf("%d",&c);switch(c){case 1:menu();break;case 2:book();break;case 3:cancel();break;case 4:inquire();break;case 5:goto end;default :printf("you enter an wrong number!\n");}printf("continue? 1(Y)/0(N) \n");scanf("%d",&w); system("cls");loop:{if(w==1)goto start;else goto end;}end: printf(" Thank you for use my system! Bye!\n\n\n author:percyfan\n\n\n");}。

火车票订票系统

火车票订票系统

include<stdio.h>//预处理函数include<stdlib.h>//标准库函数include<string.h>//字符串函数include<conio.h>//通过键盘来控制程序调试int o=0;typedef struct zuowei{int a;//车座int b;//车厢}seat;typedef struct Tmess{//定义一个结构体存储火车订票的信息char tnum8;//火车车次char time18;//发车时间char station18;//出发站char station28;//终点站char tujingstation8;//途经站char time28;//到站时间char money5;//票价}tmess;typedef struct in{//定义一个结构体存储火车座位信息tmess data;//调用火车的信息int reseat;//剩余票seat seatnum;struct in next;//定义next指针}in;typedef struct pmess{//定义一个结构体存储乘客信息char name10;//姓名char tel15;//电话char id20;//身份证char booknum3;//订票数目char checi8;//车次}pmess;typedef struct people{//乘客信息pmess m;//调用pmess结构体struct people next;//定义next指针}people;struct dingdan{int danhao;char tnum8;//火车车次char time18;//发车时间char station18;//出发站char station28;//终点站char tujingstation8;//途经站char time28;//到站时间char money5;char name10;//姓名char tel15;//电话char id20;//身份证char booknum3;//订票数目char seat10;char seatnum10;}dingdan100;void end;void admin;void bookin h;people k;void cancel;void chaxuntrainin h;in fangshiin h;char findmess;char numorcity; void print;void passenger;void putoutticketin p;void putticketin h;void widows;int main{forint i=0;i<100;i++{dingdani.danhao=i+1000;}in h;p;people k;v;int wp;h=inmalloc sizeof in;h->next=NULL;k=peoplemalloc sizeof people;k->next=NULL;p=h;v=k;while1{system"cls";widows;scanf"%d";&wp;fflushstdin;system"cls";switch wp{case 1:putticketh;break;case 2:chaxuntrainp;break;case 3:bookp;v;break;case 4:print;break;case 5:cancel;break;default:break;}printf"\n请按任何键结束\n";getch;}return 0;}void end{//结束页面函数puts"";printf" 谢谢使用\n";}void widows{//初始页面函数;printf"\n";printf" \n";printf" \n";printf" \n";printf" \n";printf" \n";printf" \n";printf" \n";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" \n";printf"\n";printf" 请输入选择:";}void putticketin h{//输入车次信息in p;l;s;//定义了三个指针变量char num8;//定义了数组p=h;//p指向尾节点l=h->next;//l指针遍历火车信息while p->next{p=p->next;}while1{printf"请输入要添加的火车车次按0退出\n";scanf"%s";&num;fflushstdin;if strcmpnum;"0"==0break;while l{if strcmpl->data.tnum;num==0{//比较的输入车次与之前存在车次printf"该车次已经存在\n";return ;}l=l->next;//l++}s=in malloc sizeof in;strcpys->data.tnum;num;//复制函数;加入新的车次printf"请输入出发时间:\n";scanf"%s";&s->data.time1;fflushstdin;printf"请输入出发城市:\n";scanf"%s";&s->data.station1;fflushstdin;printf"请输入到达时间:\n";scanf"%s";&s->data.time2;fflushstdin;printf"请输入到达城市:\n";scanf"%s";&s->data.station2;fflushstdin;printf"请输入途径大站:\n";scanf"%s";&s->data.tujingstation;fflushstdin;printf"请输入票价:\n";scanf"%s";&s->data.money;fflushstdin;s->seatnum.a=1;s->seatnum.b=1;s->reseat=-1;s->next=NULL;p->next=s;p=s;}}void putoutticketin p{//打印火车信息printf"\n下面是火车信息\n";printf"车次:%s\n";p->data.tnum;printf"出发时间:%s\n";p->data.time1;printf"始发站:%s\n";p->data.station1;printf"到达时间:%s\n";p->data.time2;printf"终点站:%s\n";p->data.station2;printf"途经站:%s\n";p->data.tujingstation;printf"票价:%s\n";p->data.money;printf"剩余票数:%d";1000-p->reseat;}in fangshiin h;char findmess;char numorcity{//查询方式in p;if strcmpnumorcity;"num"==0{//按车次查询p=h->next;while p{if strcmpp->data.tnum;findmess==0{//查到与车次信息相符的return p;//返回所查到的信息}p=p->next;}}if strcmpnumorcity ;"city"==0{//按城市查询p=h->next;while p{if strcmpp->data.station2;findmess==0{//查到与城市信息相符的return p;//返回所查到的信息}p=p->next;}}return 0;}void chaxuntrainin h{//信息查询in p;char str110;int sel;if h->next==NULL{printf"没有任何火车信息\n";return ;}printf"\n请选择查询方式\n1.车次查询 2.城市查询\n";scanf"%d";&sel;fflushstdin;if sel==1{printf"请输入车次\n";scanf"%s";str1;fflushstdin;p=fangshih;str1;"num";if p{putoutticketp;}else {printf"\n没有找到\n";}}else if sel==2{printf"请输入到达城市\n";scanf"%s";str1;fflushstdin;p=fangshih;str1;"city";if p{putoutticketp;}else {printf"\n没有找到\n";}}}void bookin h;people k{//订票输入乘客信息;订票数in p;l;//定义两个in结构体下的指针变量people v;s;//定义两个people结构体下的指针变量int i=0;t=0;wp;i2=1;char str110;str210;//定义两个数组分别用来存储到达城市和车次信息l=h;v=k;extern int o;while v->nextv=v->next;//v指针遍历火车信息printf"请输入想要达到的城市\n";scanf"%s";&str1;fflushstdin;p=fangshil;str1;"city";//按城市搜索的查询方式printf"请输入想要的车次\n";scanf"%s";&str2;fflushstdin;p=fangshil;str2;"num";//按车次搜索的查询方式if p{printf"\n没有找到到达该城市的车次\n";return ;}else {putoutticketp;//调用outoutticket函数printf"是否要订这个车次<0/1>\n";scanf"%d";&wp;fflushstdin;if wp{s=peoplemalloc sizeof people;printf"请输入姓名:";scanf"%s";&s->;fflushstdin;printf"请输入电话:";scanf"%s";&s->m.tel;fflushstdin;printf"请输入身份证号:";scanf"%s";&s->m.id;fflushstdin;printf"请输入要订的票数:";scanf"%s";&s->m.booknum;fflushstdin;s->next=NULL;v->next=s;v=s;strcpys->m.checi;p->data.tnum;p->reseat=p->reseat+int atofs->m.booknum;if p->seatnum.a<8{sprintfdingdano.seatnum;"%d/%d";p->seatnum.a;p->seatnum.b;p->seatnum.a=p->seatnum.a+1;}elseif p->seatnum.b<8{sprintfdingdano.seatnum;"%d/%d";p->seatnum.a;p->seatnum.b;p->seatnum.b=p->seatnum.b+1;p->seatnum.a=1;}printf"\nOK订票成功\n";strcpydingdano.tnum;p->data.tnum;strcpydingdano.time1;p->data.time1;strcpydingdano.station1;p->data.station1;strcpydingdano.station2;p->data.station2;strcpydingdano.tujingstation;p->data.tujingstation;strcpydingdano.time2;p->data.time2;strcpydingdano.money;p->data.money;;s->;strcpydingdano.tel;s->m.tel;strcpydingdano.id;s->m.id;strcpydingdano.booknum;s->m.booknum;printf"订单号为:%d\n";dingdano.danhao;printf"座位号为:%s座位号/车厢号\n";dingdano.seatnum; o++;getch;}}}void cancel{int count=0;extern int o;char q5="失效";int p;int s=0;char passname20;printf"请输入乘客姓名:";scanf"%s/n";passname;forint i=0;i<o;i++{if strcmppassname;==0{printf"\n";printf" 这是订单号为%d的订单信息\n";dingdani.danhao;printf"\n";printf" 火车车次:%s\n";dingdani.tnum;printf" 发车时间:%s\n";dingdani.time1;printf" 出发站:%s\n";dingdani.station1;printf" 终点站:%s \n";dingdani.station2;printf" 途径站:%s \n";dingdani.tujingstation;printf" 到站时间:%s \n";dingdani.time2;printf" 票价:%s \n";dingdani.money;printf" 姓名:%s\n";;printf" 电话:%s\n";dingdani.tel;printf" 身份证:%s\n";dingdani.id;printf" 订票数目:%s\n";dingdani.booknum;printf" 座位号:%s<座位号/车厢号>\n";dingdani.seatnum;printf"\n";printf"----------------------------------------------------------------------------\n";count++;}}if count==0{printf"未找到该乘客的订票信息\n";goto low;}printf"请输入要删除的订单编号:";scanf"%d\n";&p;for s=0;s<o;s++{if p==dingdans.danhao{ strcpydingdans.tnum;q;strcpydingdans.time1;q;strcpydingdans.station1;q;strcpydingdans.station2;q;strcpydingdans.tujingstation;q;strcpydingdans.time2;q;strcpydingdans.money;q;;q;strcpydingdans.tel;q;strcpydingdans.id;q;strcpydingdans.booknum;q;printf"\n";printf" 这是订单号为%d的订单信息\n";dingdans.danhao;printf"\n";printf" 火车车次:%s\n";dingdans.tnum;printf" 发车时间:%s\n";dingdans.time1;printf" 出发站:%s\n";dingdans.station1;printf" 终点站:%s \n";dingdans.station2;printf" 途径站:%s \n";dingdans.tujingstation;printf" 到站时间:%s \n";dingdans.time2;printf" 票价:%s \n";dingdans.money;printf" 姓名:%s\n";;printf" 电话:%s\n";dingdans.tel;printf" 身份证:%s\n";dingdans.id;printf" 订票数目:%s\n";dingdans.booknum;printf" 座位号:%s<座位号/车厢号>\n";dingdani.seatnum;printf"\n";printf"----------------------------------------------------------------------------\n";}}low:;}void admin{int password=1;extern int o;int n;printf"请输入管理员密码:";scanf"%d\n";&n;fflushstdin;if password==n{forint i=0;i<o;i++{printf"\n";printf" 这是订单号为%d的订单信息\n";dingdani.danhao;printf"\n";printf" 火车车次:%s\n";dingdani.tnum;printf" 发车时间:%s\n";dingdani.time1;printf" 出发站:%s\n";dingdani.station1;printf" 终点站:%s \n";dingdani.station2;printf" 途径站:%s \n";dingdani.tujingstation;printf" 到站时间:%s \n";dingdani.time2;printf" 票价:%s \n";dingdani.money;printf" 姓名:%s\n";;printf" 电话:%s\n";dingdani.tel;printf" 身份证:%s\n";dingdani.id;printf" 订票数目:%s\n";dingdani.booknum;printf" 座位号:%s<座位号/车厢号>\n";dingdani.seatnum;printf"\n";printf"----------------------------------------------------------------------------\n";}}}void passenger{char passname20;printf"请输入乘客姓名:";scanf"%s/n";passname;fflushstdin;forint i=0;i<o;i++{if strcmppassname;==0{printf"\n";printf" 这是订单号为%d的订单信息\n";dingdani.danhao;printf"\n";printf" 火车车次:%s\n";dingdani.tnum;printf" 发车时间:%s\n";dingdani.time1;printf" 出发站:%s\n";dingdani.station1;printf" 终点站:%s \n";dingdani.station2;printf" 途径站:%s \n";dingdani.tujingstation;printf" 到站时间:%s \n";dingdani.time2;printf" 票价:%s \n";dingdani.money;printf" 姓名:%s\n";;printf" 电话:%s\n";dingdani.tel;printf" 身份证:%s\n";dingdani.id;printf" 订票数目:%s\n";dingdani.booknum;printf" 座位号:%s<座位号/车厢号>\n";dingdani.seatnum;printf"\n";printf"----------------------------------------------------------------------------\n";}}}void print{printf"\n";printf" 1:管理员登陆需管理员密码 \n";printf" 2:乘客登陆 \n";printf"\n";printf"请选择登录方式:";int m;scanf"%d\n";&m;fflushstdin;switch m{case 1:admin;break;case 2:passenger;break;default:break;}}。

c语言购票课程设计

c语言购票课程设计

c语言购票课程设计一、课程目标知识目标:1. 理解C语言中基本的数据类型和运算符,并能够运用到实际编程中;2. 学会使用C语言进行顺序结构、选择结构和循环结构的编程;3. 掌握C语言数组的使用,并能实现对数据的存储和操作;4. 了解C语言函数的定义和调用,能够编写简单的函数实现特定功能;5. 了解结构体类型,能够使用结构体表示实际问题的数据结构。

技能目标:1. 能够运用C语言编写一个简单的购票系统,实现票务的查询、购买和退票功能;2. 培养学生独立分析问题、设计算法和编写程序的能力;3. 提高学生调试程序、解决问题的实际操作能力。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学习编程的积极态度;2. 培养学生团队合作意识,提高沟通协调能力;3. 增强学生面对困难的勇气和信心,培养克服困难的毅力;4. 引导学生认识到编程在实际生活中的应用,体会科技改变生活的价值。

课程性质:本课程为C语言编程实践课程,以项目驱动的方式进行教学,让学生在实际编程过程中掌握C语言的基本知识和技能。

学生特点:学生已具备一定的计算机操作能力,对编程有初步的了解,但实际编程经验不足。

教学要求:注重理论与实践相结合,强化动手实践,培养学生编程思维和解决问题的能力。

通过项目实践,使学生能够将所学知识运用到实际编程中,达到学以致用的目的。

二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式;2. 控制结构:顺序结构、选择结构(if语句、switch语句)、循环结构(for循环、while循环、do-while循环);3. 数组:一维数组、二维数组,数组的使用和操作;4. 函数:函数定义、函数调用、函数参数传递、递归函数;5. 结构体:结构体定义、结构体变量声明和初始化、结构体数组、结构体指针;6. 指针:指针的基本概念、指针的使用、指针与数组、指针与函数、指针与结构体;7. 文件操作:文件打开与关闭、文件的读写操作、文件定位;8. 购票系统设计:需求分析、系统设计、模块划分、功能实现;- 票务查询功能:查询可用票数、票价等信息;- 购票功能:选择座位、支付、生成订单;- 退票功能:退票、退款处理。

《C语言程序设计》公交车管理系统源码

《C语言程序设计》公交车管理系统源码

《C语言程序设计》公交车管理系统源码#include<stdio.h>main(){int ticket=0,stops=0,symbol=0,cardnumber=0,cardmoney=0,num=0; int i=0,balance=0,maxindex=0;int cnum[20]={0},cmoney[20]={0},cbalance[20]={0},flag[20]={0}; char choose='\0';while(1){ clrscr();printf("\n\t\t||=======================================||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||-------------Welcome-------------------||"); printf("\n\t\t||----------use bus traffic--------------||"); printf("\n\t\t||--------------Card---------------------||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||=======================================||"); printf("\n\n\n\n");printf("\n\t\t||---------------------------------------||"); printf("\n\t\t||----------Please input(0-8)------------||"); printf("\n\t\t||---------------------------------------||"); printf("\n\t\t| 1.Add new Card |");printf("\n\t\t| 2.Logout Card |");printf("\n\t\t| 3.Modify Card |");printf("\n\t\t| 4.Read card |");printf("\n\t\t| 5.Save money |");printf("\n\t\t| 6.Stat.max money |");printf("\n\t\t| 7.Display |");printf("\n\t\t| 8.Delete Data File |");printf("\n\t\t| 0.Exit |");printf("\n\t\t|-----------------------------------------|"); printf("\n\t\t");scanf("%c",&choose);switch(choose){ case'1':for(i=0;i<num;i++)if(flag[i]==1)break;cardnumber=i;printf("\n\tHow much money you want to save in your card"); scanf("%d",&cardmoney);cnum[cardnumber]=cardnumber+1;cmoney[cardnumber]=cardmoney;cbalance[cardnumber]=cardmoney;flag[cardnumber]=0;if(cardnumber==num) num++;printf("\n\t|--%5d--|--%5d--|--%5d--|",cnum[i],cmoney[i],cbalance[i]);getch();break;case'2':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){printf("\n\tReturu you balance money:%d.",cbalance[i]);do{printf("\n\n\tAre you sure logout the card(y/n)?");scanf("%c",&choose);}while(choose!='y' && choose!='y' && choose!='N' && choose!='n'); if(choose=='y' || choose=='y'){cmoney[i]=0;cbalance[i]=0;flag[i]=1;}break;}if(i==num){printf("\n\ntNo find the card.");getch();}break;case'3':printf("\n\tPlease input card number that you want to modify:"); scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){do{clrscr();printf("\n\t\t-------------------------------------------"); printf("\n\t\t please input modify Item ");printf("\n\t\t-------------------------------------------"); printf("\n\t\t------------ 1.save money------------------"); printf("\n\t\t------------ 2.balance money---------------"); printf("\n\t\t------------ 3.Return----------------------"); printf("\n\t\t-------------------------------------------"); scanf("%c",&choose);switch(choose){case'1':printf("\n\tPlease input new save money:"); scanf("%d%",&cardmoney);cbalance[i]+=cardmoney-cmoney[i];cmoney[i]=cardmoney;break;case'2':printf("\n\tPlease input new balance money:"); scanf("%d%",&balance);cbalance[i]=balance;break;case'3':break;default:printf("\n\tInput error, Please input again!"); getch();continue;}}while(choose!='3');break;}if(i==num){printf("\n\tNo find the card.");getch();}break;case'4':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){ while(symbol==0){ printf("\n\tHow many you want to take bus stops:"); scanf("%d",&stops);if(stops<1||stops>30){printf("\n\tInput error.Please input again.");getch();}else if(stops<=10){ticket=1;symbol=1;}else if(stops<=15){ticket=2;symbol=1;}else if(stops<=20){ticket=3;symbol=1;}else if(stops<=25){ticket=4;symbol=1;}else if(stops<=30){ticket=5;symbol=1;}}if(cbalance[i]>=ticket){printf("\n\tBefore:");printf("cnum:%5d cmoner:%5dcbalance:%5d",cnum[i],cmoney[i],cbalance[i]); cbalance[i]-=ticket;printf("\n\tAfter:");printf("cnum:%5d cmoner:%5dcbalance:%5d",cnum[i],cmoney[i],cbalance[i]);getch();}else{printf("\n\tYour card balance money is not enough.Please use cash.");getch();}break;}if(i==num){ printf("\n\tNo find the card");getch();}break;case'5':printf("\n\tPlease input your card number:");scanf("%d",&cardnumber);for(i=0;i<num;i++)if(cnum[i]==cardnumber && flag[i]!=1){ do{ printf("\n\tPlease input you want to save money in thecard:");scanf("%d",&cardmoney);if(cardmoney<=0)printf("\n\tInput error.Please input again.");}while(cardmoney<=0);cmoney[i]=cardmoney;cbalance[i]+=cardmoney;printf("\n\tYour card have already saved money:%5d.",cardmoney); printf("\n\tcnum:% 5d cmoney:%5d cbalance:%5d",cnum[i],cmoney[i],cbalance[i]);getch();break;}if(i==num){ printf("\n\tNo find the card.");getch();}break;case'6':maxindex=0;for(i=1;i<num;i++)if(cmoney[maxindex]<cmoney[i])maxindex=i;printf("\n\tMax save money is:%d.",cmoney[maxindex]);printf("\n\tcnum:%5d cmoney:%5d cbalance:%5d",cnum[maxindex],cmoney[maxindex],cbalance[maxindex]); getch();break;case'7':clrscr();printf("\n\t|---------------------------------------|"); printf("\n\t|--Cardnum--|--Savvemoney--|--Balance-- |"); for(i=0;i<num;i++){ if(flag[i]==1) continue;else{ printf("\n\t|-----------------------------|");printf("\n\t|--%5d--|--%5d--|--%5d--------|");cnum[i],cmoney[i],cbalance[i];if((i+1)%10==0){ getch();printf("Press any key to go on...");}}}printf("\n\t|---------------------------------|");getch();break;case'8':printf("\n\tYou select 8");getch();break;case'0':do{ printf("\n\tAre you sure exit(y/n):");scanf("%c",&choose);}while(choose!='Y' && choose!='y' && choose!='N'&&choose!='n');if(choose=='Y'||choose=='y')exit(0);break;default:printf("\n\tYou input error.Please input again."); getch();}}}。

火车订票系统c++程序

火车订票系统c++程序

火车订票系统c++程序第一篇:火车订票系统c++程序/* 头文件 */ #include //标准输入、输出头文件#include //包含字符串函数处理头文件#include //包含动态存储与释放函数头文件 /* 宏定义 */ #define GESHI “ 车次站数起始站终点站开车时间到达时间票数n” //输出表头#define PRINT “ %5s%10s%10s%10s%13s%13s%10dn”,s[i].code,s[i].data,s[i].l p,s[i].ap,s[i].lt,s[i].at,s[i].count //输出记录格式 #define N 1000 //最大列车组数/* 结构定义*/ struct train //定义结构体数组{ char code[10];//车次char data[10];//站数char lp[20];//起始站char ap[20];//终点站char lt[10];//开车时间char at[10];//到达时间int count;//票数 }s[N];/* 全局变量 */ int i;//输入计数器 int m=0;//合计计数器 char l[20];//纠错空间/* 函数声明*/ void INPUT();//输入车次信息void PRINTF();//输出车次信息 void save();//保存车次信息 void read();//读取车次信息void search();//查找车次信息void dingpiao();//订票信息 void tuipiao();//退票信息 void WRONG();//纠错模块/////////////////////////////////////////////////////////////////// ////////////////////主函数 void main(){int j;do { system(“cls”);//清屏语句printf(“ ********************************************************** ***n”);printf(“ 欢迎进入火车票务管理系统n”);printf(“ ***************************************************** ********”);printf(“ n请输入选项nn”);printf(“ 1.添加列车信息nn” “2.查找nn” “3.订票nn” “4.退票nn” “5.退出nn”);printf(“ **************************************************** *********nn”);printf(“请选择:”);scanf(“%d”,&j);gets(l);switch(j){ case 1: INPUT();//调用输入模块break;case 2:search();//调用查找模块break;case 3:dingpiao();//调用订票模块break;case 4:tuipiao();//调用退票模块break;case 5:;break;default:WRONG();break;} }while(j!=5);//判断结束printf(“n王志强1241班201210913124 n ”);printf(“n--------”);printf(“n 正在退出,请按任意键退出”);printf(“n--------n ”);}//主函数结束/////////////////////////////////////////////////////////////////// ///////////////////////输入模块 void INPUT(){int y;system(“cls”);printf(“n ====================欢迎进入录入火车时刻信息界面====================nn”);for(i=0;iprintf(“请输入车次号: ”);scanf(“%s”,&s[i].code);//读取车次号printf(“请输入站数: ”);scanf(“%s”,&s[i].data);//读取站数printf(“请输入起始站: ”);scanf(“%s”,s[i].lp);//读取起始站printf(“请输入终点站: ”);scanf(“%s”,s[i].ap);//读取终点站printf(“请输入开车时间: ”);scanf(“%s”,s[i].lt);//读取开车时间printf(“请输入到达时间: ”);scanf(“%s”,s[i].at);//读取到达时间printf(“请输入车票数: ”);scanf(“%d”,&s[i].count);//读取票数m++;printf(“第%d个信息已经输完.按任意键继续,按0 结束:”,m);scanf(“%d”,&y);gets(l);if(y==0){ save();//将结构体信息存盘 PRINTF();//输出输入的列车信息printf(“n 按任意键返回上级菜单: ”);gets(l);break;} }}////////////////////////////////////////////////////////////////////////保存模块程序 void save(){ FILE *fp,*fp1;//定义文件指针if((fp=fopen(“chen.dat”,“wb”))==NULL)//打开文件并判断是否出错{ printf(“创建文件失败!nn”);//打印出错提示getchar();ret urn;} if((fp1=fopen(“hao.dat”,“wb”))==NULL)//打开文件并判断是否出错{ printf(“创建文件失败!nn”);//打印出错提示 getchar();return;}for(i=0;iprintf(“向文件输入数据失败!nn”);fprintf(fp1,“%d”,m);fclose(fp);//关闭文件fclose(fp1);//关闭文件 }/////////////////////////////////////////////////////////////////// ////文件读取模块 void read(){ FILE *fp,*fp1;//定义文件指针if((fp=fopen(“chen.dat”,“rb”))==NULL)//打开文件,并判断是否出错{ printf(“出错,请检查文件是否存在,按任意键返回住菜单”);//打印出错提示getchar();} if((fp1=fopen(“hao.dat”,“rb”))==NULL)//打开文件并判断是否出错{ printf(“创建文件失败!nn”);//打印出错提示getchar();return;} fscanf(fp1,“%d”,&m);fclose(fp1);//关闭文件for(i=0;i/////////////////////////////////////////////////////////////////// ///////////查询模块void search(){ char name1[20];char name2[20];char ii[10];int nk;char no[10];do { system(“cls”);//清屏语句printf(“nn ====================欢迎进入查询火车时刻信息界面====================n”);printf(“n++++++++++++++++++请选择查找方式++++++++++++++++++nn”);printf(“----1.显示所有列车信息2.按车次查询3.按始发站查询----n”);printf(“-----4.按终点站查询5.返回主菜单----n”);printf(“n 请选择:”);scanf(“%d”,&nk);//读取查找方式gets(l);if(nk==5)break;switch(nk){ case 1:PRINTF();//调用打印模块break;case 2: printf(“请输入车次号:n”);scanf(“%s”,&no);//车次号break;case 3: printf(“请输入始发站名称:n”);scanf(“%s”,name1);//读取始发站break;case 4: printf(“请输入终点站名称:n”);scanf(“%s”,name2);//终点站 break;default: WRONG();break;} read();//调用读取函数 for(i=0;i>是否继续查找?(y/n)<--------nntt”);scanf(“%s”,ii);}while(strcmp(ii,“y”)==0);//判断结束} //////////////////////////////////////////////////////////////////////// ///////////订票模块void dingpiao(){ int n;char a[10];do { system(“cls”);search();//调用查询模块printf(“请输入您要订的车票数以回车键结束:”);scanf(“%d”,&n);//读取所订机票数if(n<0){ system(“cls”);WRONG();//scanf(“%s”,l);//gets(l);break;} if(s[i].count!=0&&s[i].count>=n)//判断是否出错{ s[i].count=s[i].count-n;//调用保存函数system(“cls”);printf(“订票成功!nn”);printf(“ntt按任意键返回主菜单: ”);scanf(“%s”,l);break;} if(s[i].countbreak;} printf(“是否继续?(y/n):n”);//判断是否继续订票scanf(“%s”,a);}while(!strcmp(a,“y”));//判断结束}//////////////////////////////////////////////////////////////////////// ///////退票模块 void tuipiao(){ int n;char a;do { search();//调用查询模块printf(“请输入您要退的机票数目:n”);scanf(“%d”,&n);//输入所退票数gets(l);if(n<0)//判断票数是否有效{WRONG();break;} s[i].count=s[i].count+n;do{system(“cls”);//借鉴而来的清屏语句,好用!printf(“nn-->退票成功<--”);printf(“nn-->继续 y,返回主菜单n <--”);a=getchar();gets(l);if(a!='y'&&a!='n')WRONG();}while(a!='y'&&a!='n');}while(a!='n');//判断并跳出循环} //////////////////////////////////////////////////////////////////////// ///////////////纠错模块void WRONG(){ system(“cls”);//借鉴而来的清屏语句,好用!printf(“nn--->!!输入错误,请按任意键返回!!<---”);gets(l);}第二篇:火车订票管理系统学号11~15 选题三:火车票订票管理系统1.基本要求:为方便管理火车票购买信息,编写一个火车票订票管理系统软件。

C语言课程设计报告 火 车 售 票 系 统

C语言课程设计报告 火 车 售 票 系 统

一、课程设计的原始资料及依据在现代社会,火车以其安全,舒适以及其服务的周到使愈来愈多的人选择了火车为长距离出行的交通工具,这就使火车公司以及车站的工作量愈来愈大,若仍然使用文件或者人工来管理公司、车站、火车、列班、路线、客户以及售票的信息,那无疑在效率上会大打折扣。

21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。

利用计算机来储存和管理公司、车站、火车、列班、车线、客户以及售票的信息成为了首选,在这种情况下,火车订票系统就显得非常重要了。

两个客户名单可分别由线性表和队列实现。

为查找方便,已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预计,队列也应以链表作存储结构。

整个系统需汇总各条路线的情况登录在一张线性表上,由于路线基本不变,可采用顺序存储结构,并按车次有序或按终点站名有序。

每条路线是这张表上的一个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。

队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。

用队列来进行客户信息的存储。

编辑用户使用菜单,内容包括:输入列班信息,保存列班信息,读取列班信息,查找列班信息,删除列班信息,订票信息,退票信息以及修改信息。

二、课程设计主要内容及要求1. 列车基本信息管理:输入所有列班信息。

每条路线所涉及的信息有:终点站名、车次号、车厢号、开车周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、座位等级1,2或3)以及等候替补的客户名单(包括姓名、所需的票量)。

2.列车基本信息查询:按车次号查找,按抵达站查找,按路线查找三种查找方式进行查找。

3. 订票管理:客户对想要购买的票进行订票。

3. 退票管理:将不想要的票进行退票。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。

c语言铁路购票系统的简单座位分配算法 -回复

c语言铁路购票系统的简单座位分配算法 -回复

c语言铁路购票系统的简单座位分配算法-回复C语言铁路购票系统的简单座位分配算法在铁路购票系统中,座位分配是一个重要的功能。

用户购买车票时,系统需要根据已经售出的座位情况,为其分配一个可用的座位。

本文将一步一步回答关于C语言铁路购票系统的简单座位分配算法。

1. 问题背景铁路购票系统中,座位分配算法的目标是使得座位的利用率最大化。

同时,为了方便系统的管理,需要将座位进行合理分组。

在设计座位分配算法时,可以考虑以下几个要点:- 座位分组:将车厢的座位按照一定规则分成若干组,每组座位之间互相独立。

- 座位分配:根据购票的需求,为旅客分配一个可用的座位。

- 座位释放:在旅客退票或者车票过期时,将座位标记为可用。

2. 算法设计为了实现上述目标,可以采用以下算法设计:2.1 座位分组首先,需要将车厢的座位按照一定规则分组。

一种常见的分组方式是按照座位号的奇偶性进行分组,例如奇数组和偶数组。

这样做的好处是,可以方便地控制每组座位的数量,同时也便于管理和查询。

2.2 座位分配当用户购票时,系统需要为其分配一个可用的座位。

可以采用以下步骤进行座位分配:步骤1:查询当前组的座位分配情况;步骤2:如果当前组的座位已经售罄,则切换到下一组;步骤3:在当前组中找到一个可用座位,将其标记为已售;步骤4:返回分配的座位信息。

2.3 座位释放当旅客退票或者车票过期时,座位需要被标记为可用。

可以采用以下步骤进行座位释放:步骤1:查询已被售出的座位信息;步骤2:将需要释放的座位标记为可用。

3. 代码实现以下是一个简单的C语言代码示例,实现了上述的座位分配算法:c#include <stdio.h>#define GROUP_SIZE 5#define TOTAL_GROUPS 10int seats[TOTAL_GROUPS][GROUP_SIZE] = {0};void allocateSeat(int group, int seat) {seats[group][seat] = 1;}void releaseSeat(int group, int seat) {seats[group][seat] = 0;}int findAvailableSeat() {int group, seat;for (group = 0; group < TOTAL_GROUPS; group++) {for (seat = 0; seat < GROUP_SIZE; seat++) {if (seats[group][seat] == 0) {allocateSeat(group, seat);return (group * GROUP_SIZE + seat + 1);}}}return -1; No available seats}int main() {int seat = findAvailableSeat();if (seat != -1) {printf("Allocated seat: d\n", seat);} else {printf("No available seats.\n");}releaseSeat((seat - 1) / GROUP_SIZE, (seat - 1) GROUP_SIZE);printf("Seat released.\n");}以上代码中,`allocateSeat`函数用于标记一个座位为已售出,`releaseSeat`函数用于将一个座位标记为可用。

c语言简单的地铁售票系统

c语言简单的地铁售票系统

c语言简单的地铁售票系统一个简单的地铁售票系统可以使用C语言来实现。

这个系统可以包括以下功能:1. 用户登录,用户可以输入用户名和密码进行登录,系统验证用户信息后允许用户进入系统。

2. 购票,用户可以选择起始站和目的站,系统根据用户选择计算票价,并提供购票选项。

3. 支付,用户可以选择支付方式,系统接受用户支付并发放车票。

4. 票务管理,系统可以管理车票库存,更新车票信息,以及生成销售报表等功能。

以下是一个简单的C语言地铁售票系统的代码示例:c.#include <stdio.h>。

#include <string.h>。

struct User {。

char username[20];char password[20];};struct Ticket {。

char start_station[20]; char end_station[20]; float price;};void login(struct User user) {。

printf("请输入用户名,");scanf("%s", user->username);printf("请输入密码,");scanf("%s", user->password);// 验证用户名和密码。

// ...}。

void buyTicket(struct Ticket ticket) {。

printf("请输入起始站,");scanf("%s", ticket->start_station);printf("请输入目的站,");scanf("%s", ticket->end_station);// 根据起始站和目的站计算票价。

// ...printf("票价为,%f\n", ticket->price); // 提供购票选项。

C语言编程---火车订票系统源代码

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。

C语言火车票管理系统

C语言火车票管理系统

C语言火车票管理系统#include#include#include#include#include#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(int 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();break;case 2: Display();break;case 3: search();break;case 4: add();break;case 5: buyticket();break; case 6: deleteticket();break; case 7: change();break;case 8: deletemessage();break; 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++)< p="">{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++)< p="">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<="">{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,r ecords[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(int 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++)< p="">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].hour,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,r ecords[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++)< p="">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++)< p="">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++)< p=""> 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++)< p=""> {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,re cords[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_hourtm_hour==atoi(records[i].hour)&&local-> tm_min<atoi(records[i].min))< p="">//atoi将字符串转换成一个整数值return 1;elsereturn 0;}</atoi(records[i].min))<></class_num;i++)<></class_num-1;i++)<></class_num;i++)<></class_num;i++)<></class_num;i++)<></i;h++)<></class_num;i++)<>。

c语言火车售票系统课程设计

c语言火车售票系统课程设计

c语言火车售票系统课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针、结构体等基本概念,并能运用到火车售票系统的设计与实现中;2. 掌握C语言文件操作,实现火车票信息的存储与读取;3. 理解并掌握C语言中模块化编程思想,将火车售票系统划分为多个功能模块。

技能目标:1. 能够运用C语言编写出具有良好结构和可读性的代码;2. 培养学生分析问题、解决问题的能力,通过设计火车售票系统,学会使用C 语言进行实际项目开发;3. 学会使用调试工具,对火车售票系统进行测试和优化。

情感态度价值观目标:1. 培养学生合作意识,学会在团队中共同解决问题,提高沟通与协作能力;2. 激发学生对计算机编程的兴趣,培养勇于探索、积极创新的精神;3. 培养学生关注社会实际问题的责任感,了解信息技术在实际应用中的作用和价值。

课程性质:本课程为C语言程序设计课程的实践环节,通过设计火车售票系统,让学生将所学理论知识运用到实际项目中。

学生特点:学生已具备C语言基础知识和一定的编程能力,但对实际项目的开发流程和模块化编程思想尚不熟悉。

教学要求:注重理论与实践相结合,引导学生自主探究,培养学生实际编程能力和团队协作能力。

在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。

通过课程学习,使学生具备独立开发小型项目的能力。

二、教学内容1. 火车售票系统需求分析:介绍项目背景,分析系统功能需求,明确学生需要实现的功能模块,如用户登录、车次查询、购票、退票、余票显示等。

2. C语言基础知识回顾:- 数组:回顾一维数组、二维数组的概念和应用;- 函数:介绍函数定义、调用、参数传递等基本概念;- 指针:讲解指针的定义、使用和指针操作;- 结构体:回顾结构体的定义和使用。

3. 火车售票系统设计:- 系统架构设计:引导学生采用模块化设计思想,将系统划分为多个功能模块;- 数据结构设计:介绍如何使用结构体和数组来存储和管理车次、座位、用户等信息。

火车票管理系统实训报告

火车票管理系统实训报告

#### 一、实训背景随着我国铁路事业的快速发展,火车票的销售和管理已经成为铁路运营的重要组成部分。

为了提高火车票的销售效率,降低运营成本,提高旅客购票体验,我们开展了火车票管理系统的实训项目。

本项目旨在通过C语言程序设计,实现火车票的在线查询、预订、支付等功能,为学生提供一个实践平台,提高学生的编程能力和系统设计能力。

#### 二、实训目标1. 掌握C语言的基本语法和编程技巧。

2. 熟悉面向对象程序设计方法,掌握UML类图、时序图等设计工具。

3. 学习数据库设计,实现火车票信息的存储和查询。

4. 了解网络编程,实现火车票在线预订和支付功能。

5. 培养团队协作能力和项目实施能力。

#### 三、实训内容1. 需求分析:分析火车票管理系统的功能需求,包括用户查询、预订、支付、退票等。

2. 系统设计:根据需求分析,设计火车票管理系统的架构,包括前端界面、后端数据库、网络通信等。

3. 数据库设计:设计火车票数据库,包括用户信息表、车次信息表、订单信息表等。

4. 程序编写:使用C语言编写火车票管理系统的各个模块,包括登录模块、查询模块、预订模块、支付模块等。

5. 系统测试:对火车票管理系统进行功能测试、性能测试和安全性测试。

#### 四、实训过程1. 需求分析阶段:我们通过查阅相关资料、与铁路部门沟通,明确了火车票管理系统的功能需求。

主要包括用户查询车次、预订车票、支付车票、退票等功能。

2. 系统设计阶段:我们采用UML类图、时序图等工具,对火车票管理系统进行了详细设计。

前端界面采用C语言编写,后端数据库采用MySQL,网络通信采用TCP/IP协议。

3. 数据库设计阶段:我们根据需求分析,设计了火车票数据库,包括用户信息表、车次信息表、订单信息表等。

数据库设计遵循规范化原则,保证数据的一致性和完整性。

4. 程序编写阶段:我们按照系统设计,使用C语言编写了火车票管理系统的各个模块。

在编写过程中,我们遵循模块化、可重用原则,提高代码质量。

火车票售票系统c语言设计

火车票售票系统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语言课程设计报告  火车售票查询系统(完)

湖北工业大学工程技术学院课程设计报告书课程名称:C语言课程设计班级:物联网一班小组成员:范立恒、陈根、聂俊豪、麦灿文、黄文康组长:范立恒指导教师:楚惟善二○一三年六月1 课程题目及要求及要求题目一:火车售票系统任务:结合C语言中相关知识,设计出火车售票系统。

1 录入北京西站车次信息;2 旅客按车次买票;3 统计某日火车票销售金额。

程序要求:⏹贯彻结构化的程序设计思想。

⏹用户界面友好,功能明确,操作方便。

⏹用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某日销售金额”、“退出”4项。

⏹代码应适当缩进,并给出必要的注释,以增强程序的可读性⏹为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定;⏹根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。

源程序要求书写规范,结构清晰。

重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。

⏹程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。

如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和2 程序分设计说明经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。

在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。

读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。

1. 添加车次函数主要实现程序最初运行时车次的录入;2. 旅客买票函数实现的功能是按照旅客所需车次几所购买车票的数目;3. 查询车票总额按照题目的具体要求实现的是总额的查询;4. 显示函数实现的是显示目前所有的有效车次信息。

C语言课程设计-汽车车票管理系统

C语言课程设计-汽车车票管理系统

中国海洋大学青岛学院C语言课程设计报告书题目汽车车票管理系统学生姓名指导教师学院专业班级组内分工目录1 前言 (1)2 需求分析 (2)3 模块设计图 (3)4 NS流程图清单 (4)5 存储结构及函数说明 (17)6 课程设计结果 (20)7 实践心得体会 (26)1 前言1.1 课程设计题目:汽车车票管理管理系统1.2 课程设计目的:车票管理管理系统是车站对车票信息管理的工具。

系统能够实现车票信息的录入,浏览,查询,订票,退票等功能.1.3 功能概述:车票管理系统主要分为管理员登录和普通用户登录两大部分。

其中管理员登录后,可以录入、浏览和查询车票信息。

普通用户登录后可进行查询、退票和订票等操作。

2 需求分析2.1 车次的信息包括:班次、发车时间、起点站、终点站、行车时间、额定人数、已定票人数、票价等。

2.2 系统能够完成车票信息的录入、浏览、查询、订票、退票等功能。

(1)车次信息录入功能: 可进行车次信息的录入,并以文件保存。

(2)车次信息浏览功能: 浏览所有班次信息,并可显示出所有班次当前状态,若某车次发车时间已过,则显示“车已开出”。

(3)车次信息查询功能: 查询车次信息。

可按班次号查询,也可按终点站查询。

(4)车票订票功能:只有当已订票人数小于额定载客量且该班次未到发车时间时才能完成订票。

(5)车票退票功能: 退票时,输入退票班次,若此班次未发出则可能完成退票。

(6)票数变更功能:当用户订票或退票成功后,票数会自动发生相应的改变。

3 模块设计图4 NS流程图清单5 存储结构及函数说明5.1 存储结构系统中,车票信息主要采ticket结构体进行储存,ticket结构体中嵌入time 结构体记录发车时间。

系统还会建立ticket.txt文档和record.txt文档用来存储车次信息和车次记录的条数。

struct time //定义记录时间的结构体{int hour; //小时int minute; //分钟};struct ticket //定义记录车票信息的结构体{int number; //定义车次struct time ft ; //记录发车时间char origin_station[20]; //起始站名称数组char last_station[20]; //终点站名称数组double last_time; //持续时间int max_number; //车次最大运载量int sold_ticket; //已售车票int price; //票价};5.2 系统的主要功能函数int system_time();显示系统时间函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前言随着计算机技术的发展,可视编程技术占有了越来越重要的作用。

Visual C++6.0 是一种功能强大行之有效的可视化编程工具。

因此此软件是在Visual C++6.0环境下编写的。

对于我们,随着学习的深入,已经大体掌握了Visual C++6.0环境下的程序开发。

为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,先以字符统计软件作为开始,对Visual C++6.0环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个员工培训系统软件的开发进行的更加顺利。

本文档详细叙述了基于Visual C++6.0环境下的车票管理系统的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。

此次车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及C 语言语法。

本文档的安排如下:第一章主要介绍了对面向对象C语言以及Visual C++6.0编程环境。

第二章主要的介绍说明了车票管理系统的编程思想和详细设计。

第三章主要对车票管理系统进行调试,运行程序并截图,显示运行界面和结果。

第四章主要介绍了软件开发过程中遇到的一些问题,对该软件进行的一个总结。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,车票管理系统和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。

1 课程设计概述1.车票管理系统功能概述(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

(3)查询路线(起点、终点):可按班次号查询 ,可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数1.2Visual C++6.0概述Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。

它提供了MFC类库,使用户可以方便的开发自己想实现的功能。

Visual C++6.0的主要特点:(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。

(4)支持Internet连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。

(6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。

(8)Find in File命令支持两个独立的输出窗格,可以保存上一次搜索的结果。

这些新特性可以更好地利用Visual C++开发工具进行Windows应用程序开发。

2 车票管理系统总体设计2.1 车票管理系统总体设计思想车票管理系统的功能为1. 录入班次2. 显示所有班次3. 查询班次4. 增加班次5. 售票6. 退票7. 修改班次8. 删除班次9. 退出9. 车票管理系统软件的功能模块有:(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter 键进入该功能。

(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。

(3)完成每次功能,可保存用户的修改的信息,及时更新文件信息。

下次查询时内容为最新信息。

实时的信息更新对比等。

一个名TICKET的结构体进行定义,包括num[10]hour[3];min[3]from[10]; to[10];hours max; now;等结构体成员。

然后对调用函数进行定义。

int system_time()系统时间,void NewMessage() 新纪录录入函数,void ShowTable1() void ShowTable2(int i) 线框调用1和2不用没次输,void Display()显示所有函数,void add()增加记录,void save() 保存函数,void save()保存函数,void load() 按班次查询函数,void search() 查询函数,void change()修改函数,void quit()退出函数,void Ticketorder() 售票函数,void Ticketdelete()删除函数,int menu_select()菜单函数, int whether(int)判断时间是否超出函数,void find(char s1[],char s2[]) 查询函数★//s1为班次//s2为终点站,void deletemessage()删除函数,int findnum(char s1[])班次查询函数,void get(int,int)修改及增加班次,char *menu[]菜单函数。

该系统将这些信息均放在文件d:车票管理系统0中。

最后定义main()函数,利用函数调用,实现程序的各种功能。

将其放在系统文件d:车票管理系统0中。

程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

程序把每种功能分开实现,更简单,实用程序更易理解。

2.2 总体设计流程图3 车票管理系统软件详细设计一个名TICKET的结构体进行定义,包括num[10]hour[3];min[3]from[10]; to[10];hours max; now;等结构体成员。

然后对调用函数进行定义。

int system_time()系统时间,void NewMessage() 新纪录录入函数,void ShowTable1() void ShowTable2(int i) 线框调用1和2不用没次输,void Display()显示所有函数,void add()增加记录,void save() 保存函数,void save()保存函数,void load() 按班次查询函数,void search() 查询函数,void change()修改函数,void quit()退出函数,void Ticketorder() 售票函数,void Ticketdelete()删除函数,int menu_select()菜单函数, int whether(int)判断时间是否超出函数,void find(char s1[],char s2[]) 查询函数★//s1为班次//s2为终点站,void deletemessage()删除函数,int findnum(char s1[])班次查询函数,void get(int,int)修改及增加班次,char *menu[]菜单函数。

该系统将这些信息均放在文件d:车票管理系统0中。

最后定义main()函数,利用函数调用,实现程序的各种功能。

将其放在系统文件d:车票管理系统0中。

4 程序测试、4.0 菜单界面图3-0-1 菜单界面如上图所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。

选择1-9并按enter键进行操作。

如选择出错,系统将提出警告,并提醒用户重新进行选择。

4.1 录入班次界面图3-1- 1 第一次输入时的界面图3-1- 2 第二次输入时的界面如上图所示,该功能实现录入班次信息。

选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。

而第二次输入时提醒已经输过,不能在加。

4.2 查询所有班次界面图3-2 字符串重新统计界面如上图所示,该功能实现显示所有班次。

选择2按enter键进入该功能,程序提直接显示出信息,按enter键,程序进入菜单项,程序将再次提醒用户进行新的选择。

4.3 查询班次界面图 3-3-1 查询班次界面图3-3- 2 选择查询方式的界面如上图所示,该功能将实现程序运行班次的查询。

选择3并按enter键将实现该功能。

分班次和终点站两种方式查询。

4.4 增加班次界面图3-4-1 增加功能界面图3-4-2 增加前界面图3-4-3 增加后界面如上图所示,该功能将增加班次信息,帮助用户更新班次信息。

选择4并按enter键将实现该功能,再按提示输入就行。

按任意键返回主菜单。

4.5 售票界面图3-5-1 选择售票功能界面图3-5-2 选择后的界面图3-5-3 订票时的界面如上图所示,该功能将帮助人们选择买票。

选择5按enter键实现该功能,按任意键关闭程序。

买票程序可提示买票成功否,且自动判断是否可卖。

4.6 退票界面图3-6 退票时的界面如上图所示,该功能将帮助人们选择退票。

选择6按enter键实现该功能,按任意键关闭程序。

退票程序可提示退票成功否,且自动判断是否可退。

4.7 修改班次界面图3-7 修改班次时的界面如上图所示,该功能将帮助人们修改班次信息。

选择7按enter键实现该功能,按任意键关闭程序。

按提示操作修改班次。

4.8 删除班次界面图3-8 删除班次时的界面如上图所示,该功能可删除班次信息。

选择8按enter键实现该功能,按任意键关闭程序。

按提示操作删除班次。

4.9 退出界面图3-9 退出时的界面如上图所示,该功能可退出系统。

选择9按enter键实现该功能。

课程设计总结为了提高我们的实践能力和合作能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期一周的C语言课程设计实习,并安排了专门的指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。

为今后的工作适应环境。

在此次车票管理系统开发过程中,有很多东西值得我们思考并总结。

开发过程大体可分为以下几个步骤:(1)思考总体设计方案:总体结构和模块外部设计,功能分配。

思考要实现整个程序大体需要的几个模块和其中用到的 C语言基本操作符、语句格式等。

(2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。

(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码框架。

(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。

(5)代码的调试:在Visual C++6.0环境下输入代码并进行调试和正确运行。

相关文档
最新文档