#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void menu();
void fa();
void fb();
void fc();
void fd();
void f1();
void f2();
void f3(int i);
int f4();
struct train
{
char 车次号[20];
char 起始地[30];
char 发车时间[30];
char 目的地[30];
int 最多载人;
int 火车票价;
char 座次订出与否的标记[30];
int 已售火车票;
char 购票人员信息[100][100];
}M[10] = {
{{"G01"},{"兰州"},{"July 1st 10:00am"},{"北京"},150,669,{"已订:100,未订:5"},100},
{{"G02"},{"兰州"},{"July 1st 12:00am"},{"青海"},150,720,{"已订:50,未订:18"},60},
{{"G03"},{"兰州"},{"July 1st 12:30pm"},{"合肥"},150,499,{"已订:25,未订:5"},25},
{{"G04"},{"兰州"},{"July 1st 02:40pm"},{"贵州"},150,549,{"已订:21,未订:9"},21},
{{"G05"},{"兰州"},{"July 1st 03:30pm"},{"合肥"},150,399,{"已订:12,未订:18"},12},
{{"G06"},{"兰州"},{"July 1st 04:20pm"},{"天津"},150,599,{"已订:15,未订:15"},15},
{{"G07"},{"兰州"},{"July 1st 05:40pm"},{"广州"},150,569,{"已订:13,未订:17"},13},
{{"G08"},{"兰州"},{"July 1st 08:30pm"},{"三亚"},150,489,{"已订:17,未订:13"},17},
{{"G09"},{"兰州"},{"July 1st 11:00pm"},{"成都"},150,389,{"已订:21,未订:9"},21},
{{"G10"},{"兰州"},{"July 2nd 06:30am"},{"上海"},150,479,{"已订:10,未订:20"},10} };
int main()
{
printf("\n\n\t\t ★---您好,欢迎进入火车订票管理系统!---★\n");
printf("\n================================================================================\n\n\n");
printf("\t请按 Enter 键继续....\n\n\n\n\n");
printf("----------------------------------------------------------------------------------\n");
getchar();
menu();
}
void menu()//主菜单
{
int n, w1;
do
{
system("cls");
puts("\n\t\t 火车订票管理系统! \n\n");
puts("\t\t***********************************MENU*********************************\n");
puts("\t\t 1.显示车次\n");
puts("\t\t 2.查找车次\n");
puts("\t\t 3.售票\n");
puts("\t\t 4.退票\n");
puts("\t\t 5.退出系统\n");
puts("\t\t========================================================================\n");
printf("\t\t请选择服务项目(1-5): [ ]\b\b");
scanf("%d", &n);
if (n < 1 || n>5)
{
w1 = 1;
printf("你的选项不存在,请重新输入:");
getchar();
getchar();
}
else
w1 = 0;
} while (w1 == 1);
switch (n)
{
case 1:fa(); break;//显示车次
case 2:fb(); break;//查找车次
case 3:fc(); break;//售票
case 4:fd(); break;//退票
case 5:exit(0);
}
}
void fa()//显示车次
{
int i, c;
char p[10];
system("cls");
printf(" *********************************欢迎进入显示窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("1、查询近期车次\n");
printf("2、查询特定车次\n");
scanf("%d", &c);
if (c == 1)
{
printf("1、查询近期车次\n");
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
printf("----------------------------------------------------------------------------------\n");
for (i = 0; i < 10; i++)
{
printf("%5s %6s %6s %6s %3d %3d %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);
}
getchar();
getchar();
system("cls");
menu();
}
if (c == 2)
{
printf("2、查询特定车次\n");
printf("请输入查询车次号(1-10)?:\n");
printf("--------------------------------------------------------------------------------------------\n");
printf("| G01 G02 G03 G04 G05 G06 G07 G08 G09 G10 |\n");
printf("--------------------------------------------------------------------------------------------\n");
scanf("%d", &i);
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
printf("----------------------------------------------------------------------------------\n");
printf("%5s %6s %6s %6s %3d %3d %6s \n", M[i - 1].车次号, M[i - 1].起始地, M[i - 1].发车时间, M[i - 1].目的地, M[i - 1].最多载人, M[i - 1].火车票价, M[i - 1].座次订出与否的标记);
printf("\n---------------------------------------------------\n");
printf("| 是否购票?(输入是或否) |\n");
printf("-----------------------------------------------------\n");
scanf("%s", &p);
if (strcmp(p, "是") == 0)
{
getchar();
system("cls");
fc();
}
else if (strcmp(p, "否") == 0)
{
getchar();
system("cls");
menu();
}
}
}
void fb()//查找车次
{
int n, w1;//w1缩小n的范围,n确定选项
do
{
system("cls");
printf(" *********************************欢迎进入查找窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
puts("\n\t\t\t\t *车次查询*\n\n");
puts("\t\t**************************************************\n\n");
puts("\t\t\t\t1.按照起始地查找车次");
puts("\t\t\t\t2.按照目的地查找车次");
puts("\t\t\t\t3.返回主菜单");
puts("\n\n\t\t**********************************************\n");
printf("Choice your number(1-3): [ ]\b\b");
scanf("%d", &n);
if (n < 1 || n>3)
{
w1 = 1;
printf("你的选项不存在,请重新输入");
getchar();
getchar();
}
else
w1 = 0;
} while (w1 == 1);
switch (n)
{
case 1:f1(); break;//起始地查找
case 2:f2(); break;//目的地查找
case 3:menu(); break;//返回主菜单
}
}
void fc()//售票
{
int i;
char p[10];
system("cls");
printf(" *********************************欢迎进入售票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
getchar();
i = f4();
if (i != -1)
{
if (M[i].已售火车票 == 30)
{
printf("\n该趟车次火车票已售完!");
}
else
{
printf(" ------------\n");
printf(" |是否购票?|\n");
printf(" ------------\n");
scanf("%s", &p);
if (strcmp(p, "是") == 0)
{
getchar();
system("cls");
printf(" *********************************欢迎进入售票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("%5s %6s %6s %6s %3d %3d %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);
printf("请输入个人信息:\n姓名: 身份证号: 车次号: 起始地: 目的地:\n");
getchar();
FILE* fp;
fp = fopen("该车次成员数据.txt", "ab");
if (fp == NULL)
printf("error");
else
fwrite(&M[i].购票人员信息, sizeof(struct train), 1, fp);
fclose(fp);
getchar();
system("cls");
getchar();
printf(" *********************************欢迎进入售票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("\n 购票成功!祝你路途愉快\n");
printf(" 按回车键返回主菜单");
getchar();
getchar();
menu();
}
else if (strcmp(p, "否") == 0)
{
system("cls");
printf(" *********************************欢迎进入售票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("\n 购票失败!\n");
getchar();
getchar();
menu();
}
}
}
else
{
printf(" *********************************欢迎进入售票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf(" 近期不存在该路线车次\n");
getchar();
system("cls");
menu();
}
getchar();
getchar();
}
void fd()//退票
{
int s = 0;
char p[10], xm[30], sf[20];
system("cls");
printf(" ************************************欢迎进入退票窗口!**********************************\n");
printf("-----------------------------------------------------------------------------------------\n");
printf("\n\n输入车次代号:\n");
printf("-----------------------------------------------------------------------------------------\n");
printf("G01 G02 G03 G04 G05 G06 G07 G08 G09 G10\n");
scanf("%d", s);
printf("第%d次车次信息如下:\n");
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
printf("-----------------------------------------------------------------------------------------\n");
f3(s - 1);
printf("-----------------------------------------------------------------------------------------\n");
printf("请输入你的个人信息:\n");
printf("姓名:");
scanf("%s", &xm);
printf("\n身份证号:");
scanf("%s", &sf);
printf("是否退票?\n");
scanf("%s", &p);
if (p == "是")
{
system("cls");
printf(" *********************************欢迎进入退票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
M[s].已售火车票--;
printf("\n 退票成功!\n");
printf("退款金额已退至您的账户!!共%d元", M[s - 1].火车票价);
}
else if (p == "否")
{
printf("\n 退票失败\n");
}
getchar();
getchar();
menu();
}
void f1()//起始地查询
{
int i, k;
struct train s;
system("cls");
printf(" *********************************欢迎进入查询窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("\n\n请输入起始地点:");
scanf("%s", &s.起始地);
printf("\n-------------------------------------------------------------------------------\n");
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
for (i = 0; i < 10; i++)
{
if (strcmp(s.起始地, M[i].起始地) == 0)
{
k = i;
f3(k);
}
}
getchar();
getchar();
menu();
}
void f2()//目的地查找
{
int i, m = 0;
struct train s;
system("cls");
printf(" *********************************欢迎进入查找窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("\n请输入目的地:");
scanf("%s", &s.目的地);
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
printf("\n-------------------------------------------------------------------------------\n");
for (i = 0; i < 10; i++)
{
if (strcmp(s.目的地, M[i].目的地) == 0)
{
m = i;
f3(m); break;
}
}
getchar();
getchar();
menu();
}
void f3(int i)//显示某车次
{
printf("%5s %6s %6s %6s %3d %3d %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);
}
int f4()//查找车次号
{
int i, k;
struct train s;
k = -1;
system("cls");
printf(" *********************************欢迎进入查找窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
printf("\n\n请输入要订票的起始地点:");
scanf("%s", &s.起始地);
printf("\n\n请输入要订票的下车地点:");
scanf("%s", &s.目的地);
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
for (i = 0; i < 10; i++)
{
if (strcmp(s.起始地, M[i].起始地) == 0 && strcmp(s.目的地, M[i].目的地) == 0)
{
k = i;
f3(k);
break;
}
}
if (k == -1)
{
printf("近期无该路线车次");
}
return k;
}
请问为什么执行到退票就有问题
字符串判断不能用==,用strcmp
void fd()//退票
{
int s = 0;
char p[10], xm[30], sf[20];
system("cls");
printf(" ************************************欢迎进入退票窗口!**********************************\n");
printf("-----------------------------------------------------------------------------------------\n");
printf("\n\n输入车次代号:\n");
printf("-----------------------------------------------------------------------------------------\n");
printf("G01 G02 G03 G04 G05 G06 G07 G08 G09 G10\n");
scanf("%d", s);
printf("第%d次车次信息如下:\n");
printf("车次号 起始地 发车时间 目的地 最多载人 火车票价 座次订出与否\n");
printf("-----------------------------------------------------------------------------------------\n");
f3(s - 1);
printf("-----------------------------------------------------------------------------------------\n");
printf("请输入你的个人信息:\n");
printf("姓名:");
scanf("%s", &xm);
printf("\n身份证号:");
scanf("%s", &sf);
printf("是否退票?\n");
scanf("%s", &p);
if (strcmp(p,"是")==0)
{
system("cls");
printf(" *********************************欢迎进入退票窗口!*******************************\n");
printf("----------------------------------------------------------------------------------\n");
M[s].已售火车票--;
printf("\n 退票成功!\n");
printf("退款金额已退至您的账户!!共%d元", M[s - 1].火车票价);
}
else if (strcmp(p,"否")==0)
{
printf("\n 退票失败\n");
}
getchar();
getchar();
menu();
}
过程中注意观察源文件夹中每一步都生成什么了
(1)文件—>新建—>项目
(2)选择语言:这里选择Visual C++—>windows控制台应用程序(下面的解决方案名称是总项目名称,就是.sln文件的名字,名称是项目名称(如上所述.vcxproj文件))
点击下一步,进一步设置
之后选择空项目,取消安全开发生命周期(SML)检查
进入项目内部
(3)源代码在项目(如:test1)下的右击“源文件”—>添加—>新建项(下面名称中设置名字和代码类别.cpp 或者.c,这里我设置为test1_1.c)(图1)
头文件:你也可以右击“头文件”—>添加—>头文件
多个项目:右击解决方案—>添加—>新建项目之后如2.(2)(图2)
到这里这个vs的功能分配雏形已经显现出来了。