C 课程设计报告

发布 2022-09-30 18:07:28 阅读 2614

中南民族大学工商学院。

计算机科学与技术系。

项目名称: 航班客运订票系统。

学生姓名。学号。

班级。指导教师。

2024年 12月 28日。

目录。1 系统结构模块示意图 1

2 数据结构设计及用法说明 2

2. 1 航班结构体存储结构 2

2. 2 旅客结构体存储结构 2

2. 2 替补乘客结构体存储 2

3 程序结构 3

3.1订票 3

4 各模块的功能 5

4.1 输入航班 5

4.2 输出航班 5

4.3 查找航班 5

4.4 订票 5

4.5 退票 5

4.6 删除航班 5

5 试验结果 6

5.1 输入航班信息 6

5.2 输出航班信息 7

5.3 查找航班 7

5.4 订票 8

5.5 退票 10

5.6 删除航班 12

6 个人体会 13

7 参考文献 14

附录源**清单 15

主菜单分为输入航班信息,输出航班信息,查找航班,订票,退票,删除航班,退出系统。

输入航班信息包括航班的航班号、飞机号、终点站、飞行时间、总票数。输出航班输出航班号、飞机号、终点站、飞行日期、余票数。查找航班时,输入终点站时,就显示该终点站所对应的航班的信息。

退票时,当乘客所订的票不是候补票时,余票数减少;当乘客的票时候补票时,余票数不变。删除航班时,当乘客输入的航班号和飞机号与输入航班时的航班号与飞机号都相同时,删除该航班。示意图如下图1.

1所示。

图1. 1数据结构设计:在本程序中,用到三个结构体。

他们分别是航班、乘客、候补结构体。在航班结构体中数据成员有航班号、飞机号、终点站、 飞行日期、总票数、余票数、候补数、和一个指向下一个该节点的指针。在乘客结构体中,要用到的数据成员有姓名、终点站、飞行日期、订票数、座位号、和指向下一个该节点的指针。

在候补结构体中数据成员有乘客姓名和一个指向下一个该节点的指针。

struct flight

elemtype flight_no;

elemtype plane_no;

elemtype zhongdian;

int date;

int total_ticket;

int ticket_balance;

int ticket_backup;

flight *next; }

struct customer

elemtype name;

elemtype zhongdian;//终点站。

int date

int ticket;

int seat_no;//座位数。

customer *next; }

2. 2 替补乘客结构体存储。

struct replace

elemtype name;

int ticket;

replace *next; }

用法说明:能完成一些基本操作,例如:对航班信息的输入;对航班信息的输出;对终点站的查询后,输出该航班的信息;订票和退票的管理,以及删除航班等基本操作。

我所能想到的,而没有完成的功能有,1:查询航班信息中,只有一种根据终点站来查询的方式,当有多个飞机号能到达该终点时,只能显示出第一个为该终点站的航班信息;2:没有设计修改航班的功能;3:

没有能显示用户的信息;4:在订票的过程中,如果有名字一样,而终点站或者是飞行日期不一样时,在退票的**中没有将他们加以区分,只要乘客姓名相等,就将他们的信息输出出来了,对于有多个同名的乘客,这样会导致错误的结果。

先定义指向第一条航班的指针s ,提示用户输入姓名、终点站、飞行日期,当乘客输入的终点站和飞行日期与第一个航班的终点站和飞行日期相同、就存在该航班。否则,将指向该航班的指针后移,直到输出的终点站和飞行日期与输入航班时的终点站和飞行日期相同。退出循环时,若s为空,则输出此航班不存在。

否则,输出订票数。

功能:创建指向航班结构体的指针变量,为其开辟内存单元。分别输入航班号、飞机号、终点站、飞行日期、总票数。

采用尾插法建表,每输入一条新的航班,就将该节点赋值给尾节点的后继,再将尾节点后移,保证尾节点的后继为空。

输出所有航班的信息。包括航班号、飞机号、终点站、飞行日期、总票数。

根据输出终点站进行查询。当节点为空时,还没有里找到,说明不存在该航班。否则,输出该航班的所有信息。包括航班号、飞机号、终点站、星期、总票数、剩余票数、候补票数。

提示用户输入用户的姓名、终点站、和飞行日期。当用户所输入的终点站和飞行日期与航班本身的内容相同时,退出循环。否则,将指向航班的指针变量循环后移,退出循环时,节点指针为空时,输出该航班不存在;若该节点指针不为空,提示用户输入所需订所需订票数,用一个变量sum保存该航班已存的票数,用来分配座位号。

如果余票量减去乘客所需要定的票数小于零,则显示余票不足的信息。提示用户,是否改变定票数,如果改变,重新输入订票数,如果输入的票数还是大于余票数,则要求重新输入,直到所输入的票数小于余票量为止,否则一直要求输入。退出循环的时候,将票数赋值给该乘客的订票数。

再用一重循环为乘客安排座位号,并输出座位号。此时的余票量为自减定票数。乘客结构体指针后移。

定义指向 customer类型的指针c,将全局定义的指向结构体coustomer类型的后继赋值给c,用一个指针c1来保存的初始值。这样做的作用是使得指针c一直都是指针c1的后继。当c不为空时,将c和c1都指向后一个节点。

退出循环时,若c 为空时,输出无此人订票信息。若不为空, 提示用户输入终点站和日期,当指向航班结构体的指针不为空时,如果该节点所指向的终点站和日期都与输入航班信息的终点站和日期都相同时,结束循环,输出乘客的信息。否则,则指向下一个航班,直到找到相等的为止,输出用户的信息。

如果,航班的剩余量大于等于0,则输出该用户的订票数,否则就输出候补订票数。若真的要退票,则释放该节点的空间。

定义两个string的变量,即航班号和飞机号。定义两个航班号的指针s,q。将s指向第一个节点,q指向头结点。

输入航班号和飞机号,判断所输入的是否等于第一个航班的航班号和飞机号,如果不相等,两个指针向后移,继续判断s、q所指向的节点的航班号和飞机号是否相等。退出循环时,若s为空,则输出该航班不存在;否则,删除该航班节点。

输入一个指向航班节点的航班号、飞机号、终点站、飞行日期、总票数,如图5. 1-1所示。

图5. 1-1

选择y或y后,再次输入一条航班信息,如图5. 1-2所示。

图5. 1-2

输出所有航班的终点站、航班号、飞机号、飞行日期、余票数,如图5. 2-1所示。

图5. 2-1

这里,只设计了通过终点站来查询航班,而不能有相同的终点站出现,要是有相同的终点站,只显示第一个航班信息,如图5. 3-1所示。

图5. 3-1

输入乘客的姓名、终点站、飞行日期,只有当乘客的终点站和飞行日期同时为一个航班所有时才存在此航班,否则,将输出该航班不存在。

乘客输入的终点站和飞行日期不是同一个航班时,如图5. 4-1所示。

图5. 4-1

乘客输入的终点站和飞行日期是同一个航班时,如图5. 4-2所示。

图5. 4-2

当乘客所定的票数大于该航班最大量票时,提示乘客输入错误,请重新输入,如图5. 4-3所示。

图5. 4-3

提示乘客再次输入,直到输入的数小于或者等于该航班的总票数,为乘客分配座位号,如图5. 4-4所示。

图5. 4-4

当输入的订票数大于余票数时,提示乘客是否改变余票量。当改后的订票量小于余票量时,为乘客分配座位号,如图5. 4-5所示。

图5. 4-5

改变乘客所需订票量后,航班中的余票量会减少,如图5. 4-6所示。

图5. 4-6

若选择的是候补,则输入候补信息,包括候补人的姓名、票数,如图5. 4-7所示。

图5. 4-7

输入候补信息后,显示航班信息,如图5. 4-8所示。

图5. 4-8

需要输入乘客的姓名,输入姓名后,将显示该乘客的详细信息,包括航班号、飞机号、终点站、飞行日期、订票数。如图5. 5-1所示。

c语言课程设计报告 课程设计报告

周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...

C课程设计报告

题目各类图形面积与周长计算和高考倒计时。学生姓名张磊 学号 20131344054 学院计算机与软件学院 专业软件工程 指导教师马瑞。二 一五年六月 25 日。目录。1 引言 1 1.1 系统开发背景和意义 1 1.2 服务器运行环境 2 1.3 课题内容 2 2 系统需求分析及相关技术介绍 2 2...

C 课程设计报告

c 程序课程设计报告。学院 资源与安全工程学院 专业班级 城市地下空间工程1303 姓名卢途。指导教师 彭述权。课程设计时间 2013 2014学年第二学期18 19周。一 题目一 设计一 学生成绩管理系统 它的主要功能是对学生的成绩进行输入 修改和管理。系统功能要求 界面要求 学生成绩管理系统 1...