火车票管理系统php,c 车票管理系统

目 录

第4章 程序的调试与运行结果说明…………………………………………………………...10

车票管理系统课程设计总结........................................................................................................20

参考文献…………………………………………………………………………………………21

第1章  概述

1.1课程设计的目的

熟练掌握C语言的应用及特点;

掌握函数声明、定义和使用的方法;熟练掌握C语言中的对文件进行操作的基本方法;熟练掌握结构体的使用方法;掌握链表的基本操作。

1.2车票管理系统课程设计的要求

1、录入班次信息(信息用文件保存),可不定时地增加班次数据

2、浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

3、查询路线:可按班次号查询 ,可按终点站查询

4、售票和退票功能

A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数

1. B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数

这次设计的车票管理系统,实现了对车票的实时管理,功能包括录入、增加班次信息(信息用文件保存),浏览班次信息,查询路线以及售票和退票功能。主要使用了链表实现了数据的保存和修改,同时使用文件相关函数对文件进行同步。

1.3车票管理系统设计理念

1、利用C语言面向过程的编程思想完成系统设计。

2、突出C语言的函数特征,以多个函数实现每一个子功能。

3、画出功能模块图。

4、进行简单的界面设计。

5、具有清晰的程序流程图和数据结构的详细定义。

6、源码格式规范,要有适当的注释,使程序容易阅读。

1.4 程序整体框图如下:

启动程序

文件是否存在

5增加新班次记录

结构体链表

文件是否为空

修改

3查找班次

4退出系统

数据文件

banci.dat

修改

菜单

1-5

关闭文件

将文件读入结构体链表

更新班次日期等

读取

写入

修改

1显示班次

读取

调用

2售票 / 退票

调用

判断是否能够售票/退票(根据时间,已订票人数)

修改

第2章 C详细设计

程序结构设计应用的C知识以及各函数的具体功能

main()函数是 整个c程序执行的开始 和 结束,也称主函数! 是一个程序 必须要有的! 没有的话,就 不 符合 c语言。车票管理系统中main主函数可以调用了其他函数。

2.2 循环程序

车票管理系统中运用for、if、switch、do-while循环语句

if语句是指c中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。本例中运用if进行车票查询、退订等操作。

for语句是c中提供的功能强大的循环语句,一般形式为:

for(表达式1;表达式2; 表达式3;)

switch语句在c中可直接处理多分支选择,并且switch语句条例清晰,结够明了。形式:

switch(表达式)

{

case 常量表达式1:语句1;

case 常量表达式2:语句2;

……

case 常量表达式n:语句n;

default:语句n+1;

}

do while循环先执行循环体里的语句,再进行判断,所以如果不符合while条件时也要执行一次循环体;

do

{

………

………

………

}

while()

车票管理系统程序中switch与do-switch嵌套用于选择执行车票查询、退订等。

数组是在程序设计中, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

数组说明的一般形式为:

类型说明符 数组名 [常量表达式],……;

其中,类型说明符是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

2.4 结构体

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。

在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。车票管理系统中用于定义车板次、时间、起始站、终点站等的定义。

C语言中用指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对文件进行各种操作。C语言将文件看作是一个字符(字节)的序列,即一个一个字符(字节)的数据顺序组成。根据数据的组成形式,可分为ASCII文件和二进制文件。

一般形式为:

FILE *fp

第3章 部分函数的算法分析

3.1

班次、发间、起点站、终点站、行车时间、额定载量、已订票人数进行选择调用用于查询车票管理系统信息。程序如下:

do{

printf("-----选择主菜单功能(0~6)\n");

scanf("%d",&b);

switch (b)

{

case 0:

input(); break;

case 1: output();

break;

case 2:

scan(); break;

case 3:

check(); break;

case 4:

book(); break;

case 5:

rback(); break;

case 6:

over(); break;

default: printf("

enter error!\n");

}

}while(1);

该do-while语句中嵌套了switch语句,switch语句根据键入的b的数值指向与其值相对应的case语句,执行命令直至循环条件不满足要求为止。

3.2 结构体该语句可以声明不同的数据类型,相同结构体类型变量可以相互赋值。如下程序:

struct

t_tickets

{int

number;

char begin [10]; char

start[30];

char

loadend[30]; float time;

int people;

int booked;

};

车票管理系统结构体中包括“班次、发车时间、到达时间、行车时间、额定载客量、已订票人数”成员,结构体中分别做了定义。

3.3

车票管理系统中的文件程序分析:

FILE*fp;

struct t_tickets

t[size];

void save()

{

int

i;

if

((fp=fopen("ticket.text","w+"))==NULL)

{

printf("cannot open the file\n");

return;

}

for(i=0;i

if(fwrite(&t[i],sizeof(struct

t_tickets),1,fp)!=1)

printf("

file write error\n");

fclose(fp);

}

文件程序应用必须先进行声明,FILE*fp定义菜单文件指针fp。

3.4  if

((fp=fopen("ticket.text","w+"))==NULL)

fopen是文件打开函数。在该程序中表示打开“ticket.text”文件夹,并且以“读写”方式打开。如果函数返回值不存在或文件已损毁则返回空指针NULL,程序无法输出 "cannot open the file”。

if(fwrite(&t[i],sizeof(struct

t_tickets),1,fp)!=1)

函数:fwerite表示从文件写入一个数据块。fwrite(&t[i],sizeof(struct

t_tickets),1,fp)其中

① &t[i]:表示要写入数据地址地址;

② sizeof(struct t_tickets):表示写入数据字节长度;

③ 1:表示写入1个sizeof(struct t_tickets)字节;

④ fp:表示文件指针。

注:因为写入操作失败时返回0,成功返回1,所以一旦返回非1,就打印错误信息,最后退出文件。

fclose(fp):表示关闭文件。

fread函数表示读入数据块与fwrite函数功能相同。

3.5 strcmp(比较字符串)

if(strcmp (loadend,t[i].loadend)==0)

strcmp()用来比较参数loadend,t[i]和loadend,t[i]字符串。

若参数loadend,t[i] 与loadend,字符串相同返回0。loadend,t[i]

大于loadend返回1,小于返回-1。

第4章

程序的调试与运行结果说明

4.1

启动程序,进入菜单,使用了简单的文本菜单界面。如图1

图1

4.2

选择0,录入信息,如图2

图2

4.3

关闭窗口,重新运行,选择1,浏览班次信息。图3

图3

4.4 按班次查询,如图4

图4

4.5 查询班次信息,按终点站,图5

图5

4.6

预定车票。图6

图6

4.7 退票。图7

图7

4.8 按6退出程序

第5章

车票管理系统程序

源程序:

#include

#include

#include

# define size

10

struct

t_tickets

{

int

number;

char begin

[10];

char start[30];

char

loadend[30];

float

time;

int

people;

int

booked;

}

t[size];

FILE*fp;

struct t_tickets

t[size];

void save()

{

int

i;

if

((fp=fopen("ticket.text","w+"))==NULL)

{

printf("cannot open the file\n");

return;

}

for(i=0;i

if(fwrite(&t[i],sizeof(struct

t_tickets),1,fp)!=1)

printf("

file write error\n");

fclose(fp);

}

void

input()

{

int

i;

printf("----------请录入班次信息----------\n");

printf("\n

班次 发车时间 起点站 终点站 行车时间(小时) 额定载量 已订票人数 \n");

for(i=0;i

{

scanf("%d %s %s %s %f %d

%d",&t[i].number,t[i].begin,

t[i].start,t[i].loadend,&t[i].time,&t[i].people,&t[i].booked);

save();}

}

void

output()

{

int i ;

fp=fopen("ticket.text","r");

printf("\n

班次 发车时间 起点站 终点站 行车时间(小时) 额定载量 已订票人数 \n");

for(i=0;i

{

fread(&t[i],sizeof(struct

t_tickets ),1,fp);

printf("\nM %8s %8s %8s %6.2f � �\n",t[i].number,t[i].begin,

t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);

}

fclose(fp);

}

void scan()

{

int k;int number;

printf("请输入您想要查询的班次号:\n");

scanf("%d",&number);

fp=fopen("ticket.text","r");

for(k=0;k

{

fread(&t[k],sizeof(struct t_tickets),1,fp);

if(number==t[k].number)

{ printf("\n

班次 发车时间 起点站 终点站 行车时间(小时) 额定载量 已订票人数 \n");

printf("\nM %8s %8s %8s %6.2f � �\n",t[k].number,t[k].begin,

t[k].start,t[k].loadend,t[k].time,t[k].people,t[k].booked);

break;

}

}

if(k>=size)

printf("对不起,没有您想要查询的班次,谢谢使用本系统\n");

fclose(fp);

}

void check()

{

int i;

char loadend[30];

printf("请输入你想要查询的终点站的名称:\n");

scanf("%s",loadend);

fp=fopen("ticket.text","r");

for(i=0;i

{

fread(&t[i],sizeof(struct

t_tickets),1,fp);

if(strcmp(loadend,t[i].loadend)==0)

{

printf("\n 班次 发车时间 起点站 终点站 行车时间(小时) 额定载量 已订票人数 \n");

printf("\nM %8s %8s %8s %6.2f � �\n",t[i].number,t[i].begin,

t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);

break;

}

}

if(i>=size)

printf("对不起,没有您想要查询的班次,谢谢使用本系统!\n");

fclose(fp);

}

void

book()

{

int i;int number;int m;char loadend[30];int

ticket=1;

if ((fp=fopen("ticket.text","r"))==NULL)

{

printf("not open the file\n");

return;

}

for(i=0;i<=size;i++)

fread(&t[i],sizeof(struct

t_tickets),1,fp);

printf("\n请输入你想要到达的终点站:\n");

scanf("%s",loadend);

printf("到达此终点站的班次有:\n");

for(i=0;i<=size;i++)

if(strcmp(loadend,t[i].loadend)==0)

{

ticket=2;

printf("\n

班次 发车时间 起点站 终点站 行车时间(小时) 额定载量 已订票人数 \n");

printf("\nM %8s %8s %8s %6.2f � �\n",t[i].number,t[i].begin,

t[i].start,t[i].loadend,t[i].time,t[i].people,t[i].booked);

}

for(i=0;i<=size;i++)

if(strcmp (loadend,t[i].loadend)==0)

if(t[i].booked

{

ticket=3;

printf("请输入订票的张数:\n");

scanf("%d",&m);

for(i=0;i<=size;i++)

if(number=t[i].number);

if

((fp=fopen("ticket.text","w"))==NULL)

{

printf("not open the file\n");

return;

}

{

t[i].booked=t[i].booked+m;

if ((fp=fopen("ticket.text","w"))==NULL)

{

printf("not open the file\n");

return;

}

for(i=0;i<=size;i++)

fwrite(&t[i],sizeof(struct

t_tickets),1,fp);

fclose(fp);

printf(" 您订票成功!谢谢使用本次服务!\n");

}

}

if(ticket==1)

printf("\n 没有你查询的班次,请查询后在输入\n");

if(ticket==2)

printf("\n

你想要购买的票以售完,请购买下一班 \n");

fclose(fp);

if ((fp=fopen("ticket.text","w"))==NULL)

{

printf("not open the file\n");

return;

}

for(i=0;i<=size;i++)

fwrite(&t[i],sizeof(struct t_tickets),1,fp);

fclose(fp);

}

void

rback()

{

int number,i,m;

if((fp=fopen("ticket.text","r"))==NULL)

{

printf("not open the file\n");

return;

}

for(i=0;i<=1;i++)

fread(&t[i],sizeof(struct t_tickets),1,fp);

printf("请输入退票的班次:\n");

scanf("%d",&number);

printf("请输入退票的张数:\n");

scanf("%d",&m);

for(i=0;i<=size;i++)

if(number==t[i].number)

{

t[i].booked=t[i].booked-m;

printf("\n 您退票成功!,谢谢\n");

}

fclose(fp);

if ((fp=fopen("ticket.text","w"))==NULL)

{

printf("not open the file\n");

return;

}

for(i=0;i<=size;i++)

fwrite(&t[i],sizeof(struct

t_tickets),1,fp);

fclose(fp);

}

void over()

{

printf("\n 谢谢您的使用,请按任意键结束!\n");

exit(0);

}

void main()

{

int b;

printf(" 这里是车票管理系统,欢迎你的使用\n");

printf(" 制作: 关志超 \n" );

printf("\n******************************************\n");

printf("

==== 0,录入班次信息\n");

printf("

==== 1,浏览信息\n");

printf("

==== 2,按班次查询\n");

printf("

==== 3,按终点站查询\n");

printf("

==== 4,预定车票\n");

printf("

==== 5,退票 \n");

printf("

==== 6,退出程序\n");

printf("\n******************************************\n");

do{

printf("-----选择主菜单功能(0~6)\n");

scanf("%d",&b);

switch (b)

{

case 0:

input(); break;

case 1: output();

break;

case 2:

scan(); break;

case 3:

check(); break;

case 4:

book(); break;

case 5:

rback(); break;

case 6:

over(); break;

default: printf("

enter error!\n");

}

}while(1);

}

车票管理系统课程设计总结

经过一个星期的忙碌终于完成了C语言设计,也就意味着这个课程设计接近了尾声,的确令人兴奋,看着自己的劳动成果,心里很高兴。

一个星期前看到“车票管理系统”题目时傻了,没一点思路,选择的题目没一点头绪,想换成别的题目,主要是害怕编,后来跟搭档商量下决定不换了,就编这个题目。我们俩当时很失落,想着可能完不成作业,不想做,可视抱怨有什么用,还是不会编,我们只能尽我们自己努力把程序给写出来,虽然当时不知道这么编,只能石着编了,即使很难也得编,没别的选择。课下在网上、图书馆查了很多资料,有类似的题目,可是不一样,我们一次次的失望,网上、图书馆里肯定没现成的。我们只能找些相类似的看人家的设计思路,但是里面很多语句都没见过,更不用说模仿。又遇到一个难题,先是硬着头皮一遍一遍的看,虽然当时看的头都大了,还是坚持看,后来经过分析,看不懂得部分主要是结构体、文件知识点,当时很高兴至少明白了那些不懂。课下首先把课本后面的结构体、文件仔细看了一遍,找几个有解析的例题仔细看了看,这些工作完成后在看程序以前不懂的地方却迎刃而解,整个程序也就看到了。按照别人设计思路构思自己设计框架,我们把框架弄出来了,自从把框架弄好了以后就没有进展了,眼看时间快到了,我们都很急,可是急也没有用,还得慢慢来,功夫不负有心人,我们经过商量、讨论一步一步的把程序编了出来,想到编程时由于意见不同整的耳红面赤,还真有意思。接下来调试,由于程序太大,稍有疏忽,就是errors,看到下面那个errors头都大了,而且越改越errors,当时感觉很“无奈”,只能在一遍遍的调试,记得有次“;”是在中文状态下输入的,一运行就是errors修改别的地方错误更多,怎么也检查不出开错在哪里,后来请教了很多同学才找到,一个小小错误费了那么大劲,感觉到“细节决定成败”,这样的错误调试时出现了很多次,但是经过我们一次次调试、修改运行,程序设计终于完成。

C

语言设计让我体会到了书本知识的重要性,当时感觉不到真正用的时候会感到书本知识的重要;C语言也重在积累平时应该多加练习,知错、改错、记错平时练习中注意细节问题,积累错误,当遇到大型编程时才会很快查出错误所在,节约时间,提高效率;注意积累知识点,一点一滴的积累,知识才会日臻完善,运用时才会得心应手,分析、设计程序才能够统筹全篇;C语言学习平时应该多积累一些经典程序,分析它们设计思路、运用到哪些知识点,还应该尝试用其它语句把它设计处来,在进行比较,举一反三,多角度设计程序。

参考文献

● 《C语言课程设计》 向华 清华大学出版社

● 《C语言程序设计案例教程》  张基温

清华大学出版社

● 《C语言程序设计实践教程》 许晓 电子工业出版社

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机科学与技术系 信息管理与信息系统专业 《程序设计综合课程设计》报告 (2013/2014学年 第一学期) 学生: 学生班级: 学生学号: 指导教师: 2013年 1 月 8 日 目 录 第一章 课程设计的目的和要求 1 1.1课程设计的目的 1 1.2 课程设计的基本要求 1 第二章 课程设计任务容 2 2.1 简介 2 2.2 功能说明 2 第三章 详细设计说明 3 3.1 模板设计图 3 3.2 主函数流程图 4 3.3 子函数流程图 5 第四章 编码与调试 7 4.1 软件使用说明 7 4.2 运行结果及截图 7 第五章 课程设计心得与体会 11 附录一 参考文献 12 附录二 程序清单 13 附录三 录入文件 27 火车票管理系统 第一章 课程设计的目的和要求 高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计 的训练,使学生能及时巩固已学的知识,补充未学的但有必要的容,掌握应用计算机解决 实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。高级语言程 序设计的主要任务是要求学生遵循软件开发过程的基本规,运用结构程序设计的方法按 照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。 1.1课程设计的目的 1.巩固和掌握高级语言程序设计基本概念; 2.掌握基本的程序设计方法; 3.掌握开发软件所需的需求定义能力; 4.提高书写程序设计说明文档的能力; 5.提高综合运用高级语言的能力,强化编程和调试能力。 1.2 课程设计的基本要求 1.根据所给的课程设计题目,分析课程设计题目的要求; 2.对系统功能模块进行分析,写出详细的设计说明文档; 3.编写程序代码,调试所编写程序使其能正确运行; 4.设计完成的软件便于操作和使用; 5.设计完成后提交课程设计报告。 第二章 课程设计任务容 2.1 简介 火车票管理系统:是为广大群众开发的,帮助人们查询车次信息,订票和退票,大大节 约了人们的时间,是铁路营运公司所需要的全部功能的一个综合的管理系统。 2.2 功能说明 (1)录入班次信息信息文件保存,可不定时增加班次数据。 (2)浏览班次信息:可显示出所有班次当前状总(如果当前系统时间超过了某班次的发 车时间,则显示"此班已发出"的提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查询。 (4)售票和退票功能: A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自 动更新已售票人数。 B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。 (5)删除功能:该功能可以删除录入的错误信息。 (6)订购功能:该功能可以方便旅客提前预定。 第三章 详细设计说明 3.1 模板设计图 图3-1函数功能模板图 3.2 主函数流程图 1 2 3 4 是 否 图3-2主函数流程图 3.3 子函数流程图 是 否 否 是 1 2 图3-3 录入班次流程图 图3-4 查询车次函数流程图 否 是 1 2 是 否 图3-5 订票函数流程图 第四章 编码与调试 4.1 软件使用说明 打开软件后,会出现一个主页面,这时候你首先要把火车票信息调用出来,这款软件 具备很多功能,例如用键盘操作页面;可以更改班次信息浏览班次信息;订票;退票 等等,并且能够随时退出系统得功能。 这款软件简单易操作,希望大家会喜欢。 4.2 运行结果及截图 进入系统页面录入班次信息 图4-1 录入班次信息图 2、浏览录入班次信息 图4-2 浏览班次信息图 查询你乘车需要的信息班次查询 图4-3 班次查询图 按终点站查询 图4-4 班次查询图 订票与退票 订票成功 图4-5 订票成功图 订票失败 图4-6 订票失败图 退票成功 图4-7 退票成功图 退票失败 图4-8 退票失败图 退出系统 图4-9 退出系统图 第五章 课程设计心得与体会 三周的课程设计结束了,我终于完成了这次高级语言课程设计,并且认真完成了课程 设计报告。在这次的课程设计中不仅检验了我所学习的知识,也培养了自己的耐心。课 程设计是我们专业课程知识综合应用的实践训练,也是我们迈向社会,从事职业工作前 一个必不少的过程."千里之行始于足下",通过这次课程设计,我深深体会到这句千古 名言的真正含义. 通过这次课程设计,本人在多方面都有所提高。通过这次火车票系统设计,综合运用 本专业所学课程的理论,巩固与扩充了高级语言设计等课程所学的容,掌握高级语言设 计的方法和步骤,掌握了高级语言设计的基本的概念,了解了高级语言的基本结构,提 高了编程能力,绘图能力,熟悉了规和标准,同时各科相关的课程都有了全面的复习, 独立思考的能力也有了提高。 在这次设计过程中,大大激发了我编程的兴趣,在设计的过程中亦遇到了许多困难,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值