《C++程序设计》课程设计报告订票系统.docx
《《C++程序设计》课程设计报告订票系统.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》课程设计报告订票系统.docx(14页珍藏版)》请在冰点文库上搜索。
《C++程序设计》课程设计报告订票系统
《C++程序设计》课程设计报告--订票系统
《C++程序设计》课程设计
设计报告
学号
姓名
指导教师
题目
订票系统
计算机科学与技术学院
年
月
日
1.需求分析……………………………………………3
1.1输入形式………………………………………………3
1.2输出形式………………………………………………3
1.3程序功能………………………………………………3
1.4测试数据………………………………………………3
2.概要设计……………………………………………3
2.1流程分析………………………………………………3
2.2具体步骤………………………………………………3
2.3功能模块………………………………………………4
3.详细设计………………………………………………4
3.1流程图…………………………………………………4
3.2源代码…………………………………………………5
4.调试分析…………………………………………14
4.1调试……………………………………………………20
4.2验与总结………………………………………………21
5.参考文献……………………………………………21
第一章需求分析
本程序使用visualstudio2010C++语言编写,完成订票系统的录入,查询,订票,退票及增加、删除、修改航班信息。
1.1输入的形式和输入值的范围
输入的形式是数字、人名及编号。
输入值的范围:
无。
1.2输出的形式
输出为订票,包含姓名,座位号等。
1.3程序所能达到的功能
本程序编写完成后能达到订票的生成及修改,退订,查询和退出。
1.4测试数据
进入订票系统后,选择订票,输入姓名aaa。
再根据选项依次选择进行测试。
第二章概要设计
2.1实现流程分析:
采用类模块和文件想结合的方式实现该操作,首先定义一个airline类并将一些基本数据定义为类的共有成员,同时设置成员函数来设置数据和输出数据。
2.2具体步骤
订票:
运用类的成员函数设置数据并写到文件中去,然后在后面的程序中读出。
退票:
将文件中的数据读出,用for循环语句进行查找并修改数据
查询:
用for循环语句进行查找并读出,没有数据的显示错误
主函数:
用while语句制作菜单,用户根据需要进行选择
2.3系统功能模块
(1)录入(航班相关记录)功能模块
(2)查询(航班相关记录)功能模块
(3)订票功能模块
(4)退票功能模块
(4)退出系统功能模块
第三章详细设计
1
订票
2
退票
3
查询
4
退出
3.1流程图
开始订票
开始退票
按条件查询
退出系统
3.2源代码
#include
#include
#include
#include"conio.h"
#defineOK1//1.避免幻数出现(幻数即诸如0,1,100之类的数字常量,因为无法从字面上看出该数字代表的意义,所以通常用宏替换,让人一看就明白其代表的意义,如ERROR错误,OK正确)
#defineERROR0//2.便于修改,如果要更改ERROR或OK的定义只需修改宏定义即可,不用再在编码中寻找一个个修改。
typedefstructairline{
charair_num[8];
charplane_num[8];
charend_place[20];
inttotal;
intleft;
structairline*next;
}airline;
typedefstructcustomer{
charname[8];
charair_num[8];
intseat_num;
structcustomer*next;
}customer;
airline*start_air()
{
airline*a;
a=(airline*)malloc(sizeof(airline));
if(a==NULL)
a->next=NULL;
returna;
}
customer*start_cus()
{
customer*c;
c=(customer*)malloc(sizeof(customer));
if(c==NULL)
c->next=NULL;
returnc;
}
airline*modefy_airline(airline*l,char*air_num)
{
airline*p;
p=l->next;
for(;p!
=NULL;p=p->next)
{
if(strcmp(air_num,p->air_num)==0)
{
p->left++;
returnl;
}
printf("没有这趟航班!
");
return0;
}
}
intinsert_air(airline**p,char*air_num,char*plane_num,char*end_place,inttotal,intleft)
{
airline*q;
q=(airline*)malloc(sizeof(airline));
strcpy(q->air_num,air_num);
strcpy(q->plane_num,plane_num);
strcpy(q->end_place,end_place);
q->total=total;
q->left=left;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
returnOK;
}
intinsert_cus(customer**p,char*name,char*air_num,intseat_num)
{
customer*q;
q=(customer*)malloc(sizeof(customer));
strcpy(q->name,name);
strcpy(q->air_num,air_num);
q->seat_num=seat_num;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
returnOK;
}
intbook(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){}
for(;p->next!
=NULL;p=p->next)
{
if(p->left>0)
{
printf("您的座位号是:
%d",(p->total-p->left+1));
insert_cus(&q,name,air_num,p->total-p->left+1);
p->left--;
returnOK;
}
else
{
printf("座位已满");
return0;
}
}
}
intdel_cus(customer*c,airline*l,char*name)
{
customer*p,*pr;
charair_num[8];
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;
printf("完成!
");
returnOK;
}
pr=pr->next;
p=pr->next;
}
printf("NOthecustomer!
");
returnERROR;
}
intsearch_air(airline*head)
{
airline*p=head->next;
printf("air_numplane_numend_placetotalleft\n");
for(;p!
=NULL;p=p->next)
{
printf("%s%-10s%-8s%-8d%-8d\n",p->air_num,p->plane_num,p->end_place,p->total,p->left);
}
returnOK;
}
intsearch_cus(customer*head)
{
structcustomer*q=head->next;
printf("nameair_numseat_num\n");
for(;q!
=NULL;q=q->next)
{
printf("%-8s%-12s%-d\n",q->name,q->air_num,q->seat_num);
}
returnOK;
}
intcreat_air(airline**l)
{
airline*p=*l;
inti=0;
char*air_num[3]={"航班1","航班2","航班3"};
char*plane_num[3]={"plane1","plane2","plane3"};
char*end_place[3]={"北京","上海","天津"};
inttotal[3]={100,100,100};
intleft[3]={52,54,76};
for(i=0;i<3;i++)
insert_air(&p,air_num[i],plane_num[i],end_place[i],total[i],left[i]);
returnOK;
}
intcreat_cus(customer**l)
{
customer*p=*l;
inti=0;
char*name[3]={"张三","李四","王五"};
char*air_num[3]={"航班1","航班2","航班3"};
intseat_num[3]={2,5,7};
for(i=0;i<3;i++)
insert_cus(&p,name[i],air_num[i],seat_num[i]);
returnOK;
}
voidmain()
{
intt=1;
customer*cus=start_cus();
airline*air=start_air();
charname[8],air_num[8],ch;
creat_air(&air);
creat_cus(&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')
{
printf("Pleaseinputaairlinenumber:
");
scanf("%s",air_num);
printf("请输入您的名字:
");
scanf("%s",name);
book(air,air_num,cus,name);
}
else
if(ch=='2')
{
printf("Pleaseinputthecancelname:
");
scanf("%s",name);
del_cus(cus,air,name);
}
else
if(ch=='3')
{
search_air(air);
printf("\n");
search_cus(cus);
}
else
if(ch=='4')
{
t=0;
}
}
}
第四章调试分析
4.1调试
进入界面:
选择功能1:
选择功能2:
选择功能3:
4.2经验与总结
通过本次课程设计,我认识到了自己的不足。
对平时所学内容局限于老师讲的例子,不思举一反三,不思融会贯通,所以在需要多个内容课程设计时感到束手无策,手足无措。
在上网查找了有关资料之后,自己也慢慢有了一点想法,根据课程设计的内容要求一项一项完成。
C++语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。
第六章参考文献
[1]谭浩强《C++程序设计》北京:
清华大学出版社,2004.6
[2]谭浩强《C++程序设计题解与上机指导》北京:
清华大学出版社,2005.3
[3]CSDN