




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
26 课程设计报告(C语言程序设计)题目 车票信息管理系统 的设计与实现 二级学院 数学与统计 专 业 信息与计算科学 班 级 学生姓名 郭双红 学 号 指导教师 陈媛 时 间 1 需求分析1.1 课程设计题目要求设计并实现一个车票销售管理系统,系统实现以下功能。(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。(2) 车次信息导入功能:要求可从磁盘文件导入车次信息。(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。(4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票人数,并实现信息存盘。(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。(7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。1.2 系统功能需求(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。(2) 车次信息导入功能:要求可从磁盘文件导入车次信息。(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。(4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票人数,并实现信息存盘。(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。(7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。2 系统设计2.1 功能模块图 本系统的功能模块图如图2-1所示。车 票 管 理 系 统修 改 版 此 信 息退 票售 票进 入 班 次 浏 览 进 入 班 次 查 询查 询 菜 单进 入 终 点 站 查 询进 入 班 次 查 询进 入 起 点 站 查 询图2-1 系统功能模块图2.2 数据定义本系统的数据可采用结构数组来处理。可必要的设置全局变量。因此本系统的主要数据定义如下:struct Train_Ticket char cn15; /车量班次 char lp15; /left place 起点 char ap15; /arrive place 终点 char lt15; /left time 发车时间 char rt15; /running time 行车时间 float price; / 票价 int rl; /Rated load 额定载量 int bn; /booking number 已定票人数TN;int n=0,i=0;/ 全局变量2.3 关键技术分析 在程序开始运行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。 调用load()函数,从磁盘导入车票信息。由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。 .买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。 系统中应编写存盘函数save(),在进行买票或者退票功能后都需要调用save()函数进行数据的更新。 采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。3 系统实现3.1 功能模块设计根据系统分析的结论,将本系统需完成的功能模块划分如下:#include#include#include#include#include#define N 4void main_menu(); /主菜单模块void load(); /导入信息void INPUT(); /输入模块void scan(); /浏览模块void tuipiao(); /退票void buy(); /买票void change(); /修改函数void save(); /保存函数void prna(int pos); /打印记录void searchmenu(); /查询菜单函数int s_cn(); /按班次查询int s_lp(); /按起点站查询int s_ap(); /按终点站查询struct Train_Ticket char cn15; /车量班次 char lp15; /left place 起点 char ap15; /arrive place 终点 char lt15; /left time 发车时间 char rt15; /running time 行车时间 int price; / 票价 int rl; /Rated load 额定载量 int bn; /booking number 已定票人数TN;int n=0,i=0;/ 全局变量3.2 源代码/*/主菜单/*void main_menu() system(cls); system(color E); printf(*n);printf(*欢迎来到车票查询系统*);printf(n);printf(| 1: 进入班次浏览 |n);printf(| 2: 进入查询班次 |n);printf(| 3: 售票 |n);printf(| 4: 退票 |n);printf(| 5: 班次信息修改 |n);printf(| 0: 退出 |n);printf(*n);printf(n请选择(0-5):);void load() /从磁盘文件导入班次信息 int i; FILE *fp; if(fp=fopen(c:车票管理系统.dat,rb)=NULL) printf(文件打开错误n); exit(0); for(i=0;iN;i+) fread(&Ti,sizeof(struct Train_Ticket),1,fp); fclose(fp); system(cls); void save() /将班次信息保存到磁盘文件 FILE *fp; if(fp=fopen(c:车票管理系统.dat,wb)=NULL) printf(无法创建文件!nn); exit(0); for(i=0;iN;i+) fwrite(&Ti,sizeof(struct Train_Ticket),1,fp); fclose(fp);int time() /当前系统时间struct tm *f; time_t now;now=time(NULL); time(&now); f=gmtime(&now);printf(ctime(&now); return 0; void scan()system(cls); /*清屏*/ printf(n =n); printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); for(i=0;iN;i+) printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Ti.rl,Ti.lp,Ti.ap,Ti.lt,Ti.rt,Ti.price,Ti.bn); printf( =n);printf(请按任意键返回主菜单n);getch();void INPUT() /键入所有信息char ch;do system(cls); printf(nn =欢迎进入 录入汽车时刻信息 界面=n); doprintf(n 新建汽车信息?(y/n) );scanf(%c,&ch);if(ch!=y&ch!=n)printf(输入错误,请重新输入!); while(ch!=y&ch!=n);if(ch=n)break; printf( -);printf(n 录入第%d趟列车信息n,n+1);printf( 车次 ); fflush(stdin); gets(T);printf( 额定载量 );fflush(stdin); scanf(%d,&Ti.rl);printf( 起点 );fflush(stdin); gets(Ti.lp); printf( 终点 ); fflush(stdin); gets(Ti.ap); printf( 开车时间 ); fflush(stdin); gets(Ti.lt); printf( 行车时间 ); fflush(stdin); gets(Ti.rt); printf( 票价 ); fflush(stdin); scanf(%f,&Ti.price); printf( 已定票人数 ); fflush(stdin); scanf(%d,&Ti.bn); n+; i+; while(iN); save(); system(cls);void prna(int pos) / 打印一条记录 printf(n =n); printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tpos.rl,Tpos.lp,Tpos.ap,Tpos.lt,Tpos.rt,Tpos.price,Tpos.bn); printf( =n);void searchmenu() / 查询主菜单system(cls); printf(nn =欢迎进入 查询汽车时刻信息 界面=n);printf(n +请选择查找方式+nn); printf(| 1: 按班次查询 |n); printf(| 2: 按起点站查询 |n);printf(| 3: 进终点站查询 |n);printf(| 4: 返回主菜单 |n);printf(*n); printf(n请选择(1-4):);int s_cn() /按班次查询char name115;int j;system(cls);printf(请输入要查询的班次号:n );fflush(stdin);gets(name1);for(j=0;jN;j+)if(strcmp(T,name1)=0)printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tj.rl,Tj.lp,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue; return 0; return 1;int s_lp() /按起点站查询char name215;int j;system(cls);printf(请输入要查询的起点站名: n);fflush(stdin);gets(name2);for(j=0;jN;j+)if(strcmp(Tj.lp,name2)=0)printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tj.rl,Tj.lp,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue; return 0; return 1;int s_ap() /按终点站查询char name315;int j;system(cls);printf(请输入要查询的终点站名: n);fflush(stdin);gets(name3); for(j=0;j=Tm-1.rl)printf(该班次票已满!请选择其他班次n);printf(按任意键返回n);if(Tm-1.bn0) printf(该班次已发车,请选择其他班次n); else if(Tm-1.bn=Tm-1.rl) printf(该班次未发车但是该班次票已售完n); if (Tm-1.bn!=Tm-1.rl&strcmp(t,Tm-1.lt)0&Tm-1.bn(Tm-1.rl-Tm-1.bn) printf(订票错误,数量不能超过余票数!n); printf(请重新输入:); scanf(%d,&log); if(log0) printf(可以退票n);printf(请问你真的要退票吗? n);printf(确认退票请按1,否则返回主菜单n);scanf(%d,&log);if(log=1)printf(退票成功!n);Ti-1.bn-;save();printf(按任意键返回主菜单n);getch();elseprintf(您选择不退票n);printf(按任意键返回主菜单n);getch(); if(strcmp(Ti-1.lt,t)0) printf(此班次已发车不能退票!n);printf(按任意键返回主菜单n);getch();void change()system(cls);int k,select;char banci100;char mima10;/假设密码为aaaprintf(这个是工作人员所进,请输入密码:n);scanf(%s,mima);while(strcmp(mima,aaa)!=0)printf(密码错误!n);printf(请重新输入:n);scanf(%s,mima);printf(进入成功!n); printf(输入所要修改班次号:n); scanf(%s,banci);for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n); printf(修改时间请按1n);printf(修改终点站请按2n);printf(修改票价请按3n);scanf(%d,&select);switch(select)case 1:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的时间(例如08:00)n);scanf(%s,Tk.lt);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();break;case 2:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的终点站n);scanf(%s,Tk.ap);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();break;case 3:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的票价n);scanf(%d,&Tk.price);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();default:printf(选择错误!);printf(按任意键返回主菜单n);getch();break;void main()int select;load();while(1)main_menu();scanf(%d,&select);switch(select)case 1:scan();getchar();break;case 2:search();getchar();break;case 3:buy();getch();break;case 4:tuipiao();getchar();bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮行业食品安全自查与培训方案
- 汽车安全碰撞试验数据解析报告
- 七年级文言文阅读训练方案
- 企业文化品牌建设策划方案
- PPP项目绩效收费标准及操作手册
- 现代物流管理案例分析与课件
- 餐饮连锁品牌服务标准化流程手册
- 建筑物沉降监测数据分析方法
- 高强度混凝土配比设计与应用指南
- 切割作业安全注意事项及交底
- 居室环境的清洁与消毒
- ××领导班子及成员分析研判报告
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- GB/T 2518-2008连续热镀锌钢板及钢带
- Frenchay构音障碍评定
- 第二讲国外教育评价的发展历程
- 教育学原理课后答案主编项贤明
- 建筑装饰施工技术-轻质隔墙工程施工课件(-)
- 语言领域核心经验《学前儿童语言学习与发展核心经验》
- 德国工业4.0与数字化制造课件
- 肉制品加工技术完整版ppt课件全套教程(最新)
评论
0/150
提交评论