1V1020110420PoweredbyEdvard数据结构课程项目实施方案一、项目名称:机票订购系统二、项目要求及系统基本功能•利用数据结构的知识独立完成一个应用系统设计•程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能•体现程序实现算法复杂度优化•体现程序的健壮性系统预期实现基本功能:(结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能)1.增加航班信息2.修改航班信息3.查询航班信息4.订购机票5.退订机票6.备份恢复航班信息7.进入系统需要密码,并且密码可修改8.分为Admin和Client用户,不同用户权限不同,并且可修改三、项目组成员及任务分配(基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现每一个成员都要分配)组长:许峥10160400113主要任务:排序账户信息的修改修改和删除航班信息主程序调试项目报告制作组员:高家乐10160400109主要任务:程序的主题框架增加航班信息查找航班信息主程序调试源代码编写组员:杨柳10160400102主要任务:数据的备份与恢复LOGO制作菜单的制作以及主程序调试流程图制作2V1020110420PoweredbyEdvard四、系统设计算法描述(用文字结合框图描述系统功能主要实现算法思路等,即使用自然语言描述系统实现)1、修改航班信息:可以用来修改航班的具体信息,可以按照航班号来查询航班的主要信息以便修改。2、查询航班信息:可以用来查询航班的具体信息,可以按照航班号来查询具体信息。3、增加航班信息:可以选择在任何一个航班的后面插入该航班的信息,同样可以按照航班号来插入。4、删除航班信息:可以按照航班号来删除航班的信息。5、顶退票功能:可以订购和退订机票。6、系统登录及密码管理:本程序分为Admin和Client两个账户,不同账户不同功能,而且账户名,密码以及权限都可以修改。7、保存及备份:本程序可以保存和备份航班信息,而且可以指定路径,所保存的信息包括航班的各项信息。3V1020110420PoweredbyEdvard五、系统实现程序程序流程图(主要以程序流程图的形式体现各函数之间的运行调用关系)4V1020110420PoweredbyEdvard程序源代码/*程序名称:飞机订票系统*//*团队成员:组长:许铮*//*组员:欧阳益*//*完成时间:2011年6月3日*/#includestdio.h#includeconio.h#includewindows.h#includestring.h#includestdlib.h#defineACCOUNTS2#defineMAX20typedefstruct{charname[20];doubleid;}guestinf;typedefstruct{charPlaneID[5];charPlantUp[5];charPlaneDown[5];doublevalue;intchair;charstart[MAX];charend[MAX];guestinfgueinf[MAX];}plane;typedefstruct{charname[20];charpassword[10];inttype;}account;voidwelcome(){printf(\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n);printf(\t\t\t☆☆☆☆☆☆\n);printf(\t\t\t☆☆☆☆☆\n);printf(\t\t\t☆☆☆☆☆☆☆☆\n);printf(\t\t\t☆☆☆☆☆\n);printf(\t\t\t☆☆☆\n);5V1020110420PoweredbyEdvardprintf(\t\t\t☆☆☆☆☆☆\n);printf(\t\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n);system(color48);Sleep(300);system(color48);Sleep(300);system(color7C);Sleep(300);system(color0F);}intpassword(){system(color0c);FILE*pw;accountaccounts[ACCOUNTS];/*存储账户信息*/accountpwtry;/*存储用户输入的账户信息*/strcpy(accounts[0].name,Admin);strcpy(accounts[0].password,neusoft);accounts[0].type=1;strcpy(accounts[1].name,Client);strcpy(accounts[1].password,ese10001);accounts[1].type=2;inti;pw=fopen(password.txt,r);if(NULL==pw){printf(本程序的Admin的初始密码为neusoft,Client初始密码为ese10001\n);pw=fopen(password.txt,w);fprintf(pw,%10s%10s%1d,accounts[0].name,accounts[0].password,accounts[0].type);fprintf(pw,%10s%10s%1d,accounts[1].name,accounts[1].password,accounts[1].type);fclose(pw);Sleep(3000);return1;}else{for(i=0;iACCOUNTS;i++){if(feof(pw))6V1020110420PoweredbyEdvard{printf(loaderror);break;}else{fscanf(pw,%10s%10s%1d,accounts[i].name,accounts[i].password,&accounts[i].type);}}intrepeat=max(strlen(accounts[0].password),strlen(accounts[1].password));printf(\n\n\n\n\n\n\n\n\n\n\n\n);printf(\t\t\t\t请输入用户名);scanf(%s,pwtry.name);printf(\t\t\t\t请输入密码);for(i=0;irepeat;i++){pwtry.password[i]=getch();printf(*);if('\13'==pwtry.password[i])break;}printf(\n);for(i=0;iACCOUNTS;i++){if(0==(strncmp(accounts[i].password,pwtry.password,strlen(accounts[i].password)))&&(0==strncmp(pwtry.name,accounts[i].name,strlen(accounts[i].name)))){system(cls);printf(\t\t\t\t密码正确,欢迎进入本系统!\n);fclose(pw);Sleep(300);system(colorc0);Sleep(300);system(color0c);Sleep(300);system(colorc0);Sleep(300);returnaccounts[i].type;}7V1020110420PoweredbyEdvard}printf(\a\t\t\t\t用户名或者密码错误!即将退出!);fclose(pw);Sleep(1000);exit(1);}}intchangeuserfile(){charpassword1[10],password2[10];accountpwtry;inti,n;FILE*pw;accountaccounts[MAX];pw=fopen(password.txt,r);for(i=0;iMAX;i++){if(feof(pw))break;else{fscanf(pw,%10s%10s%1d,accounts[i].name,accounts[i].password,&accounts[i].type);}}printf(请输入用户名);scanf(%s,pwtry.name);printf(请输入密码);for(i=0;i10;i++){pwtry.password[i]=getch();printf(*);if(pwtry.password[i]=='\13')break;}for(i=0;iMAX;i++){if(!((strncmp(accounts[i].name,pwtry.password,strlen(accounts[i].password)))&&(strncmp(pwtry.name,accounts[i].name,strlen(accounts[i].password))))){printf(\n请输入新的账户名);scanf(%s,accounts[i].name);8V1020110420PoweredbyEdvardprintf(请输入新密码);scanf(%s,password1);printf(请再次输入);scanf(%s,password2);while(1){printf(请输入账户类型(1admin,2client);scanf(%d,&accounts[i].type);if(accounts[i].type!=1&&accounts[i].type!=2)printf(输入错误,请重新输入);elsebreak;}if(0==strcmp(password1,password2)){strcpy(accounts[i].password,password1);pw=fopen(password.txt,w);for(i=0;iMAX;i++){fprintf(pw,%10s%10s%d,accounts[i].name,accounts[i].password,accounts[i].type);}fclose(pw);printf(修改成功!\n);return1;}else{printf(两次输入的密码不一致,修改错误!\n);return0;}}}}intAddInf(plane*p){inti=0;while(p[i].chair!=0&&i10)i++;printf(请输入航班号\n);scanf(%s,p[i].PlaneID);printf(请输入起飞时间);9V1020110420PoweredbyEdvardscanf(%s,&p[i].PlantUp);printf(请输入降落时间);scanf(%s,&p[i].PlaneDown);printf(请输入票价);scanf(%lf,&p[i].value);printf(请输入座位数);scanf(%d,&p[i].chair);printf(请输入起飞地点\n);scanf(%s,p[i].start);printf(请输入降落地点\n);scanf(%s,p[i].end);return0;}intNum(plane*p){inti,j=0;for(i=0;i10;i++){if(0!=strcmp(p-PlaneID,NULL))j++;}returnj;}intAll(plane*p){inti,j;j=Num(p);for(i=0;ij;i++){printf(\t航班号\t起飞时间\t降落时间\t起飞地点\t降落地点\t票价\t剩余座位数\n);printf(\t%s\t%s\t%s\t%20s\t%20s\t%lf\t%d,p[i].PlaneID,p[i].PlantUp,p[i].PlaneDown,p[i].start,p[i].end,p[i].value,p[i].chair);}return1;}in