版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计课程设计报告 I 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 班级学号: 指导教师: 完成日期: 6 月 20 日 高级语言程序设计课程设计报告 II 目 录 1 课程设计目的与要求.1 2 问题描述 .2 3 总体设计 .3 3.1 功能分析.3 3.2 系统主要使用的函数.3 3.3 系统使用的主要数据结构.4 4 详细设计 .6 4.1 程序总体结构图.6 4.2 程序流程图.6 5 功能测试 .8 5.1 航班售票系统.8 6 程序设计调试情况(程序设计及调试过程中碰到的问题及解决的 方法).12 7 课程设计小结 .13 参考文献.14 附录 系统源
2、程序.15 高级语言程序设计课程设计报告 1 1 课程设计目的与要求 高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、 传统的、面向过程的优秀编程语言 C 语言为基础,学习程序设计的基本概念和 方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序 设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。 课程设计是在学生已经具备了使用 C 语言编写简单的应用程序的能力,为 使学生对 C 语言有更全面的理解,进一步提高运用 C 语言编程解决实际问题的 能力,通过提出算法、指定输入输出来设计一个解决方案。经过该实践环节, 培养学生的探索精神和创新能力。通过答辩训练
3、学生的综合表达能力。 参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终 课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用 本课程知识的水平和能力。具体如下: (1)数据组织方面尽量使用到:数组、链表、结构体、文件; (2)程序结构方面做到函数调用,尽量采用指针运算; (3)代码编写规范,形成良好的编程习惯; (4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边 界数据。 (5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报 告内容包括以下几个方面: 程序的总体设计和算法分析。 程序流程图、函数说明 源程序代码清单 测试数据和测试过
4、程记录 遇到的问题及解决方法分析 课程设计小结 高级语言程序设计课程设计报告 2 2 问题描述 航班售票系统: (1)系统以菜单方式工作 (2)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。 (3)查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根 据航班号,列出该航班已订票的乘客名单。 (4)订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航 班已满员,则显示相应信息。 (5)退票:按乘客要求退出已预定的机票。 高级语言程序设计课程设计报告 3 3 总体设计 3.1 功能分析 系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的 技术来实
5、现航班的管理,同时对操作结果在计算机中做永久保存。 ) 3.1.1 航班售票系统 (1)订票功能: 此功能是 Reserve 函数来实现的,里面嵌套调用了 3 个函数 Deletereturn,Addcustomer, WriteCustomer, (2)退票功能: 我用的是 ReturnTicket 函数来实现的,里面嵌套调用了 3 个函数 AddReturn,DeleteCustomer,WriteCustomer, (3)修改航线功能: 在实现这个功能的时候,必须有航线的增加,取消,和修改三个不同的功能, 所以我编写了 3 个不同的函数, AddAirFlight,DeleteAirFl
6、ight,ChangeAirFlight, (4)查询航班及乘客信息功能 WriteCustomer 的作用在本部分当中体现,它用来输出客户的信息,在 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) /*删除退票函数
7、*/ void AddReturn (AirFlight *p,int seat) /*添加退票信息函数*/ void ChangeAirFlight() /*修改航线函数*/ void DeleteAirFlight() /*删除航线函数*/ void DestroyCustomer(CNode *p) /*删除客户信息函数*/ void AddCustomer(AirFlight *p,char *name,int airNum,int seat) /*添加客户信 高级语言程序设计课程设计报告 4 息函数*/ void DeleteCustomer(AirFlight *p,int sea
8、t) /*删除客户信息函数*/ void AddAirFlight() /*添加航线信息函数*/ void WriteAirInfo(FILE *fp) /*输出输出航线函数*/ void OutInfo() /*输出所有信息*/ void WriteCustomer(FILE *fp) /*输出客户文件函数*/ 3.3 系统使用的主要数据结构 typedef struct Return /*定义退票系统的结构体*/ int seat; struct Return *next; Return; typedef struct /*定义客户信息的结构体*/ char name20; int air
9、Num; int seat; Customer; typedef struct CNode /*定义客户单链表的结构体*/ Customer cust; struct CNode *next; CNode; typedef struct AirFlight /*定义航班信息的结构体*/ int flight; int plane; int reservation; int availnum; CNode *cHead; Return *rHead; struct AirFlight *next; AirFlight; typedef struct Airline /*定义航线信息的结构体*/
10、高级语言程序设计课程设计报告 5 char dest20; AirFlight *head; Airline; Airline airInfo3; /*定义三条航线为全局变量*/ 高级语言程序设计课程设计报告 6 4 4 详细设计详细设计 4.1 程序总体结构图 图图 4-14-1 航班售票系统结构图航班售票系统结构图 4.2 程序流程图 图图 4-2-14-2-1 航班售票系统中的航班售票系统中的 AddCustomerAddCustomer()() 高级语言程序设计课程设计报告 7 图图 4-2-24-2-2 航班售票系统中的航班售票系统中的 ChangeAirFlightChangeAi
11、rFlight()() 图图 4-2-34-2-3 航班售票系统中的航班售票系统中的 operation3operation3()() 高级语言程序设计课程设计报告 8 5 功能测试 5.1 航班售票系统 图图 5-2-15-2-1 运行后文件中的截图运行后文件中的截图 图图 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 修改航线提示语修改航线提示语 高级语言程序设计课程设计报告
12、 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 显示乘客信息显示乘客信息 高级语言程序设计课程设计报告 11 6 程序设计调试情况(程序设计及调试过程程序设计调试情况(程序设计及调试过程 中碰到的问题及解决的方法)中碰到的问题及解决的方法) 在程序设计中,我遇到的最大的问题就是结构体变量的定义和链表的运用, 应为一开始在学习链表的时候我就感觉到很吃力,所以在编航空售票系统的大 程序时,我上
13、网查找了很多资料,有不懂的也去百度,或者在同学之间讨论, 至今还有一些不能熟练运用,但和之前相比已经有了很大的进步,我会在今后 的学习中进一步巩固。 在调试过程中,也有不少的问题。比如,漏加了取地址符,导致程序没有 错误而无法运行;字符串输入函数 getchar 的用法出错,导致无法输入菜单命令; 头文件的名字和文件名不一致而出错,这是连接时候出现的问题;还有曾遇到, 同样一个文件,以.c 的后缀运行时有错,以.cpp 的后缀运行时就没有错了,老 师说这涉及到了兼容性的问题。总之,由于粗心大意犯的错误,自己是可以找 出来的,实在太隐蔽的,我也就只能求助同学或者老师了。 高级语言程序设计课程设计
14、报告 12 7 7 课程设计小结课程设计小结 本次课程设计已经完成,编写好的程序整体上运行与题目要求很吻合,算 法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算 法的进一步改进在设计中都有表述,这道题使我熟悉了文件的输入输出操作, 也深刻认识到了链表在实际的操作中有多么的难,我会在进一步的学习中,对 链表进行深层次的理解。 本次程序编写我从简单入手,在进行复杂的编写过程。首先我搜集资料, 掌握航空售票系统方面的种种相关知识,其次我们对这个系统应该如何编译作 了一个简单的思考和讨论,确定要运用到的知识和相关难点,并对这些难点进 行解决,最终到发杂的程序上。 回望本次的课程设计
15、,我学到了很多的东西。无论是枯燥的搜集资料,还 是一遍遍地调试程序给我带来的疲惫感,都在最终看到程序正常运行的那刻消 失殆尽,感受到了努力付出,然后收获硕果的成就感。 总结我这周的实训,我学到了很多的知识。不论是理论知识的掌握亦或是 实践经验的积累,我都有了进一步的提升。面对科学实践过程中所遇到的难题, 我不能退缩,要严谨,认真,无所畏惧地面对它。正如本次的课程设计,编写 的过程很艰难,一个小小的错误都会导致最终程序无法正常运行。因此,只有 我们每个人认真严谨的完成自己的任务,不出现一丝一毫的马虎,才能获得最 后的成功。 本以为掌握课本上所教授的理论知识对于我们当代大学生而言就足够了。 然而,
16、在实训过后才发现这样的理解是十分错误的。理论知识若没有经过实践 的考验,那它便是经不起推敲的。只有把实践和理论结合起来,用理论知识支 持实践,用实践来肯定理论知识,才能提高自己的学习能力和动手能力。 在设计的过程中我们遇到了各种各样的问题,也发现了自己的不足之处, 对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计, 把以前所学过的知识重新温故,巩固了所学的知识,也能够了解到自己相对薄 弱的环节。总而言之,本次实训我真的受益匪浅。 小组成员分工: 组长: 负责 修改航线信息和查询航班信息 模块 组员: 负责 主程序模块 高级语言程序设计课程设计报告 13 负责订票、退票 模块
17、高级语言程序设计课程设计报告 14 参考文献 1. 迟剑,刘艳飞等C 语言宝典北京:电子工业出版社,20096 2. 李恬,邱小平等C 语言程序设计实训与应用教程北京:清华大学出版 社,20102 3. 黄锐军C#程序设计项目实训教程北京:化学工业出版社,200910 4. 耿祥义,张跃平C 语言程序设计实用教程北京:清华大学出版社, 201011 高级语言程序设计课程设计报告 15 附录 系统源程序 #include #include #include #include typedef struct Return int seat; struct Return *next; Return;
18、typedef struct char name20; int airNum; int seat; Customer; typedef struct CNode Customer cust; struct CNode *next; CNode; typedef struct AirFlight int flight; int plane; int reservation; int availnum; CNode *cHead; Return *rHead; struct AirFlight *next; AirFlight; typedef struct Airline char dest20
19、; 高级语言程序设计课程设计报告 16 AirFlight *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); FILE *fp; AirFlight *p; int seat; for(p=airInfoi.head;pp=p-next); if(p=
20、NULL) return -2; if(p-availnum=0) return -1; else if(p-rHead!=NULL) seat=DeleteReturn(p); else seat =p-reservation; p-availnum-; p-reservation+; AddCustomer (p,name,airNum,seat); if(!(fp=fopen(customer.txt,w) puts(对不起,操作有误,无法打开文件customer.txt!); return -2; WriteCustomer(fp); return seat; void ReturnT
21、icket (int i,int airNum,int seat) void AddReturn(AirFlight*p,int seat); void DeleteCustomer (AirFlight *p,int seat); void WriteCustomer(FILE *fp); 高级语言程序设计课程设计报告 17 FILE *fp; AirFlight *p; for(p=airInfoi.head;pp=p-next); if(p=NULL) puts(对不起,操作有误,没有找到退票信息!n); else AddReturn(p,seat); p-availnum+; p-re
22、servation-; 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-rHead=temp-next; seat=temp-seat; free(temp); return seat; void AddReturn (AirFlight *p,int s
23、eat) 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,changeFlight; AirFlight *p; CNode *pC; puts(请输入您所要修改的航线:n); scanf(%d, if(0airFlight else if
24、(300airFlight else if(600airFlightp=p-next); if(p!=NULL) puts(请输入您的新航线:n); scanf(%d, p-flight=changeFlight; for(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
25、(CNode *p); void DestroyReturn(Return *p); 高级语言程序设计课程设计报告 19 void OutInfo(); int airFlight,k; AirFlight *p,*pre=NULL; puts(请输入您要取消的航线!n); scanf(%d, if(0airFlight else if(300airFlight else if(600airFlightp=p-next) pre=p; if(p=NULL) printf(对不起,不存在该航线%d!n,airFlight); return; if(pre=NULL) airInfok.head=
26、p-next; else pre-next=p-next; DestroyCustomer(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) 高级语言程序设计课程设计报告 20 Return *pNext; while(p!=NU
27、LL) pNext=p-next; free(p); p=pNext; void AddCustomer(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 Dele
28、teCustomer(AirFlight *p,int seat) CNode *temp,*pre=NULL; for(temp=p-cHead;temptemp=temp-next) pre=temp; if(temp=NULL) puts(对不起,没有找到相应的客户,请您核对后继续!); return; if(pre=NULL) p-cHead=temp-next; else pre-next=temp-next; free(temp); 高级语言程序设计课程设计报告 21 void WriteCustomer(FILE *fp) int i; AirFlight *p; CNode *
29、q; fputs(n,fp); fputs(以下为本航空公司提供的乘客信息: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,q- ); void WriteAirInfo(FILE *fp) int i; AirFlight *p,*q; fputs(n,fp); fputs(以下为本航空公司提供的航班信息:n,fp); for(i=0;inext) 高级语
30、言程序设计课程设计报告 22 fputs(nn,fp); for(q=p;q;q=q-next) 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.t
31、xt,w) puts(对不起,操作有误,无法打开文件airinfo.txt!n); return; WriteCustomer(fp2); fclose(fp2); void AddAirFlight() int k,airflight; AirFlight *temp; puts(请选择本次航程的着陆点:0/1/2n); puts(0.北京n1.上海n2.广州n); scanf(%d, if(k2) puts(对不起,操作有误,输入无效!); 高级语言程序设计课程设计报告 23 return; printf(请输入航班号:); switch(k) case 0: puts(1300:); b
32、reak; case 1: puts(301600:); break; case 2: puts(601900:); scanf(%d, 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
33、-flight=airflight; temp-next=airInfok.head; airInfok.head=temp; printf(恭喜!新航线已成功建立!n); OutInfo(); void Init() int i; 高级语言程序设计课程设计报告 24 strcpy(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-reser
34、vation=0; airInfoi.head-availnum=100; airInfoi.head-cHead=NULL; airInfoi.head-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, 高级语言程序设计课程设计报告 25 if(0airNum else if(300airNum else if(600airNum else puts(对不起,操作有误,输入无效!); seat=Reserve(name,airNum,i); if(seat=-2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位管理制度呈现合集员工管理篇
- 单位管理制度呈现大合集人员管理篇
- 工作转正自我鉴定4篇
- 3D打印在计算机维修中的创新应用
- 《用色彩画心情》课件
- 第3单元+中国特色社会主义道路
- 物流行业顾问工作总结
- 乒乓球比赛的作文汇编10篇
- 输液室护士的职责概述
- 游乐园前台服务感悟
- 2024时事政治考试题库附参考答案(黄金题型)
- 2024年新“国九条”及配套政策要点解读分析报告
- 2024-2029年中国大健康行业市场发展现状分析及发展趋势与投资战略规划报告
- 超星尔雅学习通《艺术哲学美是如何诞生的(同济大学)》2024章节测试答案
- 全国医院数量统计
- (2024年)长歌行汉乐府古诗PPT语文课件
- GB/T 43674-2024加氢站通用要求
- 仓库班长年终总结及工作计划
- 部编人教版二年级劳动教育上册期末试卷(带答案)
- 肛门手术的镇痛研课件
- 中山医院报告查询app
评论
0/150
提交评论