课程设计 车票管理系统.doc_第1页
课程设计 车票管理系统.doc_第2页
课程设计 车票管理系统.doc_第3页
课程设计 车票管理系统.doc_第4页
课程设计 车票管理系统.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- 数学与计算机学院课程设计说明书课 程 名 称: 程序设计语言课程设计 课 程 代 码: 题 目: 车票管理系统 年级/专业/班: 2008级软件工程 班 学 生 姓 名: 学 号: 开 始 时 间: 2009 年 12 月 24 日完 成 时 间: 2010 年 1 月 11 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日C 语 言 课 程 设 计 任 务 书学院名称: 数学与计算机学院 专业: 软件工程 年级: 2008 一、设计题目车票管理系统二、主要内容一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数1 8:00 郫县 广汉 2 45 302 6:30 郫县 成都 0.5 40 40 3 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) 学生可自动增加新功能模块(视情况可另外加分)三、具体要求模块化程序设计;锯齿型书写格式;必须上机调试通过。写出设计的报告。设计报告格式:1、设计目的2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、源程序清单和执行结果:清单中应有足够的注释四、主要技术路线提示文件的读入;静态存储或动态存储及其应用。五、进度安排 2周完成。1天进行分析,6天编写软件,3天写出课程设计报告并上交。六、完成后应上交的材料设计报告纸质文档和电子文档各一份,软件一套。七、推荐参考资料C语言程序设计指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日目 录摘要 5第1章 引言 61.1问题的提出61.2车票管理系统开发的必要性6第2章 流程图 7第3章 功能模块设计及说明83.1 程序设计功能说明83.2 程序模块功能83.3 系统测试203.4 系统问题运行描述20第4章 设计总结21参考文献22 教师评语 23摘 要随着计算机的普及越来越多的企业、家庭、个人开始享受到了E网时代的无限精彩。网上购物、远程商务、网上开店等使很多人的梦想在网络世界里得到了充分的实现。网上有很多资源我们可以利用。互联网成为了学习的资源、交流的手段。越来越多的办公自动化设备进入了众多公司、学校和家庭中等,给我们日常工作、学习、和生活等带来了极大的方便。因此为了方便车票的管理,车票管理系统已经成了车辆管理中的一项主要的管理工具。若遵从以往旧式的工作方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;如今面对大量的人员流动,有大量的信息需要综合处理。以往的工作人员手工处理方式已经很难跟上现代化的步伐。随着计算机技术及网络通讯技术的飞速发展,许多交通部门已经有了较好的计算机应用甚至网络硬件建设基础。因此为车辆管理工作的现代化、科学化水平,保证信息处理的即时化、准确化,开发一套对车票进行管理的软件是极其重要的,而且是必需的,而这次设计的车票管理系统。它包括了以下几个主要内容:1. 按班次号查询2. 按终点站查询3. 售票4. 退票5. 浏览信息 6. 退出系统应具有良好的界面、必要的交互信息和较好的健壮性。操作人员能快捷简单地进行操作。开发功能完善及安全可靠的管理系统可以大大地提高车辆管理的实际应用,即时准确地获得需要的信息,充分发挥人员的工作潜力。关键词:计算机、车票管理系统第一章 引言1.1问题的提出随着计算机的普及,网络进入大众的家庭,车票管理系统已经成了车辆管理中的一项主要的管理工具。若遵从以往旧式的工作方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;如今面对大量的人员流动,有大量的信息需要综合处理。以往的工作人员手工处理方式已经很难跟上现代化的步伐。随着计算机技术及网络通讯技术的飞速发展,许多交通部门已经有了较好的计算机应用甚至网络硬件建设基础。因此为车辆管理工作的现代化、科学化水平,保证信息处理的即时化、准确化,开发一套对车票进行管理的软件是极其重要的,而且是必需的。1.2车票管理系统开发的必要性在车票管理系统中,查询车辆情况是一个很重要的问题。一个查询者在坐车之前需要了解车辆的发车时间,行车的时间,订票人数等问题,之后他才可以决定他要不要订票。在他的查询中,他可以选择按班次号查询,也可以选择按终点站查询,两种查询方式动方便快捷,都有良好的健全性。在这系统之中,售票和退票是这些问题中的重点。当一个人浏览车辆的情况后,他就要根据车辆的情况进行订票或者退票。售票和退票都要根据车辆的综合信息进行判断,根据时间和订票人数决定可不可以售票和退票。这些情况的信息量是很大的,以往的人员接待管理繁琐,既耗人力,又耗物力;如今面对大量的人员流动,有大量的信息需要综合处理,不能满足当今社会发展的需要。而计算机的信息化管理就显的日益重要,可以显示它的优越性。开发一套车辆管理系统是社会发展的必然产物,是极其必要的。第2章 流程图流程图的建立可以使程序更加直观、灵活、自由、形象。它的描述如下:开始车票管理系统 从文本录入班次信息建立链表,把车辆信息放入按终点站查询车没发出额定订票按班次查询售 票退 票返回主菜单返回主菜单第3章 功能模块设计及说明3.1 程序设计功能说明一. 查询路线功能:1. 可按班次序号查询;2. 可按终点站查询。二. 售票和退票功能1. 当查询出已定票人数小于额定数量且当前系统时间小于发车时间时才能售票,自动更新已售票人数;2. 退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。三浏览车次信息 显示出所有班次信息。 这些子功能都是在C+环境中运行,车辆的信息都存在链表文件中,当查询路线时,可以输入他要到达的地点,就可以从文件菜单中得到相应的提示信息,再进行必要的操作就可以查询车辆的信息,进行买票或者退票。3.2功能模块设计 1.头文件,定义所需结构体,全局变量 #include #include #include #includetypedef struct chefile int banci; char time110; char place121; char place221; float time2; int maxnum; int booknum; struct chefile *next;bus,*PINF; /结构体类型的指针bus *head; /建立班次头结点bus *rear; 2.主菜单显示 int main() /主程序 system(color 2f); head=rear=(bus *)malloc(sizeof(bus); head-next=NULL;/函数声明 void Read_In(); /文件读入 void Scan(); /浏览全部信息 void Lookup(); /查询信息 void Buyticket(); /预定车票 void Cancelticket(); /退订车票 void Save_In(); /把数据重新保存到文件中 Read_In(); /读入信息 int i=0;while(i!=5) printf(n); printf(*nnn); printf(*车站管理系统*n); /总菜单 printf( 1、 浏览信息 n); printf( 2、 查询信息 n); printf( 3、 预订车票 n); printf( 4、 退订车票 n); printf( 5、 退出系统 n); printf(*n); printf(请选择您要操作的功能序号:); scanf(%d,&i); switch(i) case 1:Scan();break; case 2:Lookup();break; case 3:Buyticket();break; case 4:Cancelticket();break; case 5:break; default:printf(您输入了错误的序号,请确保您的输入为1-5.n);break; Save_In(); /保存信息return 0;通过主菜单的显示,乘客可以根据显示的菜单选择需要的操作,然后进入相应的功能模块。3班次信息的录入、保存及浏览void Read_In() /班次信息文件读入 FILE *fp; if(fp=fopen(chefile.txt,r+)=0) printf(n打开文件错误!n); exit(0); while(!feof(fp) /读取文件并测试是否抵达文件尾 bus *p; p=(bus*)malloc(sizeof(bus); /开辟内存空间 fscanf(fp,%d%s%s%s%f%d%dn,&p-banci,&p-time1,&p-place1,&p-place2,&p-time2,&p-maxnum,&p-booknum); rear-next=p; /在bus单链表中依次插入下一结点 rear=p; rear-next=NULL; fclose(fp); void Save_In() /保存数据 FILE *fp; if(fp=fp=fopen(chefile.txt, r+)=0) printf(n打开文件错误!n); exit(0); PINF p=head-next; while(p!=NULL) fprintf(fp,%dt%st%st%st%.2ft%dt%dn,p-banci,p-time1,p-place1,p-place2,p-time2,p-maxnum,p-booknum); p=p-next; fclose(fp);void Scan() PINF p=head-next; printf(n各班次信息如下:n); printf(n班次号t发车时间t起点站t终点站t行车时间 额定载客量 已订票人数n); printf(_n); while(p!=NULL) printf(%dt%stt%st%st%.2ftt%dtt%dn,p-banci,p-time1,p-place1,p-place2,p-time2,p-maxnum,p-booknum); p=p-next; printf(_n); 通过此模块,系统可以自动保存修改后的班次相关信息,并可在乘客需要浏览时显示出所有的班次信息。4班次信息查询void Lookup() /查询班次信息 system(color 2f); void SearchbyNum(); /函数声明 void SearchbyEnd(); /函数声明 int i,j=0; while(j!=1) printf(n); printf(*n); printf( 1.按班次号查询tn); printf( 2.按终点站查询tn); printf(*n); printf(请选择您要查询的方式:); scanf(%d, &i); switch(i) case 1: SearchbyNum(); break; case 2: SearchbyEnd(); break; default : printf(n您输入了错误的序号,请确保您的输入为1-2.n); break; printf(*n); printf(n1.返回主菜单 2.继续查询 : ); scanf(%d,&j); void SearchbyNum() /按班次号查询班次 system(color 2f); int GetHour(char *s); int GetMinute(char *s); PINF p,q; /定义两个结点 int num; /要查询的班次号 int j=0; /判断班次 p=head-next; printf(n请输入您要查询的班次号: ); scanf(%d,&num); while(p!=NULL) if(p-banci-num=0) q=p; printf(n); printf(班次:t);printf(%dn,q-banci); printf(发车时间:t);printf(%sn,q-time1); printf(起点站:tt);printf(%sn,q-place1); printf(终点站:tt);printf(%sn,q-place2); printf(行车时间:t);printf(%.2fn,q-time2); printf(额定载客量:t);printf(%dn,q-maxnum); printf(已定票人数:t);printf(%dn,q-booknum); time_t t; struct tm *timeinfo; time(&t); timeinfo = localtime(&t); if(GetHour(q-time1)tm_hour) printf(n此班次车已发出!n); else if(GetHour(q-time1) = timeinfo-tm_hour) if(GetMinute(q-time1)tm_min) printf(n此班次车已发出!n); else printf(n此班次车尚未发出!n); else printf(n此班次车尚未发出!n); j+; p=p-next; if(j=0) printf(n对不起,不存在此班次!n);void SearchbyEnd() /按终点站查询班次 system(color 2f); int GetHour(char *s); int GetMinute(char *s); PINF p,q; /定义两个结点 char place221; /要查询的终点站名 int j=0; p=head-next; printf(n请输入需要查询的终点站名: ); scanf(%s,place2); while(p!=NULL) if(strcmp(p-place2,place2)=0) q=p; printf(n); printf(班次:t);printf(%dn,q-banci); printf(发车时间:t);printf(%sn,q-time1); printf(起点站:tt);printf(%sn,q-place1); printf(终点站:tt);printf(%sn,q-place2); printf(行车时间:t);printf(%.2fn,q-time2); printf(额定载客量:t);printf(%dn,q-maxnum); printf(已定票人数:t);printf(%dn,q-booknum); time_t t; struct tm *timeinfo; time(&t); timeinfo=localtime(&t); if(GetHour(q-time1)tm_hour) printf(n此班已发出!n); else if(GetHour(q-time1)=timeinfo-tm_hour) if(GetMinute(q-time1)tm_min) printf(n此班已发出!n); else printf(n此班次车尚未发出!n); else printf(n此班次车尚未发出!n); j+; p=p-next; if(j=0) printf(n对不起,不存在此班次!n); 这一模块的功能主要实现乘客查询要的班次信息,该查询主要可以分为以班次查询和以终点站查询,为乘客的需要带来方便。5订票功能void Buyticket() /预定车票 system(color 2f); int GetHour(char *s); int GetMinute(char *s); int i=0; while(i!=1) int num,j=0; PINF p,q; /定义两个结点 p=head-next; time_t t; struct tm *timeinfo; time(&t); timeinfo=localtime(&t); printf(n请输入你要购买的班次号:); scanf(%d,&num); while(p!=NULL) if(p-banci-num=0) q=p; j+; if(q-booknummaxnum) if(GetHour(q-time1)timeinfo-tm_hour) printf(n你已订票成功,请按时上车,谢谢使用!n); q-booknum+; else if(GetHour(q-time1)=timeinfo-tm_hour) & (GetMinute(q-time1)timeinfo-tm_min) printf(n你已订票成功,请按时上车,谢谢使用!n); q-booknum+; else printf(n对不起,该班次车已经发出,请明天再来!谢谢使用!n); else printf(n对不起,该班次车已经发出,请明天再来!谢谢使用!n); p=p-next; if(j=0) printf(n对不起,不存在此班次!谢谢使用!n); printf(*n); printf(n1. 返回主菜单 2. 继续订票 : ); scanf(%d,&i); 该模块主要用于实现乘客订票,为乘客订票带来方便。7. 退票功能void Cancelticket() /退订车票 system(color 2f); int GetHour(char *s); int GetMinute(char *s); int i=0; while(i!=1) PINF p,q; p=head-next; int num,j=0; time_t t; struct tm *timeinfo; time(&t); timeinfo=localtime(&t); printf(n请输入你要退票的班次号:); scanf(%d,&num); while(p!=NULL) if(p-banci-num=0) q=p; j+; if(GetHour(q-time1)timeinfo-tm_hour) printf(n你已退票成功,谢谢使用!n); q-booknum-; else if(GetHour(q-time1)=timeinfo-tm_hour) & (GetMinute(q-time1)timeinfo-tm_min) printf(n你已退票成功,谢谢使用!n); q-booknum-; else printf(n对不起,该班次车已经发出,不能退票!谢谢使用!n); p=p-next; if(j=0) printf(n对不起,输入错误,不存在此班次车!谢谢使用!n); printf(*n); printf(n1. 返回主菜单 2. 继续退票 : ); scanf(%d,&i); 该模块主要用于实现乘客退票,为乘客退票带来方便。7.时间模块int GetHour(char *s) char *p,*q; p=(char *)malloc(10); strcpy(p,s); q=p; while(*q!=:) q+; *q=0; retu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论