火车票管理系统总代码
- 格式:doc
- 大小:130.50 KB
- 文档页数:17
t\t\t#include /z stdio. h〃 #include /z stdlib ・ h 〃 #include z/string. hV*定义头文件,处理文件及字符数组时要用到相应功能 #define N 10 void fmenu() (system(〃cls 〃); printf("************************ vl.20*****************\n 〃); 查询列车 %cl. */欢迎使用苏州列车时刻表信息管理系统 printf(〃\t\ \n\ 3) t\t\t printf (z/\n ,z %c2. 修改列车 \n\ 3)); printf (〃\t\ %c3. 增加列车\n\ 3) printf CW %c4. 取消列车 \n\ 3) ); printf("\t\ t\t\t printf C\n z/ ); , %c5. %c0. 保存信息 \n\ 3) r aX* f viz K I X K I Z K I X x/z K I Z K I ZI I printf (,z \ t\***********、□"); t\t\tprintf j ; if 选择要执行的操作:\n 〃);/*菜单程序,用于各种功能的选择*/ ' struct train/*定义结构体*/ ); phiiatfi4rn^fS]; t't'tchar checi[6];旺l 吁翦;yr ); tint month; printf (〃\t\int day; t\t\t int hour; int minute; } lieche[N] ;/* 定义一个结构体数组 */ void paixu(struct train *p) ;/* 函数声明 */ void chaxun(struct train *p)/*子程序,其功能是查询列车*/ ( paixu(lieche) ;/*先排序一下,方便查看*/ char a[8] ;/*定义一个字符数组,输入要查 询的列车 int k=0, i, c; */ printf ("请输入要查询的列车:\n 〃); scanf ("%s", a); for(i=0;i<N;i++)if (strcmp(p[i]・ name, a) ==0)printf (,z苏州一%s\t%s (车次)\t%d 年%d\t%d:%02d\n,\ p[i]・name, p[i]・checi, p[i]・year, p[i]・month, p_i]・day, p[i]・hour, p[i]・minute) ;/*车的信息全部打出*/k++;)if(k==0)printf (z/抱歉,没有这趟列车\n〃);/*没有查到时,打出通知*/ printf C按1继续,按0退出\『);/*选择继续或者退出*/ scanf(〃%d〃,&c);if(c!=0)chaxun(lieche);void xiugai (struct train *p)/*子程序,用于修改列车时间*/(char a[8], b [6];int i, x, c, k二0, h, mi, y, m, d, q;printf(〃请输入要修改的列车:\n〃);scanf ("%s", a);for(i=0;i<N;i++)(if (st rcmp (p[i ]・ name, a) =0)printf (z,苏州一%s\t%s ()车次\t%d 年%d\t%d:%02d\n,/, p[i]・ name, p[i]・ checi, p[i]. year, p[i]・ month, p.i]・ day, p[i]・ hour, p[i]・ minute)fprintf (”要修改这趟列车吗?\nl.是0.否\n〃);scanf &q); if (q==l)printf ("请输入修改后的车次:\n,z) ; scanf ("%s", b);printf ("请输入修改后的年月日:\n") ; scanf (“%d%d%d", &y, &m, &d);scanf ("%d%d〃, &h, &mi);printf C确定修改吗?\nl.是2.否\n〃);/*选择是否确定修改列车时%d日将所间,防止查列错误操作*/scan f ("%d〃,&x);if (x=l)(strcpy (p[i]・ checi, b); p[i]. yearly;%d日p[i]・ month二m; p[i]. day=d; p[i]・ hour=h; p[i]・ minute二mi; printfC己经修改此列车〃);k++;)} if(k==0)printf(z,抱歉,没有这趟列车\n〃);/*没有查到时,打出通知*/ printf C按]继续,按scanf &c) ;0 退出\n");if(c!=0)xiugai(lieche);void zengjia(struct train 子程序,用于列车增加*/*p) /*(struct train a;char 空白位置,在此处插入所填列车*/b □二{〃0000000〃} ;/*printf (〃请输入要增加的列车目的地:\『);scanf ("%s", a. name);printf(〃请输入修改后的车次:\rT);scanf a. checi);printf (〃请输入所增加列车的年月日:\『);scanf ("%d%d%d", &a. year, &a. month, &a. day);printf(〃请输入所增加列车的小时和分钟:\n〃);scanf ("%d%d", &a. hour, &a. minute);printf (”确定要增加这一趟列车吗?\nl.是0.否\n〃);scanf&x);if(x==l) for(i=0;i<N-l;i++)if (strcmp (p[i]・ name, b) =0)(strcpy (p[i]・ name, a. name) ; strcpy (p[ij. checi, a. checi);p[i]. year=a・ year;p[i]・ month=a・ month; p[i]・ day=a・ day; p[i]・ hour=a・ hour;p[i]・ minute=a・ minute;strcpy (pli+l]. name, b) ;/*找到位置,插入列车,并把0000000给后面一个结构体*/printfC已经增加这趟列车“);break;5 paixu(lieche) ; printf (〃按 1 继续,按0 退出\n") ; scanf ("%d", &c); if(c!=0) zengjia(lieche); } voidpaixu(struct train *p)/*子程序,用于同名列车时刻排序*/ int i, x; char a[6];for(i=0;i<N;i++)if (strcmp(p[i]. name, p[i+l]. name)==0)/* 先找到相同名字的列车*/ if (p[iJ. year>p[i+l]. year)// 根据年份排序(strcpy (a, p[i]・ checi);strcpy (p[i]・ checi, p[i+l]・ checi);strcpy(p[i+l]. checi, p[i[・ checi) ; x二p[i]・ year; p[i]・ year=p[i+l]. year;p[i+l]. year=x;x=p[i]・ month;p[i]・ month二p[i+l]・ month;p[i+l]・ month二x;x二p[i]. day;p[i]. day=p[i+l]. day;p[i+l]・ day=x;x二p[i]・ hour;p[i]・ hour二p[i+l]. hour;p[i+l]・ hour=x;x二p[i]. minute;p[i]. minute=p[i+l]・ minute;p[i+l]. minute二x;else if(pLi]・year二二p[i+l].year)if (p[i]. month>p[i+l]. month)// 相同年数,根据月份排序。
车票管理系统详细说明:1.程序功能一车站每天有n个发车班次,每个班次都有一班次号(1、2、3、…、n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
如:班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 重庆昆明 10 45 302 6:30 重庆成都 4 40 403 7:00 重庆成都4 40 204 10:00 重庆成都 4 40 2……现要求设计一个管理系统,能完成如下功能:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的发车时间,则显示"此班已发出"的提示信息);(3)查询路线:可按班次号查询,也可按终点站查询;(4)售票和退票功能。
①:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数;②:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。
2.设计思想此系统可参照学生成绩管理系统的部份设计方法而设计。
1车票管理系统车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
如班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 郫县广汉2 45 302 6:30 郫县成都0.5 40 403 7:00 郫县成都0.5 40 204 10:00 郫县成都0.5 40 2…(一)功能要求:用c/c++设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(二)其它要求:(1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块******************************************************************* ************************************************/ #include<stdio.h>#include<stdlib.h>#include<dos.h>#include<time.h>#include<conio.h>#include<string.h>const int MAX=20;const int N=50;const int MAXFILENAME=100; enum {FALSE,TRUE};struct time{int hour;int minutes;};struct ticket{int SerialNumber;struct time SetOut;char DeparturePoint[MAX];char TerminalPoint[MAX];float LastTime;int FixNumber;int FixedNumber;}car[N];int RecordNumber;int FLAG=FALSE;/**********************************************/ int ShowMessage(void); //载入原始数据void mainmenu(void); //主菜单void InsertMessage(void); //录入班次信息void SearchMenu(void); //查询路线子菜单void SearchByNumber(void); //按班次号查询void SearchByAddress(void); //按终点站查询void TicketManagement(void); //车票售出与退回void TicketOrder(void); //售票void TicketDelete(void); //退票void exit(void); //退出该系统/********************************************/ int main(void){RecordNumber=ShowMessage();if(1)do{mainmenu();}while(FLAG==FALSE);return 0;}void mainmenu(void){system("color 1f");system("mode con: cols=140 lines=130");char functionNumber;printf(" 车票管理系统\n\n");printf(" 制作:hmm182007\n");printf(" 日期:2007/11/25/19:57\n");printf("=========================================================== =============== ==\n");printf(" 1.录入班次信息\t\n");printf(" 2.浏览班次信息\t\n");printf(" 3.查询行车路线\t\n");printf(" 4.售票与退票系统\t\n");printf(" 5.退出该系统\t\n");printf("=========================================================== =============== ==\n");printf("请选择你所需要的功能:");scanf("%c",&functionNumber);switch(functionNumber){case '1':{InsertMessage();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '2':{ShowMessage();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '3':{SearchMenu();printf("\n按任意键回主菜单......\n"); getchar();getchar();}break;case '4':{TicketManagement();getchar();getchar();}break;case '5':FLAG=TRUE;exit();break;default:{printf("输入错误,请确保你的输入为1--5.\n"); printf("按任意键回主菜单......\n");getchar();getchar();}}//switch endsFLAG=FALSE;}void InsertMessage(void){FILE *fp;char filename[MAXFILENAME];int i;printf("请输入文件名或者文件路径名:");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("文件%s不可读,请确认文件%s存在或者文件路径正确.\n\n",filename,filename);mainmenu();}for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++){fscanf(fp,"%d%d%d",&car[i].SerialNumber,&car[i].SetOut.hour,&car[i] .SetOut.minutes);fscanf(fp,"%s%s%f%d%d",&car[i].DeparturePoint,&car[i].TerminalPoint ,&car[i].LastTime,&car[i].FixNumb er,&car[i].FixedNumber);}int count=i;printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");for(i=0;i<count;i++){printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i ].SetOut.minutes);printf("%s\t%s\t\t%.1f\t%d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,c ar[i].FixNu mber,car[i].FixedNumber);}fclose(fp);}int ShowMessage(void){int i;FILE *fp;if((fp=fopen("add.txt","r"))==NULL){printf("读取数据失败,请检查文件add.txt是否存在.\n"); exit(-1);}for(i=0;!feof(fp)&&!ferror(fp);i++){。
#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>int shoudsave = 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;int bookNum;};struct man{char num[10];char name[10];int bookNum;};typedef struct node{struct train data;struct node * next;}Node, *Link;typedef struct people{struct man data;struct people*next;}bookMan, *bookManLink;void printInterface(){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("********************************************************"); }/*添加一个火车信息*/void InsertTraininfo(Link linkhead){struct node *p, *r, *s;char num[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;}}void printTrainInfo(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, char findmess[], 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;}void QueryTrain(Link l){Node *p;int sel;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!");}}}void BookTicket(Link l, bookManLink k){Node*r[10], *p;char ch, dem;bookMan*v, *h;int i = 0, t = 0;char str[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(bookManLink k, char findmess[]){bookMan*r;r = k->next;while (r){if (strcmp(r->data.num, findmess) == 0){mark = 1;return r;}r = r->next;}return 0;}/*修改火车信息*/void UpdateInfo(Link l){Node*p;char findmess[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;}}void AdvicedTrains(Link l){Node*r;char str[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");}void SaveTrainInfo(Link l){FILE*fp;Node*p;int count = 0, flag = 1;fp = fopen("D:\\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);}void SaveBookmanInfo(bookManLink k){FILE*fp;bookMan*p;int count = 0, flag = 1;fp = fopen("D:\\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;int sel;l = (Node*)malloc(sizeof(Node));l->next = NULL;r = l;k = (bookMan*)malloc(sizeof(bookMan));k->next = NULL;h = k;fp1 = fopen("D:\\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("D:\\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;}。
java+web+mysql火车票管理系统课程设计
火车票管理系统是一个非常常见的项目,可以用Java语言编写。
以下是一个简单的课程设计框架示例:
1. 系统需求分析
- 确定系统的基本功能需求,如用户登录、车票查询、订单
管理等。
- 确定系统的非功能需求,如界面友好、响应快速等。
2. 数据库设计
- 设计系统所需的数据库表结构,如用户表、车次表、订单
表等。
- 设计表之间的关系,如用户表与订单表的关联关系。
3. 界面设计
- 设计系统的用户界面,包括登录界面、主界面、查询界面、订单管理界面等。
- 界面应该直观、易用,符合用户的操作习惯。
4. 功能开发
- 编写用户登录功能,实现用户的注册、登录、注销等操作。
- 编写车票查询功能,实现按日期、起点站、终点站等条件
进行查询。
- 编写订单管理功能,实现订单的新增、修改、删除等操作。
5. 数据库操作
- 使用Java的JDBC接口操作MySQL数据库。
- 编写数据库访问层,封装数据库操作,提供给其他模块使用。
6. 系统集成测试
- 对各个模块进行集成测试,确保系统的功能正常运行。
- 测试用户登录、车票查询、订单管理等功能。
7. 系统部署与运行
- 部署系统到服务器,确保能够正常运行。
- 测试系统在实际环境下的稳定性和性能。
以上仅为简单的课程设计框架示例,具体的项目实现细节和功能需求需要根据自己的具体情况进行调整和完善。
希望对你的课程设计有帮助!。
#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字节处。
引言概述:车票管理系统是一种用于管理车票信息,包括购票、退票、查询票务等功能的软件系统。
本文将以C语言为编程语言,详细阐述如何编写一个车票管理系统。
该系统可以方便管理者对车票信息进行操作,同时也提供给用户便捷的购票和查询功能。
正文内容:一、数据库设计1.1数据库表的建立1.2表中字段的设置1.3数据库的连接与操作1.4数据库的备份与恢复1.5数据库的维护与优化二、用户管理2.1用户注册2.2用户登录2.3用户信息修改2.4用户权限管理2.5用户数据备份与恢复三、车票管理3.1车票添加3.2车票查询3.3车票修改3.4车票删除3.5车票排序和筛选四、订单管理4.1订单4.2订单查询4.3订单修改4.4订单删除4.5订单统计和报表五、支付管理5.1支付方式的选择5.2支付状态的更新5.3支付记录的查询5.4退款管理5.5支付安全性保证总结:通过本文详细的阐述,我们了解到了如何使用C语言编写一个车票管理系统。
在系统的开发过程中,数据库设计、用户管理、车票管理、订单管理和支付管理等方面都需要详细考虑。
通过对每个模块的分析和设计,能够使系统更加高效、安全和易用。
在实际开发中,我们还需要根据具体需求进行对系统的优化和完善,保证系统能够满足用户的需求,并且能够稳定运行。
希望本文对您有所帮助,能够指导您在C语言中编写车票管理系统的开发过程。
引言概述:C语言编写车票管理系统是一个涉及到计算机编程技术的项目,旨在帮助车票销售员和管理员更好地管理和控制车票的销售与出票过程。
本文将详细介绍该系统的设计和实现过程,包括系统的功能需求、系统的结构设计、关键代码的实现以及系统的优化与改进。
正文内容:1.功能需求车票管理系统的功能需求包括但不限于:车票销售、车票查询、座位管理、车票退换等。
具体的系统功能要求涉及到对车票信息的录入、查询、修改和删除,车票的座位分配和座位的查询,以及对车票销售记录的统计和报表等功能。
1.1车票销售功能实现车票销售功能是车票管理系统的核心功能之一。
计算机科学与技术系信息管理与信息系统专业《程序设计综合课程设计》报告(2013/2014学年第一学期)学生姓名:学生班级:学生学号:指导教师:2013年1月8日目录第一章课程设计的目的和要求 (1)1.1课程设计的目的 (1)1.2 课程设计的基本要求 (1)第二章课程设计任务内容 (2)2.1 简介 (2)2.2 功能说明 (2)第三章详细设计说明 (3)3.1 模板设计图 (3)3.2 主函数流程图 (4)3.3 子函数流程图 (5)第四章编码与调试 (7)4.1 软件使用说明 (7)4.2 运行结果及截图 (7)第五章课程设计心得与体会 (11)附录一参考文献 (12)附录二程序清单 (13)附录三录入文件 (27)火车票管理系统第一章课程设计的目的和要求高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的内容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。
高级语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构程序设计的方法按照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。
1.1课程设计的目的1.巩固和掌握高级语言程序设计基本概念;2.掌握基本的程序设计方法;3.掌握开发软件所需的需求定义能力;4.提高书写程序设计说明文档的能力;5.提高综合运用高级语言的能力,强化编程和调试能力。
1.2 课程设计的基本要求1.根据所给的课程设计题目,分析课程设计题目的要求;2.对系统功能模块进行分析,写出详细的设计说明文档;3.编写程序代码,调试所编写程序使其能正确运行;4.设计完成的软件便于操作和使用;5.设计完成后提交课程设计报告。
第二章课程设计任务内容2.1 简介火车票管理系统:是为广大群众开发的,帮助人们查询车次信息,订票和退票,大大节约了人们的时间,是铁路营运公司所需要的全部功能的一个综合的管理系统。
火车票务管理系统一、课题内容和要求设计目标:设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出注:建议用VC环境开发用户界面。
结果形式:提交程序设计报告和可演示的系统软件二、需求分析系统主界面应有以下功能选项1.录入火车时刻信息2.查询火车时刻信息3.统计火车车次4.退出(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询按终点查询按起点查询按终点和日期查询(3)统计按终点统计每日的车次数按起点统计每日的车次数二、概要设计void SearchTrainNum();//按照车次查询void SearchToPlace();//按终点查询void SearchFromPlace();//按起点查询void SearchToPlaceAndDate();//按终点和日期查询void CountToPlace();//按终点统计每日的车次数void CountFromPlace();//按起点统计每日的车次数三、详细设计程序的源代码与注释#include<stdio.h>#include<string.h>#include<stdlib.h>void SearchTrainNum();void SearchToPlace();void SearchFromPlace();void SearchToPlaceAndDate();void CountToPlace();void CountFromPlace();void Star();struct TRAIN{char trainNum[10];char date[30];char fromPlace[20];char toPlace[20];char inTime[30];char outTime[30];double price;};struct TRAIN train[30];int main(){int request;char ch='Y';int i=0;double myprice;FILE *fp;repeat:Star();printf("火车管理系统界面\n");printf("1.录入火车时刻信息.\n");printf("2.查询火车时刻信息.\n");printf("3.统计火车车次.\n");printf("4.退出.\n");Star();printf("\n");printf("请输入:");scanf("%d",&request);switch(request) //利用case分支结构{case 1:{ fp=fopen(".\\train.rec","wb"); //利用文件与流if(!fp){printf("File can not be opened\n");exit(1);}do{printf("Enter车次日期起点终点开车时间到达时间票价\n>>> ");scanf("%s%s%s%s%s%s%lf",train[i].trainNum,train[i].date,train[i].fromPlace ,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);train[i].price=myprice;fwrite(&train[i],sizeof(struct TRAIN),1,fp);i++;printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp);printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}}break;case 2:{ printf("\n\n");printf(">>>>>火车时刻信息查询<<<<<\n");printf("1.按车次查询.\n");printf("2.按终点查询.\n");printf("3.按起点查询.\n");printf("4.按终点和日期查询.\n");printf("5.退出.\n");printf("请输入:");scanf("%d",&request);switch(request){case 1: SearchTrainNum(); break; case 2: SearchToPlace(); break;case 3: SearchFromPlace(); break; case 4: SearchToPlaceAndDate(); break; case 5: exit(0); break;}printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}} break;case 3:{printf("\n\n");printf(">>>>>火车车次统计系统<<<<<\n");printf("1.按终点统计每日的车次数.\n");printf("2.按起点统计每日的车次数.\n");printf("3.退出.\n");printf("请输入:");scanf("%d",&request);switch(request){case 1: CountToPlace(); break;case 2: CountFromPlace(); break;case 3: exit(0); break;}printf("返回主界面吗?(Y返回)");getchar();scanf("%c",&ch);if(ch=='Y'){printf("\n\n");goto repeat;}} break;case 4:{Star();printf("欢迎下次使用,拜拜~~\n"); Star();}exit(0); break;default:printf("Incorrect num entered.");printf("Enter a new num.\n");break;}return 0;}void SearchTrainNum(){FILE *fp1;char num[20];char ch;int i=0;fp1=fopen(".\\train.rec","r+");if(!fp1){printf("File can not be opened\n");exit(1);}do{rewind(fp1); //文件指针的操作,到文件头部函数printf("输入你要查找的车次号.\n>>>");scanf("%s",num);while(!feof(fp1)){fread(&train[i],sizeof(struct TRAIN),1,fp1);if(strcmp(num,train[i].trainNum)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp1);}void SearchToPlace(){FILE *fp2;char num[20];char ch;int i=0;fp2=fopen(".\\train.rec","r+");if(!fp2){printf("File can not be opened\n");exit(1);}do{rewind(fp2);printf("输入你要查询的终点.\n>>>");scanf("%s",num);while(!feof(fp2)){fread(&train[i],sizeof(struct TRAIN),1,fp2);if(strcmp(num,train[i].toPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp2);}void SearchFromPlace(){FILE *fp3;char num[20];char ch;int i=0;fp3=fopen(".\\train.rec","r+");if(!fp3){printf("File can not be opened\n");exit(1);}do{rewind(fp3);printf("输入你要查询的起点.\n>>>");scanf("%s",num);while(!feof(fp3)){fread(&train[i],sizeof(struct TRAIN),1,fp3);if(strcmp(num,train[i].fromPlace)==0){printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,tra in[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price);printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp3);}void SearchToPlaceAndDate(){FILE *fp4;char num[20];char num1[20];char ch;int i=0;fp4=fopen(".\\train.rec","r+");if(!fp4){printf("File can not be opened\n");exit(1);}do{rewind(fp4);printf("输入你要查询的终点与日期.\n>>>");scanf("%s",num);scanf("%s",num1);while(!feof(fp4)){fread(&train[i],sizeof(struct TRAIN),1,fp4);if((strcmp(num,train[i].toPlace)==0)&&(strcmp(num1,train[i].date)==0)) {printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date, train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,train[i].price); printf("\n");}i++;}printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');printf("\n");fclose(fp4);}void CountToPlace(){FILE *fp5;char num[20];char ch;int i=0;int j=0;fp5=fopen(".\\train.rec","r+");if(!fp5){printf("File can not be opened\n");exit(1);}do{rewind(fp5);printf("输入你(要统计的车次数的)终点.\n>>>");scanf("%s",num);j=0;while(!feof(fp5)){fread(&train[i],sizeof(struct TRAIN),1,fp5);if(strcmp(num,train[i].toPlace)==0){j++;}i++;}printf("当日终点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp5);}void CountFromPlace(){FILE *fp6;char num[20];char ch;int i=0;int j=0;fp6=fopen(".\\train.rec","r+");if(!fp6){printf("File can not be opened\n");exit(1);}do{rewind(fp6);printf("输入你(要统计的车次数的)起点.\n>>>");scanf("%s",num);j=0;while(!feof(fp6)){fread(&train[i],sizeof(struct TRAIN),1,fp6);if(strcmp(num,train[i].fromPlace)==0){j++;}i++;}printf("当日起点%s的车次数:%d",num,j);printf("\n");printf("continue(Y/N)(N to end)?");getchar();scanf("%c",&ch);}while(ch!='N');fclose(fp6);}void Star(){int i;for(i=0;i<20;i++){printf("*");}printf("\n");}四、测试数据及其结果分析(如图)1.火车时刻信息录入2.火车时刻信息查询。
目录第一章——————————————课程认识第二章——————————————课题选择第三章———————————总体设计与分析第四章————————————模块详细设计第五章————————————主要实现方法第六章————————————课程设计总结第七章————————————————结论第八章————————————————建议一、课程的性质、任务、目的C语言是非常优秀的程序设计语言,应用广泛,是高校计算机专业的一门专业基础课程;学好C语言,是学习计算机专业课程和用好计算机的重要基础。
要学好C语言,应抓好理论学习、上机实验以及综合应用这三个环节。
在《C程序设计》课程的学习中,学生在掌握C语言理论知识的同时,通过上机实验完成一定量的实践性题目,初步掌握了程序设计的基本思想、基本概念和基本方法。
本课程是计算机专业的学生在完成了《C程序设计》课程的学习后,为加强学生对程序设计思想的理解、通过解决有一定代表性的小型综合应用类课题从而提高实际编程能力而设置的一门实践性课程。
本课程为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机地结合起来,培养和锻炼学生分工协作、分析和解决实际问题并利用计算机求解问题的能力,以提高学生适应实际,实践编程的能力,从而掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计和调试能力。
二、课题选择(背景、意义、实用性……);背景:现今,人们的生活水平渐渐改善,生活质量也随之提高,人们的精神需求也大了,应此,出行旅游,或是走访亲友成了习以为常的事了,出行已成为现代人的家常便饭,汽车,火车,飞机等交通工具为我们提供了更多的方便。
然而在售票中,就需要一个售票系统来帮助售票员来更为快捷,高效,方便的售票,同时也为了车站方面更好的管理票务,因此,一个好的车票管理系统就必不可少了。
意义:选择车站售票系统作为课程设计的课题,就车站的售票流程等进一步了解车站的售票系统的原理。
#include<stdio.h> ///宏定义函数#include<string.h> //串操作及内存操作函数#include<stdlib.h> /////调用系统函数#include<time.h> ///时间库函数#include<conio.h> ///输入输出函数#define N 1000 //宏定义多条记录typedef struct 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; ///初始班次总数为0CLASS records[N]; // 多条记录int system_time(); //系统时间void NewMessage(); //新纪录*录入函数******void ShowTable1(); //线框调用1,,,不用没次输void ShowTable2(int i); //线框调用2,,,不用没次输void Display(); //显示所有函数void add(); //增加记录void save(); // 保存函数void load(); // 按班次查询函数void search(); //查询函数void change(); //修改函数**void quit(); ////////// //退出函数******void Ticketorder(); // //*售票函数***void Ticketdelete(); //删除函数*int menu_select(); //菜单函数*int whether(int); ////判断时间是否超出函数***void find(char s1[],char s2[]); //查询函数★//s1为班次//s2为终点站void deletemessage(); //删除函数int findnum(char s1[]); //班次查询函数void get(int,int); //修改及增加班次*char *menu[]={"*****************欢迎使用车票查询系统*****************", "\n*******************MENU功能菜单***********************","\n◤★ 1. 录入班次◥","\n◆★ 2. 显示所有班次◆","\n◆★ 3. 查询班次◆","\n◆★ 4. 增加班次◆","\n◆★ 5. 售票◆","\n◆★ 6. 退票◆","\n◆★ 7. 修改班次◆","\n◆★ 8. 删除班次◆","\n◣★ 9. 退出◢"}; /**************************主函数***************************/void main(){system("cls"); //刷屏while(1) //菜单函数循环{switch(menu_select()) //菜单函数*{case 1: NewMessage();break; ////新纪录*录入函数******case 2: Display();break; // //显示case 3: search();break; //查找函数**case 4: add();break; // //增加记录case 5: Ticketorder();break; ////*售票函数***case 6: Ticketdelete();break; //删除函数*case 7: change();break; //修改函数**case 8: deletemessage();break; //////选择调用删除函数case 9: quit();break; //////退出函数******}}}/***********************菜单函数**************************/int menu_select() /////////菜单函数*{char s[5]; ///定义要输入的数字功能int c,i;system("cls"); //刷屏system("color 09");//改变颜色for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单各项)}i=0;while(c<0||c>9) //判断是否是1到9的命令{printf("\n"); ///输出换行printf("******************************************************");printf("\n请选择(1-9):▁▂▃▄▆▇");scanf("%s",s);c=atoi(s); //atoi将字符串转换成一个整数值} ///输出菜单面return c; ////返回请求}/*******************************录入函数************************************/void NewMessage() //*录入函数******{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; //通过是1}if(i==0){system("cls"); //刷屏printf("请输入要录入班次总数:\n");scanf("%d",&class_num); //指向班次指针system("cls"); //刷屏for(i=0;i<class_num;i++){system("cls"); //刷屏printf("请输入第%d个班次信息:\n",i+1);h=-1;for(;h!=i;) ///循环输出{printf("请输入班次:\n");scanf("%s",records[i].num);for(h=0;h<i;h++)if(strcmp(records[h].num,records[i].num)==0)//判断字符串比较是否相等,,待比较的字符串{printf("输入错误!该班次已存在!\n");break; ///返回}}get(i,j); ////修改及增加班次*j=5;}save(); //调用保存函数}}/*******************************显示所有函数********************************/void Display() //显示所有函数{int i,j;system("cls"); //刷屏load(); // 调用按班次查询函数ShowTable1(); //线框调用1,,,不用没次输for(i=0,j=0;i<class_num;i++,j+=2) /////按班次顺序输出{printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");if(whether(i)) //判断时间是否超出函数***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,records[i].now);elseprintf("|%10s| 已发车|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].from,records[i].to,records[i].hours,records[i].max,records[i] .now);}ShowTable2(j); //线框调用2printf("\n按任意键继续....\n");getch(); /////从控制台读取一个字符,但不显示在屏幕上}/**********************************打印表头***********************************************/void ShowTable1() //线框调用1,,,不用没次输{int i=2;system("cls"); //刷屏printf("**************************MESSAGE车程信息**********************************\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |\n");}/***************************************打印表尾************************************************/void ShowTable2(int i) //线框调用2。
#include <iostream>#include <iomanip>#include <stdlib.h>#include <string>#include <fstream>#include <ctime>#include <conio.h>#include <windows.h>#include <memory.h>using namespace std;int manage=0,end=1;static int num=-1;long t = time(NULL);void mainmenu();class user{private:char train[10];int hour;int minute;int zhanshu;char start_station[20];char end_station[20];int ticket_price;char zhandian[200];public:void input();//录入函数void browse();//浏览车次函数void search_train();//按车次查询void search_station();//按站点查询void display(int );//显示个车次信息friend void save ();//保存数据friend void del();//删除数据friend void Int();//初始化函数,读取“数据.txt”中的数据} ;user ticket[10];/*------------------------------------------------存储函数将车次信息存储在数据.txt中------------------------------------------------*/void save(){ofstream file("数据.txt",ios::out);for(int j=0;j<=num;j++){file<<ticket[j].train<<" ";file<<ticket[j].zhanshu<<" ";file<<ticket[j].start_station <<" ";file<<ticket[j].end_station <<" ";file<<ticket[j].ticket_price<<" ";file<<ticket[j].zhandian <<endl;}file.close();cout<<"信息已存入文件"<<endl;}/*------------------------------------------------删除模块将车次信息从数据.txt中删除------------------------------------------------*/void del(){char na[10];int i,j;cout<<"选择删除模式(1.按车次2.按编号)"<<endl;int k;cin>>k;switch(k){case 1:cout<<"\n请输入需要删除的车次名:";cin>>na;for( i=0;i<=num;i++){if(strcmp(na,ticket[i].train)==0){for( j=i+1;j<=num;j++){ticket[j-1]=ticket[j];}cout<<endl<<"\t\t\t\t删除成功!\n";break;}}if(i>num)cout<<"对不起,没有有关此站点的车次信息!";else{num--;save();}break;case 2:cout<<"\n您要删除第几个(从上往下):"<<endl;int number;cin>>number;for(;number>num+1;){cout<<"指令错误!请重新输入!"<<endl;cin>>number;cout<<endl<<endl;}for(j=number;j<=num;j++){ticket[j-1]=ticket[j];}cout<<endl<<"\t\t\t\t删除成功!\n";num--;save();break;}}/*------------------------------------------------输入车次信息函数------------------------------------------------*/void user::input(){num++;cout<<"车次:";cin>>ticket[num].train;cout<<"站数:";//do{cin>>ticket[num].hour;}while(ticket[num].hour>24); cin>>ticket[num].zhanshu;cout<<"起始:";cin>>ticket[num].start_station;cout<<"终点:";cin>>ticket[num].end_station;cout<<"票价:";cin>>ticket[num].ticket_price;cout<<"站点:";cin>>ticket[num].zhandian;save ();}/*------------------------------------------------浏览以存车次的信息------------------------------------------------*/void user::browse(){int j;t = time(NULL);tm * pt = localtime(&t);cout<<"当前时间:"<<setfill('0')<<setw(2)<<pt->tm_hour<<':';cout<<setw(2)<<pt->tm_min<<':';cout<<setw(2)<<pt->tm_sec<<endl<<endl;cout<<"现存车次信息如下:"<<endl<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;for( j=0;j<=num;j++)ticket[j].display(j+1);}/*------------------------------------------------按站点查询------------------------------------------------*/void user::search_station(){char station[20];int i=0;cout<<"输入你要查询的站点:";cin>>station;cout<<endl<<endl;for(int j=0;j<=num;j++)if((strcmp(station,ticket[j].start_station)==0)||(strcmp(station,ticket[j].end_station)==0)){cout<<"查询结果:"<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;ticket[j].display(j+1);//break;i++;}if(j>num&&i==0)cout<<"对不起,没有有关此站点的车次信息!";}/*------------------------------------------------按车次查询------------------------------------------------*/void user::search_train(){char train[10];int i=0;cout<<"输入你要查询的车次:";cin>>train;cout<<endl<<endl;for(int j=0;j<=num;j++)if(strcmp(train,ticket[j].train)==0){cout<<"查询结果:"<<endl;cout<<"编号\t"<<"车次\t"<<"站数\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"站点\t"<<endl;ticket[j].display(j+1);//break;i++;}if(j>num&&i==0)cout<<"对不起,没有这趟车次信息!";}/*------------------------------------------------显示模块------------------------------------------------*/void user::display(int n){int numb;numb=n;cout<<endl;cout<<numb<<"\t"<<train<<"\t"<<" "<<zhanshu<<"\t"<<start_station<<"\t"<<end_station<<"\t"<<ticket_price<<"\t"<<" "<<zhandian<<"\t";/*t = ::time(NULL);tm * pt = localtime(&t);if(hour<pt->tm_hour)cout<<" 列车已发出";else if(hour==pt->tm_hour&&minute<=pt->tm_min)cout<<" 列车已发出";else cout<<"\t正常";cout<<endl;*/}/*------------------------------------------------退出函数------------------------------------------------*/char exit(){char w;//system("cls");cout<<"\t\t O(∩_∩)O O(∩_∩)O"<<endl;cout<<"\t\t 退出菜单"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t 1、确定"<<endl;cout<<"\t\t 2、取消"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"请输入选择:";cin>>w;return w;}/*------------------------------------------------身份验证选择管理员/乘客身份------------------------------------------------*/void menu(){int functionNumber;//,code;char password[5]="1234";char code[5];cout<<"\t\t O(∩_∩)O O(∩_∩)O" <<endl;cout<<"\t\t 公交管理"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t 1、管理员用户"<<endl;cout<<"\t\t 2、信息查询"<<endl;cout<<"\t\t "<<endl;cout<<"\t\t "<<endl;cout<<"\t\t ******************************* "<<endl;cout<<"\t\t "<<endl;cout<<"请输入选择:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;){cout<<"指令错误!请重新输入:"<<endl;cin>>functionNumber;}if (functionNumber==1){cout<<"请输入密码:";int i=0;for(;i<4;i++){code[i]=getch();cout<<"*";}code[4]='\0';for(;strcmp(password,code)!=0;){cout<<"指令错误!请重新输入:"<<endl;for(i=0;i<4;i++){code[i]=getch();cout<<"*";}}manage=1;cout<<endl;}}/*------------------------------------------------查询子菜单查询某车次/有某站点的车次------------------------------------------------*/void search_menu(){int functionNumber;cout<<" 查询子菜单\n"<<endl;cout<<endl;cout<<" 1.按班次查询\n"<<endl;cout<<" 2.按站点查询\n"<<endl;cout<<" 3.返回主菜单\n"<<endl;cout<<endl;cout<<"请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;){cout<<"指令错误!请重新输入!"<<endl;cin>>functionNumber;cout<<endl<<endl;}switch(functionNumber){case 1:ticket[0].search_train();break;case 2:ticket[0].search_station();break;case 3:system("cls");mainmenu();}}/*------------------------------------------------主菜单------------------------------------------------*/void mainmenu(){ char s;int functionNumber;cout<<" 欢迎使用车票管理系统\n"<<endl;cout<<endl;cout<<" 1.录入班次信息\n"<<endl;cout<<" 2.浏览班次信息\n"<<endl;cout<<" 3.查询行车路线\n"<<endl;cout<<" 4.删除车次内容\n"<<endl;cout<<" 5.返回上级菜单\n"<<endl;cout<<" 6.退出系统\n"<<endl;cout<<endl;cout<<"请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;switch(functionNumber){case 1:{ char c;if (manage){do{ticket[num].input();cout<<"已录入"<<num+1<<"条航班信息(包括已从文件中读取的),想继续录入吗(y/n)"<<endl; //?cin>>c;for(;c!='y'&&c!='n';){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}} while (c=='y');}elsecout<<"对不起,您不是管理员不能进行这项操作!";cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 2:{ticket[num].browse();cout<<endl<<endl<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 3:{search_menu();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 4:{if(manage){ticket[0].browse();del();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}else{cout<<"对不起,您不是管理员不能进行这项操作!";cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}}break;case 6:{s=exit();if(s=='1')t = time(NULL);tm* pt = localtime(&t);system("cls");cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" 谢谢使用车票管理系统\n";cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl <<endl<<" \t\t\t\t\t\t\t制作:李明"<<endl<<endl;end=0;}break;case 5:{system("cls");}break;default:{cout<<"输入错误,请确保你的输入为1--5"<<endl;cout<<"按任意键回主菜单......"<<endl;getchar();system("cls");}}}/*------------------------------------------------初始化函数从数据.txt中读出信息------------------------------------------------*/void Int(){system("color c");//system("color A")0 = 黑色, 8 = 灰色1 = 蓝色//9 = 淡蓝色2 = 绿色A = 淡绿色3 = 湖蓝色//B = 淡浅绿色4 = 红色C = 淡红色// 5 = 紫色 D = 淡紫色// 6 = 黄色 E = 淡黄色//7 = 白色 F = 亮白色ifstream file ( "数据.txt" ,ios::in) ;while( !file.eof()){num++;file>>ticket[num].train;file>>ticket[num].hour ;file>>ticket[num].minute;file>>ticket[num].start_station;file>>ticket[num].end_station;file>>ticket[num].ticket_price;file>>ticket[num].zhandian;}num--;file .close();}void main(){Int();menu();while(end); }。
火车票管理系统―课程设计(附源代码)计算机科学与技术系信息管理与信息系统专业《程序设计综合课程设计》报告(2021/2021学年第一学期)学生姓名:学生班级:学生学号:指导教师: 2021年 1 月 8 日目录第一章课程设计的目的和要求 (1)1.1课程设计的目的 ................................................ 1 1.2 课程设计的基本要求............................................ 1 第二章课程设计任务内容 . (2)2.1 简介.......................................................... 2 2.2 功能说明...................................................... 2 第三章详细设计说明 .. (3)3.1 模板设计图.................................................... 3 3.2主函数流程图.................................................. 4 3.3 子函数流程图.................................................. 5 第四章编码与调试 (7)4.1 软件使用说明.................................................. 7 4.2运行结果及截图................................................ 7 第五章课程设计心得与体会 .......................................... 11 附录一参考文献 ..................................................... 12 附录二程序清单 ..................................................... 13 附录三录入文件 (27)I程序设计综合课程设计火车票管理系统第一章课程设计的目的和要求高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的内容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。
一、问题分析随着社会的不断发展,人们在交通方式的选择上有了不同以往的选择,以前的靠人力,畜力,以及摩托车,现在人们的选择更多的会放在了汽车,飞机还有列车上。
每当春节前后时,都有一批民工潮,学生潮,这些农民工和学生都来自于祖国的各个地方,因此车站如何合理有序的安排列车出站到站时间成了一个很关键的内容,有助于维持车站的秩序以及减少不必要的等待。
而本课题的列车时刻管理系统也应用与这些地方,不过由于专业知识学的还不多,因此还不能将一个完整的列车时刻管理系统完全的展示出来,只是在最基础的层面上做了一些工作。
二、系统功能设计1.添加新记录:利用结构数组的方式来添加新记录,并且保存在文件train.txt文件中,并且记录上限为300,新纪录的内容包括:出站地址,出站的时刻(时),出站时刻(分),到站地址,到站时刻(时),到站时刻(分)。
2.查看:查询功能总共分为四种方式:①按出站地址查询②按出站时刻查询③按到站地址查询④按到站时刻查询,这个功能由于能力有限,只限查找单一数据。
3.修改:修改功能:根据出站的地址,查找出对应的一组数据的内容,然后逐一修改。
4.删除:修改功能总共分为两个部分:①单一删除(按照出站地址)②全部删除5.保存:每执行一个任务后程序会自动将数据写入train.txt文档中.三、模块(函数)划分void main():主函数void MainMenu():主菜单列表void ShowMenu():查询菜单列表void AddNew():添加新的数据int IsLoop():循环输入数据void Display():输出所有的函数void Search_ccity():按出站地址查询void Search_dcity():按到站地址查询void Search_ctime():按出站时刻查询void Search_dtime():按到站时刻查询void ChkData(char city1[],char city2[],int hour1,int minute1,int hour2,int minute2):数据检测void Record_Modify():修改数据void DeleteMenu():删除菜单列表void DeleteOne():删除一组数据void DeleteAll():删除所有数据void ReadFromFile():从文件中读入void WriteToFile():从文件中写入四、模块的算法设计(部分主要函数的代码)1.整体构造:2.结构体:struct Record{int hour1;int hour2;int minute1;int minute2;char city1[20];char city2[20];};3.主菜单:void MainMenu(){system("cls");printf(”---—-—-———---—-—--———-——主菜单-—--——-——————-—--———----———-—\n");int option;printf(”—-—-—-—--——-————-——--1—添加新记录----—--—————-—-————-——-——-\n");printf(”--————-——--—-——-———-—2—查看——---—--—-——--—-——-———-———-—————\n”);printf(”-—--——----—-—-——--—-—3-修改—-—--—-—-—-——————-——----———-———-\n”);printf("-————-—-—-—---—--—-—-4—删除——--———-———-———-----————----————\n");printf("—-—---—-—-———-—--————5-退出程序——---—-—-—--—-—--—----————--\n”);printf("请选择:\n”);scanf("%d",&option);getchar();switch (option){case 1:AddNew();break;case 2:ShowMenu();break;case 3:Record_Modify();break;case 4:DeleteMenu();break;case 5:exit(0);}}4.数据检测:void ChkData(char city1[],char city2[],int hour1,int minute1,int hour2,int minute2){if (strlen(city1)>20){printf(”出站地址的字符不能超过20个!\n”);MainMenu();}if (strlen(city2)〉20){printf("到站地址不能超过20位!\n");MainMenu();}if (hour1〈0||hour1〉23){printf("时刻输入错误(0〈=hour<24)!\n”);MainMenu();}if (hour2〈0||hour2〉24){printf(”时刻输入错误(0<=hour<24)!\n”);MainMenu();}if (minute1〈0||minute1〉59){printf(”时刻输入错误(0〈=minute〈59)!\n");MainMenu();}if (minute2〈0||minute2〉59){printf(”时刻输入错误(0<=minute〈59)!\n");MainMenu();}}5.读入文件中的数据:void ReadFromFile(){FILE *fp;int i;if ((fp=fopen(”train。