东华大学 数据结构课程设计.docx
- 文档编号:17973287
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:40
- 大小:564.93KB
东华大学 数据结构课程设计.docx
《东华大学 数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《东华大学 数据结构课程设计.docx(40页珍藏版)》请在冰点文库上搜索。
东华大学数据结构课程设计
目录
设计题目一航空订票系统
任务…………………………………………2
功能要求……………………………………2
需求分析……………………………………2
概要设计……………………………………3
详细设计……………………………………5
调试分析……………………………………13
用户手册……………………………………14
测试结果……………………………………14
设计题目二哈希表查找的设计
任务…………………………………………19
功能要求……………………………………19
需求分析……………………………………19
概要设计……………………………………19
详细设计……………………………………20
调试分析……………………………………24
用户手册……………………………………25
测试结果……………………………………25
设计题目一航空订票系统
任务
航空客运定票的业务活动包括:
查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
功能要求
1)录入:
可以录入航班情况
2)查询:
可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
3)订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果
该航班已经无票,可以提供相关可选择航班;
4)退票:
可退票,退票后修改相关数据文件;
5)客户资料:
有姓名,证件号,订票数量及航班情况,订单要有编号;
6)修改航班信息:
当航班信息改变可以修改航班数据文件。
需求分析
宏观需求分析
1)采用现有的软硬件环境及先进的管理系统方案,从而达到充分利用现有资源,提高系统应用效果的目的。
2)尽量达到系统操作过程中的直观、方便、实用、安全等要求。
3)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
4)系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。
具体需求分析
菜单是应用程序中非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。
1)录入航线信息
编写voidinput()函数来输入全部航线信息。
其中调用了intcheck(chars[])函数,该函数的功能是检查信息是否重复;以及voidsave()从而存储全部航线信息。
2)按航班号查询航班信息
编写voidsearch_num()函数来实现查询航班信息的宫呢个。
这个函数中需要输入要查询的航班号,通过voidsearch_num()函数来寻找这个航线然后输出该航线的全部信息。
3)按航线查询航班信息
编写voidsearch_line()函数来实现查询航线的功能。
用户输入出发城市以及抵达城市名后,该函数会在航线信息链表中进行查询。
如果有该城市,则会输出此航线的信息。
4)办理订票业务
编写voidbooking()函数来实现订票功能。
首先提示用户输入个人及航班号,然后查找此航班,如果该航班存在,则会提示用户输入订单信息,在订票乘员名单域中添加客户信息。
5)办理退票业务
编写voidcancel()函数来实现退票功能。
首先提示用户输入订单编号,然后查找此订单,如果该订单存在,则提示退票成功并将乘员信息中的该乘员信息删除,修改航班的剩余票数信息。
6)查询客户资料
编写voidsearch_customer()函数来实现客户资料查询功能,输出订单编号、客户姓名、证件号、订票量以及航班号。
7)修改航班信息
编写voidedit()来实现修改航班信息的功能。
在检查输入航班号与原航班号不重复之后输入航班号的全部信息并保存。
8)退出系统
用户在菜单页面下输入8回车即exit(0),即可退出系统。
概要设计
typedefstructFlight//航班信息
{
charFlightNumber[20];//航班号
charSPlace[20];//出发城市
charDPlace[20];//到达城市
charSEtime[20];//起飞--降落时间
intprice;//价格
intdiscount;//折扣率(%)
inttotal;//总票数
intleft;//剩余票数
}Flight;
typedefstructOrder//订单信息
{
intOrderNumber;//订单编号
charPName[10];//客户姓名
charID[20];//证件号
charFlightNumber[20];//航班号
intnum;//订票数量
}Order;
voidduqu()//读取文件信息
charmenu()//菜单
voidsave()//录入信息
voidinput()//输入航班信息
intcheck(chars[])//检查是否重复
voidsearch_num()//航班信息查询(按航班号)
voidsearch_line()//航班信息查询(按路线)
voidbooking()//订票
voidcancel()//退票
voidsearch_customer()//客户资料查询
voidedit()//修改航班信息
intmain()
库函数:
#include
#include
#include
#include
#include
程序调用关系:
详细设计
#include
#include
#include
#include
#include
#defineN100//最大容量
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
typedefstructFlight//航班信息
{
charFlightNumber[20];//航班号
charSPlace[20];//出发城市
charDPlace[20];//到达城市
charSEtime[20];//起飞--降落时间
intprice;//价格
intdiscount;//折扣率(%)
inttotal;//总票数
intleft;//剩余票数
}Flight;
typedefstructOrder//订单信息
{
intOrderNumber;//订单编号
charPName[10];//客户姓名
charID[20];//证件号
charFlightNumber[20];//航班号
intnum;//订票数量
}Order;
inti,j;
intair_num=0;//航班数
intorder_num=0;//订单数
chart;//获取客户选择的变量
charfilenamef[]="flight.txt";//航班文件名
charfilenameo[]="order.txt";//订单文件名
Flightfl[N];
Orderod[N];
intcheck(chars[]);
voidduqu()//读取文件信息
{
FILE*fp;
if((fp=fopen(filenamef,"r"))!
=NULL)//打开文件读取航班信息
{
i=0;
while(!
feof(fp))//读取文件
{
fscanf(fp,"%s%s%s%s%d%d%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i].DPlace,&fl[i].SEtime,&fl[i].price,&fl[i].discount,&fl[i].total,&fl[i].left);//fscanf用于从文件读入数据
if(!
feof(fp))//feof(fp)返回0才可进行对文件的操作
i++;
}
air_num=i;//航班数量
fclose(fp);//关闭文件
}
if((fp=fopen(filenameo,"r"))!
=NULL)//打开文件读取订单信息
{
i=0;
while(!
feof(fp))//读取文件
{
fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od[i].FlightNumber,&od[i].num);
if(!
feof(fp))
i++;
}
order_num=i;//订单数量
fclose(fp);//关闭文件
}
}
voidsave()//录入信息
{
FILE*fp;//定义标准数据结构,用于文件
if((fp=fopen(filenamef,"w"))!
=NULL)//打开文件保存航班信息(fopen标准函数,打开磁盘文件flight.txt,用于读,送返指针,指向FILE类型对象)
{
for(i=0;i { fprintf(fp,"%s%s%s%s%d%d%d%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discount,fl[i].total,fl[i].left); } fclose(fp);//关闭文件 } if((fp=fopen(filenameo,"w"))! =NULL)//打开文件保存订单信息 { for(i=0;i { fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].FlightNumber,od[i].num); } fclose(fp);//关闭文件 } } voidinput()//输入航班信息 { for(i=air_num;i { printf("请输入航班号: "); gets(fl[i].FlightNumber); while(check(fl[i].FlightNumber)! =1)//检查是否重复 { printf("航班号重复,请重新输入: "); gets(fl[i].FlightNumber); } printf("出发城市: "); gets(fl[i].SPlace); printf("到达城市: "); gets(fl[i].DPlace); printf("起飞时间--到达时间: "); gets(fl[i].SEtime); printf("价格: "); scanf("%d",&fl[i].price); printf("折扣率(%%): "); scanf("%d",&fl[i].discount); printf("总票数: "); scanf("%d",&fl[i].total); printf("剩余票数: "); scanf("%d",&fl[i].left); getchar();//消除回车 air_num++;//航班数加1 printf("航班信息录入完成! 继续录入? (Y/N): "); while (1) { t=getchar();//输入一个字符型数据,把值赋给变量t getchar();//消除上一步产生的回车符 if(t=='y'||t=='Y'||t=='n'||t=='N') break; else printf("请重新输入: "); } if(t=='n'||t=='N') break; } save();//保存 } intcheck(chars[])//检查是否重复 { intg=0; for(;g if(strcmp(fl[g].FlightNumber,s)==0&&g! =i)//对比是否相同相同就说明重复了 returng;//表示重复了 return1;//遍历了整个数组都没发现重复的表示没有重复 } voidedit()//修改航班信息 { chars[100]; printf("请输入要修改的航班号: "); gets(s); for(i=0;i if(strcmp(fl[i].FlightNumber,s)==0) break;//存在结束循环 if(i==air_num) { printf("没有您输入航班信息,请按回车键返回! "); getchar(); return; } printf("请输入新的航班号: "); gets(fl[i].FlightNumber); while(check(fl[i].FlightNumber)! =1)//检查是否重复 { printf("航班号重复,请重新输入: ");//检查后发现重复 gets(fl[i].FlightNumber); } printf("请更新下列信息: \n"); printf("出发城市: "); gets(fl[i].SPlace); printf("到达城市: "); gets(fl[i].DPlace); printf("起飞时间--到达时间: "); gets(fl[i].SEtime); printf("价格: "); scanf("%d",&fl[i].price); printf("折扣率(%%): "); scanf("%d",&fl[i].discount); printf("总票数: "); scanf("%d",&fl[i].total); printf("剩余票数: "); scanf("%d",&fl[i].left); getchar();//消除回车 save();//保存 printf("修改成功! \n"); system("pause");//任意键继续 } voidbooking()//订票 { i=order_num; printf("请输入您的姓名: "); gets(od[i].PName); printf("请输入您的证件号: "); gets(od[i].ID); printf("请输入订票的航班号: "); gets(od[i].FlightNumber); for(j=0;j if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0)//对比是否相同 break; if(j==air_num)//表示航班不存在 { printf("航班号不存在! 请按回车键返回! "); getchar(); return; } printf("请输入订票数量: "); scanf("%d",&od[i].num); fl[j].left-=od[i].num;//新的剩余票数 printf("请输入订单编号: "); scanf("%d",&od[i].OrderNumber); getchar();//消除回车 order_num++;//订单数加1 save();//保存到文件 printf("订票成功! \n"); system("pause");//任意键继续 } voidcancel()//退票 { intnum; printf("请输入要退票的订单编号: "); scanf("%d",&num); getchar();//消除回车 for(i=0;i if(od[i].OrderNumber==num)//检查是否存在订单编号 break; if(i==order_num) { printf("订单不存在! 请按回车键返回! "); getchar(); return; } j=check(od[i].FlightNumber);//获取航班的下标 fl[j].left+=od[i].num;//新的剩余票数 od[i]=od[order_num-1];//最后一条订单覆盖退票的订单 order_num--;//订单数减1 save();//保存 printf("退票成功! \n"); system("pause");//任意键继续 } voidsearch_num()//航班信息查询(按航班号) { chars[100]; printf("请输入要查询的航班号: \n"); gets(s); for(i=0;i if(strcmp(fl[i].FlightNumber,s)==0) break;//存在结束循环 if(i==air_num) { printf("航班号不存在! 请按回车键返回! "); getchar(); return; } printf("查询成功! \n\n"); printf("航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%)总票数剩余票数\n"); printf("%s%s%s%s%d%d%d%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discount,fl[i].total,fl[i].left); printf("**************************************************************************\n"); printf("\n"); system("pause");//任意键继续 } voidsearch_line()//航班信息查询(按路线) { chars[20],e[20]; intflag=0; printf("请输入要查询的路线的起点: "); gets(s); printf("请输入要查询的路线的终点: "); gets(e); printf("查询成功! \n\n"); printf("航班号出发城市到达城市起飞时间--到达时间价格折扣率(%%)总票数剩余票数\n"); for(i=0;i if(strcmp(fl[i].SPlace,s)==0&&strcmp(fl[i].DPlace,e)==0) { printf("%s%s%s%s%d%d%d%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].SEtime,fl[i].price,fl[i].discount,fl[i].total,fl[i].left); } printf("**************************************************************************\n"); printf("\n"); flag=1;//标记找到了信息 if(flag==0) { printf("航班信息不存在! \n"); } system("pause");//任意键继续 } voidsearch_customer()//客户资料查询 { printf("订单编号客户姓名证件号订票量航班号\n"); for(i=0;i { printf("%d%s%s%d%s\n",od[i].OrderNumber,od[i].PName,od[i].ID,od[i].num,od[i].FlightNumber); } printf("******************************************************************\n"); printf("\n"); system("pause");//任意键继续 } charmenu()//菜单 { charc; printf("欢迎来到航空订票系统! \n"); printf("**==>1录入航班情况**\n"); printf("**==>2航班信息查看(航班号查询)**\n"); printf("**==>3航班信息查看(站站查询)**\n"); printf("**==>4订票**\n"); printf("**==>5退票**\n"); printf("**==>6客户资料**\n"); printf("**==>7航班信息修改**\n"); printf("**==>8退出**\n"); printf("请选择功能: \n"); c=getchar(); getchar();//消除缓存中的换行符 returnc; } intmain() { duqu();//读取文件信息 while (1) { t=menu();//获取选择 switch(t) { case'1': input();break;//航班信息录入 case'2': search_num();break;//航班信息查询(按航班号) case'3': search_line();break;//航班信息查询(按路线) case'4': booking();break;//订票 case'5': cancel();break;//退票 case'6': search_customer();break;//客户资料 case'7': edit();break;//航班信息修改 case'8': exit(0);//退出 } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华大学 数据结构课程设计 东华 大学 数据结构 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)