版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计课程设计报告 I课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 班级学号: 指导教师: 完成日期: 6 月 20 日 高级语言程序设计课程设计报告 II目 录1 课程设计目的与要求.12 问题描述 .23 总体设计 .33.1 功能分析.33.2 系统主要使用的函数.33.3 系统使用的主要数据结构.44 详细设计 .64.1 程序总体结构图.64.2 程序流程图.65 功能测试 .85.1 航班售票系统.86 程序设计调试情况(程序设计及调试过程中碰到的问题及解决的方法).127 课程设计小结 .13参考文献.14附录 系统源程序.15高级语言程序设计课程设计报
2、告 11 课程设计目的与要求高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言 C 语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。课程设计是在学生已经具备了使用 C 语言编写简单的应用程序的能力,为使学生对 C 语言有更全面的理解,进一步提高运用 C 语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节,培养学生的探索精神和创新能力。通过答辩训练学生的综合表达能力。参加本课程设计的学生,应当认真完成本
3、课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面: 程序的总体设计和算法分析。 程序流程图、函数说明 源程序代码清单 测试数据和测试过程记录 遇到的问题及解决方法分析 课程设计小结高级语言程序设计课程设计报告
4、22 问题描述航班售票系统:(1)系统以菜单方式工作(2)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。(3)查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。 (4)订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。(5)退票:按乘客要求退出已预定的机票。高级语言程序设计课程设计报告 33 总体设计3.1 功能分析系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现航班的管理,同时对操作结果在计算机中做永久保存。 )3.1.1 航班售票系统(1)订票功能:此功能是
5、Reserve 函数来实现的,里面嵌套调用了 3 个函数Deletereturn,Addcustomer,WriteCustomer,(2)退票功能:我用的是 ReturnTicket 函数来实现的,里面嵌套调用了 3 个函数AddReturn,DeleteCustomer,WriteCustomer,(3)修改航线功能:在实现这个功能的时候,必须有航线的增加,取消,和修改三个不同的功能,所以我编写了 3 个不同的函数,AddAirFlight,DeleteAirFlight,ChangeAirFlight,(4)查询航班及乘客信息功能WriteCustomer 的作用在本部分当中体现,它用来
6、输出客户的信息,在 Init 函数中,我事先置入了 3 个默认的乘客,分别是我们小组的 3 个人,OutInfo 函数则输出了所有航班的信息3.2 系统主要使用的函数int Reserve(char name,int airNum,int i) /*订票系统函数*/void ReturnTicket (int i,int airNum,int seat) /*退票系统函数*/int DeleteReturn(AirFlight *p) /*删除退票函数*/void AddReturn (AirFlight *p,int seat) /*添加退票信息函数*/void ChangeAirFligh
7、t() /*修改航线函数*/void DeleteAirFlight() /*删除航线函数*/void DestroyCustomer(CNode *p) /*删除客户信息函数*/void AddCustomer(AirFlight *p,char *name,int airNum,int seat) /*添加客户信高级语言程序设计课程设计报告 4息函数*/void DeleteCustomer(AirFlight *p,int seat) /*删除客户信息函数*/void AddAirFlight() /*添加航线信息函数*/void WriteAirInfo(FILE *fp) /*输出输
8、出航线函数*/void OutInfo() /*输出所有信息*/void WriteCustomer(FILE *fp) /*输出客户文件函数*/3.3 系统使用的主要数据结构typedef struct Return /*定义退票系统的结构体*/int seat;struct Return *next;Return;typedef struct /*定义客户信息的结构体*/char name20;int airNum;int seat;Customer;typedef struct CNode /*定义客户单链表的结构体*/Customer cust;struct CNode *next;C
9、Node;typedef struct AirFlight /*定义航班信息的结构体*/int flight;int plane;int reservation;int availnum;CNode *cHead;Return *rHead;struct AirFlight *next;AirFlight;typedef struct Airline /*定义航线信息的结构体*/高级语言程序设计课程设计报告 5char dest20;AirFlight *head;Airline;Airline airInfo3; /*定义三条航线为全局变量*/高级语言程序设计课程设计报告 64 4 详细设计
10、详细设计4.1 程序总体结构图图图 4-14-1 航班售票系统结构图航班售票系统结构图4.2 程序流程图图图 4-2-14-2-1 航班售票系统中的航班售票系统中的 AddCustomerAddCustomer()()高级语言程序设计课程设计报告 7图图 4-2-24-2-2 航班售票系统中的航班售票系统中的 ChangeAirFlightChangeAirFlight()()图图 4-2-34-2-3 航班售票系统中的航班售票系统中的 operation3operation3()()高级语言程序设计课程设计报告 85 功能测试5.1 航班售票系统图图 5-2-15-2-1 运行后文件中的截图
11、运行后文件中的截图图图 5-2-25-2-2 航班售票系统主菜单航班售票系统主菜单高级语言程序设计课程设计报告 9图图 5-2-35-2-3 订票提示语订票提示语图图 5-2-45-2-4 订票成功订票成功图图 5-2-55-2-5 退票成功退票成功图图 5-2-65-2-6 修改航线提示语修改航线提示语高级语言程序设计课程设计报告 10图图 5-2-75-2-7 增加航线提示语增加航线提示语图图 5-2-85-2-8 增加航线成功增加航线成功图图 5-2-85-2-8 取消航线成功取消航线成功图图 5-2-85-2-8 修改航线成功修改航线成功图图 5-2-95-2-9 显示乘客信息显示乘客
12、信息高级语言程序设计课程设计报告 116 程序设计调试情况(程序设计及调试过程程序设计调试情况(程序设计及调试过程中碰到的问题及解决的方法)中碰到的问题及解决的方法)在程序设计中,我遇到的最大的问题就是结构体变量的定义和链表的运用,应为一开始在学习链表的时候我就感觉到很吃力,所以在编航空售票系统的大程序时,我上网查找了很多资料,有不懂的也去百度,或者在同学之间讨论,至今还有一些不能熟练运用,但和之前相比已经有了很大的进步,我会在今后的学习中进一步巩固。在调试过程中,也有不少的问题。比如,漏加了取地址符,导致程序没有错误而无法运行;字符串输入函数 getchar 的用法出错,导致无法输入菜单命令
13、;头文件的名字和文件名不一致而出错,这是连接时候出现的问题;还有曾遇到,同样一个文件,以.c 的后缀运行时有错,以.cpp 的后缀运行时就没有错了,老师说这涉及到了兼容性的问题。总之,由于粗心大意犯的错误,自己是可以找出来的,实在太隐蔽的,我也就只能求助同学或者老师了。高级语言程序设计课程设计报告 127 7 课程设计小结课程设计小结本次课程设计已经完成,编写好的程序整体上运行与题目要求很吻合,算法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟悉了文件的输入输出操作,也深刻认识到了链表在实际的操作中有多么的难,我会在进一步的学习中
14、,对链表进行深层次的理解。本次程序编写我从简单入手,在进行复杂的编写过程。首先我搜集资料,掌握航空售票系统方面的种种相关知识,其次我们对这个系统应该如何编译作了一个简单的思考和讨论,确定要运用到的知识和相关难点,并对这些难点进行解决,最终到发杂的程序上。回望本次的课程设计,我学到了很多的东西。无论是枯燥的搜集资料,还是一遍遍地调试程序给我带来的疲惫感,都在最终看到程序正常运行的那刻消失殆尽,感受到了努力付出,然后收获硕果的成就感。总结我这周的实训,我学到了很多的知识。不论是理论知识的掌握亦或是实践经验的积累,我都有了进一步的提升。面对科学实践过程中所遇到的难题,我不能退缩,要严谨,认真,无所畏
15、惧地面对它。正如本次的课程设计,编写的过程很艰难,一个小小的错误都会导致最终程序无法正常运行。因此,只有我们每个人认真严谨的完成自己的任务,不出现一丝一毫的马虎,才能获得最后的成功。本以为掌握课本上所教授的理论知识对于我们当代大学生而言就足够了。然而,在实训过后才发现这样的理解是十分错误的。理论知识若没有经过实践的考验,那它便是经不起推敲的。只有把实践和理论结合起来,用理论知识支持实践,用实践来肯定理论知识,才能提高自己的学习能力和动手能力。 在设计的过程中我们遇到了各种各样的问题,也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重
16、新温故,巩固了所学的知识,也能够了解到自己相对薄弱的环节。总而言之,本次实训我真的受益匪浅。小组成员分工:组长: 负责 修改航线信息和查询航班信息 模块组员: 负责 主程序模块高级语言程序设计课程设计报告 13 负责订票、退票 模块高级语言程序设计课程设计报告 14参考文献1. 迟剑,刘艳飞等C 语言宝典北京:电子工业出版社,200962. 李恬,邱小平等C 语言程序设计实训与应用教程北京:清华大学出版社,201023. 黄锐军C#程序设计项目实训教程北京:化学工业出版社,2009104. 耿祥义,张跃平C 语言程序设计实用教程北京:清华大学出版社,201011高级语言程序设计课程设计报告 1
17、5附录 系统源程序#include#include#include#includetypedef struct Returnint seat;struct Return *next;Return;typedef structchar name20;int airNum;int seat;Customer;typedef struct CNodeCustomer cust;struct CNode *next;CNode;typedef struct AirFlightint flight;int plane;int reservation;int availnum;CNode *cHead;R
18、eturn *rHead;struct AirFlight *next;AirFlight;typedef struct Airlinechar dest20;高级语言程序设计课程设计报告 16AirFlight *head;Airline;Airline airInfo3;int Reserve(char name,int airNum,int i)int DeleteReturn(AirFlight *p);void AddCustomer(AirFlight *p,char *name,int airNum,int seat);void WriteCustomer(FILE *fp);F
19、ILE *fp;AirFlight *p;int seat;for(p=airInfoi.head;p&p-flight!=airNum;p=p-next);if(p=NULL) return -2;if(p-availnum=0) return -1;else if(p-rHead!=NULL) seat=DeleteReturn(p); elseseat =p-reservation; p-availnum-; p-reservation+; AddCustomer (p,name,airNum,seat); if(!(fp=fopen(customer.txt,w) puts(对
20、不起,操作有误,无法打开文件customer.txt!); return -2; WriteCustomer(fp); return seat; void ReturnTicket (int i,int airNum,int seat)void AddReturn(AirFlight*p,int seat);void DeleteCustomer (AirFlight *p,int seat);void WriteCustomer(FILE *fp);高级语言程序设计课程设计报告 17FILE *fp;AirFlight *p;for(p=airInfoi.head;p&p-fligh
21、t!=airNum;p=p-next); if(p=NULL) puts(对不起,操作有误,没有找到退票信息!n); else AddReturn(p,seat); p-availnum+;p-reservation-;DeleteCustomer(p,seat); if(!(fp=fopen(customer.txt,w)puts(对不起,操作有误,无法打开文件customer.txt!);return;WriteCustomer(fp); return;int DeleteReturn(AirFlight *p)Return *temp;int seat;temp=p-rHead;p-rH
22、ead=temp-next;seat=temp-seat;free(temp);return seat;void AddReturn (AirFlight *p,int seat) Return *temp;temp=(Return *)malloc(sizeof(Return); if(temp=NULL)高级语言程序设计课程设计报告 18 puts(对不起,操作有误,分配空间失败!); return;temp-seat=seat; temp-next=p-rHead;p-rHead=temp;void ChangeAirFlight() int airFlight,k,changeFlig
23、ht;AirFlight *p;CNode *pC;puts(请输入您所要修改的航线:n);scanf(%d,&airFlight); if(0airFlight&airFlight=300) k=0; else if(300airFlight&airFlight=600) k=1;else if(600airFlight&airFlightflight!=airFlight;p=p-next); if(p!=NULL) puts(请输入您的新航线:n);scanf(%d,&changeFlight);p-flight=changeFlight;for(
24、pC=p-cHead; pC; pC=pC-next) pC-cust.airNum=changeFlight;printf(恭喜!航线 %d 已成功修改成 %d.n,airFlight,p-flight); else printf(对不起,不存在该航线%d!n,airFlight); void DeleteAirFlight() void DestroyCustomer(CNode *p);void DestroyReturn(Return *p);高级语言程序设计课程设计报告 19void OutInfo();int airFlight,k;AirFlight *p,*pre=NULL;p
25、uts(请输入您要取消的航线!n);scanf(%d,&airFlight); if(0airFlight&airFlight=300) k=0;else if(300airFlight&airFlight=600) k=1;else if(600airFlight&airFlightflight!=airFlight;p=p-next) pre=p;if(p=NULL) printf(对不起,不存在该航线%d!n,airFlight);return;if(pre=NULL) airInfok.head=p-next;else pre-next=p-next;D
26、estroyCustomer(p-cHead); DestroyReturn(p-rHead);free(p); printf(恭喜!已成功取消该航线%dn,airFlight);OutInfo(); void DestroyCustomer(CNode *p) CNode *pNext;while(p!=NULL)pNext=p-next;free(p); p=pNext;void DestroyReturn(Return *p) 高级语言程序设计课程设计报告 20Return *pNext;while(p!=NULL)pNext=p-next;free(p); p=pNext;void A
27、ddCustomer(AirFlight *p,char *name,int airNum,int seat) CNode *temp;if(!(temp=(CNode*)malloc(sizeof(CNode) puts(对不起,操作有误,开辟空间失败!n); return;temp-cust.airNum=airNum;temp-cust.seat=seat;strcpy(,name);temp-next=p-cHead;p-cHead=temp;void DeleteCustomer(AirFlight *p,int seat)CNode *temp,*pre
28、=NULL;for(temp=p-cHead;temp&temp-cust.seat!=seat;temp=temp-next) pre=temp;if(temp=NULL) puts(对不起,没有找到相应的客户,请您核对后继续!); return;if(pre=NULL) p-cHead=temp-next;else pre-next=temp-next;free(temp); 高级语言程序设计课程设计报告 21void WriteCustomer(FILE *fp) int i;AirFlight *p;CNode *q;fputs(n,fp);fputs(以下为本航空公司提供的乘
29、客信息:n,fp);for(i=0;inext)fputs(nn,fp);fputs(航班t 座位号t 乘客姓名n,fp);for(q=p-cHead;q;q=q-next)fprintf(fp,%dt%dt%sn,q-cust.airNum,q-cust.seat,);void WriteAirInfo(FILE *fp) int i;AirFlight *p,*q;fputs(n,fp);fputs(以下为本航空公司提供的航班信息:n,fp);for(i=0;inext)高级语言程序设计课程设计报告 22fputs(nn,fp);for(q=p;q;q=q-next)
30、fprintf(fp,t 航班号:%dnt 飞机号:%dnt 订票数: %dnt 余票数:%dn,q-flight,q-plane,q-reservation,q-availnum);void OutInfo() FILE *fp,*fp2;if(!(fp=fopen(airinfo.txt,w)puts(对不起,操作有误,无法打开文件airinfo.txt!n);return;WriteAirInfo(fp);fclose(fp);if(!(fp2=fopen(customer.txt,w)puts(对不起,操作有误,无法打开文件airinfo.txt!n);return;WriteCust
31、omer(fp2);fclose(fp2);void AddAirFlight() int k,airflight;AirFlight *temp;puts(请选择本次航程的着陆点:0/1/2n);puts(0.北京n1.上海n2.广州n);scanf(%d,&k);if(k2)puts(对不起,操作有误,输入无效!);高级语言程序设计课程设计报告 23return;printf(请输入航班号:);switch(k)case 0: puts(1300:); break;case 1: puts(301600:); break;case 2: puts(601900:);scanf(%d
32、,&airflight);if(airflight300*(k+1)puts(Wrong input!);return;temp=(AirFlight*)malloc(sizeof(AirFlight); if(temp=NULL)puts(对不起,操作有误,开辟空间失败!n);return;temp-availnum=100; temp-reservation=0; temp-cHead=NULL; temp-rHead=NULL; temp-plane=1; temp-flight=airflight;temp-next=airInfok.head;airInfok.head=te
33、mp;printf(恭喜!新航线已成功建立!n);OutInfo();void Init()int i;高级语言程序设计课程设计报告 24strcpy(airInfo0.dest,Beijing);strcpy(airInfo1.dest,Shanghai);strcpy(airInfo2.dest,Guangzhou);for(i=0;iflight=300*i+1;airInfoi.head-plane=i+1;airInfoi.head-reservation=0;airInfoi.head-availnum=100;airInfoi.head-cHead=NULL;airInfoi.h
34、ead-rHead=NULL;airInfoi.head-next=NULL;Reserve(梁建军,1,0);Reserve(卿泽华,301,1);Reserve(吕继东,601,2);void Operation1()int i,seat;int airNum;char name20;printf(本航空公司为您提供的航班有:n);printf(航线 1 飞往北京:航班号 1-300n);printf(航线 2 飞往上海:航班号 301-600n);printf(航线 3 飞往广州:航班号 601-900n);printf(n 若开始订票,请输入您的姓名及航班号:n);printf(友情提示:姓名和航班号用空格隔开n);scanf(%s %d,name,&airNum);高级语言程序设计课程设计报告 25if(0airNum&airNum=300) i=0;else if(300airNum&airNum=600) i=1;else if(600airNum&airNum=900) i=2;else puts(对不起,操作有误,输入无效!);seat=Reserve(name,airNum,i);if(seat=-2) printf(对不起,查找不到该航班号%d!n,airNum);else if(seat=-1) pu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品制桶市场需求与消费特点分析
- 芭蕾舞鞋市场发展预测和趋势分析
- 2024年度产品代理合同标的及代理服务具体规定
- 试电笔市场发展现状调查及供需格局分析预测报告
- 裱纸市场发展预测和趋势分析
- 2024年度企业财务审计与税务筹划服务合同
- 2024年度危险品仓储安全监管合同
- 2024年度港口旅游景点开发承包合同
- 运载工具电子防盗装置市场发展预测和趋势分析
- 2024年度体育赛事组织与推广合同标的为国际足球比赛
- 小学信息科技《数据与编码-探索生活中的“编码”》教学设计
- 2024年云网安全应知应会考试题库
- 大学生心理健康教育(第二版)PPT全套完整教学课件
- DL-T 5190.1-2022 电力建设施工技术规范 第1部分:土建结构工程(附条文说明)
- 人教版英语选择性必修第四册UNIT 4 Sharing中英文对照
- 一整套首席质量官培训教材
- 超级椰子油二乙醇酰胺的合成新工艺
- 【原创】六上Unit5 Housework PartA 教学设计
- 最新高中物理学考公式大全
- (2021年整理)《中国制造2025》(全文)
- 2018豁免知情同意申请-同济大学医学院(最新整理)
评论
0/150
提交评论