《程序设计-旅游管理系统.docx》由会员分享,可在线阅读,更多相关《程序设计-旅游管理系统.docx(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计-旅游管理系统 程序设计报告 (2015/2016 学年 第 二 学期) 题 目:旅游管理系统 旅游管理系统一、课题内容和要求 旅游管理系统是某旅行社的旅游管理系统,具有排序,查找,计算,显示等功能。通过此课题,娴熟账务文件,数组,指针的各种操作,以及一些算法思想的应用。功能要求:旅游管理系统信息应包括:(其中房源和客户的信息应当依据日常状况进行合理设置)基础信息:旅行社信息,线路信息,员工信息等 业务管理:业务登记,确认出游,业务结算等 信息查询:线路信息查询、人员信息查询、业务登记查询、确认出游查询、业务结算查询等 统计分析:登记业务汇总表、确认出游汇总表、业务结算汇总表、期间结算
2、统计等。须要实现的功能:1) 用户须要输入口令进入旅游管理系统 2) 实现全部相关信息的建立 3) 计算系统的业务数量,查询各类线路的需求状况 4) 根据线路或者出行人数进行排序,显示相关信息 5) 统计某时间段内的销售业绩,统计收入。6) 将本系统的全部相关信息内容存为文件。界面友好,费用的收取应当符合常规。 二、需求分析 旅游管理系统的功能框架图如图 1 所 示。 图 1 功能框架图 (1)供应可操作的主菜单:输出个菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。依据客户输入的选项来运行不同的功能,运行不同的函数。(2)基础信息查询:通过调用文件,查询旅行社的基本信息。(3
3、)业务管理:调用结构体,有三个功能,业务登记是将须要输入的信息写入结构体,确认出游是为确认出游赋值(1 或 0),业务结算时将输入的信息进行初步处理。(4)信息查询:通过调用函数对结构体信息进行处理,输出相应数据。(5)统计分析:输出相应的表格。(6)密码函数:将输入的字符转化为*。(7)输入函数:将数据输入结构体。(8)分析函数:分析那些游客选择了什么服务。(9)输出函数:将处理好的数据以表格形式输出。(10)保存函数,将数据保存为文件。(11)处理函数:对结构体的数据进行插入,修改,删除等处理。三、 概要设计 1 主要结构体 struct tourist /定义结构体 char name1
4、0; /游客姓名int rout; /路途选择char PNum11; /联系方式int acc;/是否住宿int ack;/确认出游 ; 2 主要函数流程图 (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,这个游客的
5、.acc 项为假,给这个字符型 ac 赋值为 N,字符型 ak 同理,然后在一个循环内利用 printf 函数输出这一个游客的信息,然后跳入下一个循环。总共有 len 个游客。图 3 输出函数 (3)查找游客信息 定义字符串 str_a 20,定义整型 i=0,用 scanf 函数输入姓名信息,通过 strcmp函数比较 str_a 20和原结构体中储存的 si.name 的内容,假如相同则输出游客的信息,此时游客的确认出游和是否住宿可以参照上一个函数示例输出为 Y(Yes)和 N(No),假如不同则通过 for 循环使 i+,对比下一个 si.name,直到查找到游客的信息。 图 4 查找功
6、能(4)输出路途选择:该函数分为两个部分,一个是统计每条路途有多少人,一个是谁选了这条路途。定义整型 i,j,sum1,sum2,sum3,由 ilt;=j 确保 for 循环不超过结构体中的游客数量,然后是第一个推断,通过前面设计的路途代码,假如 si.rout=其中一个路途代码时,sum 中的一个制就加一,然后通过 for 循环,逐个推断每个游客选择的路途,最终输出每个路途有多少人选择。然后定义 i=0,通过 si.rout的值推断并输出 si.name,最终达到输出选择该路途的人有谁这个目的。 图 5 输出路途图 6 输出姓名 (5)输出统计表格(排序对比):通过累加 si.acc 的值
7、(for 循环),来确定最终由多少人住宿然后输出改质乘以住宿费用得出住宿的收入,然后累加 si.rout 的值确定路途收入的值,通过+=算法算出每一条路途的总收入,再用逻辑与和比较法得出那一条路途收入最高。图 7 比较收入 四、源程序代码 (打印书目图案时的 printf 函数内容可能会乱,实际显示没问题)#include lt;stdio.hgt; #include lt;stdlib.hgt; #include lt;conio.hgt; #include lt;ctype.hgt; #include lt;memory.hgt; #include lt;string.hgt; #incl
8、ude lt;malloc.hgt;#include lt;windows.hgt; #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
9、);scanf(%s%d%s%d%d,amp;si.name,amp;si.rout,amp;si.PNum,amp;si.acc,amp;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;ilt;num;i+) if (strcmp(si.name,str_a)=0) printf(%s ,%d ,%s ,%d ,%drn,amp;si.name,si.rout,amp;si.PN
10、um,si.acc,si.ack);printf (输入修改的信息:n);scanf(%s%d%s%d%d,amp;si.name,amp;si.rout,amp;si.PNum,amp;si.acc,amp;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;ilt;num;i+) if (strcmp(si.name,str_a)=0) for (i;ilt;num;i+) si=
11、si+1; int Input (tourist s)/输入数据 int i,j;do printf (输入游客数量(不超过 20 人):n); scanf (%d,amp;j);while (jlt;=0|jgt;20); system(cls);printf (输入登记信息(格式:姓名,路途,联系方式,是否住宿,确认出游.):n);printf (路途输入代码 1:50,2:75,3:60.住宿选 1,不住宿选 0n);for (i=0;ilt;j;i+) printf (输入第%d 个游客:n, i+1); scanf(%s%d%s%d%d,amp;si.name,amp;si.rout
12、,amp;si.PNum,amp;si.acc,amp;si.ack); printf(%s ,%d ,%s ,%d ,%drn,amp;si.name,si.rout,amp;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;ilt;len;i+) if (si.acc=1) ac=Y; if (si.acc=0) ac=N; if (si.ack
13、=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,amp;si.name,ro,amp;si.PNum,ac,ak); int Sum0 (tourist s,int j)/确认住宿收入 int i,ret=0,num=j;for (i=0;ilt;num;i+)ret +=si.acc;ret=ret*50; printf (住宿收入%d 元n,ret);retu
14、rn ret; int Sum1 (tourist s,int j) /确认住宿和住宿状况 int i,ret=0,num=j; for (i=0;ilt;num;i+)ret +=si.acc; printf (总共有%d 个游客住宿,ret); if (retlt;=10) printf (房源足够n); elseprintf (房源紧缺n); return ret; int Sum2 (tourist s,int j) /确认景点收入 int i,ret=0,num=j;for (i=0;ilt;num;i+)ret +=si.rout;printf (景点收入%d 元n,ret); r
15、eturn ret; int Sum3 (tourist s,int j)/确认出游 int i,ret=0,num=j;for (i=0;ilt;num;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;ilt;num;i+)if (si.acc=
16、1) ac=Y;else ac=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,amp;si.name,ro,amp;si.PNum,ac); printf(| |n);printf(|-|n); return ret; int c2 (tourist s,int j) /输出确认出游的表格 int i,num=j;printf (|-|n);printf (| | |n);printf (|姓
17、名 |确认出游 |n);printf (| | |n); printf (|-|n); for (i=0;ilt;num;i+) if (si.ack=1) printf (| | |n);printf (|%10s |确认 |n,amp;si.name);printf (| | |n); if (si.ack=0) printf (| | |n);printf (|%10s |否认 |n,amp;si.name);printf (| | |n); printf (|-|n);return 0; int c3 (tourist s,int j) /输出收入表格 int i,ret=0,num=
18、j,z=0,x=0,c=0,v=0; for (i=0;ilt;num;i+) if(si.acc=1) ret+=1;else ret+=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(
19、|-|-|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;ilt;num;i+) if(si.rout=50) z+=50;if(si.rout=75) x+=75;if(si.rout=60) c+=60; printf (路途一收入%d 元,路途二收入%d 元,路途三收入%d 元.,z,x,c);if (z=camp;amp;x=c) print
20、f (路途一二三收入一样高n);if (z=camp;amp;zgt;x) printf (路途一和三收入同样是最高的n);if (z=xamp;amp;zgt;c) printf (路途一和二收入同样是最高的n); if (x=camp;amp;xgt;z) printf (路途二和三收入同样是最高的n);if (zgt;xamp;amp;zgt;c) printf (路途一收入最高n);if (xgt;camp;amp;xgt;z) printf (路途二收入最高n);if (cgt;zamp;amp;cgt;x) printf (路途三收入最高n); void ackput (touri
21、st s,int j)/输出确认出游的游客 int i,num=j;for (i=0;ilt;num;i+) if (si.ack=1) printf (%-10sn,amp;si.name); else printf (); void routput (tourist s,int j) /输出路途选择 int i,num=j;int sum1=0,sum2=0,sum3=0;for (i=0;ilt;num;i+) if(si.rout=50) sum1+=1; if(si.rout=75) sum2+=1; if(si.rout=60) sum3+=1; int compare,sign;
22、for (compare=1;comparelt;76;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;ilt;num;i+) if (si.rout=50) printf (%-10sn,amp;si.name); else printf (); printf (选择路途二的有:n); i=0
23、;for (i=0;ilt;num;i+) if (si.rout=75) printf (%-10sn,amp;si.name); else printf (); printf (选择路途三的有:n); i=0;for (i=0;ilt;num;i+) if (si.rout=60) printf (%-10sn,amp;si.name); else printf (); int touristSear (tourist s,int j)/人员查询 system (cls);int i,num=j,z=0;int ro;char ac,ak;char str_a20;printf (输入姓名
24、查询信息:n);scanf (%s,str_a);for (i=0;ilt;num;i+) if (strcmp(si.name,str_a)=0) z=1;if (si.acc=1) ac=Y;else ac=N;if (si.ack=1) ak=Y; else 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|,|确认出游:%c|n,amp;si.name,ro,amp;si.PNum,ac,ak); return z
25、; int SaveTo *fn, int n, tourist s)/文件名,记录条数,数据,文件写入操作 int hFile2; int i,j; char bufsizeof(tourist)+1; h(fn, OF_WRITE); /打开文件 if (hFile2lt;1) /文件不存在,建立一个h(fn,0);if (hFile2gt;=1) /打开正常,写入数据for (i=0;ilt;n;i+) memcpy(buf,amp;si.name0,sizeof(tourist);_lwrite(h(tourist); _lclose(hFile2); return 1 ; else
26、return 0; /写入失败 int ReadFrom *fn, int * n, tourist s) /读入文件 int hFile2;int i,j; char buf sizeof(tourist)+1 ; *n=0; h(fn, OF_READ); if (hFile2lt;1) return 0;for (i=0;ilt;NUM;i+) j = _lread(h(tourist);if (jgt;=sizes)memcpy(amp;si.name0,buf,sizeof(tourist); elsebreak; _lclose(hFile2); *n=i; return 1 ;
27、int BasicInformation ()printf( -n);printf( + -+n);printf( + lt;基础信息gt;+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 Bu
28、sisnessmanagement () printf( -n);printf( + -+n);printf( + lt;业务管理gt;+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);print
29、f( +请输入5 请输入6+n);printf( + +n);printf( + +n);printf( -n);return 0; int Informationconsultation () printf( -n);printf( + -+n);printf( + lt;信息查询gt;+n);printf( + -+n);printf( + 线路信息查询+n);printf( + +n);printf( +请输入1确认出游查讯+n);printf( + +n);printf( + 人员信息查询 请输入4+n);printf( + +n);printf( +请输入2业务结算查询+n);pri
30、ntf( + +n);printf( + 业务登记查讯 请输入5+n);printf( + +n); printf( +请输入3+n);printf( -n);return 0; int statisticalanalysis () printf( -n);printf( + -+n);printf( + lt;统计分析gt;+n);printf( + -+n);printf( + 登记业务汇总表业务结算汇总表+n);printf( + +n);printf( +请输入1 请输入3+n);printf( + +n);printf( + +n);printf( + 确认出游汇总表期间结算汇总表+
31、n);printf( + +n);printf( +请输入2 请输入4+n);printf( + +n);printf( + +n);printf( + +n);printf( -n);return 0; void show_welcome(void) printf( -n);printf( + ¤ +n);printf( +, +n);printf( + +n);printf( + +n);printf( +田田 田 这里是南邮旅游管理系统 +n);printf( + +n);printf( +请输入口令(身份证后六位) +n);printf( + /-/-+n);printf
32、( +lt;| | +n);printf( + +n); printf( +. . . +n); printf( +. . . .+n);printf( + . . . . .+n);printf( +. . . . .+n);printf( + . . . . . .+n);printf( +. . . . .+n);printf( + . . .+n);printf( +. . . .+n); printf( +. . . . . . . . . . .+n);printf( + +n);printf( + +n);printf( + +n);printf( -n); void welcome (void) system(cls);printf ( n); printf (0 0) n); printf (+-oOO-(_)-OOo-+n); printf (|n); printf (|恭喜您登录胜利|n); printf (|请选择业务|n); printf (|n); printf (+-+n); printf ( |_|_|n); printf (| | n); printf ( ooO Ooon); void menu (void) printf( -