【Selected】程序设计-旅游管理系统.doc.pdf
《【Selected】程序设计-旅游管理系统.doc.pdf》由会员分享,可在线阅读,更多相关《【Selected】程序设计-旅游管理系统.doc.pdf(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Important&Selected Documents程序设计报告(2015/2016 学年 第 二 学期)题目:旅游管理系统旅游管理系统旅游管理系统旅游管理系统一、一、课课题内容和要求题内容和要求旅游管理系统是某旅行社的旅游管理系统,具有排序,查找,计算,显示等功能。通过此课题,熟练账务文件,数组,指针的各种操作,以及一些算法思想的应用。功能要求:旅游管理系统信息应包括:(其中房源和客户的信息应该根据日常情况进行合理设置)基础信息:旅行社信息,线路信息,员工信息等业务管理:业务登记,确认出游,业务结算等信息查询:线路信息查询、人员信息查询、业务登记查询、确认出游查询、业务结算查询等统计分析
2、:登记业务汇总表、确认出游汇总表、业务结算汇总表、期间结算统计等。需要实现的功能:1)用户需要输入口令进入旅游管理系统2)实现所有相关信息的建立3)计算系统的业务数量,查询各类线路的需求状况4)按照线路或者出行人数进行排序,显示相关信息5)统计某时间段内的销售业绩,统计收入。6)将本系统的所有相关信息内容存为文件。界面友好,费用的收取应该符合常规。二、二、需需求分析求分析旅游管理系统的功能框架图如图 1 所示。图 1 功能框架图(1)提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。(2)基础信息查询:
3、通过调用文件,查询旅行社的基本信息。Important&Selected DocumentsImportant&Selected Documents(3)业务管理:调用结构体,有三个功能,业务登记是将需要输入的信息写入结构体,确认出游是为确认出游赋值(1 或 0),业务结算时将输入的信息进行初步处理。(4)信息查询:通过调用函数对结构体信息进行处理,输出相应数据。(5)统计分析:输出相应的表格。(6)密码函数:将输入的字符转化为“G”。(7)输入函数:将数据输入结构体。(8)分析函数:分析那些游客选择了什么服务。(9)输出函数:将处理好的数据以表格形式输出。(10)保存函数,将数据保存为文件。
4、(11)处理函数:对结构体的数据进行插入,修改,删除等处理。三、概要设计三、概要设计1 主要结构体struct tourist/定义结构体;2 主要函数流程图(1)写入函数:图 2 写入函数char name10;/游客姓名int rout;/路线选择char PNum11;/联系方式int acc;/是否住宿int ack;/确认出游开始定义 i,j,j 为输入的游客总量,利用 do-while 语句保证输入的值在 0-20 之间,然后通过 for 循环一个个输入每一个游客的信息。输入游客数量 j(2)输出登记函数:j20?N定义整型 i,字符型ac,ak,通过for 循环一个个判断每个游客
5、输出的信息该为 Y(Yes)还是 N(No)。如果 si.acc=1 即,这个游客的.acc 项为“真”,Y给这一个字符型 ac 赋值为 Y,如果 si.acc=0,这个游客的.acc 项为“假”,给这个字符型 ac 赋值为 N,字符型 ak 同理,然后在一个循环内利用 printf 函数Important&Selected Documentsij输入第 i 个游客数据YNImportant&Selected Documents输出这一个游客的信息,然后跳入下一个循环。总共有 len 个游客。图 3 输出函数(3)查找游客信息定义字符串 str_a 20,定义整型 i=0,用 scanf 函数
6、输入姓名信息,通过 strcmp函数比较 str_a 20和原结构体中储存的 si.name 的内容,如果相同则输出游客的信息,此时游客的确认出游和是否住宿可以参照上一个函数示例输出为Y(Yes)和N(No),如果不同则通过for 循环使 i+,对比下一个si.name,直到查找到游客的信息。图 4 查找功能(4)输出路线选择:该函数分为两个部分,一个是统计每条路线有多少人,一个是谁选了这条路线。定义整型 i,j,sum1,sum2,sum3,由 i=j 确保 for 循环不超过结构体中的游客数量,然后是第一个判断,通过前面设计的路线代码,如果 si.rout=其中一个路线代码时,sum 中的
7、一个制就加一,然后通过 for 循环,逐个判断每个游客选择的路线,最终输出每个路线有多少人选择。然后定义 i=0,通过 si.rout的值判断并输出 si.name,最终达到输出选择该路线的人有谁这个目的。图 5 输出路线开始i=0结束Y图 6 输出姓名si.rout=50?(5)输出统计表格(排序对比):N通过累加 si.acc,来确定最终由多少人住宿然后输出改质乘以Y的值(for 循环)i+Sum1+1si.rout=75?住宿费用得出住宿的收入,然后累加 si.rout 的值确定路线收入的值,通过+=N算法算出每一条路线的总收入,再用逻辑与和比较法得出那一条路线收入最NY高。Sum2+1
8、Sum3+1图 7 比较收入si.rout=60?Y开始四、四、源源程序代码程序代码(打印目录图案时的 printf 函数内容可能会乱,实际显示没问题)ij?#include N计算得出住宿和路线输出每条路线有多少游客Important&Selected Documents的收入,列表显示Important&Selected Documents#include#include#include#include#include#include#include#define MAG_PASSWD_LEN 16#define NUM 20#define sizes sizeof(tourist)str
9、uct 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.name,&si.rout,&si.PNum,&si.acc,&si.ack);void change(tourist s,int j)/修改游客system(cls);int i,num=j;char st
10、r_a20;printf(输入需要修改游客的名字:n);scanf(%s,str_a);for(i=0;inum;i+)if(strcmp(si.name,str_a)=0)printf(%s,%d,%s,%d,%drn,&si.name,si.rout,&si.PNum,si.acc,si.ack);printf(输入修改的信息:n);scanf(%s%d%s%d%d,&si.name,&si.rout,&si.PNum,&si.acc,&si.ack);void deletes(tourist s,int j)/删除游客system(cls);int i,num=j;char str_a2
11、0;printf(输入需要删除游客的名字:n);scanf(%s,str_a);for(i=0;inum;i+)if(strcmp(si.name,str_a)=0)for(i;inum;i+)si=si+1;Important&Selected DocumentsImportant&Selected Documentsint Input(tourist s)/输入数据int i,j;doprintf(输入游客数量(不超过 20 人):n);scanf(%d,&j);while(j20);system(cls);printf(输入登记信息(格式:姓名,路线,联系方式,是否住宿,确认出游.):n
12、);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.name,&si.rout,&si.PNum,&si.acc,&si.ack);printf(%s,%d,%s,%d,%drn,&si.name,si.rout,&si.PNum,si.acc,si.ack);printf(Input is finished.rn);return j;void Output(const tourist s,int len)/输出登记信息system(cl
13、s);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;Important&Selected DocumentsImportant&Selected Documentsif(si.rout=60)ro=3;printf(姓名:%s,路线:%d,联系方式:%s,是否住宿:%c,确认出游:%cn,&si.name,ro,&si.PNum,ac,ak);int Sum0
14、(tourist s,int j)/确认住宿收入int i,ret=0,num=j;for(i=0;inum;i+)ret+=si.acc;ret=retG50;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);elseprintf(房源紧缺n);return ret;int Sum2(tourist s,int j)/确认
15、景点收入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);Important&Selected DocumentsImportant&Selected Documentsreturn ret;int c1(tourist s,int j)/输出登记表格int i,ret=0,num=j;i
16、nt 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,&si.name,ro,&si.PNum,ac);printf(|n);printf(|-|n);return ret;int c2(tourist s,
17、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,&si.name);printf(|n);Important&Selected DocumentsImportant&Selected Documentsif(si.ack=0)printf(|n);printf(|%10s|否认|n,&si.name);printf(|n);printf(|-
18、|n);return 0;int c3(tourist s,int j)/输出收入表格int i,ret=0,num=j,z=0,G=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)G+=1;if(si.rout=60)c+=1;v=zG50+GG75+cG60;printf(|-|-|n);printf(|n);printf(|项目|价钱|n);printf(|n);printf(|-|-|n);printf(|n);printf(|住宿|%5d|n,retG50
19、);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,G=0,c=0;for(i=0;iG)printf(路线一和三收入同样是最高的n);if(z=G&zc)printf(路线一和二收入同样是最高的n);if(G=c&Gz)printf(路线二和三收入同样是最高的n);if(zG&zc)printf(路线一收入最高n);if(Gc&Gz)printf(路线二收入最高n);i
20、f(cz&cG)printf(路线三收入最高n);void ackput(tourist s,int j)/输出确认出游的游客int i,num=j;for(i=0;inum;i+)if(si.ack=1)printf(%-10sn,&si.name);elseprintf();Important&Selected DocumentsImportant&Selected Documentsvoid 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)s
21、um1+=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;elsesign=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,&si.n
22、ame);elseprintf();printf(选择路线二的有:n);i=0;for(i=0;inum;i+)if(si.rout=75)Important&Selected DocumentsImportant&Selected Documentsprintf(%-10sn,&si.name);elseprintf();printf(选择路线三的有:n);i=0;for(i=0;inum;i+)if(si.rout=60)printf(%-10sn,&si.name);elseprintf();int touristSear(tourist s,int j)/人员查询system(cls)
23、;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(si.name,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)Important&Selected DocumentsImportant&Selected Documentsro=2;if(si.rout=60)ro=3;print
24、f(|姓名:%s|,|路线:%d|,|联系方式:%s|,|是否住宿:%c|,|确认出游:%c|n,&si.name,ro,&si.PNum,ac,ak);return z;int SaveToFile(char Gfn,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,&si.name0,sizeof(tourist);_lwri
25、te(hFile2,buf,sizeof(tourist);_lclose(hFile2);return 1;elsereturn 0;/写入失败int ReadFromFile(char Gfn,int G n,tourist s)/读入文件int hFile2;int i,j;char buf sizeof(tourist)+1;Gn=0;hFile2=_lopen(fn,OF_READ);if(hFile21)return 0;for(i=0;i=sizes)memcpy(&si.name0,buf,sizeof(tourist);elsebreak;_lclose(hFile2);Gn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Selected 程序设计 旅游 管理 系统 doc
限制150内