设计一个景区购票系统,实现电子购票、结算和付款功能。程序运行,用户可查看该景区票价及优惠政策,通过菜单选择实现购票、查看已购票、结算和付款功能。各个功能通过函数实现,在主函数中通过调用相应函数实现相应功能。程序运行显示以下界面:*******************************欢迎光临山水乐园*************************** 景区门票价格1.成人票 50元/人2.儿童票(3-12岁) 15元/人3.青少年票(13-18岁) 20元/人4.老年人票(60岁及以上) 25元5.婴幼儿票(3岁以下) 免票***************************************************************************请根据菜单选项进行以下操作:1.购票2.查看已购门票3.结算4.付款0.退出该系统完成以下功能:1.购票:进入购票界面,可连续多次输入购票人年龄和数量。2.查看已购门票:查看购票结果。3.结算:根据已够门票计算应付款金额。4.付款:进行结账付款,根据用户输入的付款金额,系统自动进行找钱等功能。0.退出:退出程序。

时间: 2023-07-18 11:45:05 浏览: 44
下面是一个简单的C语言程序,实现了您所描述的景区购票系统。代码中使用了结构体和指针,以及动态内存分配等技术。请注意,这只是一个简单的示例程序,实际应用中可能需要更多的功能和错误处理。 ```c #include <stdio.h> #include <stdlib.h> #define ADULT_PRICE 50 #define CHILD_PRICE 15 #define YOUTH_PRICE 20 #define SENIOR_PRICE 25 typedef struct { int age; int count; } Ticket; int menu(); void purchase(Ticket **tickets, int *size); void view(Ticket *tickets, int size); void checkout(Ticket *tickets, int size); void pay(int total); int main() { Ticket *tickets = NULL; int size = 0; int choice; printf("***************************************\n"); printf("欢迎光临山水乐园\n"); printf("景区门票价格\n"); printf("1.成人票 50元/人\n"); printf("2.儿童票(3-12岁) 15元/人\n"); printf("3.青少年票(13-18岁) 20元/人\n"); printf("4.老年人票(60岁及以上) 25元\n"); printf("5.婴幼儿票(3岁以下) 免票\n"); printf("***************************************\n"); do { choice = menu(); switch (choice) { case 1: purchase(&tickets, &size); break; case 2: view(tickets, size); break; case 3: checkout(tickets, size); break; case 4: if (size == 0) { printf("没有购票记录\n"); } else { int total = 0; for (int i = 0; i < size; i++) { Ticket *t = tickets + i; if (t->age >= 3 && t->age <= 12) { total += t->count * CHILD_PRICE; } else if (t->age >= 13 && t->age <= 18) { total += t->count * YOUTH_PRICE; } else if (t->age >= 60) { total += t->count * SENIOR_PRICE; } else { total += t->count * ADULT_PRICE; } } printf("应付款金额:%d元\n", total); pay(total); free(tickets); size = 0; } break; case 0: printf("谢谢光临,再见!\n"); break; default: printf("无效的选项,请重新输入\n"); break; } } while (choice != 0); return 0; } int menu() { int choice; printf("请根据菜单选项进行以下操作:\n"); printf("1.购票\n"); printf("2.查看已购门票\n"); printf("3.结算\n"); printf("4.付款\n"); printf("0.退出\n"); printf("请选择:"); scanf("%d", &choice); return choice; } void purchase(Ticket **tickets, int *size) { int age, count; Ticket *t; do { printf("请输入购票人年龄(0退出):"); scanf("%d", &age); if (age == 0) { break; } printf("请输入购票数量:"); scanf("%d", &count); t = (Ticket *)realloc(*tickets, (*size + 1) * sizeof(Ticket)); if (t == NULL) { printf("内存分配失败\n"); exit(1); } *tickets = t; t += *size; t->age = age; t->count = count; (*size)++; } while (1); } void view(Ticket *tickets, int size) { if (size == 0) { printf("没有购票记录\n"); } else { printf("已购票记录:\n"); printf("年龄\t数量\n"); for (int i = 0; i < size; i++) { Ticket *t = tickets + i; printf("%d\t%d\n", t->age, t->count); } } } void checkout(Ticket *tickets, int size) { if (size == 0) { printf("没有购票记录\n"); } else { int total = 0; for (int i = 0; i < size; i++) { Ticket *t = tickets + i; if (t->age >= 3 && t->age <= 12) { total += t->count * CHILD_PRICE; } else if (t->age >= 13 && t->age <= 18) { total += t->count * YOUTH_PRICE; } else if (t->age >= 60) { total += t->count * SENIOR_PRICE; } else { total += t->count * ADULT_PRICE; } } printf("应付款金额:%d元\n", total); } } void pay(int total) { int paid, change; do { printf("请输入付款金额:"); scanf("%d", &paid); if (paid < total) { printf("付款金额不足,请重新输入\n"); } else { change = paid - total; printf("应找回:%d元\n", change); break; } } while (1); } ```

相关推荐

最新推荐

recommend-type

基于android电影购票系统设计与实现开题报告.docx

基于android电影购票系统设计与实现开题报告,随着互联网的快速发展,计算机网络的普及,电子商务的兴起,网络支付以及网络安全体系逐渐完善,人们的生活进入了网络时代,越来越多的人习惯于乐于网上购票,用户只需...
recommend-type

一个电影院购票平台任务书

电影院购票平台任务书,本课题的主要任务是构建电影院购票平台,超级管理员功能主要包括:首页轮播图管理、新闻资讯管理、用户管理、电影管理、影院论坛管理、投诉建议管理、统计中心等功能。 用户功能主要包括:...
recommend-type

飞机订票系统设计与实现 (里面附有源代码!)

基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。本课程设计的题目为:飞机...
recommend-type

javaweb电影购票系统开题报告.doc

javaweb电影购票系统开题报告javaweb电影购票系统开题报告javaweb电影购票系统开题报告javaweb电影购票系统开题报告javaweb电影购票系统开题报告
recommend-type

电影院购票平台开题报告

随着互联网的快速发展,计算机网络的普及,电子商务的兴起,网络支付以及网络安全体系逐渐完善,人们的生活进入了网络时代,越来越多的人习惯于乐于网上购票,用户只需上网轻轻点击鼠标选择订票,便能订购票务。...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

深入了解MATLAB开根号的最新研究和应用:获取开根号领域的最新动态

![matlab开根号](https://www.mathworks.com/discovery/image-segmentation/_jcr_content/mainParsys3/discoverysubsection_1185333930/mainParsys3/image_copy.adapt.full.medium.jpg/1712813808277.jpg) # 1. MATLAB开根号的理论基础 开根号运算在数学和科学计算中无处不在。在MATLAB中,开根号可以通过多种函数实现,包括`sqrt()`和`nthroot()`。`sqrt()`函数用于计算正实数的平方根,而`nt
recommend-type

react的函数组件的使用

React 的函数组件是一种简单的组件类型,用于定义无状态或者只读组件。 它们通常接受一个 props 对象作为参数并返回一个 React 元素。 函数组件的优点是代码简洁、易于测试和重用,并且它们使 React 应用程序的性能更加出色。 您可以使用函数组件来呈现简单的 UI 组件,例如按钮、菜单、标签或其他部件。 您还可以将它们与 React 中的其他组件类型(如类组件或 Hooks)结合使用,以实现更复杂的 UI 交互和功能。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。