支持复制编译无错
#include "myHead.h"
/*
电影院售票系统。要求完成:
包括票的预订功能,
退票功能,
可显示剩余票数,
结构体 函数 分支 宏 循环
*/
int main(void)
{
int userScan;
initMovie();
UI();
timeTable();
while (1)
{
printf("> ");
scanf("%d", &userScan);
checkScanf(userScan);
}
system("pause:");
return 0;
}
头文件
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _user
{
char name[128];
int myMovie[4];
}UserType;
typedef struct _movie
{
int price;
int location; // 剩余座位
char name[128];
char Timer[8];
}MovieType;
#define TICKET1 1
#define TICKET2 2
#define TICKET3 3
MovieType movie1;
MovieType movie2;
MovieType movie3;
void initMovie();
void UI();
void timeTable();
void subscribe(int use);
void checkScanf(int scan);
c
#include "myHead.h"
void initMovie()
{
strcpy(movie1.name, "美人鱼");
movie1.price = 32;
movie1.location = 30;
strcpy(movie1.Timer, "12:00");
strcpy(movie2.name, "老九门");
movie2.price = 20;
movie2.location = 30;
strcpy(movie2.Timer, "13:40");
strcpy(movie3.name, "狙击手");
movie3.price = 10;
movie3.location = 30;
strcpy(movie3.Timer, "16:00");
}
void UI()
{
printf("\t\t\t\t\t**********电影院售票系统**********\n");
printf("1.预定电影票\n2.退票\n3.刷新时间表\n");
}
void timeTable()
{
printf("\n");
printf("电影名 放映时间 剩余座次 票价\n");
printf("%s %s %d %d\n", movie1.name, movie1.Timer, movie1.location, movie1.price);
printf("%s %s %d %d\n", movie2.name, movie2.Timer, movie2.location, movie2.price);
printf("%s %s %d %d\n", movie3.name, movie3.Timer, movie3.location, movie3.price);
printf("\n");
}
void subscribe(int use)
{
switch (use)
{
case 1:
printf("扫码支付 ▓\n");
movie1.location--;
printf("预约 美人鱼 成功!\n");
printf("\a");
break;
case 2:
printf("扫码支付 ▓\n");
movie2.location--;
printf("预约老九门成功!\n");
printf("\a");
break;
case 3:
printf("扫码支付 ▓\n");
movie3.location--;
printf("预约狙击手成功!\n");
printf("\a");
break;
default:
printf("暂时无法识别该序列号...\n");
printf("\a");
}
_sleep(2000);
system("cls");
UI();
}
void checkScanf(int scan)
{
switch (scan)
{
case 1:
system("cls");
printf("\t\t\t\t\t**********电影票预约**********\n\n");
printf("电影名 放映时间 剩余座次 票价\n");
printf("%s %s %d %d\n", movie1.name, movie1.Timer, movie1.location, movie1.price);
printf("%s %s %d %d\n", movie2.name, movie2.Timer, movie2.location, movie2.price);
printf("%s %s %d %d\n", movie3.name, movie3.Timer, movie3.location, movie3.price);
int use;
printf("> ");
scanf("%d", &use);
subscribe(use);
break;
case 2:
system("cls");
printf("\t\t\t\t\t**********电影票退订**********\n\n");
printf("退订序号:");
int src;
scanf("%d", &src);
if (src == TICKET1) {
printf("退订 美人鱼成功!\a\n");
movie1.location++;
_sleep(2000);
system("cls");
UI();
break;
}
else if (src == TICKET2) {
printf("退订 老九门成功!\a\n");
movie2.location++;
_sleep(2000);
system("cls");
UI();
break;
}
else if (src == TICKET3) {
printf("退订 狙击手成功\a\n"); // define
movie3.location++;
_sleep(2000);
system("cls");
UI();
break;
}
case 3:
timeTable();
break;
default:
printf("无效输入");
}
}