《《程序设计基础》课程设计报告.doc》由会员分享,可在线阅读,更多相关《《程序设计基础》课程设计报告.doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、程序设计基础程序设计基础课程设计报告课程设计报告一、一、 订票系统订票系统【需求分析需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以 及管理本系统的功能即能够修改航班信息。 具体分析如下: 1、录入功能 可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数。 2、查询功能 可以查询航班的各项信息,如可以查询时间,起飞抵达城市,确定航班是否满仓,航班号。3、订票功能 可以订票,所订航班的航班号以及所订的票数。 4、退票功能 可以退票。 5、修改功能 可以根据需要由管理员对航班信息进行修改更正。【概要设计概要设计】1、算法设计、算法设计:每个模块的算法
2、设计说明如下: (1)录入模块: 在数组允许范围内,将无意义的“0”数据修改为有意义的信息。 (2)查询模块: 提供四种查方式:按航号、按时间和按终点站查询,1 代表按航号查询,2 代表按终点 站查询,3 代表按时间查询,4 浏览全部。0 则表示退出查询。 按数组查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。 (3)订票模块: 查找乘客要订的航班号,判断此航班是否有空位,有则输入订票数,订票数小于剩余票数, 订票成功,否则失败。 (4)退票模块: 输入要退票的座位号,查找乘客资料的链表中是否有这位乘客,有则用下一行数组覆 盖该行,循环到最后不为“0”的行数或到最大航班号,并在
3、空位加上 1,无则退票失败。 (5)修改模块:在航班信息数组中查找要修改的数据,进行修改,否则不能修改。序号航班号终点站时间票数剩余2.2.存储结存储结构设计:构设计: 航班的信息:为了 便于查找和修改,航班的情况存储结构采用数组,每个元素表示一个航班的情况,包括序 号、航班号、时间、终点站、票数以及剩余票数六个数据项:数据结构 C 语言描述如下: struct flightstruct char flightnumber20;/航班号 char finishingline20;/终点站 char date20;/日期 unsigned maxamount;/总票数 unsigned rema
4、inders;/剩余票数 unsigned seatstateSEATAMOUNT;/座位数组,贮存座位信息 flightFLIGHTAMOUNT;【详细设计详细设计】本系统源程序如下: #include #include #include#define FLIGHTAMOUNT200/最大航班数 #define SEATAMOUNT500/最大座位数struct flightstruct char flightnumber20;/航班号 char finishingline20;/终点站 char date20;/日期 unsigned maxamount;/总票数 unsigned rem
5、ainders;/剩余票数 unsigned seatstateSEATAMOUNT;/座位数组,贮存座位信息 flightFLIGHTAMOUNT;void open(FILE *fp);/打开文件函数 void save(FILE *fp);/保存信息函数 void built(FILE *fp);/建立文件函数 void manage();/输入、管理信息函数 void insert(FILE *fp);/插入信息函数void remend(FILE *fp);/修改信息函数 void delet(FILE *fp);/删除信息函数 void delet_all(FILE *fp);/删
6、除所有信息函数 void scan();/浏览信息函数 void select();/查询信息函数 void booktickets();/订票函数 void print_info(unsigned);/输出打印信息函数 void sendbacktickets();/退票函数 int main() int times;/用于控制输入密码次数 char flag;/提供选择菜单的变量 char password20;/用于存贮密码printf(“n飞机订票系统n“); times=3; /验证密码。三次错误后,就自动退出程序。 do times-; printf(“请输入密码:“); scan
7、f(“%s“,password); if(strcmp(password,“2009“)=0) times=-1; break; else if(times0) printf(“ 密码错误!n 剩余 %d 次机会!n“,times); while(times0); if(times!=-1) printf(“ 对不起!n 您不是管理员! 不能使用此系统!n“); return 0; /主菜单 do printf(“nt*飞机订票系统 *n“); printf(“nt-主菜单-n“);printf(“t*-1-信息管理 信息浏览-2- *n“); printf(“t*-3-信息查询 订票系统-4
8、- *n“); printf(“t*-5-退票系统 退出-0- *n“); printf(“nt-n“); do scanf(“%c“, while(flag!=1 switch(flag) case 1:manage();break; case 2:scan();break; case 3:select();break; case 4:booktickets();break; case 5:sendbacktickets();break; case 0:;break; while(flag!=0); /*打开文件 “flightinfomaition.dat“*/ void open(FIL
9、E *fp) unsigned i;if(fp=fopen(“flightinfomaition.dat“,“r“)=NULL)/以只读方式打开 printf(“ 打开文件失败!n“); exit(0); for(i=0;iSEATAMOUNT) printf(“ 输入错误!n 请输入正确的数字:“); while(flighti.maxamountSEATAMOUNT); flighti.remainders=flighti.maxamount; save(fp); /*修改信息*/ void remend(FILE *fp) unsigned i,j,maxamount; char fla
10、g; char flightnumber20,finishingline20,date20; open(fp); do printf(“查询航班号?(Y/N):“); do scanf(“%c“, while(!(flag=y|flag=Y|flag=N|flag=n); if(flag=y|flag=Y) select(fp); printf(“请输入航班号:“); scanf(“%s“,flightnumber);for(i=0;iSEATAMOUNT) printf(“输入错误!请重新输入票数:“); while(maxamountSEATAMOUNT); if(maxamount!=0
11、) flighti.maxamount=maxamount;flighti.remainders=flighti.maxamount;for(j=0;jflighti.remainders) printf(“ 输入错误!n 请输入正确的数据:“); while(amountflighti.remainders); for(j=0;j0;j+) if(flighti.seatstatej=0) flighti.seatstatej=1; flighti.remainders-; save(fp); else printf(“没有找到“%s” 航班!n“,flightnumber); printf
12、(“是否继续订票?(Y/N):“); do flag=getchar(); while(!(flag=Y|flag=y|flag=N|flag=n); while(flag=y|flag=Y); /*退票函数*/ void sendbacktickets() FILE *fp=NULL; unsigned i,j,seatnumber; char flag,flightnumber20; printf(“*欢迎进入退票系统 *n“); do open(fp); printf(“请输入航班号:“); scanf(“%s“,flightnumber); for(i=0;iflighti.maxam
13、ount) printf(“输入错误!n 请重新输入座位号:“); while(seatnumberflighti.maxamount); for(j=0;jflighti.maxamountj+); if(seatnumber=j+1) flighti.remainders+; save(fp); else printf(“ 输入错误!n“); else printf(“ 没有找到“%s”航班!n“,flightnumber); printf(“是否继续退票?(Y/N):“); do flag=getchar(); while(!(flag=Y|flag=y|flag=N|flag=n); while(flag=y|flag=Y); /*程序结束*/【调试分析调试分析】调试结果:调试结果: (1)密码错误界面(2)系统主菜单界面:(3)进入管理信息的界面:(4)信息浏览的界面:(5)信息查询的界面:选择 1,按航班号查询的界面:选 2,按终点站查询信息:选 3 按时间查询信息。选 4 浏览全部。(6)进入退票的界面:
限制150内