火车售票系统软件代码

合集下载

火车购票系统代码思路

火车购票系统代码思路

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include "time.h"//班次信息表#define SIZELIMIT 10 //每班次的具体信息的字符个数限制在10以内#define MAXNUM 1000 //设定最多只能录入1000个车次信息typedef struct cardbase //定义一个关于班次信息的结构体,取名为CardBase {char C_ID[SIZELIMIT];//班次char C_TIME[SIZELIMIT];//发车时间char C_ANAME[SIZELIMIT];//起点站char C_BNAME[SIZELIMIT];//终点站char C_USETIME[SIZELIMIT];//行车时间char C_MAXNUM[SIZELIMIT];//额定载量char C_REMAINNUM[SIZELIMIT];//余票数量}CardBase;int cbNum=0;//记录班次数CardBase cBList[MAXNUM];//班次列表//读取班次信息void readcardbasefile()FILE *fp;//打开文件失败则创建文件if((fp=fopen("./number.dat","r"))==NULL){//初次运行创建文件if ((fp=fopen("./number.dat","w"))==NULL){exit(0); //返回}else{fclose(fp);}return ;}/*文件位置指针移动到文件末尾*/fseek(fp,0,2);//重定位文件内部位置指针/* int fseek( FILE *stream, long offset, int origin );第一个参数stream为文件指针第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或SEEK_SETSEEK_SET:文件开头SEEK_CUR:当前位置SEEK_END:文件结尾其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.简言之:fseek(fp,100L,0);把stream指针移动到离文件开头100字节处;fseek(fp,100L,1);把stream指针移动到离文件当前位置100字节处;fseek(fp,-100L,2);把stream指针退回到离文件结尾100字节处。

火车票查询系统代码

火车票查询系统代码

火车票查询系统代码.txt41滴水能穿石,只因为它永远打击同一点。

42火柴如果躲避燃烧的痛苦,它的一生都将黯淡无光。

#include <iostream.h>#include <string.h>void welcome(); //欢迎系统void choose(); //选择系统void time(int year,int month,int day); //时间判断系统void booktickets(); //订票子系统void sealticket(); //售票子系统void sealticket(char begin[10],char end[10],int number);void returntickets(); //退票子系统int statisticstrain(char begin[10],char end[10]); //站站查询 |int statisticstrain1(char trainnum[10]); //车次查询 } 统计子系统int statisticstrain2(char station[10]); //车站查询 |void querytrain(); //查询子系统int generateddata(char begin[10],char end[10]); //站站查询 |int generateddata1(char trainnum[10]); //车次查询 } 生成数据子系统int generateddata2(char station[10]); //车站查询 |void quit(); //退出系统//欢迎系统void welcome(){cout<<"********************************************************"<<endl;cout<<"* 欢 * 迎 * 使 * 用 * 火 * 车 * 票 * 订 * 票 * 系 * 统 *"<<endl;cout<<"********************************************************"<<endl;cout<<"* 本订票系统有以下功能: *"<<endl;cout<<"* 1:订购火车票 *"<<endl;cout<<"* 2:预定火车票 *"<<endl;cout<<"* 3:退订火车票 *"<<endl;cout<<"* 4:查询车票信息 *"<<endl;cout<<"* 5:退出系统 *"<<endl;cout<<"********************************************************"<<endl;cout<<"请选择所要执行的功能: "<<endl;choose();}//选择系统void choose(){int i;cin>>i;switch (i)case 1:booktickets();break;case 2:sealticket();break;case 3:returntickets();break;case 4:querytrain();break;case 5:quit();break;default:cout<<"请在数字 1-5 之间重新您的输入选择!"<<endl; choose();break;}}//时间判断系统void time(int year,int month,int day){int jy = 1;int y = year % 4;if(month == 2){if(year % 4 == 0){if((year/100)%4 != 0){if(day > 29){cout<<"请输入正确的日期格式!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;}}else{if(day > 28){cout<<"请输入正确的日期格式!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;}}}else if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){if(day > 31){cout<<"请输入正确的日期格式!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;}}else if(month == 4 || month == 6 || month == 9 || month == 12){if(day > 30){cout<<"请输入正确的日期格式!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;}}elsecout<<"请输入正确的日期格式!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;}}//订票子系统void booktickets(){char begin[10],end[10];int year,month,day;cout<<"请输入出发地:"<<endl;cin>>begin;cout<<"请输入目的地:"<<endl;cin>>end;cout<<"请输入您所要订购的票的出发日期!"<<endl;cout<<"请输入出发年份:"<<endl;cin>>year;cout<<"请输入出发月份:"<<endl;cin>>month;cout<<"请输入出发日期:"<<endl;cin>>day;time(year,month,day); //判断输入的时间是否正确cout<<"出发日期为:"<<year<<"-"<<month<<"-"<<day<<endl; int number;cout<<"请输入所要订购的火车票数量:"<<endl;cin>>number;sealticket(begin,end,number); //调用售票系统(2)}//售票子系统(1)void sealticket(){char begin[10],end[10];cout<<"请输入出发地:"<<endl;cin>>begin;cout<<"请输入目的地:"<<endl;cin>>end;int number;cout<<"请输入所要订购的火车票数量:"<<endl;cin>>number;int j = statisticstrain(begin,end); //调用站站统计子系统if(j == 1){char trainnum[10];cout<<"请选择火车车次:"<<endl;cin>>trainnum;int price;cout<<"请选择票价:"<<endl;cin>>price;cout<<endl;cout<<"您所需要的火车票信息:"<<endl;cout<<"出发地:"<<begin<<'\t'<<"目的地"<<end<<'\t'<<"车次:"<<trainnum<<'\t'<<"票价:"<<price<<endl;cout<<"出发日期为:2010-12-24"<<endl;cout<<"您一共订购了 "<<number<<" 张"<<endl;cout<<endl;cout<<"确认无误后请输入 1 "<<'\t'<<"取消请输入 0 "<<endl;int i;cin>>i;if(i == 1){cout<<endl;cout<<"购买成功!"<<endl;cout<<"继续购买请输入 1 "<<'\t'<<"退出购票系统请输入 0 "<<endl;cin>>end;int j;cin>>j;if(j == 1)sealticket();elsewelcome();}elsewelcome();}else if(j == 0)welcome();}//售票子系统(2)void sealticket(char begin[10],char end[10],int number){int j = statisticstrain(begin,end); //调用站站统计子系统if(j == 1){char trainnum[10];cout<<"请选择火车车次:"<<endl;cin>>trainnum;int price;cout<<"请选择票价:"<<endl;cin>>price;cout<<endl;cout<<"您所需要的火车票信息:"<<endl;cout<<"出发地:"<<begin<<'\t'<<"目的地"<<end<<'\t'<<"车次:"<<trainnum<<'\t'<<"票价:"<<price<<endl;cout<<"您一共订购了 "<<number<<" 张"<<endl;cout<<endl;cout<<"确认无误后请输入 1 "<<'\t'<<"取消请输入 0 "<<endl;int i;cin>>i;if(i == 1){cout<<endl;cout<<"购买成功!"<<endl;cout<<"继续购买请输入 1 "<<'\t'<<"退出购票系统请输入 0 "<<endl;cin>>end;int j;cin>>j;if(j == 1)sealticket();elsewelcome();}elsewelcome();}else if(j == 0)welcome();}//退票子系统void returntickets(){char begin[10],end[10];cout<<"请输入出发地:"<<endl;cin>>begin;cout<<"请输入目的地:"<<endl;cin>>end;char trainnum[10];cout<<"请输入火车车次:"<<endl;cin>>trainnum;int price;cout<<"请选择票价:"<<endl;cin>>price;int number;cout<<"请输入所要退订的火车票数量:"<<endl;cin>>number;cout<<endl;cout<<"您所要退订的火车票信息:"<<endl;cout<<"出发地:"<<begin<<'\t'<<"目的地"<<end<<'\t'<<"车次:"<<trainnum<<"票价:"<<price<<endl;cout<<"您一共退订了 "<<number<<" 张"<<endl;cout<<endl;cout<<"确认无误后请输入 1 "<<'\t'<<"取消请输入 0 "<<endl;int i;cin>>i;if(i == 1){cout<<endl;cout<<"退订成功!"<<endl;cout<<"继续退订请输入 1 "<<'\t'<<"退出退票系统请输入 0 "<<endl;cin>>end;int j;cin>>j;if(j == 1)returntickets();elsewelcome();}elsewelcome();}//查询子系统void querytrain(){int i;cout<<endl;cout<<"请选择您要的查询方式:"<<endl;cout<<"1、(出发)站(到达)站查询"<<endl;cout<<"2、车次查询"<<endl;cout<<"3、车站查询"<<endl;cout<<endl;cin>>i;if(i == 1){char from[10],to[10];cout<<"请输入出发站:"<<endl;cin>>from;cout<<"请输入到达站:"<<endl;cin>>to;cout<<endl;statisticstrain(from,to);cout<<endl;welcome();}else if(i == 2){char trainnum[10];cout<<"请输入车次:"<<endl;cin>>trainnum;cout<<endl;statisticstrain1(trainnum);welcome();}else if(i == 3){char station[10];cout<<"请输入车站:"<<endl;cin>>station;cout<<endl;statisticstrain2(station);welcome();}}//统计子系统——站站查询int statisticstrain(char begin[10],char end[10]) {int i = generateddata(begin,end);cout<<endl;return i;}//生成数据子系统——站站int generateddata(char begin[10],char end[10]){if(!strcmp(begin,"changzhou") && !strcmp(end,"nanjing")){cout<<endl;cout<<"从"<<begin<<"到"<<end<<"的火车有:"<<endl;cout<<endl;cout<<"车次:k8372"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:41"<<'\t'<<"到达时间:02:17"<<'\t'<<"参考价格(元): 硬座:22 软座:34 硬卧(上/中/下):68/73/76 软卧(上/下):103/109"<<endl;cout<<endl;cout<<"车次:2582"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:54"<<'\t'<<"到达时间:02:24"<<'\t'<<"参考价格(元): 硬座:19 软座:31 硬卧(上/中/下):65/70/73 软卧(上/下):100/106"<<endl;cout<<endl;cout<<"车次:g7124"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:07:56"<<'\t'<<"到达时间:08:39"<<'\t'<<"参考价格(元): 一等软座:105"<<endl; return 1;}else{cout<<endl;cout<<"没有从 "<<begin<<" 到 "<<end<<" 的火车!"<<endl;return 0;}}//统计子系统——车次查询int statisticstrain1(char trainnum[10]){int i = generateddata1(trainnum);cout<<endl;return i;}//生成数据子系统——车次int generateddata1(char trainnum[10]){if(!strcmp(trainnum,"k8372")){cout<<endl;cout<<"车次为"<<trainnum<<"的火车有:"<<endl;cout<<endl;cout<<"车次:k8372"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:41"<<'\t'<<"到达时间:02:17"<<'\t'<<"参考价格(元): 硬座:22 软座:34 硬卧(上/中/下):68/73/76 软卧(上/下):103/109"<<endl;return 1;}else if(!strcmp(trainnum,"2582")){cout<<endl;cout<<"车次为"<<trainnum<<"的火车有:"<<endl;cout<<endl;cout<<"车次:2582"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:54"<<'\t'<<"到达时间:02:24"<<'\t'<<"参考价格(元): 硬座:19 软座:31 硬卧(上/中/下):65/70/73 软卧(上/下):100/106"<<endl;return 1;}else if(!strcmp(trainnum,"g7124")){cout<<endl;cout<<"车次为"<<trainnum<<"的火车有:"<<endl;cout<<endl;cout<<"车次:g7124"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:07:56"<<'\t'<<"到达时间:08:39"<<'\t'<<"参考价格(元): 一等软座:105"<<endl; return 1;}else{cout<<endl;cout<<"没有车次为 "<<trainnum<<trainnum[0]<<" 的火车!"<<endl;return 0;}}//统计子系统——车站查询int statisticstrain2(char station[10]){int i = generateddata2(station);cout<<endl;return i;}//生成数据子系统——车站int generateddata2(char station[10]){if(!strcmp(station,"changzhou") || !strcmp(station,"nanjing")){cout<<endl;cout<<"出发站(经过站)为"<<station<<"的火车有:"<<endl;cout<<endl;cout<<"车次:k8372"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:41"<<'\t'<<"到达时间:02:17"<<'\t'<<"参考价格(元): 硬座:22 软座:34 硬卧(上/中/下):68/73/76 软卧(上/下):103/109"<<endl;cout<<endl;cout<<"车次:2582"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:00:54"<<'\t'<<"到达时间:02:24"<<'\t'<<"参考价格(元): 硬座:19 软座:31 硬卧(上/中/下):65/70/73 软卧(上/下):100/106"<<endl;cout<<endl;cout<<"车次:g7124"<<'\t'<<"发站:(过)常州"<<'\t'<<"到站:(过)南京"<<'\t'<<"发车时间:07:56"<<'\t'<<"到达时间:08:39"<<'\t'<<"参考价格(元): 一等软座:105"<<endl; return 1;}else{cout<<endl;cout<<"没有经过 "<<station<<" 的火车!"<<endl;return 0;}}//退出系统void quit(){cout<<endl;cout<<"感谢您的使用!"<<endl;}void main(){welcome();}。

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。

java 铁路售票系统项目源码 毕业设计

java 铁路售票系统项目源码 毕业设计

《Java铁路售票系统项目源码》--深度探究---一、概述在软件工程领域中,毕业设计是大学生的一项重要任务。

当提到Java 铁路售票系统项目源码作为毕业设计主题时,它涉及到对Java编程语言、软件开发流程、项目管理等多方面的理解和应用。

本文将以深度和广度的要求全面评估并撰写有价值的文章,来探讨《Java铁路售票系统项目源码》这一主题。

二、项目背景及概述1. Java铁路售票系统项目源码Java铁路售票系统项目源码是一个涉及到Java语言编程的实际项目,其目的是通过计算机软件来模拟真实的铁路售票系统。

该项目需要有完善的界面设计、数据库管理、用户交互体验等功能,以满足实际铁路售票系统的需求。

2. 项目重要性这个项目对于毕业设计学生来说,有着非常高的重要性。

它将综合性地考察学生对Java编程语言的掌握程度、软件开发流程的理解以及项目管理的能力等方面。

这也是学生能够将所学知识应用到实际项目中并展现出自己能力的一次重要机会。

三、深入探讨Java铁路售票系统项目源码1. 项目的技术要求和挑战(1)Java语言编程要求(2)数据库管理技术要求(3)界面设计和用户交互体验要求(4)项目管理和团队协作能力要求2. 项目源码的设计和结构分析(1)模块划分和功能设计(2)代码结构和规范(3)关键算法和技术应用分析3. 项目实施过程中的难点和解决方案(1)技术实现上的难点(2)团队协作中的挑战(3)项目实施过程中的调试和优化策略四、观点和理解共享对于《Java铁路售票系统项目源码》这一主题,我认为它不仅仅是一次学术性的毕业设计,更是学生对自己所学知识的彻底检验。

通过这样一个真实的项目,学生能够更好地掌握Java编程语言,了解项目开发的流程和方法,提升自己的团队协作能力和问题解决能力。

这也是一次展现自己能力的重要机会,学生可以通过这一项目向外界展示自己的编程、设计和团队合作能力。

五、总结回顾在本文中,我们深入探讨了《Java铁路售票系统项目源码》这一主题。

java 铁路售票系统项目源码 毕业设计

java 铁路售票系统项目源码 毕业设计

java 铁路售票系统项目源码毕业设计Java铁路售票系统项目源码是一项在毕业设计中常见的主题。

在这个项目中,学生需要使用Java编程语言,设计一个完整的铁路售票系统,包括用户界面、数据管理、订单处理等多个模块。

在本文中,我将深入探讨这个主题,从系统设计、代码实现、功能特点等多个方面进行全面评估,并据此撰写一篇有价值的文章。

I. 系统设计1.1 系统架构在Java铁路售票系统项目中,良好的系统架构能够有效地促进项目的开发和维护。

我们需要考虑系统的模块划分,如用户管理、车票管理、订单管理等模块,以及各个模块之间的交互关系。

另外,我们还需要考虑系统的性能、可扩展性、安全性等方面的设计。

1.2 数据库设计数据管理是铁路售票系统中至关重要的一部分。

在数据库设计中,我们需要考虑数据表的设计、索引的建立、数据的一致性和完整性等问题。

另外,如何优化数据库查询和提升系统的响应速度也是需要重点考虑的问题。

II. 代码实现2.1 用户界面用户界面是用户和系统进行交互的重要入口。

在Java铁路售票系统中,我们需要设计直观、友好的界面,以便用户能够方便快捷地完成购票、查询车次、查看订单等操作。

2.2 数据处理数据的处理是整个系统的核心。

我们需要使用Java语言实现对数据库的操作,包括数据的增删改查等操作。

另外,数据的加密、解密、数据验证等功能也需要在代码实现中得到充分考虑。

III. 功能特点3.1 实现多种车票查询在铁路售票系统中,用户需要能够根据不同的出发地、目的地、时间等条件查询车票信息。

系统需要实现多种车票查询的功能,并能够快速准确地返回查询结果。

3.2 订单管理用户成功购票后,系统需要生成订单并进行管理。

在订单管理中,我们需要考虑订单的状态更新、退票处理、订单详情展示等功能。

IV. 总结和回顾通过对Java铁路售票系统项目源码的深入探讨,我对这个主题有了更深入的理解。

在系统设计方面,我意识到良好的架构设计对项目的成败至关重要;在代码实现方面,我了解到数据处理和用户界面设计是需要重点关注的部分;在功能特点方面,我认识到多种车票查询和订单管理是系统的核心功能。

火车票务管理系统(C语言版)【TXT文件,改后缀即可】

火车票务管理系统(C语言版)【TXT文件,改后缀即可】
void INPUT()
{
char ch;
do
{
system("cls"); //借鉴而来的清屏语句,好用!
printf("\n\n ====================欢迎进入 录入火车时刻信息 界面====================\n");
#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! \n"
#define GeShi " 车次 日期 起点 终点 开车时间 到达时间 票价\n" //输出表头
printf(" --- ---\n");
printf(" --- 欢迎进入火车票务管理系统 ---\n");
printf(" --- ---\n");
void READ()
{
FILE *fp,*fp1;
if((fp=fopen("hchsk.txt","r"))==NULL)
{
printf("无法打开文件\n");
getchar();
return;
}
if((fp1=fopen("N.txt","r"))==NULL)
int n=0; //合计计数器
char l[20]; //纠错空间
///////////////////////////////////////////////////////////////////////////////////////主函数

火车票务管理系统C语言版TXT文件改后缀即可

火车票务管理系统C语言版TXT文件改后缀即可

int n=0;
//合计计数器
char l[20];
//纠错空间
///////////////////////////////////////////////////////////////////////
////////////////主函数
int main()
{
int x;do来自{x=MENU();
printf(&quot;
请选择: &quot;);
scanf(&quot;%d&quot;,&amp;choice);
gets(l);
return choice;
}
///////////////////////////////////////////////////////////////////////
按任意键返回上级菜单: &quot;);
gets(ch);
}
///////////////////////////////////////////////////////////////////////
////////////////查询模块
void SEARCH()
{
char name1[10];//车次
#define
Print
&quot; %s%13s%10s%10s%12s%15s%11s\n&quot;,T[i].code,T[i].data,T[i].lp,
T[i].ap,T[i].lt,T[i].at,T[i].price //输出记录格式
#define Wrong &quot;\n
! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输

火车票查询系统代码

火车票查询系统代码

if(strcmp(numorcity,"num")==0) 于判断 {
// ; while(r) { if(strcmp(r->data.getnum(),findmess)==0) return r ; r=r->next ; } } else if(strcmp(numorcity,"city")==0) { r=l->next ; while(r) { if(strcmp(r->data.getcity(),findmess)==0) return r ; r=r->next ; } } return 0 ; } void chaxuntrain(Link l) // 查询火车信息 { char t='y'; while(t=='y') { Node *p ; int sel ; //查询方式代号(1和2) char str1[5],str2[10]; if(!l->next) //指向链表的最后尾段, 即没有记录 {cout<<" 非常抱歉,这里没有相关记录 !"<<endl; return ; } cout<<" 选择查询方式:\n 1:根据车次查询;\n 2:根据到达的城市查询:"<<endl;
if(fp==NULL) { cout<<" 文件无法打开!" ; return ; } p=l->next ; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) //fwrite,写内 容(Node)到流中,c库函数, { p=p->next ; count++; } else { flag=0 ; break ; } } if(flag) { cout<<" 以上"<<count<<"个train的信息已经被保 存"<<endl; shoudsave=0 ; } fclose(fp); //文件关闭 } int main() { FILE*fp1 ; Node*p,*r ; Link l ; int sel ; l=(Node*)malloc(sizeof(Node));

火车售票系统完整代码

火车售票系统完整代码

package com.yue;import java.awt.Color;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextArea;import javax.swing.JTextField;public class BuyPanel extends JPanel {StringBuffer sb = new StringBuffer();private boolean flag = false;JTextArea jtArea = new JTextArea(10, 78);JLabel buyLabel = new JLabel("订票");JTextField fId = new JTextField(7);JTextField ftid = new JTextField(7);JTextField fche = new JTextField(7);JTextField fzhangshu = new JTextField(7);JTextField fbodyId = new JTextField(7);JPasswordField jpField = new JPasswordField(7);public JPanel getBuypn() {JPanel pan = new JPanel();GridBagLayout layout = new GridBagLayout();pan.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 100, 100, GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(buyLabel, con);con = getGridBagConstraints(0, 2, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(new pan3(), con);con = getGridBagConstraints(0, 3, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(new pan4(), con);con = getGridBagConstraints(0, 4, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);pan.add(new pan5(), con);this.setLocation(270, 150);this.add(pan);return pan;}/*** 定义下面购票操作区面板pan3** @author Administrator**/class pan3 extends JPanel {JLabel lId = new JLabel(" 车票号码 ");JLabel ltid = new JLabel(" 车票号码 ");JLabel che = new JLabel(" 车次 ");JLabel lbodyId = new JLabel(" 身份证号 ");JLabel password = new JLabel(" 密码 ");JLabel lzhangshu = new JLabel(" 所需张数 ");JLabel la1 = new JLabel(" ");JLabel la2 = new JLabel(" ");JButton sureButton = new JButton("查询确认");JButton buyButton = new JButton("确认购票");public pan3() {buyButton.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {UpdateUser();if (flag==true){UpdateTrain();System.out.println("hjkasfhjkaf");}}});sureButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {select();}});GridBagLayout layout = new GridBagLayout();this.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100, GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(lId, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(fId, con);con = getGridBagConstraints(8, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(la2, con);con = getGridBagConstraints(9, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(sureButton, con);con = getGridBagConstraints(0, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(ltid, con);con = getGridBagConstraints(1, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(ftid, con);con = getGridBagConstraints(2, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(che, con);con = getGridBagConstraints(3, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(fche, con);con = getGridBagConstraints(4, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(lbodyId, con);con = getGridBagConstraints(5, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(fbodyId, con);con = getGridBagConstraints(0, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(password, con);con = getGridBagConstraints(1, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(jpField, con);con = getGridBagConstraints(2, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(lzhangshu, con);con = getGridBagConstraints(3, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(fzhangshu, con);con = getGridBagConstraints(8, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(la1, con);con = getGridBagConstraints(9, 2, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(buyButton, con);this.setBorder(BorderFactory.createTitledBorder("订票操作区"));}}/*** 定义下面一个JList用于显示车票的所有信息面板pan4** @author Administrator**/class pan4 extends JPanel {JButton btId = new JButton("车票号码");JButton bt1 = new JButton("起点站");JButton bt2 = new JButton("终点站");JButton bt3 = new JButton("车次");JButton bt4 = new JButton("发车时间");JButton bt5 = new JButton("到达时间");JButton bt6 = new JButton("座位类型");JButton bt7 = new JButton("发车日期");JButton bt8 = new JButton("剩余票数");JButton bt9 = new JButton("车票价格");public pan4() {this.setLayout(new GridBagLayout());GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100, GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(btId, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt1, con);con = getGridBagConstraints(2, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt2, con);con = getGridBagConstraints(3, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt3, con);con = getGridBagConstraints(4, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt4, con);con = getGridBagConstraints(5, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt5, con);con = getGridBagConstraints(6, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt6, con);con = getGridBagConstraints(7, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt7, con);con = getGridBagConstraints(8, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt8, con);con = getGridBagConstraints(9, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt9, con);con = getGridBagConstraints(0, 1, 11, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(jtArea, con);jtArea.setBackground(Color.GREEN);}}/*** 定义最下面的按钮面板pan5** @author Administrator**/class pan5 extends JPanel {JButton bt1 = new JButton("退出登录");JLabel lab1 = new JLabel(" ");public pan5() {GridBagLayout layout = new GridBagLayout();this.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100, GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt1, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(lab1, con);bt1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});}}/*** 放回一个网格包约束** @param x* @param y* @param width* @param heigh* @param weighx* @param weighy* @param fill* @param anchor* @return*/private GridBagConstraints getGridBagConstraints(int x, int y, int width, int heigh, int weighx, int weighy, int fill, int anchor) { GridBagConstraints con = new GridBagConstraints();con.gridx = x;con.gridy = y;con.gridwidth = width;con.gridheight = heigh;con.weightx = weighx;con.weighty = weighy;con.fill = fill;con.anchor = anchor;return con;}/*** 按车票号码搜索所有的车票信息** @throws SQLException*/private void select() {Connection conn = null;Statement stmt = null;ResultSet ticket = null;try {conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "store", "store");} catch (SQLException e1) {e1.printStackTrace();}try {stmt = conn.createStatement();String text = "select * from train_table " + "where tid=" + "'"+ fId.getText() + "'";ticket = stmt.executeQuery(text);while (ticket.next()) {String starter = ticket.getString("starter");String reacher = ticket.getString("reacher");String ticketNumber = ticket.getString("ticketNumber");String startTime = ticket.getString("startTime");String endTime = ticket.getString("endTime");String seatIdNumber = ticket.getString("seatIdNumber");String busDate = ticket.getString("busDate");int ticketNum = ticket.getInt("ticketNum");double price = ticket.getDouble("price");sb.append(" " + fId.getText() + "\t"+ " " + starter + "\t"+ " " + reacher+ "\t"+ " " + ticketNumber + "\t" + startTime + "\t"+ endTime + "\t" + seatIdNumber + "\t" + busDate + "\t"+ ticketNum + "\t" + price + " " + "\n");}jtArea.setText(sb.toString());if (sb.length() > 0) {sb.delete(1, sb.length());} else {JOptionPane.showMessageDialog(new TestFrame(), "无此车!");}} catch (SQLException e) {} finally {if (ticket != null) {try {ticket.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}/*** 订票时更新数据库中的车票表*/private void UpdateTrain() {String tId=ftid.getText();int num=0;if (fzhangshu.getText().length()>0){num=Integer.parseInt(fzhangshu.getText());}Connection conn = Getgbc.getconnect();CallableStatement cst = null;try {conn.setAutoCommit(false);cst = conn.prepareCall("call train_proc (?,?)");cst.setString(1, tId);cst.setInt(2, num);cst.execute();mit();} catch (SQLException e1) {try {conn.rollback();JOptionPane.showMessageDialog(new TestFrame(), "客户订票失败!");} catch (SQLException e2) {JOptionPane.showMessageDialog(new TestFrame(), "客户订票失败!");}} finally {if (cst != null) {try {cst.close();} catch (SQLException e1) {e1.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e1) {e1.printStackTrace();}}}}/*** 订票时更新数据库中的用户表*/private void UpdateUser() {String tId=ftid.getText();String bId=fbodyId.getText();String cID=fche.getText();String pwd=String.valueOf(jpField.getPassword());int num=0;if((bId.equals(EnterFrame.ID))&&(pwd.equals(EnterFrame.password))){ if(fzhangshu.getText().length()>0){num=Integer.parseInt(fzhangshu.getText());}Connection conn = Getgbc.getconnect();Statement cst = null;try {cst = conn.createStatement();cst.executeUpdate("insert into order_table(tid,id_number,t_num,trainsum)"+ " values('"+ tId+ "','"+ bId+ "','"+ cID + "','"+num+"')");JOptionPane.showMessageDialog(new TestFrame(), "客户订票成功!");flag=true;} catch (SQLException e1) {JOptionPane.showMessageDialog(new TestFrame(), "订票失败!");flag=false;} finally {if (cst != null) {try {cst.close();} catch (SQLException e1) {e1.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e1) {e1.printStackTrace();}}}}else{JOptionPane.showMessageDialog(new TestFrame(), "您的身份证或密码有误!请查证后再订票");}}}package com.yue;import java.awt.Color;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class CheckPanel extends JPanel {StringBuffer sb = new StringBuffer();JTextField trainField = new JTextField(9);JTextField dateField = new JTextField(9);JTextField stationField = new JTextField(9);JTextField zhiField = new JTextField(9);JTextArea jtArea = new JTextArea(10, 80);JLabel checkLabel = new JLabel("查询");public JPanel getCheckpn() {JPanel pan = new JPanel();GridBagLayout layout = new GridBagLayout();pan.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(checkLabel, con);con = getGridBagConstraints(0, 1, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(new pan2(), con);con = getGridBagConstraints(0, 3, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);pan.add(new pan4(), con);con = getGridBagConstraints(0, 4, 1, 1, 100, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);pan.add(new pan5(), con);this.setLocation(270, 150);this.add(pan);return pan;}/*** 定义上部查询区面pan2** @author Administrator**/class pan2 extends JPanel {JLabel trainLabel = new JLabel(" 车次 ");JLabel dateLabel = new JLabel(" 日期 ");JLabel stationLabel = new JLabel(" 起点站 ");JLabel zhiLabel = new JLabel(" 终点站 ");JLabel l1 = new JLabel(" ");JLabel l2 = new JLabel(" ");JButton checkButton = new JButton("查询");JButton flushButton = new JButton("清空");JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JTextArea area = new JTextArea();public pan2() {flushButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {trainField.setText(null);stationField.setText(null);zhiField.setText(null);dateField.setText(null);jtArea.setText(null);}});checkButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if (dateField.getText().trim().length() > 0) {if (trainField.getText().trim().length() > 0|| stationField.getText().trim().length() > 0|| zhiField.getText().trim().length() > 0) {jtArea.setText(null);JOptionPane.showMessageDialog(new TestFrame(),"输入有误,请检查输入位置");} else {try {dateSelect();} catch (SQLException e1) {e1.printStackTrace();}}} else if (trainField.getText().trim().length() > 0) { if (dateField.getText().trim().length() > 0|| stationField.getText().trim().length() > 0|| zhiField.getText().trim().length() > 0) {jtArea.setText(null);JOptionPane.showMessageDialog(new TestFrame(),"输入有误,请检查输入位置");} else {try {idSelect();} catch (SQLException e1) {e1.printStackTrace();}}} else if (stationField.getText().trim().length() > 0&& zhiField.getText().trim().length() > 0) {if (dateField.getText().trim().length() > 0|| trainField.getText().trim().length() > 0) { jtArea.setText(null);JOptionPane.showMessageDialog(new TestFrame(),"输入有误,请检查输入位置");} else {try {stationSelect();} catch (SQLException e1) {e1.printStackTrace();}}} else if (dateField.getText().trim().length() <= 0&& stationField.getText().trim().length() <= 0&& zhiField.getText().trim().length() <= 0) {if (dateField.getText().trim().length() > 0|| stationField.getText().trim().length() > 0|| zhiField.getText().trim().length() > 0) {jtArea.setText(null);JOptionPane.showMessageDialog(new TestFrame(),"输入有误,请检查输入位置");} else {try {allSelect();} catch (SQLException e1) {e1.printStackTrace();}}}}});JPanel panel3 = new JPanel(new GridBagLayout());panel1.setBorder(BorderFactory.createTitledBorder("查询区"));panel2.setBorder(BorderFactory.createTitledBorder("售票注意事项"));area.setText("每人每次最多可够买十张火车票,超过十张火车票数的" + "\n"+ "请一定要出示您的相关的证件,一旦经过售票员查" + "\n" + "询核实并且同意后方可购买");panel2.add(area);GridBagLayout layout = new GridBagLayout();panel1.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(trainLabel, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(trainField, con);con = getGridBagConstraints(2, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(dateLabel, con);con = getGridBagConstraints(3, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(dateField, con);con = getGridBagConstraints(4, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(l1, con);con = getGridBagConstraints(5, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(flushButton, con);con = getGridBagConstraints(0, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(stationLabel, con);con = getGridBagConstraints(1, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(stationField, con);con = getGridBagConstraints(2, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(zhiLabel, con);con = getGridBagConstraints(3, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(zhiField, con);con = getGridBagConstraints(4, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(l2, con);con = getGridBagConstraints(5, 1, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel1.add(checkButton, con);con = getGridBagConstraints(0, 0, 6, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.WEST);panel3.add(panel1, con);con = getGridBagConstraints(6, 0, 2, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);panel3.add(panel2, con);this.add(panel3);}}/*** 定义下面一个JList用于显示车票的所有信息面板pan4** @author Administrator**/class pan4 extends JPanel {JButton btId = new JButton("车票号码");JButton bt1 = new JButton("起点站");JButton bt2 = new JButton("终点站");JButton bt3 = new JButton("车次");JButton bt4 = new JButton("发车时间");JButton bt5 = new JButton("到达时间");JButton bt6 = new JButton("座位类型");JButton bt7 = new JButton("发车日期");JButton bt8 = new JButton("剩余票数");JButton bt9 = new JButton("车票价格");public pan4() {this.setLayout(new GridBagLayout());GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100, GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(btId, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt1, con);con = getGridBagConstraints(2, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt2, con);con = getGridBagConstraints(3, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt3, con);con = getGridBagConstraints(4, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt4, con);con = getGridBagConstraints(5, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt5, con);con = getGridBagConstraints(6, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt6, con);con = getGridBagConstraints(7, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt7, con);con = getGridBagConstraints(8, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt8, con);con = getGridBagConstraints(9, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt9, con);con = getGridBagConstraints(0, 1, 11, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(jtArea, con);jtArea.setBackground(Color.CYAN);}}/*** 定义最下面的按钮面板pan5** @author Administrator**/class pan5 extends JPanel {JButton bt1 = new JButton("退出登录");JLabel lab1 = new JLabel(" ");public pan5() {bt1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});GridBagLayout layout = new GridBagLayout();this.setLayout(layout);GridBagConstraints con = getGridBagConstraints(0, 0, 1, 1, 0, 100, GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(bt1, con);con = getGridBagConstraints(1, 0, 1, 1, 0, 100,GridBagConstraints.NONE, GridBagConstraints.EAST);this.add(lab1, con);}}/*** 放回一个网格包约束** @param x* @param y* @param width* @param heigh* @param weighx* @param weighy* @param fill* @param anchor* @return*/private GridBagConstraints getGridBagConstraints(int x, int y, int width, int heigh, int weighx, int weighy, int fill, int anchor) { GridBagConstraints con = new GridBagConstraints();con.gridx = x;con.gridy = y;con.gridwidth = width;con.gridheight = heigh;con.weightx = weighx;con.weighty = weighy;con.fill = fill;con.anchor = anchor;return con;}/*** 按初始站至终点站搜索车票** @throws SQLException*/private void stationSelect() throws SQLException {Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "store", "store");Statement stmt = conn.createStatement();String sqlText = "select tid,starter,reacher,ticketNumber,startTime,endTime,seatIdNumber,busDate,ticketN um,price from train_table where starter='"+ stationField.getText()+ "' and reacher='"+ zhiField.getText() + "'";ResultSet ticket = stmt.executeQuery(sqlText);while (ticket.next()) {int tid = ticket.getInt("tid");String starter = ticket.getString("starter");String reacher = ticket.getString("reacher");String ticketNumber = ticket.getString("ticketNumber");String startTime = ticket.getString("startTime");String endTime = ticket.getString("endTime");String seatIdNumber = ticket.getString("seatIdNumber");String busDate = ticket.getString("busDate");int ticketNum = ticket.getInt("ticketNum");double price = ticket.getDouble("price");sb.append(" " + tid + "\t" + starter + "\t" + reacher + "\t"+ ticketNumber + "\t" + startTime + "\t" + endTime + "\t"+ seatIdNumber + "\t" + busDate + "\t" + " " + ticketNum + "\t"+ " "+ price + " " + "\n");}jtArea.setText(sb.toString());if (sb.length() > 0) {sb.delete(1, sb.length());}else {JOptionPane.showMessageDialog(new TestFrame(), "无此车!");}ticket.close();stmt.close();conn.close();}/*** 搜索所有的车票信息** @throws SQLException*/private void allSelect() throws SQLException {Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "store", "store");Statement stmt = conn.createStatement();String text = "select * from train_table ";ResultSet ticket = stmt.executeQuery(text);while (ticket.next()) {int tid = ticket.getInt("tid");String starter = ticket.getString("starter");String reacher = ticket.getString("reacher");String ticketNumber = ticket.getString("ticketNumber");String startTime = ticket.getString("startTime");String endTime = ticket.getString("endTime");String seatIdNumber = ticket.getString("seatIdNumber");String busDate = ticket.getString("busDate");int ticketNum = ticket.getInt("ticketNum");double price = ticket.getDouble("price");sb.append(" " + tid + "\t" + starter + "\t" + reacher + "\t"+ ticketNumber + "\t" + startTime + "\t" + endTime + "\t"+ seatIdNumber + "\t" + busDate + "\t" + " "+ ticketNum + "\t"+ " "+ price + " " + "\n");}jtArea.setText(sb.toString());if (sb.length() > 0) {sb.delete(1, sb.length());}else {JOptionPane.showMessageDialog(new TestFrame(), "今天没车!");}ticket.close();stmt.close();conn.close();}/*** 按日期搜索所有的车票信息** @throws SQLException*/private void dateSelect() throws SQLException {Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "store", "store");Statement stmt = conn.createStatement();String text = "select * from train_table where busDate='"+ dateField.getText() + "'";ResultSet ticket = stmt.executeQuery(text);while (ticket.next()) {int tid = ticket.getInt("tid");String starter = ticket.getString("starter");String reacher = ticket.getString("reacher");String ticketNumber = ticket.getString("ticketNumber");String startTime = ticket.getString("startTime");String endTime = ticket.getString("endTime");String seatIdNumber = ticket.getString("seatIdNumber");String busDate = ticket.getString("busDate");int ticketNum = ticket.getInt("ticketNum");double price = ticket.getDouble("price");sb.append(" " + tid + "\t" + starter + "\t" + reacher + "\t"+ ticketNumber + "\t" + startTime + "\t" + endTime + "\t"+ seatIdNumber + "\t" + busDate + "\t" + " "+ ticketNum + "\t"+ " "+ price + " " + "\n");}jtArea.setText(sb.toString());if (sb.length() > 0) {sb.delete(1, sb.length());}else {JOptionPane.showMessageDialog(new TestFrame(), "没车!");}ticket.close();stmt.close();conn.close();}/*** 按车次搜索所有的车票信息*。

火车票售票系统源代码

火车票售票系统源代码
jbt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser openfile = new JFileChooser();
p2.add(jtf4);
p2.add(jlb6);
p2.add(jtf5);
p2.add(jlb7);
p2.add(jtf6);
p2.add(jbt1);
p3.add(p1,BorderLayout.NORTH);
p3.add(p2,BorderLayout.CENTER);
inputfile = new FileInputStream(filename);
int len = 0;
// 如下为依次读取文件中的每一行内容,将其加入StringBuffer数据类型便利strBF中
FileReader in = new FileReader(filename.getAbsoluteFile());
JLabel jlb5=new JLabel(" 身份证号");
JLabel jlb6=new JLabel(" 工作");
JLabel jlb7=new JLabel(" 电话");
final JTextField jtf1=new JTextField(10);
final JTextField jtf2=new JTextField(10);
JOptionPane.showMessageDialog(panel, error_message
);

C语言--火车站售票系统报告及代码解析

C语言--火车站售票系统报告及代码解析

目录第一章——————————————课程认识第二章——————————————课题选择第三章———————————总体设计与分析第四章————————————模块详细设计第五章————————————主要实现方法第六章————————————课程设计总结第七章————————————————结论第八章————————————————建议一、课程的性质、任务、目的C语言是非常优秀的程序设计语言,应用广泛,是高校计算机专业的一门专业基础课程;学好C语言,是学习计算机专业课程和用好计算机的重要基础。

要学好C语言,应抓好理论学习、上机实验以及综合应用这三个环节。

在《C程序设计》课程的学习中,学生在掌握C语言理论知识的同时,通过上机实验完成一定量的实践性题目,初步掌握了程序设计的基本思想、基本概念和基本方法。

本课程是计算机专业的学生在完成了《C程序设计》课程的学习后,为加强学生对程序设计思想的理解、通过解决有一定代表性的小型综合应用类课题从而提高实际编程能力而设置的一门实践性课程。

本课程为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机地结合起来,培养和锻炼学生分工协作、分析和解决实际问题并利用计算机求解问题的能力,以提高学生适应实际,实践编程的能力,从而掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计和调试能力。

二、课题选择(背景、意义、实用性……);背景:现今,人们的生活水平渐渐改善,生活质量也随之提高,人们的精神需求也大了,应此,出行旅游,或是走访亲友成了习以为常的事了,出行已成为现代人的家常便饭,汽车,火车,飞机等交通工具为我们提供了更多的方便。

然而在售票中,就需要一个售票系统来帮助售票员来更为快捷,高效,方便的售票,同时也为了车站方面更好的管理票务,因此,一个好的车票管理系统就必不可少了。

意义:选择车站售票系统作为课程设计的课题,就车站的售票流程等进一步了解车站的售票系统的原理。

车站售票管理系统SQL源代码

车站售票管理系统SQL源代码

/*插入数据的存储过程 */
create proc car_proc
@carid char(10),@cartype int,@platenumber char(10),@carhole char(6),@outsettime datetime
as
insert into car (carid,cartype,platenumber,carhole,outsettime) values(@carid,@cartype,@platenumber,@carhole,@outsettime)
go
create table price
(terminalid char(10) constraint p_PRI PRIMARY KEY,outstation char(10),terminal char(6),carid char(10) FOREIGN KEY REFERENCES car(carid) ,ticketprice int)
@terminalid char(10),@outstation char(10),@terminal char(6),@carid char(10) ,@ticketprice int
as
insert into price (terminalid,outstation,terminal,carid,ticketprice) values(@terminalid,@outstation,@terminal,@carid,@ticketprice)
/*建立存储过程实现单表查询*/
/*建立名为“单表查询1”的存储过程,用来查询某辆客车的信息*/
create proc 单表查询1
@carid char(10)

火车售票系统

火车售票系统
{
if(_cb[1].getState()==true)
{
if(!_t),0).equals(""))
{
Object _useable = _t.getValueAt(_t.getSelectedRow(),0);
else{
for(int m = 0;m<100;m++)
{
for(int n = 0;n<8;n++)
{
_t.setValueAt("",m,n);
}
_t.setValueAt(railwaytype,0,1);
_t.setValueAt(startstage,0,2);
_t.setValueAt(arrivestage,0,3);
_t.setValueAt(starttime,0,4);
{
ticketprice = ticketprice*1;
}else{
ticketprice = ticketprice/2;
}
_jl26.setText("单价:"+ticketprice);
_jl26.setForeground(Color.red);
_t.setValueAt(stt.getStarttime(),i,4);
_t.setValueAt(stt.getSaletime(),i,5);
_t.setValueAt(conn.getexittime(stt.getTtrainno())+"小时",i,6);
Enumeration eee = v.elements();

火车票售票系统(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;}。

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语言课程设计火车售票系统一、教学目标本章节的教学目标旨在让学生掌握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#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++#include#include#include#includeusing namespace std;struct node{string Num;string SetoutTime;string BegPlace;string EndPlace;string RunTime;int Capacity;int HumNum;node *Next;};class Busman{private:node *BusHead; //票信息头结点public:Busman(){BusHead=NULL;}void FoundInfo(); //建表void AddInfo(); //增记录void SearchInfo(); //查询void ShowInfo(); //显示void ExitTicket(); //退票void SellTicket(); //售票void SaveInfo(); //保存};void Busman::FoundInfo() {node *p=NULL,*q;int i,n;cout<<"\n录入班次信息:\n"; cout<<"记录总数:"; cin>>n;for (i=0; i{q=p;p=new node;cout<<"班次:";cin>>p->Num;cout<<"发车时间:"; cin>>p->SetoutTime;cout<<"起点:";cin>>p->BegPlace;cout<<"终点:";cin>>p->EndPlace;cout<<"行车时间:"; cin>>p->RunTime;cout<<"客载量:";cin>>p->Capacity;p->HumNum=0;if (Busman::BusHead==NULL) Busman::BusHead=p;elseq->Next=p;cout<<endl;}p->Next=NULL;cout<<"建立完毕!"<<endl;}void Busman::AddInfo(){node *p,*q;q=Busman::BusHead;while (q->Next!=NULL) q=q->Next; p=new node;cout<<"班次:";cin>>p->Num;cout<<"发车时间:";cin>>p->SetoutTime;cout<<"起点:";cin>>p->BegPlace;cout<<"终点:";cin>>p->EndPlace;cout<<"行车时间:";cin>>p->RunTime;cout<<"客载量:";cin>>p->Capacity;p->HumNum=0;p->Next=NULL;q->Next=p;cout<<"添加成功!"<<endl;}void Busman::ShowInfo(){string time;node *p;cout<<"当前时间为:";cin>>time;cout<<"班次"<<"\t"<<"发车时间"<<" "<<"起点"<<"\t"<<"终点"<<" "<<"行车时间"<<"\t"<<"客载量"<<" "<<"订票人数"<<"发出"<<endl;for (p=Busman::BusHead; p!=NULL; p=p->Next){cout<Num<<"\t"<SetoutTime<<"\t"<BegPlace<<"\t"<End Place<<"\t"<RunTime<<"\t"<Capacity<<"\t"<HumNum;if (time >= p->SetoutTime) cout<<"(已发车)"<<endl;else cout<<"(未发车)"<<endl;}}void Busman::SearchInfo(){int sel;string s;node *p;cout<<"(1)班次查找"<<endl;cout<<"(2)终站查找"<<endl;cout<<">>>>选择:";cin>>sel;if (sel==1){cout<<"输入查找的班次号:";cin>>s;}else if (sel=2){cout<<"输入查找的终点名称:";cin>>s;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;}cout<<"班次"<<"\t"<<"发车时间"<<" "<<"起点"<<"\t"<<"终点"<<" "<<"行车时间"<<"\t"<<"客载量"<<" "<<"订票人数"<<"发出"<<endl;for (p=Busman::BusHead; p!=NULL; p=p->Next){if ((sel==1 && p->Num==s) || (sel==2 && p->EndPlace==s)){cout<Num<<"\t"<SetoutTime<<"\t"<BegPlace<<"\t"<End Place<<"\t"<RunTime<<"\t"<Capacity<<"\t"<HumNum;break;}}if (p==NULL)cout<<"未找到!"<<endl;}void Busman::ExitTicket(){string s,t;node *p;cout<<"退票的班次是:";cin>>s;for (p=BusHead; p!=NULL; p=p->Next) if (p->Num==s) break;if (p==NULL){cout<<"未找到班次!"<<endl; return;}cout<<"当前时间是:";cin>>t;if (t < p->SetoutTime){p->HumNum--;cout<<"退票成功!"<<endl;}}void Busman::SellTicket(){string t,s;node *p;cout<<"售票的班次是:";cin>>s;for (p=BusHead; p!=NULL; p=p->Next)if (p->Num==s) break;if (p==NULL){cout<<"未找到班次!"<<endl;return;}cout<<"当前时间是:";cin>>t;if (t < p->SetoutTime && p->HumNum+1 <= p->Capacity) {p->HumNum++;cout<<"售票成功!"<<endl;}else{cout<<"该车已发或客载量已满!"<<endl;}}void Busman::SaveInfo(){node *p;ofstream Ocout("Info.txt");Ocout<<"班次"<<"\t"<<"发车时间"<<" "<<"起点"<<"\t"<<"终点"<<" "<<"行车时间"<<"\t"<<"客载量"<<" "<<"订票人数"<<"发出"<<endl;for (p=Busman::BusHead; p!=NULL; p=p->Next){Ocout<Num<<"\t"<SetoutTime<<"\t"<BegPlace<<"\t"<En dPlace<<"\t"<RunTime<<"\t"<Capacity<<"\t"<HumNum<<endl;}Ocout.close();cout<<"保存成功!"<<endl;}void ShowForm();int main(){int sel;Busman BusAdmin;while (1){system("cls");ShowForm();cin>>sel;switch (sel){case 1: BusAdmin.FoundInfo(); break;case 2: BusAdmin.AddInfo(); break;case 3: BusAdmin.ShowInfo(); break;case 4: BusAdmin.SearchInfo(); break;case 5: BusAdmin.SellTicket(); break;case 6: BusAdmin.ExitTicket(); break;case 7: BusAdmin.SaveInfo(); break;case 0: return 0;}cout<<endl;fflush(stdin);cout<<"按任意键返回主菜单:"<<endl;getch();}}void ShowForm(){cout<<" Welcome to use the system! "<<endl; cout<<" "<<endl;cout<<" *******************************"<<endl; cout<<" * (1) 录入火车信息 *"<<endl;cout<<" * (2) 添加</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;火车信息 *"<<endl;cout<<" * (3) 浏览火车信息 *"<<endl;cout<<" * (4) 查询路线信息 *"<<endl;cout<<" * (5) 售票 *"<<endl;cout<<" * (6) 退票 *"<<endl;cout<<" * (7) 保存火车信息 *"<<endl;cout<<" * (0) 退出程序 *"<<endl;cout<<" *******************************"<<endl; cout<<" "<<endl;cout<<" Press the number you want to choose:"; }</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;</endl;。

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

附录(程序、表格、数据等相关资料)#include "sql.h"#include "sqlext.h"#include "sqltypes.h"#pragma comment(lib,"odbc32.lib")#pragma comment(lib,"odbccp32.lib")class CSqlLogin{public:CSqlLogin(void);~CSqlLogin(void);private:SQLHENV henv;SQLHDBC hdbc;//代表一个数据库连接句柄,和Socket里边的//Socket连接类似,要访问数据库,先要连接到数据库SQLHSTMT hstmt;//代表一个SQL语句SQLRETURN result;//执行结果public:void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle);//显示连接错误void ShowDBConnError(HWND hwnd,SQLHDBC hdbc);//提供的用户名密码不对void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt);//sql语句有语法错误BOOL BeginInsert(HWND hwnd);//用于用户登录BOOL LoginToDB(HWND hwnd,CString &m_userName,CString &m_password);//用于注册BOOL RegisterToDB(HWND hwnd,CString &m_struserName,int &m_Sex, CString &m_strPassword,CString &m_strConfirmPassword,CString &m_strIDCardNo,CString &m_strPhoneCode);//用于查询车次信息BOOL InitQueryToDB(HWND hwnd,CListCtrl *m_list);BOOL QueryToDB(HWND hwnd,CListCtrl *m_list,CString m_strStartstation,CString m_strTerminalstation);//用于插入订单信息到ListViewint ticketBookToListView(HWND m_hWnd,CListCtrl *m_list,CString m_strUserName,CString m_strName,CString m_strStartPlace,CString m_strDestination,CString m_strTrainNo,CString m_strSeat,CString m_strdate);//用于插入最终信息到数据库BOOL ticketBookToDB(HWND m_hWnd,CListCtrl *m_list,CString m_strUserName);//用于退票BOOL ticketReturnToDB(HWND hwnd,CString m_strUserName,CString m_strName,CString m_strTrainNo);void CSqlLogin::EndInsert(HWND hwnd);};void CSqlLogin::ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle){//显示连接错误//数据库没打开,或者不存在等等char pStatus[10], pMsg[101];SQLSMALLINT SQLmsglen;char error[200] = {0};SQLINTEGER SQLerr;long erg2 = SQLGetDiagRec(type, sqlHandle,1,(SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen);wsprintf(error,"%s (%d)\n",pMsg,(int)SQLerr);MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);}void CSqlLogin::ShowDBConnError(HWND hwnd,SQLHDBC hdbc){//提供的用户名密码不对ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);}void CSqlLogin::ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt){//sql语句有语法错误ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);}BOOL CSqlLogin::BeginInsert(HWND hwnd){/*连接数据库、执行SQL、断开连接。

连接字符串。

数据库错误处理。

*/SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=火车订票系统;CharSet=gbk;";SQLCHAR ConnStrOut[MAXBUFLEN];//分配环境句柄result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);//设置管理环境属性result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);//分配连接句柄result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//设置连接属性result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0);//连接数据库result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT);if(SQL_ERROR==result){ShowDBConnError(hwnd,hdbc);return FALSE;}return TRUE;}BOOL CSqlLogin::LoginToDB(HWND hwnd,CString &m_userName,CString &m_password){//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);/**********************判断数据库是否存在该用户****************************/TCHAR CheakName[256];ZeroMemory(CheakName,sizeof(CheakName)/sizeof(TCHAR)); //对新建的字符串缓冲区初始化清0wsprintf(CheakName,"select FUserName from t_user where FUserName='%s'",m_userName);//取用户输入的用户名,提高效率result = SQLPrepare(hstmt,(SQLCHAR*)CheakName,SQL_NTS);//创建SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否创建成功result =SQLExecute(hstmt);//执行语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否执行成功BOOL NameFlag=TRUE;//默认是用户存在数据库中SQLINTEGER cbsatid=SQL_NTS; //typedef long SQLINTEGER,SQL_NTS是终端标志?//hstmt是上面的SQL语句的指针,hstmt一开始就已定义,SQLHSTMT hstmt = NULLwhile (SQLFetch(hstmt)==SQL_NO_DATA_FOUND) //注意要是输入的用户名在数据库中存在的话是不进入循环的{NameFlag=FALSE;break; //跳出while循环}/************************************************************************/ //用户是否存在处理if (NameFlag==FALSE){MessageBox(hwnd,TEXT("未找到该用户,请重新输入!"),TEXT("提示2"),MB_OK|MB_ICONERROR);//代码用于调试m_userName="";m_password="";return FALSE;}else{TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));wsprintf(sql,"Select FPassword From t_user where FUserName='%s'",m_userName);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//处理执行结果//这种方式需要一行一行的读取,叫做游标读取//无论实在JDBC,ADO/..都是使用这种方式(结果集)//SQLINTEGER cbsatid=SQL_NTS;bool fpasswordfound=false;while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND){//SQLFetch()是按行读取,//SQLGetData()是按列读取,//第一个参数是SQL语句//第二个参数是要读取的列号(从1开始编号)//第三个参数是列的类型,这里的SQL_C_CHAR是宏定义就是字符串,在SQLExt.h中所有以SQL_C_开头的都是可以使用的参数//第四个参数是要存放到里面的指针//第五个参数是参数四(缓冲区)的大小,这里等于20字节//第六个不用管TCHAR password[20];SQLGetData(hstmt,1,SQL_C_CHAR,password,sizeof(password)/sizeof(TCHAR),&cbsatid);if (0==lstrcmp(m_password.GetBuffer(),password)){fpasswordfound=true;break;}}if (true==fpasswordfound){return TRUE;}else{MessageBox(hwnd,TEXT("密码错误"),TEXT("登陆失败"),MB_ICONERROR);return FALSE;}}return FALSE;}BOOL CSqlLogin::RegisterToDB(HWND hwnd,CString &m_struserName,int &m_Sex,CString &m_strPassword,CString &m_strConfirmPassword,CString &m_strIDCardNo,CString &m_strPhoneCode){//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);/**********************判断该用户是否已经注册过了****************************/TCHAR CheakName[256];ZeroMemory(CheakName,sizeof(CheakName)/sizeof(TCHAR)); //对新建的字符串缓冲区初始化清0wsprintf(CheakName,"select FUserName from t_user where FUserName='%s'",m_struserName);//取用户输入的用户名,提高效率result = SQLPrepare(hstmt,(SQLCHAR*)CheakName,SQL_NTS);//创建SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否创建成功result =SQLExecute(hstmt);//执行语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否执行成功BOOL NameFlag=TRUE;//默认是用户存在数据库中SQLINTEGER cbsatid=SQL_NTS; //typedef long SQLINTEGER,SQL_NTS是终端标志?//hstmt是上面的SQL语句的指针,hstmt一开始就已定义,SQLHSTMT hstmt = NULLwhile (SQLFetch(hstmt)==SQL_NO_DATA_FOUND) //注意要是输入的用户名存在数据库的话是不进入循环的{NameFlag=FALSE;break; //跳出while循环}/************************************************************************/ //用户是否存在处理if (TRUE==NameFlag){MessageBox(hwnd,TEXT("该用户已经注册过了,无需再注册!"),TEXT("提示"),MB_OK|MB_ICONERROR);//代码用于调试m_struserName="";m_strPassword="";m_strConfirmPassword="";m_strIDCardNo="";m_strPhoneCode="";return FALSE;}else{TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));CString sex;if (m_Sex==0)sex="男";elsesex="女";wsprintf(sql,"Insert into t_user values('%s','%s','%s','%s','%s')",m_struserName,sex,m_strPassword,m_strIDCardNo,m_strPhoneC ode);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);MessageBox(hwnd,TEXT("注册成功"),TEXT("提示"),MB_OK);return TRUE;}return FALSE;}BOOL CSqlLogin::InitQueryToDB(HWND hwnd,CListCtrl *m_list){m_list->DeleteAllItems();TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));wsprintf(sql,"Select FTrainNo,FStartstation,FTerminalstation,FDuration,FTicketsRemainNum From t_trainNo");//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//处理执行结果//这种方式需要一行一行的读取,叫做游标读取//无论实在JDBC,ADO/..都是使用这种方式(结果集)SQLINTEGER cbsatid=SQL_NTS;char trainNo[20],Startstation[30],terminalStaion[30],duration[40],ticketsRemainNum[10];ZeroMemory(trainNo,20);ZeroMemory(Startstation,30);ZeroMemory(terminalStaion,30);ZeroMemory(duration,40);ZeroMemory(ticketsRemainNum,10);int index=0;while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND){//SQLFetch()是按行读取,//SQLGetData()是按列读取,//第一个参数是SQL语句//第二个参数是要读取的列号(从1开始编号)//第三个参数是列的类型,这里的SQL_C_CHAR是宏定义就是字符串,在SQLExt.h 中所有以SQL_C_开头的都是可以使用的参数//第四个参数是要存放到里面的指针//第五个参数是参数四(缓冲区)的大小,这里等于20字节//第六个不用管SQLGetData(hstmt,1,SQL_C_CHAR,trainNo,sizeof(trainNo)/sizeof(char),&cbsatid);SQLGetData(hstmt,2,SQL_C_CHAR,Startstation,sizeof(Startstation)/sizeof(char),&cbsatid);SQLGetData(hstmt,3,SQL_C_CHAR,terminalStaion,sizeof(terminalStaion)/sizeof(char),&cbsat id);SQLGetData(hstmt,4,SQL_C_CHAR,duration,sizeof(duration)/sizeof(char),&cbsatid);SQLGetData(hstmt,5,SQL_C_CHAR,ticketsRemainNum,sizeof(ticketsRemainNum)/sizeof(char ),&cbsatid);int nRow=m_list->InsertItem(index,trainNo);m_list->SetItemText(nRow,1,Startstation);m_list->SetItemText(nRow,2,terminalStaion);m_list->SetItemText(nRow,3,duration);m_list->SetItemText(nRow,4,ticketsRemainNum);index++;}return FALSE;}BOOL CSqlLogin::QueryToDB(HWND hwnd,CListCtrl *m_list,CString strStartstation,CString strTerminalstation){//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);//////////////////////判断要查询的项目是否存在/////////////////////////////////TCHAR sql_in[255];ZeroMemory(sql_in,sizeof(sql_in)/sizeof(TCHAR));/*************************判断是否已经存在该用户了************************/ wsprintf(sql_in,"Select FStartstation,FTerminalstation From t_trainNo where FStartstation='%s' AND FTerminalstation='%s'",strStartstation,strTerminalstation);//创建SQL语句,查找用户result = SQLPrepare(hstmt,(SQLCHAR*)sql_in,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否创建成功result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否执行成功BOOL FLAG=TRUE;//默认是数据存在数据库中SQLINTEGER cbsatid=SQL_NTS; //typedef long SQLINTEGER,SQL_NTS是终端标志?//hstmt是上面的SQL语句的指针,hstmt一开始就已定义,SQLHSTMT hstmt = NULLwhile (SQLFetch(hstmt)==SQL_NO_DATA_FOUND){FLAG=FALSE;break; //跳出while循环}/************************************************************************/ //用户是否存在处理if (FALSE==FLAG){AfxMessageBox("您要查询的车次不存在");return FALSE;}else{TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));wsprintf(sql,"SelectFTrainNo,FStartstation,FTerminalstation,FDuration,FTicketsRemainNum From t_trainNo where FStartstation='%s' AND FTerminalstation='%s'",strStartstation,strTerminalstation);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);chartrainNo[20],Startstation[30],terminalStaion[30],duration[40],ticketsRemainNum[10];ZeroMemory(trainNo,20);ZeroMemory(Startstation,30);ZeroMemory(terminalStaion,30);ZeroMemory(duration,40);ZeroMemory(ticketsRemainNum,10);int index=0;m_list->DeleteAllItems();while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND){SQLGetData(hstmt,1,SQL_C_CHAR,trainNo,sizeof(trainNo)/sizeof(char),&cbsatid);SQLGetData(hstmt,2,SQL_C_CHAR,Startstation,sizeof(Startstation)/sizeof(char),&cbsatid);SQLGetData(hstmt,3,SQL_C_CHAR,terminalStaion,sizeof(terminalStaion)/sizeof(char),&cbsat id);SQLGetData(hstmt,4,SQL_C_CHAR,duration,sizeof(duration)/sizeof(char),&cbsatid);SQLGetData(hstmt,5,SQL_C_CHAR,ticketsRemainNum,sizeof(ticketsRemainNum)/sizeof(char ),&cbsatid);int nRow=m_list->InsertItem(index,trainNo);m_list->SetItemText(nRow,1,Startstation);m_list->SetItemText(nRow,2,terminalStaion);m_list->SetItemText(nRow,3,duration);m_list->SetItemText(nRow,4,ticketsRemainNum);index++;}}return TRUE;}int CSqlLogin::ticketBookToListView(HWND hwnd,CListCtrl *m_list,CString m_strUserName,CString m_strName,CString m_strStartPlace,CString m_strDestination,CString m_strTrainNo,CString m_strSeat,CString m_strdate){////////////////////查询输入的姓名是否存在数据库中////TCHAR sql2[255];ZeroMemory(sql2,sizeof(sql2)/sizeof(TCHAR));wsprintf(sql2,"Select FUserName From t_user where FUserName='%s'",m_strName);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql2,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);BOOL FLAG2=TRUE;//默认是数据存在数据库中SQLINTEGER cbsatid=SQL_NTS; //typedef long SQLINTEGER,SQL_NTS是终端标志?//hstmt是上面的SQL语句的指针,hstmt一开始就已定义,SQLHSTMT hstmt = NULLwhile (SQLFetch(hstmt)==SQL_NO_DATA_FOUND) //注意要是输入的用户名存在数据库的话是不进入循环的{FLAG2=FALSE;break; //跳出while循环}/************************************************************************/ //用户是否存在处理if (FALSE==FLAG2){AfxMessageBox("请对购票者的信息注册");return 2;}////////////////////查询出发地、目的地、车次信息是否存在数据库中///////// TCHAR sql3[255];ZeroMemory(sql3,sizeof(sql3)/sizeof(TCHAR));wsprintf(sql3,"Select FTrainNo,FStartStation,FTerminalStation From t_trainno where FTrainNo='%s' AND FStartStation='%s' AND FTerminalStation='%s'",m_strTrainNo,m_strStartPlace,m_strDestination);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql3,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);BOOL FLAG3=TRUE;//默认是数据存在数据库中//hstmt是上面的SQL语句的指针,hstmt一开始就已定义,SQLHSTMT hstmt = NULLwhile (SQLFetch(hstmt)==SQL_NO_DATA_FOUND) //注意要是输入的用户名存在数据库的话是不进入循环的{FLAG3=FALSE;break; //跳出while循环}/************************************************************************///用户是否存在处理if (FALSE==FLAG3){AfxMessageBox("您输入的车次信息不存在,请查询车次表");return 3;}else{//////////////////在数据库中判断余票是否不足/////////////////////TCHAR szBuf[50];LVITEM lvi;lvi.pszText = szBuf;hTextMax = 50;lvi.mask = LVIF_TEXT;int count=0;for (int i=0;i<m_list->GetItemCount();i++){lvi.iItem = i;lvi.iSubItem = 3;m_list->GetItem(&lvi);if (m_strTrainNo==lvi.pszText){count++;}}//查找数据库TCHAR sql4[255];ZeroMemory(sql4,sizeof(sql4)/sizeof(TCHAR));wsprintf(sql4,"Select FTrainNo,FTicketsRemainNum From t_trainno where FTrainNo='%s'",m_strTrainNo);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql4,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);char strticketsRemainNum[20];ZeroMemory(strticketsRemainNum,20);SQLFetch(hstmt);//序号从1开始SQLGetData(hstmt,2,SQL_C_CHAR,strticketsRemainNum,sizeof(strticketsRemainNum)/sizeof (char),&cbsatid);int ticketsRemainNum=0;ticketsRemainNum=atoi(strticketsRemainNum);if(count>=ticketsRemainNum){m_strTrainNo+="余票不足";AfxMessageBox(m_strTrainNo);return 4;}///////////////在ListView中显示出来//////////////////int index=m_list->GetItemCount();//初始值为0int nRow=m_list->InsertItem(index,m_strName);m_list->SetItemText(nRow,1,m_strStartPlace);m_list->SetItemText(nRow,2,m_strDestination);m_list->SetItemText(nRow,3,m_strTrainNo);m_list->SetItemText(nRow,4,m_strSeat);m_list->SetItemText(nRow,5,m_strdate);}return 1;//默认插入成功}BOOL CSqlLogin::ticketBookToDB(HWND hwnd,CListCtrl *m_list,CString m_strUserName) {/////////////////////从ListView中获取数据/////////////////////////CString m_strName;CString m_strStartPlace;CString m_strDestination;CString m_strTrainNo;CString m_strSeat;CString m_strdate;CString str[6]={m_strName,m_strStartPlace,m_strDestination,m_strTrainNo,m_strSeat,m_strdate};TCHAR szBuf[50];LVITEM lvi;lvi.pszText = szBuf;hTextMax = 50;lvi.mask = LVIF_TEXT;for (int i=0;i<m_list->GetItemCount();i++){lvi.iItem = i;int j=0;for (j=0;j<6;j++){lvi.iSubItem = j;m_list->GetItem(&lvi);str[j]=lvi.pszText;}///////////////////////插入数据库////////////////////////////初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);TCHAR sql_in[255];ZeroMemory(sql_in,sizeof(sql_in)/sizeof(TCHAR));wsprintf(sql_in,"Insert into t_ticketform values('%s','%s','%s','%s','%s','%s','%s')", m_strUserName,str[0],str[1],str[2],str[3],str[4],str[5]);//创建SQL语句,查找用户result = SQLPrepare(hstmt,(SQLCHAR*)sql_in,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否创建成功result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);//判断是否执行成功///////////////////////////////////////}m_list->DeleteAllItems();return TRUE;}BOOL CSqlLogin::ticketReturnToDB(HWND hwnd,CString m_strUserName,CString m_strName,CString m_strTrainNo){/////////////首先判断要退的票是否存在/////////////////TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));wsprintf(sql,"Select FTicketHolderName,FTrainNo From t_ticketform where FUserName='%s' AND FTicketHolderName='%s' AND FTrainNo='%s'",m_strUserName,m_strName,m_strTrainNo);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);BOOL flag=TRUE;//默认存在if(SQLFetch(hstmt)==SQL_NO_DATA_FOUND){flag=FALSE;}if (flag==FALSE){AfxMessageBox("您要退的票不存在");return FALSE;}else{//////////////把票从数据库删掉//////////////TCHAR sql2[255];ZeroMemory(sql2,sizeof(sql2)/sizeof(TCHAR));wsprintf(sql2,"delete From t_ticketform where FTicketHolderName='%s' AND FTrainNo='%s'",m_strName,m_strTrainNo);//初始化语句句柄,不然程序会出错result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);result = SQLPrepare(hstmt,(SQLCHAR*)sql2,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);//执行SQL语句CHECKDBSTMTERROR(hwnd,result,hstmt);AfxMessageBox("退票成功");}return TRUE;//默认退票成功}void CSqlLogin::EndInsert(HWND hwnd){SQLFreeStmt(hstmt,SQL_CLOSE);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdbc);SQLFreeHandle(SQL_HANDLE_ENV,henv);//MessageBox(hwnd,TEXT("执行成功"),TEXT("标题"),MB_OK);}。

相关文档
最新文档