《C语言》课程设计——火车票信息管理系统

一、课题功能描述

本课题要求设计一个火车票信息管理系统,主要包括火车时刻信息的录入、火车票查询、统计、排序的功能。火车票信息管理系统功能包括:
(1)火车时刻信息的录入:包括车次、起点、终点、开车时间、到达时间、票价。
(2)火车票查询:按照车次查询;按照起点和终点查询。
(3)统计:按起点统计每日的车次数;按终点统计每日的车次数。
(4)排序火车票:按开车时间排序;按起点做为主关键字、开车时间做为次关键字排序。
要求提供一个主界面实现火车票信息管理系统的主菜单并调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。要求系统主界面如下形式:
----------欢迎使用火车票信息管理系统主菜单-----------
1——录入火车时刻信息
2——查询火车时刻信息
3——统计火车车次
4——排序火车时刻信息
5——浏览火车时刻信息
0——退出
请输入执行操作代码:
说明:当在主界面上选择 3 或者 4 后,又会有提示,用户选择进入不同的操作。

二、基本原理

(1)构造火车时刻的结构,采用结构体类型定义火车时刻的结构。
(2)定义结构数组存储火车时刻表;
(3)为实现程序的功能,火车票信息管理系统的主界面和各个功能可分别用函数来实现,在主函数中完成各个函数的调用。

三、程序代码

#include<stdio.h>
#include<string.h>
#include <string.h>
#include <stdlib.h>

void show();
void showone();
void function1();
void function2();
void function3();
void function4();
void function5();

struct Huoche
{
	char TrainNumber[20];             //车次
	char StartingStation[20];         //起点站
	char EndingStation[20];           //终点站
	char StartTime[20];               //开车时间
	char ArriveTime[20];              //到达时间
	char Price[20];                   //票价
}
Huo[100];

int i,n;

void main()
{
	do
	{
		printf("************************************\n");
		printf("**     欢迎使用火车票管理系统     **\n");
	    printf("*         1.添加车次信息           *\n");
	    printf("*         2.查询车次信息           *\n");
	    printf("*         3.统计火车车次           *\n");
	    printf("*         4.排序火车时刻           *\n");
	    printf("*         5.浏览火车时刻           *\n");
        printf("*         0.退出                   *\n");
		printf("************************************\n");
		int a;
		printf("请输入执行操作代码:");
		scanf("%d",&a);
		switch(a)
		{
			case 1:function1();break;
			case 2:function2();break;
			case 3:function3();break;
			case 4:function4();break;
			case 5:function5();break;
			case 0:printf("程序结束!!!!!\n");exit(-1);
        }
	}while(1);
}


//循环显示
void show(){
	for(int i=0;i<n;i++)
		printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n",Huo[i].TrainNumber,Huo[i].StartingStation,Huo[i].EndingStation,Huo[i].StartTime,Huo[i].ArriveTime,Huo[i].Price);
	printf("\n\n");
}

//显示匹配项
void showone(){
	printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n",Huo[i].TrainNumber,Huo[i].StartingStation,Huo[i].EndingStation,Huo[i].StartTime,Huo[i].ArriveTime,Huo[i].Price);
	printf("\n\n");
}


void function1(){
	printf("请输入录入个数:");
				scanf("%d",&n);
				printf("请输入:\n");
				printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
				for(i=0;i<n;i++)
					scanf("%s%s%s%s%s%s",&Huo[i].TrainNumber,&Huo[i].StartingStation,&Huo[i].EndingStation,&Huo[i].StartTime,&Huo[i].ArriveTime,&Huo[i].Price);
				printf("!!!!!录入完成!!!!!\n\n");
}

void function2(){
				printf("1——按照车次查询\n");
				printf("2——按照起点和终点查询\n");
				int a;
				printf("请输入执行操作代码:");
				scanf("%d",&a);
				switch(a)
				{
				case 1:
					{
						char checi[20];
						printf("请输入所要查询的车次:");
						scanf("%s",checi);
					/*	cin>>checi;*/
						printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
						for(i=0;i<n;i++)
					    {
							if(strcmp(checi,Huo[i].TrainNumber)==0 )							
								showone();
							
						}


					}
					break;
				case 2:
					{
						char qidian[20],zhongdian[20];
						printf("请输入起点:");
					    scanf("%s",&qidian);
						printf("请输入终点:");
						scanf("%s",&zhongdian);
						printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
						for(i=0;i<n;i++)
						{
							if(strcmp(qidian,Huo[i].StartingStation)==0&&strcmp(zhongdian,Huo[i].EndingStation)==0)
							{
								showone();
		
							}
						}
					}
					break;
				}
	
};
void function3(){
	printf("1——按起点统计\n");
				printf("2——按终点统计\n");
				int a;
				printf("请输入执行操作代码:");
				scanf("%d",&a);
				switch(a)
				{
				case 1:
					{
						char qidian1[20];
					printf("请输入起点:");
						scanf("%s",&qidian1);
						printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
						for(i=0;i<n;i++)
						{
							if(strcmp(qidian1,Huo[i].StartingStation)==0)
							{
								showone();
							}
						}
					}
					break;
				case 2:
					{
						char zhongdian1[20];
						printf("请输入终点:");
						scanf("%s",&zhongdian1);
								printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
						for(i=0;i<n;i++)
						{
							if(strcmp(zhongdian1,Huo[i].EndingStation)==0)
							{
                               showone();
							}
						}
					}
					break;
				}
	
};
void function4(){
	printf("1——按开车时间排序\n");
			    printf("2——按起点作为主关键字、开车时间作为次关键字排序\n");
				int a;
				printf("请输入执行操作代码:");
				scanf("%d",&a);
				switch(a)
				{
				case 1:
				{	
						for(int i=0;i<n-1;i++)
						{
							for(int j=0;j<n-1;j++)
								if(Huo[j].StartTime > Huo[j+1].StartTime)
									{   Huoche t =Huo[j];
							              Huo[j]=Huo[j+1];
							               Huo[j+1]=t;
							           }
						}
					
					printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
					show();
				
				}break;




		case 2:
			{
				char qidian2[20];
				printf("请输入起点:");
				scanf("%s",&qidian2);
				printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
			/*	for(i=0;i<n;i++)
				{
					if(strcmp(qidian2,Huo[i].StartingStation)==0)
					{
						showone();
					}
				}*/



				for(int i=0;i<n-1;i++)
						{
							for(int j=0;j<n-1;j++)
								if(Huo[j].StartingStation > Huo[j+1].StartingStation)
									{   Huoche t =Huo[j];
							              Huo[j]=Huo[j+1];
							               Huo[j+1]=t;
							           }
						}
				show();



			}break;
				}
	
};
void function5(){
	for(i=0;i<n-1;i++)
				{
					for(int j=0;j<n-1-i;j++)
					if(Huo[j].StartTime>Huo[j+1].StartTime)
					{
						Huoche t=Huo[j];
						Huo[j]=Huo[j+1];
						Huo[j+1]=t;
					}
				}
				printf("车次\t\t起点\t\t终点\t\t开点\t\t到达\t\t票价\n");
				show();
};
Logo

快速构建 Web 应用程序

更多推荐