火车订票系统
1.课题内容与要求
火车时刻表的数据项及存储结构自行设定。所设计的系统要有简单的DOS界面,方便用户进行操作,完成以下功能:
(2)对火车时刻表进行插入、删除、修改等功能
(3)订票。订票情况保存在一个文件中(提示:订票情况表应包括客户信息,订票数量及航班情况,订单编号等)。如果已经无票,可以提供相关可选择火车信息。 (4)退票。退票后修改和保存相关文件。
(5)退出系统。退出系统时保存航班情况表,订票情况表。
二.需求分析
1) 提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的列车信息和若干个可选的功能选项。根据车次输入的选项来运行不同的功能,运行不同的函数。 2) 进行文本信息的载入:从指定的文件中以数组形式加载列车信息. 调用save()函数保持输入数据。
3) 查车次功能:以乘客输入的车次号进行查对应的车次信息或者通过对应的终点站查列车信息并将它们输出。通过数组与for循环得以实现。
4) 删除一个车次的功能:将乘客希望删除的某个车次信息删除。
5) 添加一个新的车次:将车次添加到指定的车次之后。应提示乘客按照正确的格式输入。
6) 进行车次信息的修改:根据车次提供的名称,到对应的数组,将数组中的信息重置。内容应有车次输入,由一系列读写函数实现。
7) 退票系统。
8) 对现有信息的保存:保存内存中的最新的记录输出到磁盘文件中。这里默认的是保存到原读取文件中并覆盖原来的信息。
3、概要设计
1)主要结构体
struct train
{
int num;
char start[30];//始发站
char over[30];//终点站
char time[20];//时间
int count;//票数
}s[N];
四,详细设计
#include<stdio.h> //标准输入、输出头文件
#include<string.h> //包含字符串函数处理头文件
#include<stdlib.h> //定义输出格式 //包含动态存储与释放函数头文件
#define PRINT "%-d%10s%10s%10s%10d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count
#define N 10000
int i;
int m=0;
void input();
void print();
void search();
void Delete();
void Booking();
void Modify();
void Return();
void save();
void read();
struct train //定义结构体数组
{
int num;
char start[30];
char over[30];
char time[20];
int count;
}s[N];
void save()//保存模块程序
{
FILE *fp;//定义文件指针
if((fp=fopen("D:\\C++\\火车票系统数据保存.txt","w"))==NULL)//打开文件并判断是否出错
{
printf("file open failure! ");//打印出错提示
}
else
{
fprintf( fp,"number start terminal time count \n");
fprintf( fp,"*************************************************************\n ");
for(i=0;i<m;i++)
{
fprintf(fp,"%-d%12s%12s%10s%12d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count);
}
}
fclose(fp);//关闭文件
}
void read()//从文件读取信息模块
{
FILE *fp;//定义文件指针
if((fp=fopen("D://C++//火车票系统数据保存.txt","r"))==NULL)//打开文件,并判断是否出错
printf("set up file failure! ");//打印出错提示
else
for(i=0;i<m;i++)
{
fscanf(fp,"%-d%12s%12s%10s%12d\n ",&s[i].num,s[i].start,s[i].over,s[i].time,&s[i].count );
printf(PRINT);
}
fclose(fp);//关闭文件
}
void main()
{
int a;
do{
printf(" Train ticket booking management system \n");
printf("****************************************************************************\n");
printf(" 1.input information \n"
" 2.scan information \n"
" 3.search information \n"
" 4.delete information \n"
" 5.ticket-booking \n"
" 6.modify \n"
" 7.return \n"
" 8.out \n");
printf("****************************************************************************\n ");
scanf("%d",&a);
switch(a)
{
case 1: input();//调用输入模块
break;
case 2:print();//调用打印模块
break;
case 3:search();//调用查询模块
break;
case 4:Delete();//调用删除模块
break;
case 5:Booking();//调用订票模块
break;
case 6:Modify();//调用修改模块
break;
case 7:Return();//调用退票模块
break;
case 8:break;
}
}while(a=!0);
}
void input()
{
int x;
printf("Please enter a train information: ");
printf("********************************************************** \n");
for(i=0;i<N;i++)
{
printf("Please input the train: ");
scanf("%d",&s[i].num); //读取车次
printf("please input the start: ");
scanf("%s",s[i].start);//读取起始站
printf("please input the terminal: ");
scanf("%s",s[i].over);//读取终点站
printf("please input the time: ");
scanf("%s",s[i].time);//读取时间
printf("please input the count: ",m);