火车售票系统软件代码
火车购票系统代码思路

#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语言来实现。
这个系统可以包括以下功能: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语言编程---火车订票系统源代码

火车订票系统源码(一)#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铁路售票系统项目源码》这一主题。
二、项目背景及概述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编程语言,设计一个完整的铁路售票系统,包括用户界面、数据管理、订单处理等多个模块。
在本文中,我将深入探讨这个主题,从系统设计、代码实现、功能特点等多个方面进行全面评估,并据此撰写一篇有价值的文章。
I. 系统设计1.1 系统架构在Java铁路售票系统项目中,良好的系统架构能够有效地促进项目的开发和维护。
我们需要考虑系统的模块划分,如用户管理、车票管理、订单管理等模块,以及各个模块之间的交互关系。
另外,我们还需要考虑系统的性能、可扩展性、安全性等方面的设计。
1.2 数据库设计数据管理是铁路售票系统中至关重要的一部分。
在数据库设计中,我们需要考虑数据表的设计、索引的建立、数据的一致性和完整性等问题。
另外,如何优化数据库查询和提升系统的响应速度也是需要重点考虑的问题。
II. 代码实现2.1 用户界面用户界面是用户和系统进行交互的重要入口。
在Java铁路售票系统中,我们需要设计直观、友好的界面,以便用户能够方便快捷地完成购票、查询车次、查看订单等操作。
2.2 数据处理数据的处理是整个系统的核心。
我们需要使用Java语言实现对数据库的操作,包括数据的增删改查等操作。
另外,数据的加密、解密、数据验证等功能也需要在代码实现中得到充分考虑。
III. 功能特点3.1 实现多种车票查询在铁路售票系统中,用户需要能够根据不同的出发地、目的地、时间等条件查询车票信息。
系统需要实现多种车票查询的功能,并能够快速准确地返回查询结果。
3.2 订单管理用户成功购票后,系统需要生成订单并进行管理。
在订单管理中,我们需要考虑订单的状态更新、退票处理、订单详情展示等功能。
IV. 总结和回顾通过对Java铁路售票系统项目源码的深入探讨,我对这个主题有了更深入的理解。
在系统设计方面,我意识到良好的架构设计对项目的成败至关重要;在代码实现方面,我了解到数据处理和用户界面设计是需要重点关注的部分;在功能特点方面,我认识到多种车票查询和订单管理是系统的核心功能。
火车票务管理系统(C语言版)【TXT文件,改后缀即可】

{
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文件改后缀即可

int n=0;
//合计计数器
char l[20];
//纠错空间
///////////////////////////////////////////////////////////////////////
////////////////主函数
int main()
{
int x;do来自{x=MENU();
printf("
请选择: ");
scanf("%d",&choice);
gets(l);
return choice;
}
///////////////////////////////////////////////////////////////////////
按任意键返回上级菜单: ");
gets(ch);
}
///////////////////////////////////////////////////////////////////////
////////////////查询模块
void SEARCH()
{
char name1[10];//车次
#define
" %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,
T[i].ap,T[i].lt,T[i].at,T[i].price //输出记录格式
#define Wrong "\n
! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);}。