车票管理系统

这篇具有很好参考价值的文章主要介绍了车票管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

课程设计

哈夫曼编码/译码器
教室数据管理
电网建设造价计算
计算机竞赛管理系统
航班信息查询和检索系统


一、设计任务及要求

一车站每天有n个发车班次,每个班次都有一个班次号(1、2、3···n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
根据以上情况设计出相应的车票管理系统,具体功能如下:

  1. 录入功能:入班次信息,可不定时地增加班次数据
  2. 浏览功能:浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
  3. 查询功能:查询路线:可按班次号查询,可按终点站查询。
  4. 售票功能:当查询出已定票人数小于额定载客量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。
  5. 退票功能:退票输入退票的班次,当本班车未发出时才能退票。

二、设计导向

1. 设计目的

  1. 巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;
  2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
  3. 提高综合运用所学的理论知识和方法,独立分析和解决问题的能力;
  4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
  5. 培养查阅资料,独立思考问题的能力。

2. 总体设计方案

总体设计框架图:
车票管理系统

  1. 创建一个线性表用于表示每一班次的多种信息。
  2. 通过switch函数对不同功能函数选择调用以及退出。
  3. while函数对switch函数进行重复调用实现运行一次程序便对多个功能使用。

3. 详细设计

车票管理系统

  1. 录入功能:用switch函数选择case1,再通过scanf函数将每一个班次信息依次输入线性表,完成班次信息的录入,返回菜单界面。

  2. 浏览功能:switch函数选择case2,先校准系统时间,再用for循环调出线性表每一个班次的时间与系统时间进行比对,晚于系统时间则输出此班次信息,早于系统时间则输出“此班次已发出”。For循环结束所有班次发车时间与系统实际比对以后,完成所有班次信息的浏览。返回菜单界面。

  3. 查询功能:switch函数选择case3,此时再用switch函数对查询方式进行选择。case1为按班次号查询,输入班次,输出线性表中对应位置的班次信息;case2为按终点站查询,输入终点站,用for循环与每一个班次信息的终点站比对,相同则输出完整班次信息;case0为退出这一层switch循环返回菜单。

  4. 售票功能:switch函数选择case4,先输入想购票的起点、终点站,用for循环与线性表里每一个班次信息起点、终点站比对,相同则输出这一班次。若for循环结束后无符合要求班次,则输出“未查询到相关车次”。再在符合要求的班次里选择班次号,选择的班次会与系统时间比对,早于则输出班次已发出,晚于则输出购票成功且此班次信息的已订票人数项加一。返回菜单。

  5. 退票功能:switch函数选择case5,输入退票班次号,将此班次信息的发车时间与系统时间比对,早于系统时间则输出“此班已发出无法退票”,晚于系统时间则输出“退票成功”,且将此班次信息的已订票人数减一。返回菜单。

4. 系统测试与结果分析

车票管理系统
车票管理系统
车票管理系统
车票管理系统
车票管理系统
车票管理系统


三、课程设计总结

这一次的数据结构课程设计我分配到的任务是《车票管理系统》。

回顾此次课程设计,至今让我感慨颇多从拿到题目到变成代码,从理论到实践。时间不长却学会了很多多东西,不仅巩固了以前书本上的知识,而且有了许多书本和老师教不了的实践体验。例如题目需要一个主菜单对于多个功能可选择调用,最开始我想到的是利用if else语句实现,但在计划进行的过程中if else语句的繁杂和重复十分影响代码的可执行性,所以最后还是选用了多重选择结构更加清晰的switch函数,再后来主要功能都完成后又有了问题,运行代码后执行一个功能便会终止程序。我希望对switch函数进行多次调用,while函数自然而然就用上了。

简而言之,这次课程设计使我懂得了理论和实际相结合是非常重要的,通过理论指导实际方向,通过实际去应用理论成果,从而提高自己实际动手能力和独立思考能力。文章来源地址https://www.toymoban.com/news/detail-490593.html

四、附录:源程序清单

#include<stdio.h>
#include<string.h>
#include<time.h>
#define MAXSIZE 10
#include <iostream>
struct Time
{
	int hour;
	int min;
};
struct infomation
{
	int number;
	struct Time play;
	char qidian[5];
	char zhongdian[5];
	int cartime;
	int zaike;
	int proson;
}D[MAXSIZE];

int main()
{
	system("color 75");
	int a,b,x,i=0;
	int input(int x);
	int browse(int x);
	int query(int x);
	int seticket(int x);
	int reticket(int x);
	int time();
	while(1)
	{ 
		printf("                                              车票管理系统\n");
		printf("                           ----------------------------------------------------\n");
        printf("                           |                  1.录入车次信息                  |\n");
    	printf("                           |                  2.浏览所有车次|                 |\n");
    	printf("                           |                  3.查询车次信息                  |\n");
    	printf("                           |                  4.售票                          |\n");
    	printf("                           |                  5.退票                          |\n");
    	printf("                           |                  0.退出程序                      |\n");
    	printf("                           ----------------------------------------------------\n");
	   	printf("\n                                         请根据需要选择相应数字\n");
		scanf("%d",&a);
		system("cls");
    	switch(a)
		{ 
		    case 1:input(i);i++;break;
		    case 2:browse(i);break;
	     	case 3:query(i);break;
	    	case 4:seticket(i);break;
	        case 5:reticket(i);break;
	    	case 0:exit(0);break;
	    	default:printf("\n\n******************************************输入无效!*******************************************\n\n\n");
        }
	}
}
  
int input(int x)         //录入功能 
 {
 	printf("请输入班次;");
 	scanf("%2d",&D[x].number);
 	printf("请输入发车时间;时 分");
 	scanf("%2d:%2d",&D[x].play.hour,&D[x].play.min);
 	printf("请输入起点站;");
 	scanf("%s",&D[x].qidian);
 	printf("请输入终点站;");
 	scanf("%s",&D[x].zhongdian);
 	printf("请输入行车时间;");
 	scanf("%2d",&D[x].cartime);
 	printf("请输入额定载客量;");
 	scanf("%2d",&D[x].zaike);
 	printf("请输入已订票人数;");
	scanf("%2d",&D[x].proson);printf("\n");
	printf("******************************************车次信息录入成功*******************************************\n\n");
 }
int browse(int x)       //浏览功能 
{   int m=0;
    printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
    
    time_t t;
	struct tm *lt;
	time(&t);
	lt=localtime(&t);
	//printf(" %d:%d\n",lt->tm_hour,lt->tm_min);
	for(m;m<x;m++)
	{   if(D[m].play.hour<lt->tm_hour)
	        printf("/ %11d/                              此班车已发出\n",m+1); 
        else if(D[m].play.hour==lt->tm_hour&&D[m].play.min==lt->tm_min)
		    printf("/ %11d/                              此班车已发出\n",m+1); 
		else
		{
			if(D[m].play.min==0)
		    	printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[m].number,D[m].play.hour,&D[m].qidian,&D[m].zhongdian,D[m].cartime,D[m].zaike,D[m].proson);
			else
		        printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[m].number,D[m].play.hour,D[m].play.min,&D[m].qidian,&D[m].zhongdian,D[m].cartime,D[m].zaike,D[m].proson);
		 }
    }
	printf("\n\n");printf("******************************************浏览车次信息成功*******************************************\n\n"); 
} 
int query(int x)       //查询功能 
{   int m,n,i=1,flag;
	while(i==1)
	{
	printf("请选择\n1.按班次号查询\n2.按终点站查询\n0.返回上一级\n");
	scanf("%d",&m);
    switch(m)
	{
		case 0:i=0;system("cls");break; 
	    case 1:system("cls");printf("请输入班次号:\n");
		    scanf("%d",&n);
		    printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
	        if (D[n-1].play.min==0)
	      	    printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[n-1].number,D[n-1].play.hour,&D[n-1].qidian,&D[n-1].zhongdian,D[n-1].cartime,D[n-1].zaike,D[n-1].proson);
	        else
		   	    printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[n-1].number,D[n-1].play.hour,D[n-1].play.min,&D[n-1].qidian,&D[n-1].zhongdian,D[n-1].cartime,D[n-1].zaike,D[n-1].proson);
	        printf("\n\n******************************************查询车次信息成功*******************************************\n\n"); break; 
		case 2:system("cls");printf("请输入终点站:\n");n=0,flag=0;char zd[10];
		    scanf("%s",zd);
		    printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
		    for(n;n<x;n++)
		    {
		    	if(strcmp(D[n].zhongdian,zd)==0)
			    {
		        	if(D[n].play.min==0)
		            	printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[n].number,D[n].play.hour,&D[n].qidian,&D[n].zhongdian,D[n].cartime,D[n].zaike,D[n].proson);
		        	else
		                printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[n].number,D[n].play.hour,D[n].play.min,&D[n].qidian,&D[n].zhongdian,D[n].cartime,D[n].zaike,D[n].proson);
		            flag=1;
		        }
			}
			if(flag==0)
		        printf("\n\n******************************************对不起,未查询到相关车次*******************************************\n\n");
		    else
			    printf("\n\n******************************************查询车次信息成功*******************************************\n\n");break;	
	}
    }   
}

int seticket(int x)      //售票功能 
{    
    char qd[10],zd[10];int m,n=0,flag=0;
	printf("请输入您的起点站:");
	scanf("%s",qd);
	printf("请输入您的终点站:");
	scanf("%s",zd);
	printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
	for(n;n<x;n++)
	{
		if(strcmp(D[n].qidian,qd)==0&&strcmp(D[n].zhongdian,zd)==0) 
		{
			if(D[n].play.min==0)
		       	printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[n].number,D[n].play.hour,&D[n].qidian,&D[n].zhongdian,D[n].cartime,D[n].zaike,D[n].proson);
		  	else
		        printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[n].number,D[n].play.hour,D[n].play.min,&D[n].qidian,&D[n].zhongdian,D[n].cartime,D[n].zaike,D[n].proson);
			flag=1;
		}
	}
	if(flag==0)
	{
		printf("对不起,未查询到相关车次\n");
	} 
	if(flag==1)
    {
	 	printf("请输入想要购买的班次号:\n");
		scanf("%d",&m);n=0;
	    time_t t;
        struct tm *lt;
        time(&t);
        lt=localtime(&t);
		if(D[m-1].play.hour>lt->tm_hour)
		{
		    if(D[m-1].proson<D[m-1].zaike)
		    { 
		        printf("\n\n******************************************购票成功*******************************************\n\n");
		        D[m-1].proson++;
		        printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
		        if (D[m-1].play.min==0)
	      	        printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
	            else
		   	        printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,D[m-1].play.min,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
		    } 
		    else
			{
				printf("\n\n******************************************很抱歉人数已满购票失败*******************************************\n\n"); 
			} 
		} 
        else if(D[m-1].play.hour==lt->tm_hour&&D[m-1].play.min>lt->tm_min)
		{
		    if(D[m-1].proson<D[m-1].zaike)
		    { 
		        printf("\n\n******************************************购票成功*******************************************\\n\n");
		        D[m].proson++;
		        printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
		        if (D[m-1].play.min==0)
	      	        printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
	            else
		   	        printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,D[m-1].play.min,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
		    } 
		    else
			{
				printf("\n\n******************************************很抱歉人数已满购票失败*******************************************\n\n"); 
			} 
		} 
		else
		{
			printf("\n\n******************************************此班车已发出*******************************************\n\n");
		} 
	}
} 

int reticket(int x)           //退票功能 
{    
    int m,flag=1;
	printf("请输入想要退掉的班次号:\n");
	scanf("%d",&m);
    time_t t;
    struct tm *lt;
    time(&t);
    lt=localtime(&t);
	if(D[m-1].play.hour>lt->tm_hour)
	{ 
        printf("\n\n******************************************退票成功*******************************************\n\n");
        D[m-1].proson--; 
		printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
		if (D[m-1].play.min==0)
	        printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
	    else
		   	printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,D[m-1].play.min,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);  
	} 
    else if(D[m-1].play.hour==lt->tm_hour&&D[m-1].play.min>lt->tm_min)
	{
		printf("\n\n******************************************退票成功*******************************************\n\n");
	    D[m].proson--;
	    printf("/        班次/      发车时间/       起点站/       终点站/      行车时间/      额定载客/    已订票人数/\n");
		if (D[m-1].play.min==0)
	      	printf("/ %11d/%11d:00/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
	    else
		   	printf("/ %11d/%11d:%2d/         %s/         %s/%14d/%14d/%14d/\n",D[m-1].number,D[m-1].play.hour,D[m-1].play.min,&D[m-1].qidian,&D[m-1].zhongdian,D[m-1].cartime,D[m-1].zaike,D[m-1].proson);
	} 
	else
	{
		printf("\n\n******************************************此班车已发出无法退票*******************************************\n\n");
	} 
}

到了这里,关于车票管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++课程设计:学生管理系统设计

    高级程序设计课程设计 一、教学目标和基本要求     本课程全面系统的学习面向对象程序设计的基本概念,基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类,对象,继承与派生,多态,虚函数,模板,流类库等。遵循软件过程的各个环节进行系统分

    2024年02月08日
    浏览(68)
  • 系统分析与设计课程报告-----------------社团管理系统

    青年志愿者协会在学院党委的领导及团委的直接指导下,由学生自发组织,全校师生自愿参加的,志愿服务于广大师生,奉献爱心于社会的,倡导积极主流文化的群众性服务性团体。 (一)主席团 作为青年志愿者协会的领导核心,全面主持校青志的各项工作;负责校青志总

    2024年02月11日
    浏览(56)
  • 程序设计课程设计——学生学籍管理系统

    通过设计一个小型的应用系统,使学生进一步掌握面向对象的程序设计方法,运用C++中的类与对象的概念结合面向对象程序设计的思想,独立完成应用系统的设计,并养成良好的编程习惯。通过这个实践教学平台,培养学生对计算机应用系统的综合设计能力,培养学生正确分

    2024年02月09日
    浏览(55)
  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(41)
  • 课程设计---族谱管理系统(c++)

    系统简介 课设题目 界面展示 代码实现 Node.h TreeNode.h Genealogy.h Genealogy.cpp button.h 主函数 Genghis Khan.txt 图片文件 测试案例 结语 族谱管理系统是数据结构课程的一个经典的课程设计案例,主要考查对大家对树结构的掌握与运用。以下是我在课程设计时所写的代码,希望能够对大

    2024年02月03日
    浏览(57)
  • 超市管理系统 C++(课程设计)

    古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼 ---------------🍎------------🍉-------------- 🐼学编程的bird的博客,邀您一起学习🦌 ----------------🥕------------🥭------------- 😊很高兴你打开了这篇博客。 ★如有疑问不解或者说有想问的地方,都可以在下方评论留

    2024年01月16日
    浏览(42)
  • 学生考勤管理系统设计_c++课程设计

    以下内容可且仅可供参考,如有错误欢迎指正。 部分内容借鉴自百度 侵删致歉 目录 前言 一、需求分析 二、详细设计 三、用户使用说明 四、总结与体会 五、参考文献 六、附录(源代码) 定义类 函数   1、问题描述 学生信息包括:学号、姓名、性别、年龄、班级等信息。

    2024年02月11日
    浏览(51)
  • 图书管理系统——C语言课程设计

    新进图书基本信息的输入 图书借本信息的查询 对撤销图书的删除 办理借书手续 办理还书手续 提供使用文件方式存储数据 新进图书的输入,首先要输入要添加的书的基本信息,如:书名、书号、价格、作者,再通过fprintf()函数将输入的信息写入文件中 图书信息的查询可分为

    2024年02月09日
    浏览(41)
  • MYSQL课程设计——图书管理系统(一)

      图书借阅管理是学校工作中的一项重要内容,学校图书馆,书目繁多,用户的信息冗杂,且信息数据在每天变化,如果采用人工方式进行管理控制,不仅工作量庞大,而且容易出错。浪费了许多的人力和物力,已不能适应时代的发展。在当今信息时代,这种传统的管理方法

    2024年02月04日
    浏览(42)
  • 【C语言课程设计】图书管理系统

    引言 : 图书管理系统是一个重要的信息管理系统,对于图书馆和书店等机构来说,它能够方便地管理图书的录入、显示、查询、修改和删除等操作。本实验基于C语言开发了一个简单的图书管理系统,通过账户名和密码进行系统访问和权限控制,并实现了上述功能。在本实验

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包