C课程设计长途客运售票管理系统
- 格式:docx
- 大小:31.15 KB
- 文档页数:20
二○一○~二○一一学年第二学期信息科学与工程学院课程设计报告书课程名称:班级:学号:姓名:指导教师:二○一○年九月C语言课程设计题目:汽车售票系统任务:自学C语言中相关知识,设计出汽车售票系统。
要求如下所述:每天“火车站→植物园”有5个班次的汽车(假设),具体的数据格式如下:班次发车时间载客量已售票数1 06:40 50 02 09:30 40 03 12:00 40 04 14:30 40 05 16:00 50 0为售票员开发一个小程序,以完成每天的“火车站→植物园”的售票业务。
要求如下:1. 能够售票和退票。
以文件(myfile.txt)的形式保存当天各个车次的售退票情况。
◆售票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
◆退票功能退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。
2. 查询显示功能。
可以随时显示当前售票现状(如:班次发车时间载客量已售票数余票等信息)。
3. 用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项。
可适当增加其他附加功能。
主程序流程图:订票程序流程图:退票程序流程图:系统功能模块图:程序概述:主函数菜单包括订票,退票,查看,保存的菜单.由相应函数调用可以实现相关功能模块.订票退票功能基本是一样的,需要分别输出购票车次及张数.查看功能只是把数据输出界面.退出功能是调用系统退出函数来终止程序的运行.函数程序首先要读入文件myfile.txt,获取已订票数的数据,如果没有文件,则会提示打不开文件.英雌运行程序之前请在C盘建立一个TXT文件,名为:myfile.txt.里面的内容不做任何修改,让其保留空白.默认购票数全部为0.主要源程序代码:#include<stdio.h>#include<stdlib.h>int menu() /*主菜单*/{int a;printf("****************************\n");printf("*1、订票*\n");printf("*2、退票*\n");printf("*3、显示订票情况*\n");printf("*4、保存当天数据*\n");printf("*5、退出(请先保存) *\n");printf("****************************\n");printf("******请选择操作*********\n");scanf("%d",&a);return a;}void esc(){exit (0);}void check(int*bus) /*查看车次售票情况的程序*/{printf("车次发车时间载客量已售票\n");printf("1、06:40 50 %d\n",*bus); printf("2、09:30 40 %d\n",*(bus+1)); printf("3、13:00 40 %d\n",*(bus+2)); printf("4、16:00 40 %d\n",*(bus+3)); printf("5、20:50 50 %d\n",*(bus+4)); }void order(int*bus) /*订票功能程序*/{int a,b;int capacity[5]={50,40,40,40,50};check(bus);printf("请选择要订的车次\n");scanf("%d",&a);if(a>5||a<1)printf("你选择了错误的序号\n");else printf("请选择要订票的张数\n");scanf("%d",&b);if(b>capacity[a-1]-*(bus+a-1))printf("你定票的张数超过剩余张数\n");else{*(bus+a-1)+=b;printf("订票成功\n");}}void cancel(int*bus) /*退票功能程序*/{int a,b;check(bus);printf("请选择要取消订票的车次\n");scanf("%d",&a);if(a>5||a<1)printf("你选择了错误的序号\n");elseprintf("请选择要退票的张数\n");scanf("%d",&b);if(b>*(bus+a-1))printf("你退票的张数已超过订票的张数\n");else{*(bus+a-1)-=b;printf("退票成功\n");}}void write(int*bus) /*写入已存数据的程序*/ {FILE *fp;if((fp=fopen("C:\\myfile.txt","wb"))==0){printf("打不开文件\n");exit(0);}fwrite(bus,1,1,fp);printf("保存成功\n");fclose(fp);}void read(int*bus) /*读入已存数据的程序*/{int i;FILE *fp;if((fp=fopen("C:\\myfile.txt","rb"))==0){printf("打不开文件\n");exit(0);}for(i=0;i<5;i++){if(!feof(fp)) /*测试fp所指向的文件当前状态是否"文件结束"*/ fread(bus+i,1,1,fp);}fclose(fp);}void main() /*主函数*/{int bus[5]={0,0,0,0,0};int a;read(bus);a=menu(); /*显示主菜单*/while(a<6){switch(a){case 1:order(bus);break;case 2:cancel(bus);break;case 3:check(bus);break;case 4:write(bus);break;case 5:esc();break;default:printf("你选择了错误的序号\n");break;}a=menu();}write(bus);}调试分析过程:对于购票子程序中,原来没有对购退票的张数与所剩张数做比较,加了相应代码,可以实现相应的错误提醒,然后返回主菜单,重新开始.对于退出函数,是查相应资料,通过调用系统退出函数来实现退出程序.存在问题及思考:在购退票输入要选择的车次的时候,如果输入错误的车次,则会提示”你选择了错误的序号”.但是不会返回上级菜单或主菜单.这个问题还没有解决.尝试过用return函数使其返回,但是反而会引起其他的错误,暂不知如何修改.课程设计小结:C语言是所有现在流行的编程语言的基础.学好C语言,有助于其他的语言的理解及学习.C程序中,核心是算法,只有先写出算法,然后对细节慢慢修改,写程序也应该有个相应的分块,不能就从头开始往下写,而应该先分成相应子块,写出主程序把其他子程序连接起来.然后开始子程序块的编写代码.刚编写成功的程序,肯定是有很多问题的,特别是联系实际情况的,问题就更多了,这就要求我们有很大的耐心来修改程序,并联系实际情况.学好C语言能培养我们的耐心,严谨,的态度,并有良好的基础,为以后的计算机方面的学习提供一定的帮助.我们应该学好C语言.。
c语言课程设计车票管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的车票管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构;–理解车票管理系统的业务逻辑和需求;–了解软件开发的基本流程。
2.技能目标:–能够使用C语言编写程序,实现车票管理系统的基本功能;–能够进行程序调试和优化,提高程序的性能和可维护性;–能够运用面向对象编程思想,设计合理的软件架构。
3.情感态度价值观目标:–培养学生的编程兴趣,增强自信心;–培养学生团队合作精神和自主学习能力;–培养学生对软件行业的热爱和对编程事业的敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、车票管理系统的需求分析、系统设计、编码实现和测试等。
具体安排如下:1.C语言基础知识:–数据类型、变量和常量;–运算符和表达式;–控制语句;–函数和数组。
2.车票管理系统的需求分析:–理解车票管理系统的业务流程;–分析系统需求,确定功能模块。
3.系统设计:–设计系统的数据结构和算法;–设计系统的界面和交互逻辑。
4.编码实现:–使用C语言编写程序,实现车票管理系统的基本功能;–进行程序调试和优化。
5.测试与总结:–对程序进行测试,确保功能正确;–总结学习过程,提高编程能力。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和车票管理系统的业务逻辑,使学生掌握相关知识。
2.案例分析法:分析实际案例,使学生更好地理解车票管理系统的需求和设计。
3.实验法:让学生动手编写程序,培养实际操作能力和编程技能。
四、教学资源本课程所需的教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》;2.参考书:《C语言编程思想》或《C语言实例教程》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等。
以上教学资源将有助于实现本课程的教学目标,提高学生的编程能力,为学生的职业发展奠定基础。
c 课程设计售票系统一、教学目标本课程的目标是让学生掌握售票系统的核心知识,包括系统的设计、实现和运行。
在知识目标方面,学生需要了解票务系统的需求分析、系统设计、数据库设计、界面设计和系统测试等基本知识。
在技能目标方面,学生应掌握使用C语言进行编程的方法,能够独立设计和实现一个简单的售票系统。
在情感态度价值观目标方面,学生应培养对编程和软件开发的兴趣,增强解决实际问题的信心和能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.售票系统概述:介绍售票系统的基本概念、功能和应用场景。
2.需求分析:讲解如何分析用户需求,并写出需求说明书。
3.系统设计:介绍系统设计的方法和步骤,包括模块划分、界面设计等。
4.数据库设计:讲解如何设计售票系统的数据库,包括表结构设计、索引创建等。
5.编程实现:使用C语言讲解如何实现售票系统的各个功能模块。
6.系统测试:介绍系统测试的方法和技巧,确保系统的稳定性和可靠性。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式:1.讲授法:教师讲解基本概念、原理和方法,引导学生掌握售票系统的相关知识。
2.案例分析法:分析实际案例,让学生了解售票系统的应用场景和实现技巧。
3.实验法:学生动手编写代码,实现售票系统的功能模块,培养实际操作能力。
4.讨论法:分组讨论问题,激发学生的思考,培养团队协作能力。
四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统性的学习资料。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作PPT、视频等多媒体资料,提高课堂教学效果。
4.实验设备:配置必要的实验设备,如计算机、网络设备等,确保学生动手实践的需求。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,占总分的20%。
2.作业:布置适量作业,评估学生的理解和应用能力,占总分的30%。
c 课程设计售票管理一、教学目标本课程的目标是让学生掌握售票管理系统的基本原理和操作方法。
知识目标要求学生了解售票管理系统的组成部分、工作原理和业务流程;技能目标要求学生能够熟练使用售票管理系统,进行车票的预订、销售和查询等工作;情感态度价值观目标要求学生认识到售票管理系统在现代社会中的重要性,培养学生对工作的责任心和敬业精神。
二、教学内容本课程的教学内容主要包括售票管理系统的原理、组成、操作方法和业务流程。
具体包括:1. 售票管理系统的基本原理;2. 售票管理系统的组成部分及其功能;3. 售票管理系统的操作方法;4. 售票管理系统的业务流程;5. 售票管理系统在现代社会中的作用。
三、教学方法本课程采用多种教学方法,包括讲授法、演示法、案例分析法和实验法等。
1.讲授法:用于讲解售票管理系统的基本原理、组成和业务流程;2. 演示法:用于展示售票管理系统的操作方法;3. 案例分析法:用于分析实际案例,让学生更好地理解售票管理系统的作用;4. 实验法:让学生动手实践,熟练掌握售票管理系统的操作方法。
四、教学资源本课程的教学资源包括教材、多媒体资料、实验设备和网络资源。
1. 教材:提供售票管理系统的基本原理、组成、操作方法和业务流程等方面的知识;2. 多媒体资料:包括图片、视频等,用于辅助讲解和演示;3. 实验设备:包括计算机、售票管理系统软件等,用于学生动手实践;4. 网络资源:提供相关资讯和案例,便于学生查阅和分析。
五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践。
平时表现主要评估学生的出勤、课堂参与度和提问回答等情况;作业主要评估学生的理解和应用能力,包括练习题和案例分析报告;考试主要评估学生的知识掌握和运用能力,包括选择题、填空题和问答题;项目实践主要评估学生的实际操作和解决问题的能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:共安排16周,每周2课时,共计32课时。
c语言课程设计售票系统一、教学目标本章节的教学目标是使学生掌握C语言基础知识,能够运用C语言设计一个简单的售票系统。
具体目标如下:1.理解C语言的基本语法和数据类型。
2.掌握函数的定义和调用。
3.了解面向过程的编程思想。
4.能够使用C语言编写简单的程序。
5.能够运用面向过程的编程思想设计程序。
6.能够独立完成一个简单的售票系统的设计和实现。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生解决问题的能力,提高学生的自主学习能力。
3.培养学生团队合作的精神,提高学生的沟通协作能力。
二、教学内容本章节的教学内容主要包括C语言基础知识、函数的定义和调用、面向过程的编程思想以及售票系统的设计和实现。
具体内容如下:1.C语言基础知识:数据类型、变量、运算符、表达式等。
2.函数的定义和调用:函数的定义、返回值、参数、函数调用等。
3.面向过程的编程思想:顺序结构、分支结构、循环结构等。
4.售票系统的设计和实现:系统需求分析、功能模块设计、程序实现等。
三、教学方法为了达到本章节的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言基础知识、函数的定义和调用、面向过程的编程思想等,使学生掌握相关概念和理论。
2.案例分析法:通过分析实际案例,使学生了解售票系统的设计和实现过程。
3.实验法:让学生动手编写程序,培养学生的实际编程能力。
4.讨论法:学生进行分组讨论,促进学生之间的交流与合作。
四、教学资源为了支持本章节的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:C语言程序设计教程,用于引导学生学习C语言基础知识。
2.参考书:C语言编程实践,用于为学生提供更多的编程案例和实践指导。
3.多媒体资料:教学PPT、视频教程等,用于辅助讲解和演示。
4.实验设备:计算机、编程环境等,用于学生动手实践和编写程序。
五、教学评估本章节的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
《C++程序设计》课程设计说明书题目长途客运售票管理系统的设计学号姓名指导教师日期内蒙古科技大学课程设计任务书目录第1章需求分析设计资料及参数用C++设计一个系统,能提供下列服务:(1)录入车次信息,格式为:可不定时地增加车次数据。
(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。
(3)查询路线:可按车次编号查询,可按起始站,终点站查询(4)售票和退票功能A:查询车次或站点。
当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。
B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。
第2章总体设计用结构框图表示各个功能之间的关系将框图中系统的各个功能用文字详细的描述。
1.铁路售票管理系统理解:系统中必须有车次信息,车次信息应该是由管理员录入,可由管理员或者乘客查看,定退票及其他操作。
其中要注意的是录入信息必须是由管理员完成的,所以我会创建一个乘客类,然后创建管理员类继承乘客类,进而继承乘客的所有功能,并添加录入信息的功能。
信息的载体可以使链表,也可以是数组,因为我更加熟悉数组,所以我用对象数组。
(为了熟悉链表,课下自己还建立了以链表存放数据的系统)系统录入信息的操作非常枯燥,所以我创建了一个文件,把每次录入的信息保存入文件,在下一次进入系统是,它会默认读取文件原有的信息,当然也可以随时添加录入车次信息。
然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。
2.基本功能:录入——次、始发站、终点站、开车时间(小时、分钟)、票价、剩余票数等信息。
浏览车次——查看所有的录入车次其中开车时间小于当前时间的车次则输出车次已发出。
查询车次——通过搜索车次或站点来快速的查看车辆的信息。
定退票——车时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才可定票,票数更新。
文件的存储——存储录入的车次信息以便下次访问。
c 车票管理系统课课程设计一、教学目标本课程的学习目标旨在让学生掌握车票管理系统的基本概念、原理和实际应用,培养学生具备一定的编程能力和问题解决能力。
具体目标如下:1.知识目标:(1)了解车票管理系统的基本原理和架构;(2)掌握车票管理系统的主要模块及其功能;(3)熟悉车票管理系统的编程语言和开发环境。
2.技能目标:(1)能够使用编程语言实现车票管理系统的各个模块;(2)具备调试和优化车票管理系统的的能力;(3)学会运用车票管理系统解决实际问题。
3.情感态度价值观目标:(1)培养学生对编程和计算机科学的兴趣;(2)培养学生团队合作、创新思维和持续学习的精神;(3)培养学生遵守编程规范和职业道德的意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.车票管理系统的基本原理和架构;2.车票管理系统的主要模块及其功能;3.车票管理系统的编程语言和开发环境;4.车票管理系统的实际应用案例分析。
教学大纲安排如下:第1-2课时:介绍车票管理系统的基本原理和架构;第3-4课时:讲解车票管理系统的主要模块及其功能;第5-6课时:学习车票管理系统的编程语言和开发环境;第7-8课时:分析车票管理系统的实际应用案例。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:讲解车票管理系统的基本原理、主要模块和编程语言;2.案例分析法:分析车票管理系统的实际应用案例,让学生深入了解课程内容;3.实验法:让学生动手实践,调试和优化车票管理系统;4.讨论法:鼓励学生提问、发表见解,培养团队合作和创新思维。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的车票管理系统教材;2.参考书:提供相关的编程语言和开发环境的参考书籍;3.多媒体资料:制作精美的课件、教学视频等;4.实验设备:为学生提供充足的计算机设备,以便进行实验和实践。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:考察学生在课堂上的参与程度、提问和回答问题的积极性等;2.作业:布置适量的作业,检查学生对知识的掌握和应用能力;3.考试:安排期中考试和期末考试,测试学生的知识水平和问题解决能力;4.项目实践:让学生参与车票管理系统的实际项目,评估其动手能力和创新能力。
引言概述:车票管理系统是一种用于管理车票信息,包括购票、退票、查询票务等功能的软件系统。
本文将以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车票销售功能实现车票销售功能是车票管理系统的核心功能之一。
车票管理系统c语言课程设计。
一、课程目标知识目标:1. 学生能掌握C语言基础语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解车票管理系统的需求分析,明确系统功能模块;3. 学生能运用C语言编写车票管理系统中各个功能模块的程序代码;4. 学生了解文件操作在车票管理系统中的应用。
技能目标:1. 学生能够运用结构体数组、链表等数据结构实现车票信息的管理;2. 学生能够使用函数实现模块化编程,提高代码的可读性和可维护性;3. 学生通过课程设计,培养分析和解决实际问题的能力;4. 学生能够运用调试工具,找出程序中的错误并进行修正。
情感态度价值观目标:1. 学生通过课程设计,培养对编程的兴趣和热情,提高自主学习能力;2. 学生在团队协作中,学会沟通与分享,培养合作精神;3. 学生在解决实际问题的过程中,体验程序设计的乐趣,增强自信心;4. 学生能够认识到编程在现实生活中的应用价值,激发对计算机科学的热爱。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、控制结构(选择、循环);2. 面向过程编程:函数定义、调用、参数传递、递归;3. 数据结构:数组、结构体、链表;4. 文件操作:文件打开、读写、关闭;5. 车票管理系统功能模块:- 车票查询:按车次、日期、起始站、终点站查询车票信息;- 车票预订:选择车次、座位,录入乘客信息,完成预订;- 车票退订:根据预订记录,进行退票操作;- 车票统计:统计各车次、日期的售票情况;6. 程序调试与优化:调试工具使用,性能分析,代码优化;7. 项目实践:按照需求分析,分阶段完成车票管理系统的设计与实现。
教学内容安排与进度:第一周:C语言基础语法复习;第二周:数据结构、函数定义与调用;第三周:文件操作;第四周:车票管理系统需求分析,功能模块设计;第五周:车票查询、预订模块实现;第六周:车票退订、统计模块实现;第七周:项目调试、优化与测试;第八周:课程总结与项目汇报。
c语言车票管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言基础,包括数据类型、运算符、控制结构等;2. 让学生了解并掌握文件操作、字符串处理等C语言进阶知识;3. 使学生掌握车票管理系统的需求分析、模块划分和功能设计;4. 帮助学生理解并运用结构体、数组、链表等数据结构实现车票管理系统。
技能目标:1. 培养学生运用C语言解决实际问题的能力;2. 培养学生分析需求、设计系统、编写代码、调试程序的能力;3. 培养学生团队协作、沟通表达的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习的习惯;2. 培养学生面对问题勇于挑战、积极进取的精神;3. 培养学生关注社会热点问题,提高其社会责任感。
课程性质:本课程为实践性较强的课程,旨在让学生通过实际项目的开发,巩固C语言知识,提高编程能力。
学生特点:学生已具备一定的C语言基础,但实际应用能力较弱,对项目开发过程有一定的好奇心。
教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的积极性,引导学生主动参与课程学习。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
二、教学内容1. C语言基础知识复习:数据类型、变量、常量、运算符、控制结构(条件语句、循环语句)等;2. 文件操作与字符串处理:文件读写、字符串操作函数;3. 数据结构:结构体、数组、链表等;4. 车票管理系统功能模块设计:用户界面设计、车票查询、购票、退票、改签等功能;5. C语言项目开发流程:需求分析、系统设计、编码、调试、测试;6. 团队协作与沟通技巧。
教学大纲安排:第一周:C语言基础知识复习;第二周:文件操作与字符串处理;第三周:数据结构学习;第四周:车票管理系统需求分析与设计;第五周:车票管理系统编码与调试;第六周:项目测试、总结与团队协作沟通技巧。
教材章节关联:1. C语言基础知识复习:参考教材第1-4章;2. 文件操作与字符串处理:参考教材第5章;3. 数据结构:参考教材第6章;4. 车票管理系统功能模块设计:结合教材实例进行拓展;5. C语言项目开发流程:参考教材第7章;6. 团队协作与沟通技巧:结合教材附录部分。
《C++程序设计》课程设计说明书题目长途客运售票管理系统的设计学号姓名指导教师日期内蒙古科技大学课程设计任务书第 1 章 需求分析 第 2 章 总体设计 第 3 章 类的设计 3.1 ××类的设计 3.2 ××类的设计 第 4 章 详细设计 工程视图 ... 4.2 类图视图 ... 4.3 函数的调用关系 4.4 主程序流程图 4.5 主要算法的流程图 第 5 章 测试 第 6 章 总结 目录错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
错误 ! 未指定书签。
附录: 程序代码 .................................................... 错误 ! 未指定书签。
第1章需求分析1.1设计资料及参数用C++ 设计一个系统,能提供下列服务:1可不定时地增加车次数据。
(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。
(3)查询路线:可按车次编号查询,可按起始站,终点站查询(4)售票和退票功能A :查询车次或站点。
当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。
B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。
第2章总体设计2.1用结构框图表示各个功能之间的关系2.2将框图中系统的各个功能用文字详细的描述。
1.铁路售票管理系统理解:系统中必须有车次信息,车次信息应该是由管理员录入,可由管理员或者乘客查看,定退票及其他操作。
其中要注意的是录入信息必须是由管理员完成的,所以我会创建一个乘客类,然后创建管理员类继承乘客类,进而继承乘客的所有功能,并添加录入信息的功能。
信息的载体可以使链表,也可以是数组,因为我更加熟悉数组,所以我用对象数组。
(为了熟悉链表,课下自己还建立了以链表存放数据的系统)系统录入信息的操作非常枯燥,所以我创建了一个文件,把每次录入的信息保存入文件,在下一次进入系统是,它会默认读取文件原有的信息,当然也可以随时添加录入车次信息。
然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。
2.基本功能:录入——次、始发站、终点站、开车时间(小时、分钟)、票价、剩余票数等信息。
浏览车次——查看所有的录入车次其中开车时间小于当前时间的车次则输出车次已发出。
查询车次——通过搜索车次或站点来快速的查看车辆的信息。
定退票——车时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才可定票,票数更新。
文件的存储——存储录入的车次信息以便下次访问。
文件的读取——读取文件内的信息方便操作以上的各项功能;。
第3章类的设计3.1service 类的设计(第一个类)1.画出类图2.对类的函数成员的说明定义了一个service 类,类中包括以下几部分:公有继承了user 类私有段:定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。
公有段依次为输入函数、输出函数、定票函数、退票函数。
添加设定信息函数。
友元函数查询函数、浏览函数、文件存储函数、文件读取函数。
添加输入函数。
3.2user 类的设计(第二个类)1.画出类图2.对类的函数成员的说明定义了一个user 类,类中包括以下几部分:私有段:定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。
公有段依次为输出函数、定票函数、退票函数。
友元函数查询函数、浏览函数、文件存储函数、文件读取函数。
3.3全局变量,重要形式参数、局部变量等等,它们的命名及用途解释g-num:确定数组对象的个数,也是控制循环的条件。
ticket[j]: 代表具体的某个对象。
A :bool 型,判断使用者身份。
B :bool 型,判断是否退出程序。
t: long 型,获得当前距1970 年秒数。
pt: tm 指向类的对象的指针,指向当前时间。
Functionnumber :整型,选择功能。
第4章详细设计4.1工程视图说明有几个源代码文件,可以截取工程文件视图表示4.2类图视图4.3主程序流程图4.4主要算法的流程图第5章测试5.1 验证身份后登陆5.2录入信息并保存5.3验证身份5.4查询车次5.5查询子菜单5.6退、订票第6章总结课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。
并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。
在为期两周的C++ 课程设计中,我体会颇多,学到了很多东西。
我加强了对C++程序设计这门课程的认识,并且复习了以前学到的知识。
这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
课程设计,有些问题并不是只靠课本的哪些知识就可以轻易解决的。
所以,它不仅锻炼了我们挑战自己的决心,学会用已掌握的知识去解决我们看似不能解决的问题,同时进一步培养了我们独立思考问题和解决问题的能力。
特别是在C++ 中如何调试程序的方法。
当然,老师的指导以及同学的帮助是不可忽视的,他们给了我提示和帮助,教会了我编译复杂程序的方法。
虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得不管咋样来说,对我们学生都是一个挑战和锻炼。
我很欣赏自己能在程序中加入自己的想法和有关程序的内容,将它进行一番改进,感觉收获很大。
总之,这次的C++ 课程设计让我有了一些新的收获,让我对计算机语言有了更深体会,祝自己在以后的学习中更上一层楼。
附录:程序代码#include <iostream>#include <iomanip>#include <stdlib.h>#include<string.h>#include <fstream>#include <ctime>using namespace std;const int N=10;bool A=false,B=true;long t = time(0);tm * pt = localtime(&t);void mainmenu();struct Time{int hour;int minute;};class user{ friend void save ();friend void sure_message();friend void browse();friend void ticketmenu();friend void search_train();friend void search_station(); protected:char train[10];Time time;char start_station[20];char end_station[20];int ticket_price;int remaind_seats;public:void display(){cout<<train<<"\t"<<""<<setfill('0')<<setw(2)<<time.hour<<":"<<setw(2)<<time.minute<<"\t\t"<<" "<<end_station<<"\t"<<" "<<ticket_price<<"\t"<<" "<<remaind_seats<<"\t";t = ::time(NULL);tm * pt = localtime(&t);if(time.hour<pt->tm_hour)cout<<" 此班列车已发出";else if(time.hour==pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列车已发出";else cout<<"\t 正常";cout<<endl;}void order(){if(time.hour<pt->tm_hour)cout<<" 此班列车已发出,不能订票,退出!";else if(time.hour==pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列车已发出,不能订票,退出!";else if ( remaind_seats == 0 )cout << " 此班列车已没票,不能订票,退出!" << endl;else{remaind_seats = remaind_seats - 1;cout <<train<<" 次列车"<< "售票一次,现存票量为:" << }}void Delete()if(time.hour<pt->tm_hour)cout<<" 此班列车已发出,不能退票,退出!";else if(time.hour==pt->tm_hour&&time.minute<=pt->tm_min) cout<<" 此班列车已发出,不能退票,退出!";else {remaind_seats = remaind_seats + 1;cout <<train<<" 次列车"<< " 退票一次,现存票量为:" << remaind_seats << endl; }}};class service :public user{friend void input();public:void setinfo (char* c, int h, int m, char* q, char* z, int p, int s){strcpy(train,c);time.hour=h;time.minute=m;strcpy(start_station,q);strcpy(end_station,z);ticket_price=p;remaind_seats=s;}};service ticket[N]; static int g_num= void save ()ofstream file(" 数据.txt",ios::out);for(int j=0;j<=g_num;j++)"<<start_station<<"\t"<<" remaind_seats << endl;{file<<ticket[j].train<<" "; file<<ticket[j].time.hour <<" ";file<<ticket[j].time.minute<<" "; file<<ticket[j].start_station <<" ";file<<ticket[j].end_station <<" "; file<<ticket[j].ticket_price<<" ";file<<ticket[j].remaind_seats <<endl;}file.close();cout<<" 信息已存入文件"<<endl;}void input(){g_num++;char c[10];int h;int m;char q[20];char z[20];int p;int s;cout<<" 车次:";cin>>c;cout<<" 开车时间hour:";cin>>h;cout<<" 开车时间minute:";cin>>m;cout<<" 起始:";cin>>q;cout<<" 终点:";cin>>z;cout<<" 票价:";cin>>p;cout<<" 剩余座位:";cin>>s;ticket[g_num].setinfo (c, h, m, q, z, p, s);save ();void 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<=g_num;j++)ticket[j].display();}void search_train(){char train[10];cout<<" 输入你要查询的车次:";cin>>train;cout<<endl<<endl;for(int j=0;j<=g_num;j++)if(strcmp(train,ticket[j].train)==0){cout<<" 查询结果:"<<endl;cout<<" 车次\t"<<" 开车时间\t"<<" 起始\t"<<" 终点\t"<<" 票价\t"<<"剩余座位\t"<<" 状态\t"<<endl; ticket[j].display();break;}if(j>g_num)cout<<" 对不起,没有这趟车次信息!";void search_station(){char station[20];cout<<" 输入你要查询的站点:";cin>>station;cout<<endl<<endl;for(int j=0;j<=g_num;j++)if((strcmp(station,ticket[j].start_station)==0)||(strcmp(station,ticket[j].end_stati on)==0)) {cout<<" 查询结果:"<<endl;cout<<" 车次\t"<<" 开车时间\t"<<" 起始\t"<<" 终点\t"<<" 票价\t"<<" 剩余座位\t"<<endl;ticket[j].display();break;}if(j>g_num)cout<<" 对不起,没有有关此站点的车次信息!";}void ticketmenu(){long t = time(0);tm * pt = localtime(&t);int functionNumber;int j;cout<<" >>>>>> 票务菜单<<<<<<char train[10];char station[20];cout<<" 可按站点或车次查询订票( 1.按站点, 2.按车次) "<<endl;cout<<" 选择你需要的功能:";cin>>functionNumber;getchar();for(;functionNumber!=1&&functionNumber!=2;)cout<<" 指令错误!请重新输入!"<<endl; \t"<<" 状态\n";cin>>functionNumber;cout<<endl<<endl;if (functionNumber==1){cout<<" 输入你要订票或退票的站点:";cin>>station;cout<<endl<<endl;for( j=0;j<=g_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();break;}if(j>g_num)cout<<" 对不起,没有这趟车次信息!,无法订退票!";}if (functionNumber==2){cout<<" 输入你要订票或退票的车次:";cin>>train;cout<<endl<<endl;for( j=0;j<=g_num;j++)if(strcmp(train,ticket[j].train)==0){cout<<" 本车次现存信息:"<<endl;cout<<" 车次\t"<<" 开车时间\t"<<" 起始\t"<<" 终点\t"<<" 票价\t"<<"剩余座位\t"<<" 状态\t"<<endl;ticket[j].display();break;}}if(j>g_num)cout<<" 对不起,没有有关此站点的车次信息!无法订退票!}if(ticket[j].time.hour<pt->tm_hour)cout<<" 此班列车已发出,不能订退票!";else if(ticket[j].time.hour==pt->tm_hour&&ticket[j].time.minute<=pt->tm_min) cout<<" 此班列车已发出,不能订退票!";else{cout<<"\n";cout<<" 1.订票\n";cout<<" 2.退票\n";cout<<" 3.返回主菜单\n";cout<<"\n";cout<<" 选择你需要的功能:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;){cout<<" 指令错误!请重新输入!"<<endl;cin>>functionNumber;}cout<<endl<<endl;switch(functionNumber){case 1:ticket[j].order();save ();break;case 2:ticket[j].Delete();save ();break;case 3:mainmenu();break;}//switch endsvoid search_menu(){int functionNumber;cout<<" >>>>>> 查询子菜单<<<<<< \n cout<<endl;cout<<" 1.按班次查询\n" ;cout<<" 2.按站点查询\n" ;cout<<" 3.返回主菜单\n";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:search_train();break;case 2:search_station();break;case 3:system("cls");mainmenu();}}void mainmenu(){int functionNumber;cout<<" >>>>>> 欢迎使用车票管理系统<<<<<< \n"; cout<<endl;cout<<" 1.录入班次信息\n"cout<<" 2.浏览班次信息\n"cout<<" 3.查询行车路线\n"cout<<" 4.售票与退票系统\n"cout<<" 5.退出系统\n"cout<<endl;cout<<" 请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;switch(functionNumber){case 1:{ char c;if (A){do{input();cout<<" 已录入"<<g_num+1<<" 条航班信息(包括已从文件中读取的) ,想继续录入吗(y/n)"<<endl;cin>>c;for(;c!='y'&&c!='n';){cout<<" 指令错误!请重新输入!"<<endl;cin>>c;}} while (c=='y');}else cout<<" 对不起,您不是管理员不能进行这项操作!";cout<<endl<<" 按任意键回主菜单"<<endl;getchar();getchar();system("cls");}break;case 2:{browse();"<<endl;cout<<endl<<endl<<endl<<" 按任意键回主菜单getchar();getchar();system("cls");}break;case 3:{search_menu();cout<<endl<<" 按任意键回主菜单"<<endl;getchar();getchar();system("cls");}break;case 4:{ticketmenu();cout<<endl<<" 按任意键回主菜单"<<endl;getchar();getchar();system("cls");}break;case 5:{t = time(NULL);tm* pt = localtime(&t);system("cls");cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" >>>>>> 谢谢使用车票管理系统<<<<<< B=false;}break;default:{cout<<" 输入错误,请确保你的输入为1--5"<<endl;cout<<" 按任意键回主菜单"<<endl;getchar();system("cls");}}//switch ends}void sure_message(){cout<<" >>>>>> 欢迎使用车票管理系统<<<<<<<<endl<<endl;ifstream file ( " 数据.txt" ,ios::in) ;if ( !file ){if (A){cout << " 从没录入过信息,请您先录入信息" <<endl;input();cout<<endl<<" 按任意键回主菜单"<<endl;getchar();system("cls");mainmenu();}else cout<<" 对不起,系统还没录入过任何信息,请提示管理员录入信息!"else{cout<<" 本次运行尚未录入信息,默认读取已存信息cout<<" 按任意键读取\n"; \n"; \n"\n";getchar();getchar();while( !file.eof()){g_num++;file>>ticket[g_num].train; file>>ticket[g_num].time.hour ;file>>ticket[g_num].time.minute; file>>ticket[g_num].start_station;file>>ticket[g_num].end_station; file>>ticket[g_num].ticket_price;file>>ticket[g_num].remaind_seats;}file .close();cout<<" 读取完毕!"<<endl;}}void main(){int functionNumber,code;cout<<" 请输入您的身份( 1.管理员, 2.乘客) "<<endl; cout<<" 您的身份:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2;){cout<<" 指令错误!请重新输入!"<<endl;cin>>functionNumber;if (functionNumber==1){cout<<" 请输入密码:";cin>>code;for(;code!=112233;){cout<<" 指令错误!请重新输"<<endl;入!cin>>code;}A=true;}sure_message();do mainmenu();while(B);}。