作业要求

1.能够录入班次信息,可不定时增加数据。

2.浏览信息,显示所有班次状态(如当前时间大于发车时间,显示“此班已发出”)。

3.查询路线(1.班次号查询。2.终点站查询)。

4.售票功能,已订票人数小于额定人数且当前时间小于发车时间时,可订票成功,已订票人数加一。

5.退票功能,当前时间小于发车时间,可退票成功,已订票人数减一。

问题分析

本课程的学习目标是完成车票管理系统,要求实现添加数据、浏览信息、查询路线、售票、退票功能、保存数据、退出系统的实现。

首先,建立菜单分别对应相应的功能区,通过输入一个整数或字符跳转到需要的功能区;便可以用switch()函数来实现。

各功能区的实现如下:

(1)实现信息的录入lu()和保存write()。信息录入首先声明录入车票信息的数据类型和名称,车票信息包括班次、发车时间、起点站、终点站、行车时间、额定数量、已订票人数。其中,班次、发车时间、行车时间、额定数量、已订票人数是整数型,起点站、终点站是字符型,通过使用结构体struct Buses存放一组不同类型的数据,由于行车时间分为时分秒,所以另建struct Time存放行车时间。通过文件保存数据(能够把信息永久保存下来需要把数据存放在文件中,采用二进制文件)建立两个二进制文件分别保存车票信息和车辆的数量H(由于班次号的不确定用静态变量H记录车辆数)。系统启动后,在数据文件中读入数据,在操作时保存内存,在退出时或者保存时,将内存的数据保存在文件中。(一开始想把录入和保存功能合成一个功能,但是后面的售票退票需要再次保存已预定的人数,因此将两种函数分为两个功能区)。

(2)实现信息的浏览liulan()和查询chaxun()。信息浏览要从文件中读出数据,通过read()读出并浏览录入的数据,用函数int bijiaotime1()比较当前时间和发车时间,如果已经发车则显示“此班已发出”。用switch函数分别表示按班次查询和按终点站查询,用for()遍历结构体,判断查询的班次/终点站是否存在,如果存在,则显示数据,不存在,输出“车辆不存在”。

(3)退、售票功能stpiao()。用switch函数分别表示售票功能sp()和退票功能tp(),实现该功能先要解决车辆班次存在和是否发车(查询信息可实现chaxun())、是否有空位(比较额定车票和已预订车票int number_book())的问题。如果能购票,则已经该班次定票人数加一,退票则减一。

(4)退出系统tuichu()。exit(0)正常退出。上述所有操作正常完成后,则可以继续下一步,如果不能正常完成,则显示错误报告。

系统总务流程

图1车票管理系统功能区

图2 车票浏览流程                   图3 查询路线流程

图4 售票、退票流程                  图5售票的详细流程(同理可得退票流程)

命令编码

数据操作命令下录入数据、浏览信息、查询信息、售、退票功能、保存数据分别编码为字符1、2、3、4、5。退出系统命令的编码为字符0。

存储结构设计

根据系统要求,系统中需要保存的数据信息,其结构如下:

数据项名称

数据项系统表示

数据类型

数据长度

班次

number

int

2

发车时间

time

struct Time

起点站

start

char

30

终点站

end

char

30

行车时间

time_cost

int

2

额定载量

carr_number

int

2

已预订人数

book_number

int

2

为了实现程序的操作,采用结构体保存车辆信息,先声明一个struct Buses的结构体,结构体中嵌入struct Time记录发车时间,其成员是车辆的基本信息,通过对指针、文件的数据结构的操作,实现对车辆的录入,存储、浏览等操作,系统还会建立h.dat和h1.dat记录车辆数据信息和车数,结构体定义如下:

struct Time {

int hour;

int min;

int sec;

};

struct Buses//属性

{

int number;//班次

struct Time time;//发车时间

char start[30];//起点站

char end[30];//终点站

int time_cost;//行车时间

int carry_number;//额定载量

int book_number;//已预订人数

};

功能模块与函数

系统的功能函数:

序号

功能描述

类别

函数

1

录入信息

数据处理

void lu()

2

浏览查询信息

输入输出

void lc()

3

主菜单

输入输出

int caidan()

4

售/退票

数据处理

void stpiao()

5

数据保存

文件访问

void baocun ()

6

退出系统

文件访问

void tuichu()

7

读出数据

文件访问

int read()

viod lu() void baocun();录入和保存功能函数,当录入信息后,数据暂时保存在内存中,通过调用保存功能函数,将数据存放在h.dat文档中。

Void lc();浏览和查询功能函数,用switch函数做出选择:1.浏览信息,2.查找信息,浏览信息可将所有车辆信息全部显示出来,查询信息用switch函数分为1.按班次查询,2.按终点站查询。

Void caidan();显示车票管理系统的所有功能区,用switch跳转到相应的功能函数。

Void read();将h.dat文件的数据读出。

int bijiaotime();调用系统时间函数与发车时间比较,如果发车时间大于系统时间,则显示“未发车”,并返回1,如果小于,则显示“已发车”,返回0。

void bancichaxun();按班次查询,for循环遍历函数,如果输入的班次值等于文件中存放的班次值,则显示该班次信息,否则输出“该班次不存在”。

void zhongdianchaxun();按终点查询,for循环遍历函数,用strcmp()比较字符串内容是否相等,如果相等,strcmp()函数将返回1,如果输入的终点站等于文件中存放的终点站,则显示该班次信息,否则输出“该班次不存在”。

int number_book();比较额定车票和已预订车票,for循环遍历函数,如果额定车票大于已预订车票,则返回1,否则返回0。

int sp();售票功能函数,输入需要购买的车票班次,调用int bijiaotime1()和int number_book()判断是否能够买票,如果满足买票条件则显示“购票成功”,已订票人数加一,否则显示“购票失败”。

int tp();退票功能函数,与购票功能同理。

文件结构设计

序号

文件

说明

1

main.cpp

主函数定义

2

Sc.cpp

数据处理函数定义

3

Sc.h

数据处理函数声明

4

Sj.cpp

输入输出函数定义

5

Sj.h

输入输出函数声明

6

Wj.cpp

文件访问函数定义

7

Wj.h

文件访问函数声明

8

Lu.h

声明结构体

根据要求将文件分为四大部分,分别表示主函数、输入输出、数据处理和文件访问。

Main.c中包括main()主函数、caidan()和退出系统tuichu()。输入输出中,将信息录入void lu(),浏览和查询void lc()放在一起。把需要进行比较,售退车票stpiao()等算法的函数放在数据处理中。将保存baocun1()和读入read()两个文件操作放在文件访问中。

模块的实现、测试

1.主控模块

1.读入数据

2.打印菜单

3.输入命令编码n

4.根据命令处理分支

4.1  n==1

4.1.1 录入信息

4.1.2 保存数据

4.2 n==2

4.2.1 浏览信息

4.2.2查询数据

4.3.2.1 班次查询

4.3.2.2 终点查询

4.3 n==3

4.3.1 售票功能

4.3.2 退票功能

4.4 n==4

4.4.1 读出数据

4.6 n==5

4.6.1 保存数据

4.7 n==0

4.7.1 退出系统

过程记录

(1)打印菜单

根据功能区的划分,菜单分为1.录入信息,2.浏览、查询信息,3.售、退票功能,4.读出数据,5.保存信息,0.退出系统。

代码如下:

测试结果:

(2)录入和保存信息

按1进入录入信息功能区,用for()循环将结构体数据按照各自类型进行输入,输入完毕后,按5进行文件访问,将数据存储到h.dat二进制文档中。

部分代码如下:

测试结果:

(3)浏览和查询

按2进入此功能区,用switch表示按1浏览信息,按2查询信息,继续按1进入浏览,输出相应结果,按2进入查询,在查询函数中,用switch表示按1班次查询,按2终点查询,继续按1进入班次查询,输出相应结果,按2进入终点站查询,输出相应结果。

部分代码:

测试结果:

(4)售退票功能

按3进入此功能区,用switch表示按1售票,按2退票,继续按1进入售票功能,输入需要购买的班次,查看是否可以购买,如果能,则显示成功,否则失败。按2进入退票功能,与售票执行同理。

部分代码:

测试结果:

实践心得

通过本次c语言课程设计,使我更熟悉结构体的用法,明白怎么把不同的功能程序结合起来(通过switch函数将其他函数串联在一起,输入字符调用不同的函数),把上学期不懂文件访问部分的知识运用起来,学会怎么把数据保存在文件中和把文件中的数据读出来。

思考:车票管理系统中录入信息、保存信息是管理端,售票退票是客户端,所以两者可以通过不同的菜单界面进行处理,在进入完成某一项功能后,可以增加选项是否返回菜单,或者继续。

不足:查询和售票方面的联系不足,如:在查询到车辆已经发车后,售票时要再次重复此代码块。没有添加删除功能,在实际中,不能将已发车或者录入错误的车辆信息删除掉。

完整文档和代码请看:c语言车票管理系统代码和文档.rar_车票管理系统c语言程序设计-C/C++文档类资源-CSDN下载

c语言车票管理系统(附完整代码和文档)相关推荐

  1. 简易通讯录的实现(c语言,后附完整代码)

    今天我要介绍的是通讯录的实现(c语言) 首先先简单说一下思路吧. 一共需要三个文件分别为test.c(测试通讯录),contact.h(所需函数及头文件),contact.c(通讯录功能实现).因为通 ...

  2. 快速排序(适用于C语言初学者,附完整代码)

    快速排序 基本思想 快速排序的基本思想就是寻找一个轴值,此轴值将待排序数列分成两部分,左侧的数据均小于轴值,右侧的数据均大于轴值,在从左右两侧分别找取各自的轴值,很明显用到了递归的思想,此文轴值的寻找 ...

  3. C语言物流信息管理系统实践,[源码和文档分享]基于C语言的物流配送管理信息系统...

    一 需求分析 系统需要实现的功能如下: (一)各种基本数据的录入 配送路线基本信息录入 路线经停站点基本信息录入 站点经停车辆基本信息录入 其它信息录入 (二)各种基本数据的修改 即:允许对已经录入的 ...

  4. C语言通讯录管理系统(含完整代码)

    课题3:通讯录管理系统 设计内容: 设计一个通讯录管理系统,以实现以下功能:信息添加.查询.修改.删除.排序等功能. 设计要求: 1) 每条信息至包含 :姓名.电话.工作单位等信息 2) 作为一个完整 ...

  5. C语言--学生管理系统--(完整代码)

    本系统分成了三个文件,main.c student.c student.h 功能: 实现对班级成员的增加.删除.修改.遍历.根据成绩排序. 增加 会检查,现在班级已有的人数,班级是否已满(没有学号重复 ...

  6. c语言大作业车票管理系统,c语言车票管理系统.docx

    c语言车票管理系统 课 程 设 计 报 告课程名称 C语言课程设计 课题名称 车票管理系统 专 业 自动化 班 级 1402 学 号 201401020208 姓 名 宋爱军 指导教师 陈世清 杨子华 ...

  7. Python实现自动翻译功能 - 附完整代码

    Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...

  8. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  9. 数据结构-数组-字符串匹配:Knuth-Morris-Pratt算法(详解附完整代码)

    字符串匹配 字符串抽象数据类型 字符串模式匹配 简单的字符串匹配 Knuth-Morris-Pratt算法 背景分析 失配函数 定义 实现方法 函数分析 KMP函数 实现方法 函数分析 失配信息的另一 ...

最新文章

  1. Android APK应用安装原理(2)-查找APK并自动安装
  2. centos java 指令_Centos 命令方式下载JDK1.7
  3. linux shell程序代码,linux shell实用程序源代码pidof
  4. 诚安聚立总裁刘志军:对标三大征信局与FICO 坚持风控能力输出
  5. ubutnu16.04搭建LAMP环境(搭建wordpress博客)
  6. 计算机网络计算机应用答案,计算机网络与应用(含答案).doc
  7. 什么是CPAN(安装NAGIOS使用到)
  8. 设计几个简单的汇编函数
  9. c++命令行解析库cmdline使用
  10. UI实用素材|扁平化UI设计模板,UI设计师都要会!
  11. mm1排队系统仿真matlab实验报告,MM1排队系统仿真matlab实验报告.doc
  12. elasticsearch备份与恢复4_使用ES-Hadoop将ES中的索引数据写入HDFS中
  13. Ubuntu Apache 不同端口监听不同站点
  14. DIV CSS 网页兼容全搞定 (IE6 IE7 IE8 IE9 火狐 谷歌)
  15. C语言2级题pdf百度云,C语言二级考试试题.pdf
  16. 吉他效果器-削波失真
  17. 今日睡眠质量记录74
  18. 【DB笔试面试1-100】
  19. 工作之余可以回味的经典
  20. 地图可视化 - 气泡点图

热门文章

  1. JAVA· chatAt()方法
  2. 串口通信RXTXcomm使用
  3. 当PPP遇上智慧城市
  4. 阿里云、腾讯云、华为云 25 岁以下学生优惠
  5. ANSYS Workbench 18.0结构强度刚度与轻量化分析视频教程
  6. SimpleDateFormat 精确到毫秒
  7. Hi5 2.0 产品说明书-Ver 1.0
  8. 济南ISO三体系认证证书办理需要准备的材料有哪些
  9. 获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官
  10. 搭建私有云盘-NextCloud