车票售票系统(C语⾔顺序存储实现)
储备知识:
这个程序属于C语⾔基础训练题⽬,所以⽆需太多的复杂的语法和知识;本程序包含知识有:结构体,数组,简单的条件分⽀语句;(⽂章最后有全部代码)
附上⼀张程序结构图:
接下来就来看看怎么实现的吧
1、定义结构体,记录车次信息
typedef struct train_infor
{
char number[10];//车次
char start[20];//始发地
char end[20];//终点站
int year1,month1,day1,h1,m1;//发车⽇期时间
int year2,month2,day2,h2,m2;//到达⽇期时间笔记本键盘字母错乱
}train;
2、定义⼀些程序中要⽤到的全局变量:
int cnum=0;//记录总共有多少个列车信息;
train info[10000];//结构体类型的数组⽤来保存所有的车次信息;
train users[100][100];//⼆维数组⽤来保存⽤户信息,每⼀⾏可以⽤来表⽰⼀个⽤户的购票信息
int vcs[100]={0};//⽤来记录每⼀个⼈⾃⼰账户的票数,初始全为0;
3、管理员界⾯函数(这个函数⾥⾯会⽤到⼀些在后⾯才定义到的函数哦!看到不懂得函数可以往后翻翻看):
admin_menu();
int choose2;
while(~scanf("%d",&choose2))//选择对应的操作;
{
switch(choose2)
釜山行2杀青
{枢怎么读
case1:
create();
break;
case2:
print();
break;
case3:
query();
break;
case4:
update();
break;
case5:
insert();
break;
case6:
dele();
break;
case0:
return;//输⼊0直接退出整个函数
default:
printf("请选择有效操作对应编号哦!\n");
break;
}
admin_menu();//每次操作结束后再次打印菜单栏
}
}
4、按上述程序开始建造⽋缺的函数;管理员菜单:
void admin_menu()
{
printf("***************************************************************\n"); printf("*              欢迎进⼊⽕车票信息管理系统                    *\n"); printf("***************************************************************\n"); printf("*                1、录⼊⽕车票信息                          *\n"); printf("*                2、显⽰⽕车票信息                          *\n"); printf("*                3、查询⽕车票信息                          *\n"); printf("*                4、修
改⽕车票信息                          *\n"); printf("*                5、添加⽕车票信息                          *\n"); printf("*                6、删除⽕车票信息                          *\n"); printf("*                0、退出                                    *\n");
printf("***************************************************************\n"); }
5、录⼊⽕车票信息:
int sum,i;
printf("请输⼊要录⼊的列车信息条数:");
scanf("%d",&sum);
printf("请依次输⼊车次始发地终点站发车时间(年/⽉/⽇时:分)到达时间(年/⽉/⽇时:分);\n");
for(i=cnum;i<cnum+sum;i++)//录⼊信息从cnum开始的原因是避免管理员先进⾏插⼊或添加操作后再来录⼊数据,发⽣覆盖;同时这样可以多次进⾏录⼊操作(在之前的信息下继续添加)
scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].
year1,&info[i].month1,&info[i].day1,&info[i].h1,&inf o[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);
printf("录⼊成功!\n");
cnum+=sum;
return;
}
6、显⽰⽕车票信息:
void print()
{
if(cnum==0)
{
printf("⽆列车信息!\n");
return;
}
int i;
printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");
for(i=0;i<cnum;i++)
printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i]. day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);
return;
}
7、查询⽕车票信息:
void query()
{
int i;
printf("请输⼊查询车次:");
char ch[10];//记录要查询的车次
scanf("%s",ch);
for(i=0;i<cnum;i++)
{
if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {
printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);
return;//到后直接结束⽆需再查
}
}
printf("⽆此列车信息!\n");//如果到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有到;
return;
}
8、修改⽕车票信息:
int i;
printf("请输⼊要修改的车次:");
char ch[10];//记录要修改的车次
scanf("%s",ch);
//和查询⼀样先到该列车所在的位置,然后对其进⾏修改
for(i=0;i<cnum;i++)
{
if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {
printf("该列车原信息:\n");
printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");
printf("%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\n",info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info [i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2);
printf("请输⼊新的数据:\n");
printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");
唐一菲裸戏
scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&i nfo[i].m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);
printf("修改成功!\n");
return;//修改后直接结束⽆需再进⾏
}
}
printf("⽆此列车信息!\n");//如果到前⾯就结束则不会运⾏到此处;所以运⾏到此处只能是没有到;
return;
}
9、添加⽕车票信息:
void insert()
{
int i=cnum;
printf("请输⼊插⼊的信息:\n");
printf("车次\t始发地\t终点站\t发车时间\t\t到达时间\n");
scanf("%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d",info[i].number,info[i].start,info[i].end,&info[i].year1,&info[i].month1,&info[i].day1,&info[i].h1,&info[i] .m1,&info[i].year2,&info[i].month2,&info[i].day2,&info[i].h2,&info[i].m2);
cnum++;//列车信息总条数加⼀
printf("插⼊成功!\n");
return;
}
10、删除⽕车票信息:
int i,vis=-1;
printf("请输⼊要删除的车次:");
char ch[10];//记录要删除的车次
scanf("%s",ch);
带壳生蚝蒸多久才熟//和查询⼀样先到该列车所在的位置,然后对其进⾏删除
for(i=0;i<cnum;i++)
{
if(strcmp(ch,info[i].number)==0)//⽐较所有的列车信息⼀直到和输⼊的车次相同则到并输出,字符串的⽐较要是⽤strcmp()函数;如果相等则为0 {
vis=i;//将要删除的车次的下标保存下来,为后边的删除操作服务;
break;//到后就可以结束循环
}
}
if(vis==-1)//vis初始值设为-1因为下标不存在负值,如果经过查后还没变说明没有到该车次所以可以直接结束
{
printf("⽆此列车信息!\n");
return;
}
else
{
for(i=vis;i<cnum-1;i++)//vis为要删除列车信息的下标,要想把它删除只⽤把后边的信息依次往前进⾏覆盖即可;此处i<cnum-1是为了避免最后越界;
{
info[i]=info[i+1];
}
printf("删除成功!\n");
cnum--;//列车信息总条数减⼀;
return;
}
}
11、⽤户界⾯(这个函数⾥⾯也会⽤到⼀些在后⾯才定义到的函数!看到不懂得函数可以往后翻翻看):
void user()
{
int no;
printf("请输⼊你的⽤户编码:");
scanf("%d",&no);//记录⽤户编码⽤来对应的保存其购票信息
user_menu();
int choose3;
while(~scanf("%d",&choose3))//记录⽤户选择的操作;
{
switch(choose3)
{
case1:
look_up(no);
break;
case2:
圆明园的资料out_print(no);
break;
case3:
refund(no);
break;
case0:
return;//输⼊0直接退出整个函数
default:
printf("请选择有效操作对应编号哦!\n");
break;
}
user_menu();
}
}