程序设计-旅游管理系统.doc_第1页
程序设计-旅游管理系统.doc_第2页
程序设计-旅游管理系统.doc_第3页
程序设计-旅游管理系统.doc_第4页
程序设计-旅游管理系统.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

此文档收集于网络,仅供学习与交流,如有侵权请联系网站删除程序设计报告(2015/2016学年 第 二 学期)题 目:旅游管理系统 旅游管理系统一、 课题内容和要求旅游管理系统是某旅行社的旅游管理系统,具有排序,查找,计算,显示等功能。通过此课题,熟练账务文件,数组,指针的各种操作,以及一些算法思想的应用。功能要求:旅游管理系统信息应包括:(其中房源和客户的信息应该根据日常情况进行合理设置)基础信息:旅行社信息,线路信息,员工信息等业务管理:业务登记,确认出游,业务结算等信息查询:线路信息查询、人员信息查询、业务登记查询、确认出游查询、业务结算查询等统计分析:登记业务汇总表、确认出游汇总表、业务结算汇总表、期间结算统计等。需要实现的功能:1) 用户需要输入口令进入旅游管理系统2) 实现所有相关信息的建立3) 计算系统的业务数量,查询各类线路的需求状况4) 按照线路或者出行人数进行排序,显示相关信息5) 统计某时间段内的销售业绩,统计收入。6) 将本系统的所有相关信息内容存为文件。界面友好,费用的收取应该符合常规。二、 需求分析旅游管理系统的功能框架图如图1所示。旅游管理系统基础信息业务管理统计分析信息查询旅行社信息员工信息线路信息业务登记业务结算确认出游线路信息查询业务结算查询确认出游查询业务登记查询人员信息查询登记业务总汇表期间结算统计业务结算总汇表确认出游总汇表增加记录删除记录修改记录图1 功能框架图(1)提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。(2)基础信息查询:通过调用文件,查询旅行社的基本信息。(3)业务管理:调用结构体,有三个功能,业务登记是将需要输入的信息写入结构体,确认出游是为确认出游赋值(1或0),业务结算时将输入的信息进行初步处理。(4)信息查询:通过调用函数对结构体信息进行处理,输出相应数据。(5)统计分析:输出相应的表格。(6)密码函数:将输入的字符转化为“*”。(7)输入函数:将数据输入结构体。(8)分析函数:分析那些游客选择了什么服务。(9)输出函数:将处理好的数据以表格形式输出。(10)保存函数,将数据保存为文件。(11)处理函数:对结构体的数据进行插入,修改,删除等处理。三、概要设计1 主要结构体struct tourist /定义结构体char name10; /游客姓名int rout; /路线选择char PNum11; /联系方式int acc; /是否住宿int ack; /确认出游;2 主要函数流程图开始输入游客数量jj20 ?N输入第i个游客数据ijYYN输入完成,结束(1) 写入函数:图2 写入函数 定义i,j,j为输入的游客总量,利用do-while语句保证输入的值在0-20之间,然后通过for循环一个个输入每一个游客的信息。(2) 输出登记函数:定义整型i,字符型ac,ak,通过for循环一个个判断每个游客输出的信息该为Y(Yes)还是N(No)。如果si.acc=1即,这个游客的.acc项为“真”,给这一个字符型ac赋值为Y,如果si.acc=0,这个游客的.acc项为“假”,给这个字符型ac赋值为N,字符型ak同理,然后在一个循环内利用printf函数输出这一个游客的信息,然后跳入下一个循环。总共有len个游客。NYi=0Ilen?ac=Yac=Nak=Yak=N开始,调用siSi.acc=1?Si.ack=1?输出第i个游客的信息i+结束YYNN图3 输出函数(3) 查找游客信息 定义字符串str_a 20,定义整型i=0,用scanf函数输入姓名信息,通过strcmp函数比较str_a 20和原结构体中储存的的内容,如果相同则输出游客的信息,此时游客的确认出游和是否住宿可以参照上一个函数示例输出为Y(Yes)和N(No),如果不同则通过for循环使i+,对比下一个,直到查找到游客的信息。开始,调用si信息输入姓名输入的字符串和相等i+输出改游客的信息。注:.ack和.acc由Y/N输出完成i=0NY图4 查找功能(4) 输出路线选择:该函数分为两个部分,一个是统计每条路线有多少人,一个是谁选了这条路线。定义整型i,j,sum1,sum2,sum3,由i=j确保for循环不超过结构体中的游客数量,然后是第一个判断,通过前面设计的路线代码,如果si.rout=其中一个路线代码时,sum中的一个制就加一,然后通过for循环,逐个判断每个游客选择的路线,最终输出每个路线有多少人选择。然后定义i=0,通过si.rout的值判断并输出,最终达到输出选择该路线的人有谁这个目的。NNN开始i=0si.rout=50?si.rout=75?si.rout=60?Sum1+1Sum2+1Sum3+1YYYi+ij?Y输出每条路线有多少游客N结束开始i=0,k=1游客i是否选择路线k?输出游客i的名字ilen?i+NYNYk4?k+结束YN图5 输出路线图6 输出姓名(5) 输出统计表格(排序对比):通过累加si.acc的值(for循环),来确定最终由多少人住宿然后输出改质乘以住宿费用得出住宿的收入,然后累加si.rout的值确定路线收入的值,通过+=算法算出每一条路线的总收入,再用逻辑与和比较法得出那一条路线收入最高。开始计算得出住宿和路线的收入,列表显示比较每条路线的总收入并选出哪一条最高,输出结果结束图7 比较收入四、 源程序代码 (打印目录图案时的printf函数内容可能会乱,实际显示没问题)#include #include #include #include #include #include #include #include #define MAX_PASSWD_LEN 16#define NUM 20#define sizes sizeof (tourist)struct tourist /定义结构体char name10;int rout;char PNum11;int acc;int ack;typedef struct tourist tourist; /结构体名称为touristvoid insert (tourist s,int i) /插入游客system(cls);printf (输入增加的游客:n);scanf(%s%d%s%d%d,&,&si.rout,&si.PNum,&si.acc,&si.ack);void change (tourist s,int j) /修改游客system (cls);int i,num=j;char str_a20;printf (输入需要修改游客的名字:n);scanf (%s,str_a);for (i=0;inum;i+)if (strcmp(,str_a)=0)printf(%s ,%d ,%s ,%d ,%drn,&,si.rout,&si.PNum,si.acc,si.ack);printf (输入修改的信息:n);scanf(%s%d%s%d%d,&,&si.rout,&si.PNum,&si.acc,&si.ack);void deletes (tourist s,int j) /删除游客system (cls);int i,num=j;char str_a20;printf (输入需要删除游客的名字:n);scanf (%s,str_a);for (i=0;inum;i+)if (strcmp(,str_a)=0)for (i;inum;i+)si=si+1;int Input (tourist s) /输入数据int i,j;doprintf (输入游客数量(不超过20人):n);scanf (%d,&j);while (j20);system(cls); printf (输入登记信息(格式:姓名,路线,联系方式,是否住宿,确认出游.):n); printf (路线输入代码1:50,2:75,3:60.住宿选1,不住宿选0n);for (i=0;ij;i+)printf (输入第%d个游客:n, i+1); scanf(%s%d%s%d%d,&,&si.rout,&si.PNum,&si.acc,&si.ack); printf(%s ,%d ,%s ,%d ,%drn,&,si.rout,&si.PNum,si.acc,si.ack);printf(Input is finished.rn);return j;void Output (const tourist s,int len) /输出登记信息system(cls);int i,ro;char ac,ak;for (i=0;ilen;i+)if (si.acc=1)ac=Y;if (si.acc=0)ac=N;if (si.ack=1)ak=Y;if (si.ack=0)ak=N;if (si.rout=50)ro=1;if (si.rout=75)ro=2;if (si.rout=60)ro=3;printf (姓名:%s,路线:%d,联系方式:%s,是否住宿:%c,确认出游:%cn,&,ro,&si.PNum,ac,ak);int Sum0 (tourist s,int j) /确认住宿收入int i,ret=0,num=j;for (i=0;inum;i+)ret +=si.acc;ret=ret*50;printf (住宿收入%d元n,ret);return ret;int Sum1 (tourist s,int j) /确认住宿和住宿情况int i,ret=0,num=j; for (i=0;inum;i+)ret +=si.acc; printf (总共有%d个游客住宿,ret); if (ret=10) printf (房源充足n); else printf (房源紧缺n); return ret;int Sum2 (tourist s,int j) /确认景点收入int i,ret=0,num=j;for (i=0;inum;i+)ret +=si.rout;printf (景点收入%d元n,ret); return ret;int Sum3 (tourist s,int j) /确认出游int i,ret=0,num=j;for (i=0;inum;i+)ret +=si.ack;printf (共%d个游客确认出游,ret); return ret;int c1 (tourist s,int j) /输出登记表格int i,ret=0,num=j;int ro;char ac;printf(|-|n);printf(| | | | |n);printf(| 名字 | 路线 | 电话 | 是否住宿 |n);printf(| | | | |n);for (i=0;inum;i+) if (si.acc=1)ac=Y;elseac=N;if (si.rout=50)ro=1;if (si.rout=75)ro=2;if (si.rout=60)ro=3; printf(|-|n);printf(| | | | |n);printf(| %10s | %d | %11s | %c |n,&,ro,&si.PNum,ac);printf(| | | | |n);printf(|-|n); return ret;int c2 (tourist s,int j) /输出确认出游的表格 int i,num=j;printf (|-|n);printf (| | |n);printf (| 姓名 | 确认出游 |n);printf (| | |n); printf (|-|n);for (i=0;inum;i+)if (si.ack=1)printf (| | |n);printf (|%10s | 确认 |n,&);printf (| | |n);if (si.ack=0)printf (| | |n);printf (|%10s | 否认 |n,&);printf (| | |n); printf (|-|n);return 0;int c3 (tourist s,int j) /输出收入表格int i,ret=0,num=j,z=0,x=0,c=0,v=0; for (i=0;inum;i+)if(si.acc=1)ret+=1;elseret+=0;if(si.rout=50)z+=1;if(si.rout=75)x+=1;if(si.rout=60)c+=1;v=z*50+x*75+c*60;printf(|-|-|n);printf(| | |n);printf(| 项目 | 价钱 |n);printf(| | |n);printf(|-|-|n);printf(| | |n);printf(| 住宿 | %5d |n,ret*50);printf(| | |n);printf(|-|-|n);printf(| | |n);printf(| 线路 | %5d |n,v);printf(| | |n);printf(|-|-|n);return 0;void c4 (tourist s,int j) /统计输出int i,num=j,z=0,x=0,c=0;for (i=0;ix)printf (路线一和三收入同样是最高的n);if (z=x&zc)printf (路线一和二收入同样是最高的n);if (x=c&xz)printf (路线二和三收入同样是最高的n);if (zx&zc)printf (路线一收入最高n);if (xc&xz)printf (路线二收入最高n);if (cz&cx)printf (路线三收入最高n);void ackput (tourist s,int j) /输出确认出游的游客int i,num=j;for (i=0;inum;i+)if (si.ack=1) printf (%-10sn,&);elseprintf ();void routput (tourist s,int j) /输出路线选择int i,num=j;int sum1=0,sum2=0,sum3=0;for (i=0;inum;i+)if(si.rout=50)sum1+=1;if(si.rout=75)sum2+=1;if(si.rout=60)sum3+=1;int compare,sign;for (compare=1;compare76;compare+)if (si.rout=compare)sign=1;break;else sign=0;if(sign=0)printf (errorn);printf (选择路线一的有%d人,选择路线二的有%d人,选择路线三的有%d人n,sum1,sum2,sum3);i=0;printf (选择路线一的有:n);for (i=0;inum;i+)if (si.rout=50) printf (%-10sn,&);elseprintf ();printf (选择路线二的有:n);i=0;for (i=0;inum;i+)if (si.rout=75) printf (%-10sn,&);elseprintf ();printf (选择路线三的有:n);i=0;for (i=0;inum;i+)if (si.rout=60) printf (%-10sn,&);elseprintf ();int touristSear (tourist s,int j) /人员查询system (cls);int i,num=j,z=0;int ro;char ac,ak;char str_a20;printf (输入姓名查询信息:n);scanf (%s,str_a);for (i=0;inum;i+)if (strcmp(,str_a)=0) z=1;if (si.acc=1)ac=Y;elseac=N;if (si.ack=1)ak=Y;elseak=N;if (si.rout=50)ro=1;if (si.rout=75)ro=2;if (si.rout=60)ro=3; printf (| 姓名:%s |,| 路线:%d |,| 联系方式:%s |,| 是否住宿:%c |,| 确认出游:%c |n,&,ro,&si.PNum,ac,ak);return z;int SaveToFile(char *fn, int n, tourist s) /文件名,记录条数,数据,文件写入操作int hFile2;int i,j;char bufsizeof(tourist)+1; hFile2=_lopen(fn, OF_WRITE);/打开文件 if (hFile2=1)/打开正常,写入数据 for (i=0;in;i+) memcpy(buf,&0,sizeof(tourist); _lwrite(hFile2,buf,sizeof(tourist); _lclose(hFile2); return 1 ; else return 0;/写入失败int ReadFromFile(char *fn, int * n, tourist s) /读入文件int hFile2; int i,j; char buf sizeof(tourist)+1 ; *n=0; hFile2=_lopen(fn, OF_READ); if (hFile21) return 0; for (i=0;i=sizes) memcpy(&0,buf,sizeof(tourist); else break; _lclose(hFile2); *n=i; return 1 ;int BasicInformation () printf( -n);printf( + - +n);printf( + +n);printf( + - +n);printf( + 旅行社信息 +n);printf( + +n);printf( + 请输入1 +n);printf( + +n);printf( + 线路信息 +n);printf( + +n);printf( + 请输入2 +n);printf( + +n);printf( + 员工信息 +n);printf( + +n);printf( + 请输入3 +n);printf( -n);return 0;int Busisnessmanagement ()printf( -n);printf( + - +n);printf( + +n);printf( + - +n);printf( + 业务登记 插入记录 +n);printf( + +n);printf( + 请输入1 请输入2 +n);printf( + +n);printf( + +n);printf( + 修改记录 删除记录 +n);printf( + +n);printf( + 请输入3 请输入4 +n);printf( + +n);printf( + +n);printf( + 确定出游 业务结算 +n);printf( + +n);printf( + 请输入5 请输入6 +n);printf( + +n);printf( + +n);printf( -n);return 0;int Informationconsultation ()printf( -n);printf( + - +n);printf( + +n);printf( + - +n);printf( + 线路信息查询 +n);printf( + +n);printf( +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论