东华大学 数据结构课程设计

合集下载

东华大学数据结构上机实验报告

东华大学数据结构上机实验报告

东华大学信息科学与技术学院实验报告实验名称:线性表的基本操作指导教师:学生姓名:学生学号:实验日期:2012/11一、实验目的1、熟悉C或VC++语言上机环境。

2、会定义线性表的顺序存储结构和链式存储结构。

3、熟悉顺序表和单链表的一些基本操作和应用。

4、加深对线性表的理解,逐步培养解决实际问题的编程能力。

二、实验环境运行C或VC++的微机。

三、实验内容:分别使用顺序表和单链表存储结构实现以下操作:1.建立线性表L={12,13,21,24,28,31,42,77};2.在第5个元素之前插入26;3.删除第5个元素28;4.查找28。

四、实验设计思路及算法流程(一)使用顺序表实现操作:建立顺序表,完成顺序表的基本操作:初始化、插入、删除、输出、查找元素、判线性表是否为空;问题分析:利用顺序表,设计一组输入数据,能够对顺序表进行如下操作:创建一个新的顺序表,实现动态空间分配的初始化;已给定的值插入到指定位置和删除指定位置的值,形成有序顺序表;按值查找,根据给定数据元素的值,查找该元素的位置,对查找结果进行返回;实现顺序表的各个元素的输出;“初始化算法”的操作结果:构造一个空的顺序线性表,对顺序表的空间进行动态管理,实现动态分配、回收和增加存储空间;“位置插入算法”的初始条件:顺序线性表L已存在,给定的元素位置为i,且1≤i≤ListLength(L)+1 ;其操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1;“位置删除算法”的初始条件:顺序线性表L已存在,1≤i≤ListLength(L) ;其操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 ;“输出算法”的初始条件:顺序线性表L已存在;其操作结果:依次对L的每个数据元素进行输出;“按值查找算法”初始条件:顺序线性表L已存在,元素值为e;其操作结果:返回L 中数据元素值为e的元素位置;线性表的顺序存储结构的定义及其基本操作的参考程序(顺序表)文件一:pubuse. h 是公共使用的常量定义和系统函数调用声明。

东华大学电子信息科学与技术 培养方案

东华大学电子信息科学与技术 培养方案

电子信息工程专业(卓越工程师培养计划班)发布时间:2011-12-22总体培养目标面向国家信息化战略规划,德智体全面发展,掌握电子信息工程学科的相关理论基础,获得工程师良好训练,能胜任电子信息系统工程项目的分析、设计、开发、维护、管理,具有继续学习能力、创新能力、国际视野、跨文化沟通能力和团队意识的卓越电子信息人才。

通过本科阶段的培养使学生掌握电子信息工程领域扎实的理论基础和较宽的专业知识、具有团队精神和创新意识、具有国际交流能力的电子信息工程型人才;经过工程实践能力的重点训练,使其成为能从事通信系统、智能化仪器仪表、信息电子和消费类电子系统与装置的设计、研制、开发、运行的高级工程技术人才。

主要课程除工科类本科公共基础课、技术基础课外,还开设了创新思维与方法、专业导论等课程。

主要专业基础课和专业课有: 电路分析、模拟电子技术、数字电子技术、通信电子电路、信号与线性系统、电磁场与电磁波、通信原理、单片机原理与实践、数字信号处理、嵌入式原理与应用、面向对象程序设计、感测技术、计算机通信网、随机信号分析、数字图像处理、先进电子系统分析与设计、锁相与频率合成、天线与电波传播、电磁兼容原理和技术、电子专业前沿课程、射频与微波电路设计、无线移动通信、可编程ASIC技术、无线传感网络原理与应用、DSP技术、信息采集与处理技术。

主要实践环节工程训练、C语言程序设计上机、认识实习(电工电子)、数据结构课程设计、电路实验、信号与系统课程设计、电子技术实验、电子技术课程设计(分散)、微机系统及应用课程设计、微机系统与应用实验、数字信号处理综合实验、高频电子线路实验、通信原理实验、企业认识实习、电子信息系统设计、专业综合实习、毕业设计(论文)。

通信工程专业培养目标本专业培养掌握通信科学基础理论与技术以及电子科学、计算机科学、控制科学的一般理论与技术,能在通信领域及相关领域中从事通信与信息系统研究、设计、制造、运营及在国民经济各部门从事开发、应用通信技术与设备的高级通信工程技术人才。

东华理工大学C++课程设计(哈夫曼树)

东华理工大学C++课程设计(哈夫曼树)

《数据结构与算法设计》课程设计报告题目:哈夫曼树及其应用学生姓名:刘信宏学号: ************班级: 1121808指导教师:**2013年1 月11 日数据结构课程设计任务书使用班级:1121805-8/1121813-16/1121821-22使用时间:2012-2013学年第1学期一、课程设计目的本课程设计的目的考察学生对常见数据结构及相关算法的综合应用能力,达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,解决实际问题中数据的合理存储表示,并根据相应的存储结构设计效率较高的算法实现对问题的求解;通过此次课程设计进一步培养学生良好的程序设计技巧和分析问题解决问题的能力。

二、课程设计题目哈夫曼树及其应用设计目的:熟悉树的各种存储结构及其特点。

掌握建立哈夫曼树和哈夫曼编码的方法及带权路径长度的计算。

设计内容:欲发一封内容为AABBCAB ……(共长100 字符,其中:A 、B 、C 、D 、E 、F分别有7 、9 、12 、22 、23、27个)的电报报文,实现哈夫曼编码和译码。

设计要求:分析系统需求。

建立哈夫曼树。

进行哈夫曼编码,并求出平均编码长度。

译码。

对编码好的内容进行译码。

三、课程设计要求:1、每人一题,且需独立完成。

2、每人的设计程序必须为可执行的exe文件,且需指导教师验收合格。

学生程序必须在课程设计的最后一天交由指导教师验收合格。

过期不再验收程序,如程序验收不合格或在规定时间内未经指导教师验收,则视为该生程序没有完成。

3、每人必须在规定时间内到机房做程序,指导老师将严格考勤,上机期间严禁做与课程设计无关的事情。

指导教师将随时抽查。

4、每人必须撰写课程设计报告并上交纸质稿(格式附后)。

5、上交材料包括课程设计报告电子稿和程序代码电子稿(每位同学先建立一个文件夹,取名规则为“学号姓名”,文件夹里存放上交电子内容,分别是“学号+姓名+报告”和“学号+姓名+程序”,每班取一文件夹名,取名规则为班级号,内放该班同学上交内容,每班学习委员统一收齐后拷贝给指导老师。

数据结构课程设计实验指导书20111222

数据结构课程设计实验指导书20111222

钱六:80*100/100=80分
3
如果某小组无此表格,则每个成员的贡献度按100计算。 如果某小组的贡献度平均值大于100,则降低组长的贡献度, 使得平均值为100。 1.6 注意事项: 1、 迟到3次或缺席一次,成绩下降一个档次,迟到6次或缺席2 次,成绩再下降一个档次,依次类推。 2、 上机时发现玩游戏一次,成绩下降一个档次,玩游戏二次, 成绩再下降一个档次,依次类推。 3、 课程设计开始前,各班的同学在班内自由组合,形成小组, 每小组自行推荐小组长一人,在课程设计开始的第一天上交 组长名单、小组组员名单,名单上注明班级、学号、姓名。 1.7 参考书目 [1] 严蔚敏等著, 数据结构(C语言版), 清华大学出版社
为了更好地配合数据结构课程的实践,特编写此课程设计指导 书。 1.1 指导思想
本次课程设计的指导思想是: 1、学习获取知识的方法; 2、提高发现问题、分析问题和解决实际问题的能力; 3、加强创新意识和创新精神; 4、加强团队的分工与合作; 5、掌握面向实际背景思考问题的方法。 1.2 设计任务 本次课程设计任务主要分为个人任务和小组任务两种。 个人基本任务: 完成第2章以及第3章中的设计任务,其中选做题不是必须完成的 任务。
数据结构课程设计
实 验 指 导 书
东华大学计算机科学与技术学院
2011 年 12 月
0
目录
1. 前言.............................................................................................................................................1 2 顺序表与链表.................................................................................................................................5

东华大学c语言课程设计

东华大学c语言课程设计

东华大学c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生独立编程和解决问题的能力。

具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、关键字、数据类型、运算符、控制结构、函数等基本概念。

2.技能目标:学生能够熟练使用C语言进行程序设计,掌握常用的调试技巧,能够独立解决编程过程中遇到的问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生自主学习、合作交流的能力,培养学生的创新意识和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。

具体安排如下:1.C语言基本语法:介绍C语言的基本数据类型、运算符、控制结构、函数等。

2.数据结构:讲解数组、链表、栈、队列等基本数据结构及其应用。

3.算法:介绍常用的排序算法、查找算法、递归算法等。

4.编程思想:培养学生面向对象编程的思想,讲解面向对象编程的基本概念和方法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师通过讲解、演示、举例等方式,向学生传授C语言的基本知识和编程技巧。

2.讨论法:学生进行小组讨论,引导学生主动思考、提问,培养学生的合作交流能力。

3.案例分析法:分析典型的编程案例,让学生学会分析问题、解决问题的方法。

4.实验法:安排实验课程,让学生动手实践,巩固所学知识,提高编程能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。

2.参考书:提供一些有关C语言编程的参考书籍,供学生拓展阅读。

3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。

4.实验设备:准备计算机、网络等实验设备,为学生提供实践编程的环境。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。

数据结构课程设计(1)

数据结构课程设计(1)

课程设计 pp-6
数据结构
题目2 迷宫问题
课程设计
问题描述:
以一个m*n的长方阵表示迷宫,0和1分别表示迷宫 中的通路和障碍。迷宫问题要求求出从入口(1,1)到 出口(m,n)的一条通路,或得出没有通路的结论。
基本要求:
首先实现一个以链表作存储结构的栈类型,然后 编写一个求迷宫问题的非递归程序,求得的通路以三元 组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的 一个坐标, d表示走到下一坐标的方向。
基本要求:
1、待排序表的表长不小于100;
2、至少要用5组不同的输入数据作比较;
3、排序算法不少于5种;
4、最后要对结果作简单的分析。
测试数据:
用伪随机数产生程序产生。
选作内容:
对不同的表长做试验分析两个指标相对于表长变 化关系。
pp-12
实现要点
数据结构
题目1 多项式的算术运算
多项式相加
p(x)=3x14−8x8+6x2+2 q(x)=2x10+4x8−6x2
9 操作说明 说明使用本软件的操作方法。
10 总结 在总结中可谈本人的心得体会及软件 进一步改进的方向等项内容。
11 参考文献
12 附录
pp-4
数据结构
题目1 一元多项式计算器
课程设计
问题描述:
设计一个稀疏多项式简单计算器
基本要求:
(1) 输入并分别建立多项式A和B。
(2) 输入输出多项式,输出形式为整数序列:
数据结构
课程设计
课程设计
pp-1
数据结构
时间: 完成方式: 考核方式: 考核形式:
课程设计
二周。 一人一题。 考查。 检查:上机运行、检查结果; 答辩:对程序提问、回答问题; 提交:原程序清单、课程设计报告。

数据结构课程设计-运动会分数统计系统

数据结构课程设计-运动会分数统计系统

运动会分数统计系统Ø 设计内容1. 任务:参加运动会有n个学校,学校编号为1~n。

比赛分成m个男子项目,和w个女子项目。

项目编号为1~m,女子为m+1~w。

不同的项目取前5名或前3明积分;取前5名的积分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由学生自己决定。

(m<=20,n<=20)。

2. 功能要求:1) 可以输入各个项目的前3名或前5名的成绩;名的成绩;2) 能统计各个学校总分;能统计各个学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前3或前5名的学校。

名的学校。

Ø 设计思路1. 系统结构设计图运动会SportsMeeting东华University交大University……比赛项目集合SportEvents 项目1 Event项目2 Event…………复旦University运动会分数统计系统结构设计图2. 思路分析1) 从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的比赛项目。

然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参加某个比赛项目。

加某个比赛项目。

2) 首先,在上述结构图中,比赛项目Event 是最小的数据存储基本单元。

比赛项目集合SportEvents 可以理解为Event 数组,包含了所有的比赛项目。

根据约束,只要有学校University 参加运动会,此学校就包含了一个SportEvents 集合,即为每个学校分配自己的项目成绩单。

有n 个学校报名参加了运动会SportsMee ng ,大会的工作人员根据比赛项目结果统计各个学校的成绩。

赛项目结果统计各个学校的成绩。

因此,因此,这种设计结构有3层包含关系,层包含关系,但是每一部分但是每一部分相互独立,耦合性弱。

东华大学数据结构设计C语言航空订票系统

东华大学数据结构设计C语言航空订票系统

char start_time[20]; /*起飞时间*/
char arrive_time[20]; /*到达时间*/
float price; /*票价*/
float discount; /*折扣率*/
int ticketnum; /*总票数*/
int ticketleft; /*剩余票数*/
}air[A];
五、概要设计……………………………………………………(5)
5.1 系统的流程框图…………………………………………(5) 5.2 系统各函数的功能、相互调用关系 …………………(6)
六、详细设计……………………………………………………(8)
6.1 各变量的定义和作用 ………………………………(8)
6.2 系统各函数的功能 …………………………………(8) 七、调试分析……………………………………………………(21) 八、用户手册 …………………………………………………(22) 九、测试结果……………………………………………………(22) 十、心得体会与参考文献………………………………………(22)
} //调用管理员账户信息 else cout<<"密码错误!!! 重新选择按键"<<endl;
break; } case 2://登陆客户账户
{ system("cls"); /*清屏功能,美化界面*/
customermenu(); break; }
case 0://登陆客户账户 {
exit(0); break;
●尽量达到系统操作过程中的直观、方便、实用、安全等要求。 ●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未 参与开发的技术维护人员补充、维护。 ●系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录设计题目一航空订票系统任务 (2)功能要求 (2)需求分析 (2)概要设计 (3)详细设计 (5)调试分析 (13)用户手册 (14)测试结果 (14)设计题目二哈希表查找的设计任务 (19)功能要求 (19)需求分析 (19)概要设计 (19)详细设计 (20)调试分析 (24)用户手册 (25)测试结果 (25)设计题目一航空订票系统任务航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。

试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。

功能要求1) 录入:可以录入航班情况2) 查询:可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票:可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。

需求分析宏观需求分析1)采用现有的软硬件环境及先进的管理系统方案,从而达到充分利用现有资源,提高系统应用效果的目的。

2)尽量达到系统操作过程中的直观、方便、实用、安全等要求。

3)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。

4)系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。

具体需求分析菜单是应用程序中非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。

1)录入航线信息编写void input()函数来输入全部航线信息。

其中调用了int check(char s[])函数,该函数的功能是检查信息是否重复;以及void save()从而存储全部航线信息。

2)按航班号查询航班信息编写void search_num()函数来实现查询航班信息的宫呢个。

这个函数中需要输入要查询的航班号,通过void search_num()函数来寻找这个航线然后输出该航线的全部信息。

3)按航线查询航班信息编写void search_line()函数来实现查询航线的功能。

用户输入出发城市以及抵达城市名后,该函数会在航线信息链表中进行查询。

如果有该城市,则会输出此航线的信息。

4)办理订票业务编写void booking()函数来实现订票功能。

首先提示用户输入个人及航班号,然后查找此航班,如果该航班存在,则会提示用户输入订单信息,在订票乘员名单域中添加客户信息。

5)办理退票业务编写void cancel()函数来实现退票功能。

首先提示用户输入订单编号,然后查找此订单,如果该订单存在,则提示退票成功并将乘员信息中的该乘员信息删除,修改航班的剩余票数信息。

6)查询客户资料编写void search_customer()函数来实现客户资料查询功能,输出订单编号、客户姓名、证件号、订票量以及航班号。

7)修改航班信息编写void edit()来实现修改航班信息的功能。

在检查输入航班号与原航班号不重复之后输入航班号的全部信息并保存。

8)退出系统用户在菜单页面下输入8回车即exit(0),即可退出系统。

概要设计typedef struct Flight//航班信息{char FlightNumber[20];//航班号char SPlace[20];//出发城市char DPlace[20];//到达城市char SEtime[20];//起飞--降落时间int price;//价格int discount;//折扣率(%)int total;//总票数int left;//剩余票数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//客户姓名char ID[20];//证件号char FlightNumber[20];//航班号int num;//订票数量}Order;void duqu()//读取文件信息char menu()//菜单void save()//录入信息void input() //输入航班信息int check(char s[])//检查是否重复void search_num()//航班信息查询(按航班号)void search_line() //航班信息查询(按路线)void booking()//订票void cancel()//退票void search_customer()//客户资料查询void edit()//修改航班信息int main()库函数:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<malloc.h>程序调用关系:save()check() main() search_num()duqu() menu() input()search_line() save()详细设计#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<malloc.h>#define N 100//最大容量#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef struct Flight//航班信息{char FlightNumber[20];//航班号char SPlace[20];//出发城市char DPlace[20];//到达城市char SEtime[20];//起飞--降落时间int price;//价格int discount;//折扣率(%)int total;//总票数int left;//剩余票数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//客户姓名char ID[20];//证件号char FlightNumber[20];//航班号int num;//订票数量}Order;int i,j;int air_num=0;//航班数int order_num=0;//订单数char t;//获取客户选择的变量char filenamef[]="flight.txt";//航班文件名char filenameo[]="order.txt";//订单文件名Flight fl[N];Order od[N];int check(char s[]);void duqu()//读取文件信息{FILE *fp;if((fp=fopen(filenamef,"r"))!=NULL)//打开文件读取航班信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%s%s%s%s%d%d%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i].DPlac e,&fl[i].SEtime,&fl[i].price,&fl[i].discount,&fl[i].total,&fl[i].left);//fscanf 用于从文件读入数据if(!feof(fp))//feof(fp)返回0才可进行对文件的操作i++;}air_num=i;//航班数量fclose(fp);//关闭文件}if((fp=fopen(filenameo,"r"))!=NULL)//打开文件读取订单信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od[i].Fli ghtNumber,&od[i].num);if(!feof(fp))i++;}order_num=i;//订单数量fclose(fp);//关闭文件}}void save()//录入信息{FILE *fp;//定义标准数据结构,用于文件if((fp=fopen(filenamef,"w"))!=NULL)//打开文件保存航班信息(fopen标准函数,打开磁盘文件flight.txt,用于读,送返指针,指向FILE类型对象){for(i=0;i<air_num;i++)//写入文件{fprintf(fp,"%s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);}fclose(fp);//关闭文件}if((fp=fopen(filenameo,"w"))!=NULL)//打开文件保存订单信息{for(i=0;i<order_num;i++)//写入文件{fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].Fli ghtNumber,od[i].num);}fclose(fp);//关闭文件}}void input()//输入航班信息{for(i=air_num;i<N;i++){printf("请输入航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=1)//检查是否重复{printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("出发城市:");gets(fl[i].SPlace);printf("到达城市:");gets(fl[i].DPlace);printf("起飞时间--到达时间:");gets(fl[i].SEtime);printf("价格:");scanf("%d",&fl[i].price);printf("折扣率(%%):");scanf("%d",&fl[i].discount);printf("总票数:");scanf("%d",&fl[i].total);printf("剩余票数:");scanf("%d",&fl[i].left);getchar();//消除回车air_num++;//航班数加1printf("航班信息录入完成! 继续录入?(Y/N):");while(1){t=getchar(); //输入一个字符型数据,把值赋给变量tgetchar(); //消除上一步产生的回车符if(t=='y' || t=='Y' || t=='n' || t=='N')break;elseprintf("请重新输入:");}if(t=='n' || t=='N')break;}save();//保存}int check(char s[])//检查是否重复{int g=0;for(;g<air_num;g++)if(strcmp(fl[g].FlightNumber,s)==0 && g!=i)//对比是否相同相同就说明重复了return g;//表示重复了return 1;//遍历了整个数组都没发现重复的表示没有重复}void edit()//修改航班信息{char s[100];printf("请输入要修改的航班号:");gets(s);for(i=0;i<air_num;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==air_num){printf("没有您输入航班信息,请按回车键返回!");getchar();return;}printf("请输入新的航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=1)//检查是否重复{printf("航班号重复,请重新输入:"); //检查后发现重复gets(fl[i].FlightNumber);}printf("请更新下列信息:\n");printf("出发城市:");gets(fl[i].SPlace);printf("到达城市:");gets(fl[i].DPlace);printf("起飞时间--到达时间:");gets(fl[i].SEtime);printf("价格:");scanf("%d",&fl[i].price);printf("折扣率(%%):");scanf("%d",&fl[i].discount);printf("总票数:");scanf("%d",&fl[i].total);printf("剩余票数:");scanf("%d",&fl[i].left);getchar();//消除回车save();//保存printf("修改成功!\n");system("pause");//任意键继续}void booking()//订票{i=order_num;printf("请输入您的姓名:");gets(od[i].PName);printf("请输入您的证件号:");gets(od[i].ID);printf("请输入订票的航班号:");gets(od[i].FlightNumber);for(j=0;j<air_num;j++)if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//对比是否相同break;if(j==air_num)//表示航班不存在{printf("航班号不存在!请按回车键返回!");getchar();return;}printf("请输入订票数量:");scanf("%d",&od[i].num);fl[j].left-=od[i].num;//新的剩余票数printf("请输入订单编号:");scanf("%d",&od[i].OrderNumber);getchar();//消除回车order_num++;//订单数加1save();//保存到文件printf("订票成功!\n");system("pause");//任意键继续}void cancel()//退票{int num;printf("请输入要退票的订单编号:");scanf("%d",&num);getchar();//消除回车for(i=0;i<order_num;i++)if(od[i].OrderNumber==num)//检查是否存在订单编号break;if(i==order_num){printf("订单不存在!请按回车键返回!");getchar();return;}j=check(od[i].FlightNumber);//获取航班的下标fl[j].left+=od[i].num;//新的剩余票数od[i]=od[order_num-1];//最后一条订单覆盖退票的订单order_num--;//订单数减1save();//保存printf("退票成功!\n");system("pause");//任意键继续}void search_num()//航班信息查询(按航班号){char s[100];printf("请输入要查询的航班号:\n");gets(s);for(i=0;i<air_num;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==air_num){printf("航班号不存在!请按回车键返回!");getchar();return;}printf("查询成功!\n\n");printf(" 航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%) 总票数剩余票数\n");printf(" %s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);printf("********************************************************************* *****\n");printf("\n");system("pause");//任意键继续}void search_line() //航班信息查询(按路线){char s[20],e[20];int flag=0;printf("请输入要查询的路线的起点:");gets(s);printf("请输入要查询的路线的终点:");gets(e);printf("查询成功!\n\n");printf(" 航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%) 总票数剩余票数\n");for(i=0;i<air_num;i++)//查找信息if(strcmp(fl[i].SPlace,s)==0 && strcmp(fl[i].DPlace,e)==0) {printf(" %s %s %s %s %d %d %d %d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discou nt,fl[i].total,fl[i].left);}printf("********************************************************************* *****\n");printf("\n");flag=1;//标记找到了信息if(flag==0){printf("航班信息不存在!\n");}system("pause");//任意键继续}void search_customer()//客户资料查询{printf(" 订单编号客户姓名证件号订票量航班号\n");for(i=0;i<order_num;i++)//查询是否存在输入的信息{printf(" %d %s %s %d %s\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].num,od[i].FlightNumber);}printf("******************************************************************\n") ;printf("\n");system("pause");//任意键继续}char menu()//菜单{char c;printf(" 欢迎来到航空订票系统!\n");printf(" ** ==>1 录入航班情况**\n");printf(" ** ==>2 航班信息查看(航班号查询)**\n");printf(" ** ==>3 航班信息查看(站站查询)**\n");printf(" ** ==>4 订票**\n");printf(" ** ==>5 退票**\n");printf(" ** ==>6 客户资料**\n");printf(" ** ==>7 航班信息修改**\n");printf(" ** ==>8 退出**\n");printf("请选择功能:\n");c=getchar();getchar();//消除缓存中的换行符return c;}int main(){duqu();//读取文件信息while(1){t=menu();//获取选择switch(t){case '1': input(); break;//航班信息录入case '2': search_num(); break;//航班信息查询(按航班号)case '3': search_line(); break;//航班信息查询(按路线)case '4': booking(); break;// 订票case '5': cancel(); break;// 退票case '6': search_customer(); break;// 客户资料case '7': edit(); break;//航班信息修改case '8': exit(0);//退出}}}调试分析1)考虑将数据保存在文件中,这样可以防止数据全部存储在内存中造成的丢失现象,以及实现数据的及时存储功能。

相关文档
最新文档