第一篇:6 飞机订票系统开发总结报告
文档编号: 版本号:v1.0
开发总结报告
项目名称
飞机订票系统 项目负责人
何柳青 本文档编写者 何柳青 项目开发者
计算机081第二组
2010年12月20日 目录
1.引言.....................................................................1
1.1.编写目的......................................................................................................................................1 1.2背景...............................................................................................................................................1 1.3参考资料.......................................................................................................................................1
2、实际开发结果............................................................1
2.1 产品..............................................................................................................................................1 2.2 主要功能和性能..........................................................................................................................2 2.3 基本流程......................................................................................................................................2 2.4 进度..............................................................................................................................................3
3、开发工作评价............................................................4
3.1 对生产效率的评价......................................................................................................................4
3.2 对产品质量的评价......................................................................................................................4 3 对技术方法的评价..........................................................................................................................4 3.4 出错原因的评价..........................................................................................................................4
4、经验与教训..............................................................4
1.引言
1.1.编写目的
本文档将对《飞机订票系统》软件开发需求进行描述,目的是让读者能够了本系统的开发目的,开发方法,以及目前的硬件和软件的情况和开发所需资金和设备。本文档的预期读者是项目策划、设计和评审人员。
1.2背景
本项目的名称:飞机订票系统
//项目任务提出者:中国民航及中国国际旅游开发公司。项目开发者:何柳靑,陆银琳,李欣纯,单国英,阿依古丽 项目与其他软件,系统的关系:
本项目采用客户机/服务器原理,客户端的程序是建立在Windows NT 系统上以Microsoft Visual C++为开发软件的应用程序,服务器端采用Linux 为操作系统的工作站,是采用Oracle 8的为开发软件的数据库服务程序。
1.3参考资料
《软件工程导论》 清华大学出版社 张海藩 编著 《实用软件工程》 清华大学出版社 郑人杰 等 编著
《数据库系统概论(第三版)》 高等教育出版社 萨师煊 王珊等编著 《实用软件文档写作》 清华大学出版社 肖刚等 编著 《软件工程》第3版 人民邮电出版社 张海藩等 编著
2、实际开发结果
2.1 产品
飞机订票系统是典型的小型信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。其专供飞机票务公司及航空公司使用,完全按照航空公司订票流程研制而成,符合订票规程,为航空公司订票工作提供便利。2.2 主要功能和性能
功能:此系统功能分为管理员模块和前台票务员模块;管理员模块主要负责航班信息管理,包括增加新航班、修改原有航班、删除航班的功能;前台票务员模块包括乘客信息管理、订票管理、航班查询的功能。
性能:能够高效而且快速的管理航班信息及订票功能,航班查询可在较短时间内完成,数据能够实时反映到终端,以确保信息查询的准确性,方便乘客订票,减少系统错误。
2.3 基本流程
飞机订票系统基本流程如图1。
开始进入用户登录界面是否为后台数据管理员NO YES是否订票NOYES查看航班信息YESNO是否改签NOYES查询显示航班信息YES是否修改退票改签订票修改信息NO结束
图1.系统处理流程
2.4 进度
原计划此项目的完成时间为71天,实际所花时间为91天,比原计划延迟了20天左右,其主要原因是进入设计阶段时,开发人员技术的不成熟,花了较多时间来完成基本知识的巩固。
3、开发工作评价
3.1 对生产效率的评价
此开发小组为五名成员组成的小队伍,平均以每周一份文档的生产效率完成此次设计工作,在设计阶段,以两周一份文档的生产效率完成,基本符合工作计划。
3.2 对产品质量的评价 在测试中检查出来的程序编织中的错误发生率为:每千条指令中的错误指令数大约在30-150范围内。3 对技术方法的评价
在开发的设计阶段,我们主要使用了visio画图工具,将理论化的程序流程转换成比较直观的图形,将老师传授的知识运用到实践项目中,让本小组五位组员都受益匪浅。
3.4 出错原因的评价
在开发过程中,由于小组成员都是初次接触大系统的开发,所以由于技术上的不成熟造成屡屡失误,但在队友的齐心协力下还是突破了种种困难。
4、经验与教训
总结一下这次项目的设计开发,尽管走过一些弯路,开始时组员之间交流不多,大家对项目了解不够,按照自己的理解来编写文档,让项目一周一个样,后来在老师的指导下,组员们常常交流各自意见,最终明确了项目的方向。实施过程中,在作图时出现的问题较多,通过组内同学讨论,老师指导以及网络查询,最终都纠正过来,总体来说还是比较成功的,基本完成了用户的需求。
这次的项目,还是有很多地方值得让我们思考改进的。上课时间不长,老师的指导有限,我们要更高效地利用上课的几十分钟时间,让老师尽可能地提意见,组员也应该更加积极地参与到小组讨论中来,大家交换意见,一起来完成项目。
成功地完成项目的关键是组员的团结,大家一起努力,用自己的热情来换取项目的圆满成功。
第二篇:数据结构课程设计 飞机订票系统
飞机订票系统
1.需求分析
描述要求编程解决的问题。以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:
(a)输入的形式和输入值的范围;
(b)输出的形式;
(c)程序所能达到的功能;
(d)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2.概要设计
给出程序要达到的具体的要求。描述解决相应问题算法的设计思想。描述所设计程序的各个模块(即函数)功能。说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3.详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。设计出良好的输入输出界面(清晰易懂)。
4.调试分析 内容包括:
(a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;
(c)经验和体会等。
5.用户使用说明
说明如何使用你编写的程序,详细列出每一步的操作步骤。
6.测试结果
设计测试数据,或具体给出测试数据。要求测试数据能全面地测试所设计程序的功能。列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。
7.测试情况:给出程序的测试情况,并分析运行结果
附录(非必须,按照需要添加)
带注释的源程序。可以只列出程序文件名的清单。
需求分析
任务:通过此系统可以实现如下功能: 录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
概要设计
详细设计
详列函数 void list(){
struct airline *info;
int i=0;
info=start;
printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”);
while(i { display(info); info++; i++; } printf(“nn”);} 查询函数 void search(){ struct airline *info,*find(); char qiname[10]; char jiangname[10]; int i=0; info=start; printf(“请输入要起飞城市的名称:”); scanf(“%s”,qiname); printf(“请输入要抵达城市的名称:”); scanf(“%s”,jiangname); while(i { if(!strcmp(jiangname,info->jiang_name)) { break; } info++; i++; } if(i>=MAXSIZE) { printf(“没有这条航线!n”); } else { printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”); display(info); } } struct airline *find(){ struct airline *info; char number[10]; int i=0; info=start; printf(“请输入航班号:”); scanf(“%s”,number); while(i { if(!strcmp(number,info->air_num)) { return info; } info++; i++; } printf(“没有这条航线!n”); return NULL;} 订票函数 void order(){ struct airline *info; char qiname[10]; char jiangname[10]; int amount; char name[10]; char id[30]; info=start; printf(“请输入您的起飞城市:”); scanf(“%s”,qiname); printf(“请输入您的降落城市:”); scanf(“%s”,jiangname); printf(“请输入您需要的票数:”); scanf(“%d”,&amount); int i=1; while(i<5) { if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname)) { if(amount<=info->ticket_left) { int i; printf(“请输入您的姓名:”); scanf(“%s”,name); printf(“请输入您的身份证号:”); scanf(“%s”,id); info->order=insertlink(info->order,amount,name,id); printf(“您的航班信息为:n”); display(info); for(i=0;i { printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1); } info->ticket_left-=amount; printf(“订票成功!n”); break; } else { info++; i++; } } else { info++; i++; } } } 退票函数 void returnticket(){ struct airline *info; linklist *p1,*p2,*head; char name[10]; if(!(info=find())) { return; } head=info->order; p1=head; printf(“请输入您的姓名:”); scanf(“%s”,name); while(p1!=NULL) { if(!strcmp(name,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) { printf(“您没有订过票!n”); return; } else { if(p1==head) { head=p1->next; } else { p2->next=p1->next; } info->ticket_left+=p1->tickets; printf(“%s退票成功!n”,p1->name); free(p1); } info->order=head;} 存储结构 typedef struct passenger { char name[10]; int tickets; char id[30]; struct passenger *next;} linklist;typedef struct airline { char qi_name[10]; char jiang_name[10]; char air_num[10]; char qi_time[10]; char jiang_time[10]; int ticket_all; int ticket_left; linklist *order;} lineinfo;调试分析 查看航线信息 查询航线 ① 输入起飞城市 ② 输入抵达城市 ③ 输出航班信息 办理订票业务 ① 查询符合的航班 ② 查询余票量 ③ 输出航班信息 办理退票业务 源代码 #include char name[10]; int tickets; char id[30]; struct passenger *next;} linklist; typedef struct airline { char qi_name[10]; char jiang_name[10]; char air_num[10]; char qi_time[10]; char jiang_time[10]; int ticket_all; int ticket_left; linklist *order;} lineinfo; struct airline *start; void display(struct airline *info){ printf(“%st %10st %10st %10st %10st %5dt %5dn”,info->qi_name,info->jiang_name,info->air_num,info->qi_time,info->jiang_time,info->ticket_all,info->ticket_left);} void list(){ struct airline *info; int i=0; info=start; printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”); while(i { display(info); info++; i++; } printf(“nn”);} void search(){ struct airline *info,*find(); char qiname[10]; char jiangname[10]; int i=0; info=start; printf(“请输入要起飞城市的名称:”); scanf(“%s”,qiname); printf(“请输入要抵达城市的名称:”); scanf(“%s”,jiangname); while(i { if(!strcmp(jiangname,info->jiang_name)) { break; } info++; i++; } if(i>=MAXSIZE) { printf(“没有这条航线!n”); } else { printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”); display(info); } } struct airline *find(){ struct airline *info; char number[10]; int i=0; info=start; printf(“请输入航班号:”); scanf(“%s”,number); while(i { if(!strcmp(number,info->air_num)) { return info; } info++; i++; } printf(“没有这条航线!n”); return NULL;} linklist *insertlink(linklist *head,int amount,char name[],char id[]){ linklist *p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist)); strcpy(new1->name,name); new1->tickets=amount; new1->next=NULL; strcpy(new1->id,id); if(head==NULL) { head=new1; new1->next=NULL; } else { while(p1->next!=NULL) p1=p1->next; p1->next=new1; } return head;} void order(){ struct airline *info; char qiname[10]; char jiangname[10]; int amount; char name[10]; char id[30]; info=start; printf(“请输入您的起飞城市:”); scanf(“%s”,qiname); printf(“请输入您的降落城市:”); scanf(“%s”,jiangname); printf(“请输入您需要的票数:”); scanf(“%d”,&amount); int i=1; while(i<5) { if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname)) { if(amount<=info->ticket_left) { int i; printf(“请输入您的姓名:”); scanf(“%s”,name); printf(“请输入您的身份证号:”); scanf(“%s”,id); info->order=insertlink(info->order,amount,name,id); printf(“您的航班信息为:n”); display(info); for(i=0;i { printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1); } info->ticket_left-=amount; printf(“订票成功!n”); break; } else { info++; i++; } } else { info++; i++; } } } void returnticket(){ struct airline *info; linklist *p1,*p2,*head; char name[10]; if(!(info=find())) { return; } head=info->order; p1=head; printf(“请输入您的姓名:”); scanf(“%s”,name); while(p1!=NULL) { if(!strcmp(name,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) { printf(“您没有订过票!n”); return; } else { if(p1==head) { head=p1->next; } else { p2->next=p1->next; } info->ticket_left+=p1->tickets; printf(“%s退票成功!n”,p1->name); free(p1); } info->order=head;} int menu_select(){ int c; char s[20]; printf(“ 订票系统n”); printf(“-------------n”); printf(“ 1.查看航线信息 printf(” 2.查询航线 printf(“ 3.办理订票业务 printf(” 4.办理退票业务 printf(“ 5.退出系统 printf(”-------------n“); do { printf(”请选择(1-5):“); scanf(”%s“,s); c=atoi(s); } while(c<1||c>6); return c; n”);n“);n”);n“); n”); } int main(){ struct airline air[MAXSIZE]= { {“harbin”,“beijing”,“1”,“12:00”,“14:00”,30,30},{“harbin”,“shanghai”,“2”,“10:00”,“13:00”,20,20},{“harbin”,“beijing”,“3”,“13:30”,“10:00”,50,50},{“harbin”,“guangzhou”,“4”,“17:00”,“21:00”,50,50},{“harbin”,“dalian”,“5”,“14:00”,“17:00”,40,40} }; start=air; while(1) { system(“cls”); switch(menu_select()) { case 1: list(); break; case 2: search(); break; case 3: order(); break; case 4: returnticket(); break; case 5: exit(0); } getch(); } } 经验体会 1、通过设计飞机订票系统,加深了对链表的运用和理解。 2、通过多组测试数据,发现了程序的问题,并做了调整、3、通过设计选择菜单,对选择结构有更深刻的了解。 飞机订票系统 1.概述(设计题目与可行性分析) 1.1设计题目:飞机订票系统 1.2可行性分析 飞机订票系统是为机场工作人员和客户提供订票退票等与机票相关内容的管理系统,方便机场工作人员对机票的管理,以提高机场工作人员对机票管理工作的效率。当前飞机订票问题:手工订票所产生的客座率低。而我们的目标是:建立一个飞机订票系统数据库。 1.2.1研究现有系统,画现有系统的流程图 了解当前系统能够完成的功能及组成 航班管理:票据管理 售票点:直接面向用户 航班管理 票据管理 票库 订票库 订票管理 出售管理 打印机票 售票点1 售票点n 现有系统:票据都分布在各个售票点 1.2.2导出新系统的高层逻辑结构 数据流图的基本符号: 数据源/终点(人机界面): 加工处理: 文件名 文件: 数据流名 数据流: 票价信息 机票 查订票号 订票处理 客户信息 出票处理 订票记录 顾客 订票信息 订票号 库存信息 票价信息 票价管理 航班管理 航班信息 操作员 航班信息 保存 新系统的数据流图: 说明:流向文件的数据流的名可以省略 1.2.3可行性分析报告 随着Internet的迅速发展和用户数量的急剧增加,互联网对于企业和事业单位的运营和发展日益重要,网上交易也逐渐被人们认可,并成为未来交易的发展方向。在这种情况下,很多原有的C/S模式的系统也逐步向B/S模式靠拢,飞机订票系统也不例外。 飞机订票系统是飞机旅游服务信息系统的一个重要组成部分。为旅客提供优质便捷的服务,为了提高飞机客运的售票效率,丰富飞机客运的营销手段,飞机售票总站的下属代售点可以通过公用的互联网资源,建立数据库,实现网上的售票,查询及管理工作。 2.系统目标和设计原则 2.1系统目标: 建立一个飞机订票系统数据库。 2.1.1系统简介: 本系统是专为乘坐飞机的旅客准备的,旅客只需把自己的信息(姓名.性别.工作单位.身份证号.旅行时间.旅行目的地)预先交给旅行社,旅行社就可以将信息输入本系统,系统就可以为旅客安排航班,打印出取票通知和帐单。旅客只要在飞机起飞的前一天凭取票通知单和帐单交款取单,系统校对无误即印出机票给旅客。 2.2设计原则 2.2.1根据实际情况考虑三种可行性 技术可行性、经济可行性、操作可行性 2.2.2提出侯选方案、提出各种各样的实现方案 主机(纯主机型、C/S型)、开发环境、网络方案、对提出的每个方案进行成本估计 硬件、软件费用投资(根据各公司的报价)开发成本估计(任务估算法) 运行费用、投资回收期 纯收入:通过本系统的运行、投资回收后的收入 3、描述推荐理由:分别从技术、经济、用户、投资方的不同角度考虑 3.支撑环境规划 3.1整体系统运作图 3.2运行环境 服务器:硬件配置:CPU Intel P4 1.2G以上 内存256 硬盘 80G以上 软件配置:Windows 2000/2003 SERVER SQL SERVER 2000 4.系统功能结构 1、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 2、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; 3、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; 4、退票:可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 5、修改航班信息:当航班信息改变可以修改航班数据文件。 5.数据库设计 5.1概念结构设计 E-R图如下: 5.2逻辑结构设计 1.航空公司表:AIRLINE 2.客户表CUSTOMER 3、飞机表PLANE 4.航线表LINE 5.航班表FLIGHT 6.订票表BOOKTICKET 5.3实现设计 实现以下操作: 1、注册航空公司: 2、增加飞机: 3、增加航线: 4、增加航班: 5、增加客户: 6、建立一个订票的存储过程,存储过程名为Book_Ticket,请完成以下存储过程,实现订票的操作: a)指定要订的航班号(HID)及客户的编号(KID); b)先查看客户是否为特殊客户,如果不是,票价不打折扣; c)否则如果客户航程超过5万公里,票价7折,超过15万公里,票价打5折; d)查看客户订票以后,所有乘客的票数是否超过总的座位数,如果超过,回滚订票操作; e)要求在操作过程中使用到事务技术。 CREATE PROCEDURE Book_ticket @HID VARCHAR(20) @HID VARCHAR(20) AS DECLARE @TRANS_NAME VARCHAR(20)select @TRANS_NAME=’ ’ BEGIN TRANSACTION DECLARE @Bookid int,@seats int,@IsSpec char(1)/*定义订票里程DIST、折扣率discount、总的订票里程distance、票价PRICE(实型)*/ select @Isspec=Isspec,@distance=Points FROM Customer where select @discount=1 IF @ BEGIN END /*选择出票价*/ SELECT @PRICE=PRICE FROM FLIGHT WHERE /*加入客户订票信息*/ /*将客户新订票里程的信息累计到用户信息里面*/ UPDATE SET WHERE /*查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作*/ SELECT booked=count(*)FROM WHERE FID= /*查看额定座位容量*/ SELECT @seats=seatsnum FROM WHERE IF @BOOKED>@SEATS ELSE COMMIT TRANSACTION GO 7.运行这个订票操作的存储过程(自己设定客户及航班) book_ticket , 8.事务运行成功后,再显示各表的数据,按表分别写出来。 6.总体实施计划 6.1可行性研究: 研究现有系统,画现有系统的流程图,编写可行性分析报告 6.2进行数据库设计: 概念结构设计,逻辑结构设计,实现设计 6.3概要设计: 从数据流图导出初始结构图,设计优化 6.4详细设计: 结构化的程序设计,采用流程图的形式 6.5保密设计 1.每个用户需要注册才能进入航空订票信息系统,并进行网上订票的。用户必须 用自己真实的身份进行注册。 2.系统要另外在备一份数据库,防止系统出现错误而使数据信息丢失的可能性。 3.系统要安装防火墙,防止黑客入侵破坏系统。还有就是安装杀毒软件,防止 病毒入侵而导致系统瘫痪。 6.6维护设计 系统设置提供管理员操作页面: 1.提供管理员密码,方便维护操作.2.固定时间对系统进行维护和检测.3.若系统出现瘫痪时,可出动备用系统维持运转.4.定期对系统进行更新整顿清空.7.总结 这次数据库课程设计的“飞机订票系统”,通过近一周的上机操作,充分应用了所学的数据库的知识,并去图书馆查阅了一些书集和上网搜索一部分相当资料,粗略设计出该系统。总体上来说,这次课程设计还是比较成功的,充分运用了所学的软件工程设计、数据库的设计,设计出E-R图、流程图、数据库基本表,从整体规划出了系统的运行环境和系统实现的功能。 当然,由于学艺不精,在课程设计的过程也碰到的一些问题。其中,画E-R图时,各实体中的关系的确定,由于对系统还不够了解而找不到一个准确的词来形容;总体规划时,材料太多,不易整理;相关数据库技术方面没有多注意,这次课程设计的重点只在对整个系统的总体思路设计。 其实这些通过最近的课程设计觉得最重要一点就是:我们一定要自己动手,这样才能真正的学到东西。书本知识固然重要,但我们更要学会将书本知识应用到实际的工作中。实践中才会发现错误,也才能改进,才能达到学习的最终目的。 最后感谢在这次课程设计中帮助过我的老师,同学!8.参考文献 物流信息系统 赵刚 四川大学人民出版社 2002/9 物流信息管理 尹涛 东北财经大学出版社 2005/1 数据库系统概论 王珊 萨师煊 高等教育出版社 2006/5 数据库技术与应用-Access2000篇 郭力平人民邮电出版社 2002/8 软件设计师教程 陈平禇华 清华大学出版社 2006/6 文章引用自: 飞机订票系统 —项目风险评估报告 本文档的范围和目的 本文主要针对飞机订票系统软件开发涉及到的风险,包括在软件开发周期过程中可能出现的风险以及软件实施过程中外部环境的变化可能引起的风险等进行评估。在文中对所提到的风险都一一做了详细的分析,并提出了相应的风险回避措施。主要风险综述 任何软件的开发,其主要风险均来自于两个方面,一是软件管理,二是软件体系结构。软件产品的开发是工程技术与个人创作的有机结合。软件开发是人的集体智慧按照工程化的思想进行发挥的过程。软件管理是保证软件开发工程化的手段。软件体系结构的合理程度是取决于集体智慧发挥的程度和经验的运用。 1、软件是否能够按工期的要求完成:时间定为2个月,能按期完成。 2、软件需求的调研是否深入透彻:软件的需求的调研花了一个月,已了解大致的需求。 3、软件的实现技术手段是否能够同时满足性能要求:由于是第一次,所以难免会有一些不足,但会尽力去客服。 4、软件的可伸缩性:预设计为满足未来3-5年的需要。 5、软件的可维护性:软件的维护也是必然的事情,为了保证软件的较长使用寿命,软件就必须适应不断的业务需求变化,根据业务需求的变化对软件进行修改,软件代码无需修改,仅仅是在系统提供的配置文件中进行适当的修改,然后软件重新加载进入运行状态,就完成了系统部分功能和性能要求的变化。对于重大改动,需要打开源代码进行修改的,也仅仅是先继承原先的代码,然后用新的功能接替原先的调用接口,这样将把软件改动量减小到最低。 项目管理的风险 一般参与软件开发的人员和其责任如下: 由于软件开发小组共有5人,项目经理1人 主要职责:进行全局把握 制定项目开发计划和开发策略,参与项目核心系统的分析设计,同时努力保证开发计划的按时完成和开发策略的真正贯彻落实。 其他4人 主要职责:进行软件系统的分析和设计工作,书写软件需求分析和系统设计相关文档,进行详细设计,和软件系统的代码实现,并进行适当的白盒测试。 软件技术风险 本系统拟订采用的两个重大的软件技术是面向对象的构件和基于微软的COM组件技术。组件和构件技术都是为了提高软件的可靠性和软件的可扩展性而采用的技术手段。从技术成熟度上说不存在风险,但为了实现良好的软件构架和稳定的组件,与传统开发方法比较,有相当的多的额外工作需要做,这会给项目工期带来较大的风险。 回避和控制这部分风险的办法是在项目进行的过程不断的对该阶段进行风险估计和指定有效的里程碑。同时采用“范例”方式提高开发人员的构件组件的分析识别能力,适时调整构件组件的数量和粒度。 软件需求阶段的风险 软件的开发是以用户的需求开始,以书面的形式形成《用户需求》这一重要的文档。需求分析更多的是开发方确认需求的可行性和一致性的过程,在此阶段需要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失会在软件系统的后续阶段被一级一级地放大,因此本阶段的风险最大。 设计阶段的风险 设计的主要目的在于软件的功能正确的反映了需求。可见需求的不完整和对需求分析的不完整和错误,在设计阶段被成倍地放大。设计阶段的主要任务是完成系统体系结构的定义,使之能够完 成需求阶段的即定目标;另一方面也是检验需求的一致性和需求分析的完整性和正确性。 设计本身的风险主要来自于系统分析人员。分析人员在设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担,和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险,系统的稳定性也会受到影响。 设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成实现阶段的困难,更会在后期的测试和维护造成灾难性的后果,所以我们会在整个设计过程中对文档的编写非常重视。 实现阶段引入的风险 软件的实现从某种意义上讲是软件代码的生产。原代码本身也是文档的一部分,同时它又是将来运行于计算机系统之上的实体。源代码书写的规范性,可读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。 C语言程序设计——飞机订票系统 代码如下:” #include“stdio.h” #include“stdlib.h” #include“string.h” #defineLENsizeof(structplane)#defineMAX 10;structplane { char destination[12];char num[10];char time[12];int price;int amount;};typedefstructplanePLANE;PLANE a[100];void menu();void input();void search();void preserve();void planeadd();void delplane(); void main(){ system(“cls”);menu();} void menu(){ char *menu[] = { ************** 欢迎进入飞机订票系统*************,“ a:输入航线 ”,“ b:查询航线 ”,“ c:退订票系统 ”,“ d:追加航线 ”,“ e:删除航线 ”,“ f: 退出 ”,“****************************************************” };int i;char NO;int quit = 0;do { system(“cls”); for(i = 0;i<9;i++) printf(“n%s”, menu[i]); printf(“n请输入服务代码a,b,c,d,e或fn”); NO = getchar(); switch(NO) { case'a': input();break; case'b': search();break; case'c': preserve();break; case'd': planeadd();break; case'e': delplane();break; case'f': quit = 1;break; } } while(!quit);} void input(){ int i, n;FILE *fp;system(“cls”);if((fp = fopen(“D:file”, “wb”))== NULL){ printf(“error!n”);exit(0);} printf(“n请输入航班总数n:”);scanf(“%d”, &n);printf(“n请按下面提示输入航班信息:起点站:沈阳”);for(i = 0;i printf(“nt请输入终点:”); scanf(“%s”, a[i].destination); printf(“t 航班班次:”); scanf(“%s”, a[i].num); printf(“t 时间:”); scanf(“%s”, a[i].time); printf(“t 票价:”); scanf(“%d”, &a[i].price); printf(“t机票总数:”); scanf(“%d”, &a[i].amount); fwrite(&a[i], sizeof(PLANE), 1, fp);} fclose(fp);} void search(){ int i, j = 0, k = 101;char str[12];FILE *fp;PLANE b[5];if((fp = fopen(“D:file”, “rb”))== NULL){ printf(“error!n”); exit(0);} printf(“n请输入航班号:”);scanf(“%s”, str);while(fread(&b[j], LEN, 1, fp)!= 0) j++;for(i = 0;i if(strcmp(b[i].num, str)== 0) { printf(“沈阳至%s 航班号:%s 时间:%s 票价:%d 剩余票数:%dn”, b[i].destination, b[i].num, b[i].time, b[i].price, b[i].amount); k = i; } if(k == 101) printf(“对不起,没有您需要的航线。”);fclose(fp);system(“pause”);} void preserve(){ int a = 0, i = 0, k, m, n, x;char str[12];PLANE preserve[10];FILE *fp;if((fp = fopen(“D:file”, “rb”))== NULL){ printf(“error!n”); exit(0);} printf(“请输入航班号:”);scanf(“%s”, str);while(fread(&preserve[i], LEN, 1, fp)!= 0){ if(strcmp(preserve[i].num, str)== 0) printf(“沈阳至%s 航班号:%s 时间:%s 价格:%d 剩余票数:%d”, preserve[i].destination, preserve[i].num, preserve[i].time, preserve[i].price, preserve[i].amount); k = i; i++;} fclose(fp);printf(“n请输入订退票代码:0-订票 1-退票”);scanf(“%d”, &m);if(m == 0){ printf(“沈阳至%s 航班号:%s 时间:%s 价格:%d元剩余票数:%d”, preserve[k].destination, preserve[k].num, preserve[k].time, preserve[k].price, preserve[k].amount); printf(“n请输入订票总数n:”); scanf(“%d”, &n); x = preserve[k].price*n; printf(“n应付款%d元”, x); preserve[k].amount = preserve[k].amount1; del = 1; printf(“n成功删除信息!!”);} if(del == 0) { printf(“系统中不存在要删除的信息!”);menu();} else { if((fp = fopen(“D:file”, “wb+”))== NULL);{printf(“文件有错误不能打开!”); exit(0); } } for(i = 0;i fwrite(&delplane[i], LEN, 1, fp); fclose(fp);} }第三篇:数据库课程设计+飞机订票系统
第四篇:飞机订票系统风险评估
第五篇:C语言程序设计——飞机订票系统