列车时刻管理系统C语言程序设计(源代码)

合集下载

列车时刻表信息管理系统实践报告C语言源代码

列车时刻表信息管理系统实践报告C语言源代码

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)// 相同年数,根据月份排序。

用C写得车票管理系统源码

用C写得车票管理系统源码

车票管理系统详细说明: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++){。

c语言课程设计车票管理系统

c语言课程设计车票管理系统

c语言课程设计车票管理系统车票管理系统是一种用于管理和查询车票信息的软件系统。

在现代社会中,人们经常需要购买车票进行出行,而车票管理系统能够提供方便快捷的购票、退票、查询等功能,极大地方便了人们的出行需求。

车票管理系统需要具备用户管理功能。

用户可以通过注册账号和登录系统来使用各种功能。

系统需要记录用户的个人信息,包括姓名、身份证号码、电话号码等,以便于用户购票和退票时的身份验证。

用户可以通过修改个人信息来更新自己的基本资料。

车票管理系统需要提供车次管理功能。

系统需要记录不同车次的信息,包括车次编号、发车时间、到达时间、起始站点、终点站点、票价等。

管理员可以通过系统添加、修改和删除车次信息。

用户可以查询某一特定车次的详细信息,包括车次编号、发车时间、到达时间、起始站点、终点站点、余票数量、票价等。

车票管理系统还需要提供购票和退票功能。

用户可以通过系统选择某一特定车次和日期,然后查询该车次的余票数量。

如果有余票,用户可以选择购买相应数量的车票,并完成支付操作。

购票成功后,系统会生成一张电子车票并发送到用户的手机上。

如果用户需要退票,可以在规定的时间范围内选择相应的车票进行退票操作。

系统会根据退票规则进行退款处理,并将退款金额返还到用户的账户余额。

车票管理系统还需要提供车票查询功能。

用户可以通过系统选择起始站点和终点站点,然后查询符合条件的车次列表。

系统会根据用户的选择显示车次编号、发车时间、到达时间、余票数量、票价等信息。

用户可以根据自己的需求选择最合适的车次进行购票。

车票管理系统还需要具备统计分析功能。

管理员可以通过系统生成各种报表,包括每日、每周、每月的车票销售情况、客流量统计、收入统计等。

这些报表可以帮助管理员了解车票销售的情况,从而进行合理的调整和优化。

车票管理系统是一种方便快捷的软件系统,能够满足用户购票、退票和查询的需求。

通过该系统,用户可以轻松地选择合适的车次、购买车票,并随时查询车票信息。

火车调度c语言程序实现代码

火车调度c语言程序实现代码

火车调度c语言程序实现代码(总3页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March#define MAXSIZE 100/* 栈、队列的最大容量,设为100 */#include <>#include <>typedef char datatype;typedef struct {datatype stack[MAXSIZE]; /* 装载栈的向量 */int top; /* 栈顶指针 */} seqstack; /* 顺序栈类型定义*/typedef struct{ datatype queue[MAXSIZE];/* MAXSIZE为队列的最大长度 */int front;int rear;} sequeue; /* 顺序队列类型定义*/void setstacknull(seqstack *s ) /* 置空栈 */{ s->top=-1; }datatype pop(seqstack *s ) /* 出栈 */{ if (s->top<0 ){ printf( "stack empty!\n" );return('\0');}else{ s->top--; /* 产生新栈顶指针 */return(s->stack[s->top+1]); /* 返回原栈顶元素值 */ }}int empty(seqstack *s) /* 判断是否为空栈 */{if (s->top<0 ) return(1);else return(0);}void push(seqstack *s,datatype x) /* 入栈 */{ if ( s->top>=MAXSIZE-1 ) /* 上溢 */printf( "stack overflow!\n" );else{ s->top=s->top+1; /* 1.栈顶指针加1 */s->stack[s->top]=x; /* 2.新元素入栈 */}}void setseqnull(sequeue *sq) /* 置空队列 */{sq->front=-1; sq->rear=-1; }void encyque(sequeue *sq,datatype x) /* 入队 */ {if((sq->rear+1)%MAXSIZE==sq->front)printf( "queue overflow!\n" );else{ sq->rear=(sq->rear+1)%MAXSIZE;sq->queue[sq->rear]=x;}}datatype delcyque(sequeue *sq) /* 出队 */{if(sq->front==sq->rear)return(NULL);else{ sq->front=(sq->front+1)%MAXSIZE;return(sq->queue[sq->front]);}}main( ){seqstack *st;sequeue *trainsq;char ch, trains[MAXSIZE],*p=trains;st=(seqstack *)malloc(sizeof(seqstack));trainsq=(sequeue *)malloc(sizeof(sequeue));setstacknull(st);setseqnull(trainsq);printf("enter train serious:\n");gets(trains);putchar('\n');ch=*p;while (ch!='\0'){ ch=*p;if (ch=='L'){ push(st,ch);ch=pop(st);encyque(trainsq,ch);}else{push(st,ch);}p=p+1;}int i=0;p=trains;while(!empty(st)) {ch=pop(st); if(ch=='Q')encyque(trainsq,ch);else{*p=ch;p++;i++;}}if(i>=0){ch=trains[i];push(st,ch);ch=pop(st);encyque(trainsq,ch);i--;}printf("new train serious:\n");while (ch=delcyque(trainsq)) putchar(ch); putchar('\n');}。

c语言火车源代码

c语言火车源代码

c语言火车源代码以下是一个简单的C语言火车源代码示例,用于模拟火车的运行:c复制代码#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAX_TRAIN_LENGTH 100#define TRAIN_SPEED 10typedef struct {int position;int direction; // 0: stop, 1: forward, -1: backward} Train;void move_train(Train *train) {if (train->direction == 1) {train->position += TRAIN_SPEED;} else if (train->direction == -1) {train->position -= TRAIN_SPEED;}}int is_train_at_destination(Train *train) {return train->position >= MAX_TRAIN_LENGTH;}int main() {srand(time(NULL)); // 初始化随机数生成器Train train = {0, 0}; // 初始化火车初始位置和方向for (int i = 0; i < 50; i++) { // 模拟火车运行50次move_train(&train); // 移动火车if (is_train_at_destination(&train)) { // 如果火车到达目的地,重置位置和方向train.position = 0;train.direction = rand() % 2; // 随机选择前进或后退方向}printf("Train position: %d\n", train.position); // 输出火车位置}return0;}这个程序使用了一个结构体来表示火车,其中包含火车的位置和方向。

C语言 车票管理系统源程序

C语言 车票管理系统源程序

#include〈stdio。

h〉#include〈time.h> /*时间库函数*/#include<stdlib。

h> /*调用系统函数*/#include〈string。

h> /*串操作及内存操作函数*/ #include〈conio.h〉#include〈math。

h〉#define N 80 /*宏定义多条记录*/void maipiao(int s,int t);/*函数定义*/float times(int k);int hour(int k){switch(k){case 1:return 07;break;case 2:return 10;break;case 3:return 13;break;case 4:return 16;break;case 5:return 19;break;case 6:return 21;break;/*d到闽清一天的发车时间小时段*/ case 7:return 07;break;case 8:return 11;break;case 9:return 15;break;case 10:return 19;break;case 11:return 23;break; /*d到长乐一天的发车时间小时段*/ case 12:return 07;break;case 13:return 11;break;case 14:return 15;break;case 15:return 19;break;case 16:return 23;break;/*d到连江一天的发车时间小时段*/ case 17:return 07;break;case 18:return 11;break;case 19:return 16;break;case 20:return 20;break;/*d到永泰一天的发车时间小时段*/ case 21:return 07;break;case 22:return 12;break;case 23:return 17;break;case 24:return 22;break; /*d到福清一天的发车时间小时段*/ case 25:return 07;break;case 26:return 14;break;case 27:return 19;break;case 28:return 22;break;/*d到罗源一天的发车时间小时段*/ }}/*开车时间段*/ int minute(int k){switch(k){case 1:return 00;break;case 2:return 00;break;case 3:return 00;break;case 4:return 00;break;case 5:return 00;break;case 6:return 00;break;/*d到闽清一天的发车时间分钟段*/ case 7:return 00;break;case 8:return 00;break;case 9:return 00;break;case 10:return 00;break;case 11:return 00;break;/*d到长乐一天的发车时间分钟段*/ case 12:return 00;break;case 13:return 00;break;case 14:return 00;break;case 15:return 00;break;case 16:return 00;break;/*d到连江一天的发车时间分钟段*/ case 17:return 00;break;case 18:return 30;break;case 19:return 00;break;case 20:return 30;break;/*d到永泰一天的发车时间分钟段*/ case 21:return 00;break;case 22:return 30;break;case 23:return 00;break;case 24:return 30;break;/*d到福清一天的发车时间分钟段*/ case 25:return 30;break;case 26:return 00;break;case 27:return 30;break;case 28:return 30;break;/*d到罗源一天的发车时间分钟段*/ }}/*开车时间段*/ void wap(int k){switch(k){case 1:printf("闽清”);break;case 2:printf(”长乐");break;case 3:printf(”连江”);break;case 4:printf(”永泰”);break;case 5:printf(”福清”);break;case 6:printf("罗源");break;}}/*输入终点站的函数*/int shijian(){struct tm *ptr;time_t lt;lt =time(NULL);ptr=gmtime(&lt);printf(ctime(&lt));return 0;}/*输出当前时间的函数*/float times(int k){float t;if(k==1)t=1.5;if(k==2)t=3.0;if(k==3||k==4)t=4.0;if(k==5||k==6)t=4.5;return t;}/*输入行车时间的函数*/ int number(int k){int f;if(k==1||k==2)f=30;if(k==3||k==4)f=40;if(k==5||k==6)f=45;return f;}/*输入最大载客量的函数*/ int nownumber(int k,int i){int n=0;char filename[10];switch(i){case 1:strcpy(filename,”qiu1.txt”);break;case 2:strcpy(filename,”qiu2。

C语言火车票管理系统 (1)

C语言火车票管理系统 (1)

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>#define N 1000typedefstruct TICKET //定义新结构体TICKET {char num[10]; //车次char hour[3];char min[3];char from[10];char to[10];float hours;int max; //车载容量int now; //已售票数}CLASS;int class_num=0;CLASS records[N];int system_time();void message();void ShowTable1();void ShowTable2(i nt i);void Display();void add();void save();void load(); // 按班次查询void search(); //查询void change(); //修改void quit(); //退出void buyticket(); //售票void deleteticket(); //取消int menu_select(); //菜单int whether(int); //判断购买时间void find(char s1[],char s2[]); //按起点终点查询void deletemessage(); //删除int findnum(char s1[]); //班次查询void get(int,int); //修改及增加班次char*menu[]={" 欢迎使用车票查询系统","\n*******************菜单***********************", "\n 1. 录入班次","\n 2. 浏览班次信息","\n 3. 查询路线","\n 4. 增加班次","\n 5. 售票","\n 6. 退票","\n 7. 修改班次","\n 8. 删除班次","\n 9. 退出"};int main(){system("cls");while(1){switch(menu_select()) //菜单{case 1: message();b reak;case 2: Display();b reak;case 3: search();b reak;case 4: add();break;case 5: buyticket();break;case 6: deleteticket();break;case 7: change();b reak;case 8: deletemessage();b reak;case 9: quit();break;}}}int menu_select() //菜单{char s[5];int c,i;system("cls");for(i=0;i<11;i++){printf("%s",menu[i]); //输出菜单}i=0;while(c<0||c>9){printf("\n");printf("\n请输入选项(1-9): ");scanf("%s",s);c=atoi(s);}//输出菜单return c;}void message() //录入{int i=0,j=5,h;char s[5];FILE *fp; //定义文件型指针变量system("cls"); //刷屏if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL) //fopen打开文件{printf("增加信息\n");printf("请输入任意键返回\n");scanf("%s",s);i=1;}if(i==0){system("cls"); //刷屏printf("请输入班次总数:\n");scanf("%d",&class_num); //指向班次指针system("cls"); //刷屏for(i=0;i<class_num;i++){system("cls"); //刷屏printf("请输入%d班次信息:\n",i+1);h=-1;for(;h!=i;) ///循环输出{printf("请输入班次:\n");scanf("%s",records[i].num);for(h=0;h<i;h++)if(strcmp(records[h].num,records[i].num)==0){printf("该班次已存在\n");break;}}get(i,j); //修改及增加班次j=5;}save(); //调用保存函数}}/*******************************显示所有函数********************************/void Display() //显示所有函数{int i,j;system("cls"); //刷屏load(); // 按班次查询ShowTable1();for(i=0,j=0;i<class_num;i++,j+=2) //按班次顺序输出{if(whether(i)) //判断时间是否超出printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min, records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);elseprintf("|%10s| 已发车|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);}ShowTable2(j);printf("\n按任意键继续\n");getch();}void ShowTable1(){int i=2;system("cls"); //刷屏printf(" 班次信息\n");printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");printf("\n| 班次| 发车时间| 起点站| 终点站|行车时间|额定载量| 已售票|\n");}void ShowTable2(i nt i){printf("\n|----------|----------|----------|----------|--------|--------|--------|\n");}void search() //查询班次{int i;char s1[10]={'\0'},s2[10]={'\0'};system("cls"); //刷屏printf("1. 按班次查询\n");printf("2. 按终点站查询\n");printf("3. 退出\n");printf("请选择(1-3):\n");scanf("%d",&i);load(); //按班次查询switch(i){case 1: printf("请输入要查询的班次:\n");scanf("%s",s1);find(s1,s2);break;case 2: printf("请输入要查询终点站:\n");scanf("%s",s2);find(s1,s2);break;case 3: break;default : printf("输入错误!\n");break;}printf("按任意键继续\n");getch();}void find(char s1[],char s2[]){int i,h=0,m;ShowTable1();if(s2[0]=='\0')m=1;else m=0;for(i=0;i<class_num;i++)if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0){printf("\n");printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now);h+=2;if(m==1)break;}ShowTable2(h);if(h==0)printf("查找的班次不存在\n");}void add(){int i,j=5;load();system("cls");printf("1. 增加班次\n");printf("2. 返回\n");printf("请选择(1-2)\n");scanf("%d",&i);if(i==1){system("cls");printf("1. 输入要增加的班次:\n");scanf("%s",records[class_num].num);for(i=0;i<class_num;i++)if(strcmp(records[class_num].num,records[i].num)==0){printf("输入错误\n");getch();break;}if(i==class_num){get(i,j);class_num++;save();}}}void buyticket(){int i;char num[10];system("cls");printf("1. 售票\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){load(); // 按班次查询search();printf("请输入要订票的班次(若无请输入0):\n");scanf("%s",num);for(i=0;i<class_num;i++)if(strcmp(num,records[i].num)==0)if(records[i].max>records[i].now&&whether(i)==1){records[i].now++;printf("通向%s班次为%s的票订票成功\n",records[i].to,records[i].num);save();getch();break;}else{printf("该班次已满或已发出!\n");getch();}}}void deleteticket(){int i;char num[10];system("cls");printf("1. 退票\n");printf("2. 返回\n");printf("请选择(1-2)\n:");scanf("%d",&i);if(i==1){system("cls");load();printf("请输入要退票的班次:\n");scanf("%s",num);i=findnum(num);if(strcmp(num,records[i].num)==0)if(whether(i)){printf("是否确认");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){records[i].now--;printf("退票成功\n");save();getch();}}else{printf("该班车已发出,无法退票\n");getch();}if(i==class_num){printf("输入错误\n");getch();}}}void change(){char num[10],s[10];int h=0,j=13,i;load();system("cls");printf("请输入要修改的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("确认修改\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y'){get(i,j);save();}}}void deletemessage(){int i,h=0;char num[10];system("cls");printf("1. 删除班次\n");printf("2. 返回\n");printf("请选择(1-2):\n");scanf("%d",&i);if(i==1){system("cls");printf("请输入要删除的班次:\n");scanf("%s",num);i=findnum(num);if(i==class_num){printf("输入错误\n");getch();}else{printf("是否确认\n");scanf("%s",num);if(num[0]=='y'||num[0]=='Y'){for(;i<class_num-1;i++)records[i]=records[i+1];class_num--;save();printf("删除成功\n");getch();}}}}int findnum(char s1[]){int i,h=0;ShowTable1();for(i=0;i<class_num;i++){if(strcmp(s1,records[i].num)==0){printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].h our,records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i] .now);h+=2;break;}}ShowTable2(h);return i;}void save(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","wb"))==NULL) //打开文件{printf("文件打开错误!\n");exit(0);}if((fp2=fopen("d:车票管理系统0.dat","wb"))==NULL){printf("文件打开错误!\n");exit(0);}fwrite(&class_num,sizeof(int),1,fp2);fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void load(){FILE *fp1,*fp2;if((fp1=fopen("d:车票管理系统.dat","rb"))==NULL){system("cls");printf("文件打开错误\n");getch();exit(0);}if((fp2=fopen("d:车票管理系统0.dat","rb"))==NULL){system("cls");printf("文件打开错误\n");getch();exit(0);}fread(&class_num,sizeof(int),1,fp2);fread(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);}void quit(){char s[5];printf("确认退出\n");scanf("%s",s);if(s[0]=='y'||s[0]=='Y')exit(0);}void get(int i,int j){for(;;){printf("请输入发车时间(xx xx)");scanf("%s%s",records[i].hour,records[i].min);if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60& &atoi(records[i].min)>=0))break;else{printf("输入错误\n");getch();}}printf("请输入起点站:\n");scanf("%s",records[i].from);printf("请输入终点站:\n");scanf("%s",records[i].to);printf("请输入行车时间:\n");scanf("%f",&records[i].hours);printf("请输入额定载量:\n");scanf("%d",&records[i].max);for(;;){printf("请输入已售票数:\n");scanf("%d",&records[i].now);if(records[i].now<=records[i].max)break;else{printf("输入错误\n");getch();}}}int whether(int i){struct tm *local;time_t t;t=time(NULL); //NULL在stdio.h中定义为0local=localtime(&t); /////获取当前系统时间if(local->tm_hour<atoi(records[i].hour)||local->tm_hour==atoi(records[i].hour)&&local->tm_min<atoi(records[i].min))//atoi将字符串转换成一个整数值return 1;elsereturn 0;}。

c语言课程设计车票管理系统

c语言课程设计车票管理系统

c语言课程设计车票管理系统车票管理系统是一个用于管理车票信息的软件系统。

它可以记录并管理车票的购买、退票、查询等操作,实现对车票信息的全面管理和统计。

本文将从需求分析、系统设计和实现三个方面来介绍车票管理系统的开发过程。

一、需求分析车票管理系统主要面向客户和管理员两类用户。

客户可以通过系统购买车票、查询车票信息,管理员可以管理车票信息、处理退票等操作。

1. 用户管理车票管理系统需要实现用户的注册和登录功能,以保证用户购票时的身份认证和信息安全。

2. 车次管理系统需要记录车次的信息,包括车次编号、起始站点、终点站点、发车时间、到达时间、票价等。

管理员可以对车次信息进行增删改查操作。

3. 车票管理系统需要记录车票的信息,包括车票编号、车次编号、座位号、购票人、购票时间等。

客户可以通过系统购买车票,管理员可以对车票信息进行增删改查操作。

4. 车票查询客户可以根据起始站点、终点站点和发车时间等条件来查询车票信息,以便选择合适的车次和座位。

5. 车票购买客户可以选择合适的车次和座位进行购票,系统需要实时更新车票信息,避免重复售票或超售情况的发生。

6. 车票退票客户可以通过系统进行退票操作,系统需要实时更新车票信息,并进行相应的退款处理。

二、系统设计基于需求分析的结果,我们可以设计出如下的系统架构:1. 用户管理模块包括用户注册、登录、信息修改等功能。

2. 车次管理模块包括车次信息的增删改查功能。

3. 车票管理模块包括车票信息的增删改查功能。

4. 车票查询模块根据用户输入的条件查询车票信息并展示给用户。

5. 车票购买模块根据用户选择的车次和座位进行购票,并更新车票信息。

6. 车票退票模块根据用户选择的车票进行退票,并更新车票信息和退款处理。

三、系统实现车票管理系统的实现主要依赖于数据库和编程语言。

我们可以选择使用MySQL作为数据库,使用C语言进行系统的开发。

1. 数据库设计根据需求分析的结果,我们可以设计出如下的数据库表结构:- 用户表:包括用户ID、用户名、密码等字段。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、问题分析
随着社会的不断发展,人们在交通方式的选择上有了不同以往的选择,以前的靠人力, 畜力,以及摩托车,现在人们的选择更多的会放在了汽车,飞机还有列车上。每当春节前后 时,都有一批民工潮,学生潮,这些农民工和学生都来自于祖国的各个地方,因此车站如何 合理有序的安排列车出站到站时间成了一个很关键的内容, 有助于维持车站的秩序以及减少 不必要的等待。 而本课题的列车时刻管理系统也应用与这些地方, 不过由于专业知识学的还 不多, 因此还不能将一个完整的列车时刻管理系统完全的展示出来, 只是在最基础的层面上 做了一些工作。
3
列车时刻管理系统 { FILE *fp; int i; if ((fp=fopen("train.txt","rb"))==NULL) { printf("列车时刻信息不存在,请重新建立!\n"); return; } else printf("列车信息存在,请按回车键选择操作"); if (fread(&num,sizeof(int),1,fp)!=1) { num=-1; } else { for(i=0;i<num;i++) { fread(&Records[i],sizeof(struct Record),1,fp); } } fclose(fp); } 6.将数据写入文件中: void WriteToFile() { FILE *fp; int i; if ((fp=fopen("train.txt","wb"))==NULL) { printf("不能打开文件!\n"); return; } if (fwrite(&num,sizeof(int),1,fp)!=1) { printf("写入文件错误!\n"); } for (i=0;i<num;i++) { if (fwrite(&Records[i],sizeof(struct Record),1,fp)!=1) { printf("写入文件错误!\n"); }
按出站地址查询
全部删除
单一删除
2
列车时刻管理系统 { 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 ReadFromF 利用结构数组的方式来添加新记录,并且保存在文件 train.txt 文件中,并且记录上限为 300, 新纪录的内容包括: 出站地址, 出站的时刻 (时) , 出站时刻 (分) , 到站地址, 到站时刻 (时) , 到站时刻(分) 。 2.查看: 查询功能总共分为四种方式:①按出站地址查询②按出站时刻查询③按到站地址查询 ④按到站时刻查询,这个功能由于能力有限,只限查找单一数据。 3.修改: 修改功能:根据出站的地址,查找出对应的一组数据的内容,然后逐一修改。 4.删除: 修改功能总共分为两个部分:①单一删除(按照出站地址)②全部删除 5.保存: 每执行一个任务后程序会自动将数据写入 train.txt 文档中。
4
列车时刻管理系统 } fclose(fp); }
五、实验运行结果(部分)
1.主菜单
2.查询菜单
3.按出站地址查询
4.修改信息
5
列车时刻管理系统
5.删除信息
六、设计总结
通过本次课程设计,我对 C 语言这种程序设计语言有了初步的认识,对以后的专业课 程打下了一定的基础。C 语言是一门面向对象的程序设计语言,因此需要我们对函数部分要 下功夫。另外数组同样是很重要的内容,通过数组的学习,我们可以将日常生活中的一些问 题用计算机来解决。最后,我们学习了指针与结构,这部分是 C 语言的精髓部分,不过有 点难度, 这次的课程设计中我用的是数组的原因之一是对指针这方面还有些不足, 希望在日 后的学习中多加努力。 通过这次课程设计让我知道了学习中的不足, 也明白了要想学好更难 的知识就要先学好基础课程。
6
列车时刻管理系统 /**********************列车时刻管理系统****************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <malloc.h> #include <conio.h> struct Record /***定义结构体******/ { int hour1; int hour2; int minute1; int minute2; char city1[20]; char city2[20]; }; struct Record Records[300]; /****数组的成员个数限制了数据的数量要小于 300****/ int num=0; void AddNew(); int IsLoop(); void Display(); void ShowMenu(); 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 DeleteAll(); void DeleteOne(); void ReadFromFile(); void MainMenu(); void WriteToFile(); void main() /***主函数********/ { ReadFromFile(); /***读取文件中的数据****/ getchar(); while (1) { MainMenu(); 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)
7
列车时刻管理系统 /******从文件读取记录*******/ void ReadFromFile() { FILE *fp; int i; if ((fp=fopen("train.txt","rb"))==NULL) { printf("列车时刻信息不存在,请按回车重新建立!\n"); return; } else printf("列车信息存在,请按回车键选择操作"); if (fread(&num,sizeof(int),1,fp)!=1) { num=-1; } else { for(i=0;i<num;i++) { fread(&Records[i],sizeof(struct Record),1,fp); } } fclose(fp); } /*******主菜单***********/ 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 语句来实现选择*****/ { case 1:AddNew();break; case 2:ShowMenu();break; case 3:Record_Modify();break;
相关文档
最新文档