数据结构课程设计

发布 2022-10-05 01:17:28 阅读 6049

华北科技学院。

课程设计说明书。

专业网络工程。

课程名称: 数据结构课程设计班级: 网络b10

姓名学号:

设计题目飞机售票系统。

设计时间: 2012-2-27 至 2012-3-9

评语。评阅成绩:__评阅教师。

一、设计题目与要求。

任务:通过此系统可以实现如下功能:

1、录入功能:

可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。

2、定票功能。

可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。

3、退票功能。

可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。

4、删除功能。

可以退票并且记录乘客的相关信息以及退票信息。

5、增加航线功能。

可以根据需要由管理员对航班信息进行修改更正。

6、查询功能。

可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,确定航班是否满仓)。

7、修改航线模块功能。

当航班信息改变可以修改航班数据文件。

二、概要设计。

每个模块的算法设计说明如下:

1)录入模块:

查找单链表的链尾,在链尾插入一个“航班信息”的新结点。

2)订票模块:

查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。

3)退票模块:

输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。

4)删除模块:

确认是否有该航班信息再进行修改,有则在航班信息链表中查找要删除的结点,进行删除,否则不能删除。

5)增加航线模块:

查找单链表的链尾,在链尾插入一个“航班信息”的新结点。

6)查询模块:

提供三种查方式:按航班号、起飞地点和日期查询,1代表按航班号查询,2代表按日期查询,3代表按起飞抵达地点查询。0则表示退出查询。

顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。

7)修改模块:

确认是否有该航班信息再进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。

三、算法设计。

1.存储结构设计:

1) 航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞日期、起飞时间、每个航班的机票总数、起飞地点、抵达地点、机票余量。

单链表如下:

每个结点包括数据域和指针域:

c语言描述如下:

typedef struct airticket //建立航班数组结构

int air_num;//航班号

char day[50];/起飞日期

char time[50];/起飞时间

int count;//每航班的机票总数

char start[50];/起飞地点

char ends[50];/抵达地点

int left;//机票余量

struct airticket *next;//指针

airticket;

2) 客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和所定机票数四个数据项:

每个结点包括数据域和指针域:

c语言描述如下:

typedef struct customer

int air_num;//航班号

char idcard[25];/客户身份证号

int ticket_num;//每个客户所订的机票数

char name[8]; 客户姓名

struct customer *next;//指针

customer;

2.详细设计:

1.建立客户链表插与插入客户数据。

2.建立航班链表信息。

3.删除航班信息。

4.插入新航班信息。

5.查询航班信息。

6.订票。7.退票。

8.修改航班信息。

四、运行结果和调试分析。

创建航班信息:

菜单显示:订票:

删除航班:退票:

增加新航班:

以下三幅图分别是。

1、按航班号查询请按。

2、按日期查询请按

3、按起飞抵达地点查询请按

修改航班信息。

浏览所有客户信息。

查询所有航班信息。

五、总结体会。

学期实的课程设计是老师命题,学生可以选择老师的题目给出的题目中选一个,并且自己找程序。

在这次的课程设计中我选择了飞机售票系统,之所以使用飞机售票系统作为我们的执行核心,不仅是因为飞机售票系统现在是社会上应用比较多的程序,也因为想通过使实用设计飞机售票系统锻炼自己的编程能力,养成良好的c语言编程风格。不管怎样,这些都是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。

在这次课程设计实验中我遇到了很多的困难:调试是程序设计中最重要的一环,他几乎决定了程序优劣。现将我调试时遇到的一些问题及其解决的方法的记录陈列如下以供学习与交流:

我将调试时遇到的一些问题分为几大类:

1)、语法错误:

语法错误相对来说要好调试一些的,但有一点需要特别指出:是应该用规范化的格式输入源程序,二是应该注意函数的实参与形参的传递问题,要尽量保持两者类型的匹配,(当不匹配又可通过编译时会发生数据类型的隐式转换,这样会产生很多不安全且又很难找到的错误)例如我在执行退票环节的时候,把名字输成了“jinzaizhong”远远大于我定义的char name[8] ,所以执行时,总会退票不成功。

2)、逻辑错误:

在编译错误为0的情况下,不要高兴的太早,这只是你调试程序的第一步,此时也要关注一下警告warning,每一个warning都有他一定的道理。当你修改的只剩下一些无关紧要的时,你才可以连接运行你的程序了。这其**现的一些逻辑错误才是调试的难点所在。

3)**不能硬敲进去:

因为程序的功能相对不够齐全,所以在原来的基础上我又生硬的敲进去,根本就不能执行,所以敲**的时候,不能只顾头不顾尾,要考虑到这个程序的整体效果。

4)名字冲突的不安全性:

名字,特别是函数名、数据类型名经常与自己定义的名字或系统的,包括库里面的名字相同,解决的方法是尽量用能表达意思且系统不太可能出现的名字命名。(仅在当两个相同的标识符在同一个作用域时才会出现此问题。

5)出错不能只在程序里面找:

我在运行程序的时候,发现程序总有一个错误,因为看不懂,所以找了同学讲解,但是在同学的电脑上面发现,自己的程序运行的反而没有错误,后来才发现是自己的编程软件出了问题。

设计收获及心得体会:

这几天编程发现了几个有趣的结论:

1、编程的真正吸引力可与玩游戏相媲美

在做课程设计的这两个星期,除了吃饭外没有一刻不是在电脑前的,晚上睡觉想着它,早上7点起床摆弄它。尤其是在调试时找一个错误用了几个小时仍未找到却忽然醒悟或找的那一刻的感觉实在太好了。

2、真正的程序不只是“运行”了!

真正可称得上“好程序”是要满足一大堆的条件的。可读性、健壮性、可维护性、高效性等等等等条件。其实大部分功能我早就已经实现了,(只用了两天),但其后的测试、修改、完善和现在的设计报告也用了不少的时间。

要提高自己的编程能力,你必须亲自去体验、去设计、编辑、编译、调试、运行。在此之前,我也以为自己对c语言已经比较懂了,可还是遇到了一系列问题,也学到很多东西。每一个程序员都是在失败、尝试、失败、尝试与收获中成长起来的。

我认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。

要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

认真对待每一个实验,珍惜每一分一秒,学到最多的知识和方法,锻炼自己的能力,这个是我们在实时编程试验上学到的最重要的东西,也是以后都将受益匪浅的!

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...