Advertisement

机票预订系统活动图_C语言实现-航空订票系统(飞机订票系统)

阅读量:

1 #include

2 #include

3 #include

4 #include

5 //#include "getch.h"

6 #include

7 #define MAX_Flight 50

8 #define MAX_Passenger 20

9 #define MAX_Order 50

10

11 typedef structFlight12 {13 char fid[20]; //航班号

14 char fname[20]; //航班名称

15 char start[10]; //起点

16 char end[10]; //终点

17 int fnum; //票数

18 }Flight;19

20 typedef structPassenger21 {22 char pid[20]; //身份证

23 char pname[10]; //姓名

24 char password[20]; //密码

25 char tell[20]; //电话

26 }Passenger;27

28 typedef structOrder29 {30 char pid[20]; //身份证

31 char fid[20]; //航班号

32 int num; //票数

33 }Order;34

35 Flight *FLI;36 Passenger *PAS;37 Order *ORD;38

39 char start[10]; //起点

40 char end[10]; //终点

41 char search_fid[50][20]; //符合条件的航班号

42 int search_fnum[50]; //符合条件的航班票数

43 int online = 0; //是否登录的变量

44 char online_pid[20]; //在线用户的身份证

45 int search_num = 0; //符合条件的航班数

46

47 void init_sys(void); //系统初始化

48 void show_flight(void); //显示航班表

49 void start_sys(void); //系统开始运行

50 void exit_sys(void); //退出系统

51 void menu(void); //生成主菜单

52 void login(void); //登录

53 void logout(void); //用户登出

54 void passenger_info(void); //查询旅客信息

55 bool change_pas_info(void); //修改旅客信息

56 void search_start(void); //生成查询页面

57 bool search(void); //查询航班

58 void order_list(void); //生成订单表

59 void del_order(void); //退票

60 void clear_stdin(void); //清除输入缓冲区

61 char* get_str(char* str,size_t len); //获取字符串

62 char get_cmd(char start,char end); //获取cmd命令

63

64 intmain()65 {66 init_sys();67 start_sys();68 exit_sys();69 return 0;70 }71

72 //系统初始化

73 void init_sys(void)74 {75 //申请堆内存、加载数据

FLI数组被预先分配了动态内存空间并指定其大小为MAX_Flight个Flight结构体指针。
PAS变量也被预先分配了动态内存空间并指定其大小为MAX_Passenger个Passenger指针。
ORD成员也被预先分配了动态内存空间并指定其大小为MAX_Order个Order指针。
随后调用printf函数输出系统初始化提示信息并换行显示结束标志符...

81 FILE* ofrp = fopen("order.txt","r");82 int i=0;83 for(i=0; i

84 { int num = 0;85 num = fscanf(ofrp,"%s %s %d\n",ORD[i].pid,ORD[i].fid,&ORD[i].num);86 }87

88 FILE* ffrp = fopen("flight.txt","r");89 for(i=0; i

95 FILE* pfrp = fopen("passenger.txt","r");96 for(i=0; i

103 //显示航班表

104 void show_flight(void)105 {106 int i = 0;107 for(i=0; i

116 //系统开始运行

无错误检查入口处指定为空参数
{
//执行进入系统业务流程操作
//调用打印系统启动信息语句
//调用显示飞行信息函数
}

循环无限期地运行
该程序进入主循环体
调用显示菜单功能
根据用户输入响应不同操作
输入值'1'将执行开始搜索过程
输入值'2'将调用列出订单列表功能
输入值'3'将执行删除订单操作
输入值'4'将调用乘客信息查询功能
输入值'5'将执行更改乘客信息操作
输入值'6'将调用系统登录功能
输入值'7'将执行系统注销操作
输入值'0'将结束当前流程并返回主菜单界面

139 //系统结束

无改动

{
int num = 0;
if (ORD[i].pid != NULL || !strlen(ORD[i].pid)) {
num = ofwp.fwrite(
"%s %s %d",
ORD[i].pid,
ORD[i].fid,
ORD[i].num
);
//成功插入订单到order.txt中
}
}

153 }154 }155

156 FILE* ffwp = fopen("flight.txt","w");157 printf("insert flight.txt\n");158 for(i=0; i

165 }166 }167

168 FILE* pfwp = fopen("passenger.txt","w");169 printf("insert passenger.txt\n");170 for(i=0; i

177 }178 }179 //释放内存、保存数据

180 free(FLI);181 free(PAS);182 free(ORD);183 printf("exit...\n");184 }185

186 //生成主菜单

void ListMenuFunction(void) {
输出一个空行;
打印一行由星号组成的装饰线;
显示当前菜单项;
输出当前航班顺序;
该注释详细解释了查询航班的功能;
}

194 printf("| 2.order_list |\n"); //查询订票信息

195 printf("* 3.del_order *\n"); //退订

196 printf("| 4.passenger_info |\n"); //查询旅客信息

197 printf("* 5.change_pas_info *\n"); //修改旅客信息

198 printf("| 6.login |\n"); //用户登录

199 printf("* 7.logout *\n"); //用户登出

200 printf("| 0.exit_sys |\n"); //退出系统

201 printf("| |\n");202 printf("********************************\n");203 //printf("\n");

204 }205

206 //登录

207 void login(void)208 {209 if(online == 0) //如果没有登录

210 {211 int i=0;212 int time = 0;213 while(time<3)214 {215 char entry_pid[20]; //临时变量身份证

216 char entry_pw[20]; //临时变量密码

执行用户提示对话框并显示"请登录"信息。\n
打印提示信息以请求用户输入ID。\n
调用get_str函数获取用户输入的pid值。\n
打印提示信息以请求用户输入密码。\n
调用get_str函数获取用户输入的password值。\n
循环从i=0开始执行以下操作直到i满足条件...

252 {253 printf("you have been locked,you can use this system now\n");254 }255

256 }257

258 //用户登出

259 void logout(void)260 {261 if(online == 1) //如果已经登录

line_num variable initialized to zero;
line_num %d function call to log out successfully;
}
else if (online equals -1);
line_num integer variable assigned value;
else if (online equals -1);
line_num %d printf("you have been locked, you can use this system now\n");
else

271 {272 printf("you have not login\n");273 }274 }275

276 //查询旅客信息

277 void passenger_info(void)278 {279 if(online == 1) //如果已经登录

280 {281 //printf("online_pid:");282 //puts(online_pid);

283 int i = 0;284 for(i=0; i

298 {299 printf("you have not login\n");300 }301 }302

303 //修改旅客信息

304 bool change_pas_info(void)305 {306 if(online == 1) //如果已经登录

307 {308 printf("your old info:\n");309 int i = 0;310 for(i=0; i

341 {342 printf("you have not login\n");343 }344 }345

346 //开始查询航班

【函数名

358 }359 else

360 {361 char fid[20]; //选择的航班号

362 if(online == 1) //如果已经登录

开始执行操作,请输入"fid"值:
首先调用get_str函数,并将输入的字符串存储到变量"fid"中,
最大存储长度设置为20个字符。
检查变量"fid"是否为空:
如果为空,则输出提示信息:"fid is empty"
初始化整数变量i为初始值"0"
开始循环操作,
其中循环控制条件需进一步确认

374 if(strcmp(fid,search_fid[i])==0 && search_fnum[i]>0) //查询到对应航班

375 {376 printf("order success\n");377 int j=0;378 for(j=0; j

379 {380 if(strcmp(fid,FLI[j].fid)==0)381 {382 FLI[j].fnum--; //票数减1

383 break;384 }385 }386 int k=0;387 for(k=0; k

388 {389 //printf("ready insert...\n");

390 if(strlen(ORD[k].pid) == 0) //在空位置插入数据

391 {392 strcpy(ORD[k].pid,online_pid); //插入当前用户身份证

393 strcpy(ORD[k].fid,search_fid[i]); //插入当前选择的航班号

代码段:
394 ORD[k].num = 1;
395 输出成功消息;
396 执行break操作;
397 }
398 }
399 返回并结束函数执行;
400 }
401 else if (strcmp(fid, search_fid[i]) == 0 && search_fnum[i] == 0)
{
输出"无票提示";
调用search_start()函数;
}
else if (i == MAX_Flight - 1)
{
输出"未找到此航班号";
调用search_start()函数;
}
}
else if (online == -1)
{
输出"当前状态无效,请重新登录系统";
}
else
{
}

418 {419 login();420 }421 }422 }423 }424

425 //查询航班

函数名为search的布尔类型函数
{
打印消息"启动:"并换行
调用get_str函数传入参数start和10
打印消息"程序退出:"并换行
调用get_str函数传入参数end和10
初始化计数器i为零
赋值变量search_num为零
循环从i等于零开始执行以下操作直到满足条件为止:
增加计数器i的值
}

++search_num; }
if (search_num 等于零 并且 i 等于 MAX_Flight 减一) {
打印 '无航班' 信息并换行;
返回失败状态;
}
if (search_num 大于零 并且 i 等于 MAX_Flight 减一 {
// 显示航班信息
}

457 return true;458 }459 }460 }461

462 //输出订单信息

463 void order_list(void)464 {465 if(online == 1)466 {467 int i=0;468 for(i=0; i

本程序将输出以下信息:当前文件ID为" %s" , 进程ID为" %s" ,并输出其票务编号 %d 。 循环结束标志已设置为默认值。 如果在线状态返回值为-1,则表示您已被锁定,请重新登录此系统。 程序运行结束时将输出最终结果。

482 {483 login();484 }485 }486

487 //删除订单

488 void del_order();489 {
490 if (online != 0) {
491 char fid[20];
492 printf("order_list:\n", stdout);
493 order_list();
494 printf("please enter deletion order file ID:");
495 input_string(fid);
496 int i = 0;
497 for (int i = 0; i < 10; ++i) {
498 // ... code omitted ...
499 }
500 }

// 确认 del_order 的文件标识符不能为空
// 返回
if (strcmp((const char*), (const char*), (const char*)) == 0)
{
// 初始化 pid 字段为零值
memset(ORD[i].pid, '\x00', sizeof(ORD[i].pid));
int j = 1;
for(j = 1; j < len; j++)
}

然后执行下一条指令。
// 确认删除成功后才会返回系统主界面
online = online - 1;
}
}
if (online == 0) { // 输出确认删除成功后的操作提示 echo "删除成功!接下来的操作将按照以下步骤进行:" . "\n"; } return; } } else if (online == -1) {
// 输出被锁定的提示信息
echo "您已被锁定,请按照以下步骤使用本系统:" . "\n";
} else {
// 返回主界面
return;
}

527 {528 login();529 }530

531 }532

533 //清理输入缓冲区

534 /*void clear_stdin(void)535 {536 stdin->_IO_read_ptr = stdin->_IO_read_end;//清理输入缓冲区537 }538 */

539

540 //读取输入字符串

541 char* get_str(char*str,size_t len)542 {543 if(NULL ==str)544 {545 puts("empty ptr!");546 returnNULL;547 }548

549 char *in=fgets(str,len,stdin);550

551 size_t cnt =strlen(str);552 if('\n' == str[cnt-1])553 {554 str[cnt-1] = '\0';555 }556 else

557 {558 scanf("%*[^\n]");559 scanf("%*c");560 }561

562 //clear_stdin();

563

564 returnstr;565 }566

567 //获取cmd命令

568 char get_cmd(char start,charend)569 {570 //clear_stdin();

571

语句"请输入命令:"使用printf输出。
循环无休止地运行。
{
获取一个字符。
若该字符位于start与end之间:
{
输出该字符并换行。
返回该值;
}
}

全部评论 (0)

还没有任何评论哟~