1、课程设计1C+程序设计课程设计设计报告学号 姓名指导教师题 目 订票系统计算机科学与技术学院年 月 日课程设计2目录1.需求分析31.1 输入形式31.2 输出形式31.3 程序功能31.4 测试数据32.概要设计32.1 流程分析32.2 具体步骤32.3 功能模块43.详细设计43.1 流程图43.2 源代码54.调试分析 144.1 调试204.2 验与总结215.参考文献21课程设计3第一章 需求分析本程序使用 visual studio 2010 C+语言编写,完成订票系统的录入,查询,订票,退票及增加、删除、修改航班信息。1.1 输入的形式和输入值的范围输入的形式是数字、人名及编号
2、。 输入值的范围:无。1.2 输出的形式输出为订票,包含姓名,座位号等。1.3 程序所能达到的功能本程序编写完成后能达到订票的生成及修改,退订,查询和退出。1.4 测试数据进入订票系统后,选择订票,输入姓名 aaa。再根据选项依次选择进行测试。第二章 概要设计2.1 实现流程分析:采用类模块和文件想结合的方式实现该操作,首先定义一个 airline类并将一些基本数据定义为类的共有成员,同时设置成员函数来设置数据和输出数据。2.2 具体步骤订票:运用类的成员函数设置数据并写到文件中去,然后在后面的课程设计4程序中读出。退票:将文件中的数据读出,用 for 循环语句进行查找并修改数据查询:用 fo
3、r 循环语句进行查找并读出,没有数据的显示错误主函数:用 while 语句制作菜单,用户根据需要进行选择2.3 系统功能模块(1)录入(航班相关记录)功能模块(2)查询(航班相关记录)功能模块(3)订票功能模块(4)退票功能模块(4)退出系统功能模块第三章 详细设计3.1 流 程图1订票2退票3查询4 退出课程设计5开始订票开始退票按条件查询退出系统3.2 源代码#include #include #include #include “conio.h“#define OK 1 /1.避免幻数出现(幻数即诸如 0,1,100 之类的数字常量,因为无法从字面上看出该数字代表的意义,所以通常用宏替换
4、,让人一看就明白其代表的意义,如 ERROR 错误,OK 正确) #define ERROR 0 /2.便于修改,如果要更改 ERROR 或 OK 的定义只需修改宏定义即可,不用再在编码中寻找一个个修改。typedef struct airlinechar air_num8;课程设计6char plane_num8;char end_place20;int total;int left;struct airline *next;airline;typedef struct customerchar name8;char air_num8;int seat_num;struct customer
5、 *next;customer;airline *start_air() airline *a;课程设计7a=(airline*)malloc(sizeof(airline);if(a=NULL)a-next=NULL;return a;customer *start_cus()customer *c;c=(customer*)malloc(sizeof(customer);if(c=NULL)c-next=NULL;return c;airline *modefy_airline(airline *l,char *air_num)课程设计8airline *p;p=l-next;for(;p
6、!=NULL;p=p-next)if(strcmp(air_num,p-air_num)=0)p-left+;return l;printf(“没有这趟航班!“);return 0;int insert_air(airline *p,char *air_num,char *plane_num,char *end_place,int total,int left)课程设计9airline *q;q=(airline*)malloc(sizeof(airline);strcpy(q-air_num,air_num);strcpy(q-plane_num,plane_num);strcpy(q-en
7、d_place,end_place);q-total=total;q-left=left;q-next=NULL;(*p)-next=q;(*p)=(*p)-next;return OK;int insert_cus(customer *p,char *name,char *air_num,int seat_num)customer *q;课程设计10q=(customer*)malloc(sizeof(customer);strcpy(q-name,name);strcpy(q-air_num,air_num);q-seat_num=seat_num;q-next=NULL;(*p)-nex
8、t=q;(*p)=(*p)-next;return OK;int book(airline *a,char *air_num,customer *c,char *name)airline *p=a;customer *q=c-next;p=a-next;for(;q-next!=NULL;q=q-next)课程设计11for(;p-next!=NULL;p=p-next)if(p-left0)printf(“您的座位号是:%d“,(p-total-p-left+1);insert_cus(p-left-;return OK;elseprintf(“座位已满“);return 0;课程设计12i
9、nt del_cus(customer *c,airline *l,char *name)customer *p,*pr;char air_num8;pr=c;p=pr-next;while(p!=NULL)if(strcmp(p-name,name)=0)strcpy(air_num,p-air_num);l=modefy_airline(l,air_num);pr-next=p-next;p=pr-next;课程设计13printf(“完成!“);return OK; pr=pr-next;p=pr-next;printf(“NO the customer!“);return ERROR;
10、int search_air(airline *head)airline *p=head-next;printf(“air_num plane_num end_place total leftn“);for(;p!=NULL;p=p-next)课程设计14printf(“%s %-10s %-8s %-8d%-8dn“,p-air_num,p-plane_num,p-end_place,p-total,p-left);return OK;int search_cus(customer *head)struct customer *q=head-next;printf(“name air_num
11、 seat_numn“);for(;q!=NULL;q=q-next)printf(“%-8s%-12s%-dn“,q-name,q-air_num,q-seat_num);return OK;int creat_air(airline *l)课程设计15airline *p=*l;int i=0;char *air_num3=“航班 1“,“航班 2“,“航班 3“;char *plane_num3=“plane1“,“plane2“,“plane3“;char *end_place3=“北京“,“上海“,“天津“;int total3=100,100,100;int left3=52,54
12、,76;for(i=0;i3;i+)insert_air(return OK;int creat_cus(customer *l)课程设计16customer *p=*l;int i=0;char *name3=“张三“,“李四“,“王五“;char *air_num3=“航班 1“,“航班 2“,“航班 3“;int seat_num3=2,5,7;for(i=0;i3;i+)insert_cus(return OK;void main()int t=1;customer *cus=start_cus();airline *air=start_air();char name8,air_num
13、8,ch;课程设计17creat_air(creat_cus(while(t=1)printf(“n“);printf(“*n“);printf(“* 欢迎来到订票系统! *n“);printf(“* 订票-1 *n“);printf(“* 退票-2 *n“);printf(“* 查询-3 *n“);printf(“* 退出-4 *n“);printf(“*n“);ch=getch();if(ch=1)课程设计18printf(“Please input a airline number:“);scanf(“%s“,air_num);printf(“请输入您的名字:“);scanf(“%s“,
14、name);book(air,air_num,cus,name);elseif(ch=2)printf(“Please input the cancel name:“);scanf(“%s“,name);del_cus(cus,air,name);elseif(ch=3)课程设计19search_air(air);printf(“n“); search_cus(cus);elseif(ch=4)t=0; 第四章 调试分析41 调试课程设计20进入界面:选择功能 1:选择功能 2:课程设计21选择功能 3:4.2 经验与总结通过本次课程设计,我认识到了自己的不足。对平时所学内容局限于老师讲的例子,不思举一反三,不思融会贯通,所以在需要多个内容课程设计时感到束手无策,手足无措。在上网查找了有关资料之后,自己也慢慢有了一点想法,根据课程设计的内容要求一项一项完成。 C+语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。第六章 参考文献1谭浩强 C+ 程序设计 北京:清华大学出版社,2004.62谭浩强 C+程序设计题解与上机指导 北京:清华大学出版社,2005.3课程设计223CSDN