首先,用到的数据结构的定义、以及全局变量和函数的声明如下:

  1 // Flight.c : 定义应用程序的入口点。
  2 //
  3 #include "stdafx.h"
  4
  5 //订单
  6 typedef struct OrderForm{
  7     TCHAR IdNum[32];                                    //订单用户身份证号
  8     int Order_Number;                                    //订单号
  9     int Tickets_Num;                                    //订票数量
 10     TCHAR Flight_Number[16];                            //航班号
 11     TCHAR Departure[16];                                //出发地
 12     TCHAR Destination[16];                                //目的地
 13     TCHAR Date[16];                                        //出发日期
 14     TCHAR TakeOff_Time[16];                                //起飞时间
 15     TCHAR Landing_Time[16];                                //降落时间
 16     struct OrderForm *Next;                                //所有订单链表next
 17     struct OrderForm *psgNext;                            //用户订单链表next
 18 }OrderForm;
 19
 20 //乘客订单链表
 21 typedef struct PsgOrderLink{
 22     int OrderNum;                                        //订单数目
 23     OrderForm *head;                                    //头结点
 24     OrderForm *tail;                                    //尾结点
 25 }PsgOrderLink;
 26
 27 //所有订单列表
 28 typedef struct AllOrderLink{
 29     int AllOrderNum;                                    //所有订单数目
 30     OrderForm *head;                                    //头结点
 31     OrderForm *tail;                                    //尾结点
 32 }AllOrderLink;
 33
 34 //乘客
 35 typedef struct Passenger{
 36     TCHAR Name[16];                                        //姓名
 37     TCHAR IdNum[32];                                    //身份证号码
 38     TCHAR PassWord[32];                                    //密码
 39     int TicketNum;                                        //订单数目
 40     PsgOrderLink OrderLink;                                //用户所有订单
 41     struct Passenger *Next;
 42 }Passenger;
 43
 44 //乘客链表
 45 typedef struct PsgLinkList{
 46     int PsgNum;                                            //账户数量
 47     Passenger *head;                                    //头结点
 48     Passenger *tail;                                    //尾结点
 49 }PsgLinkList;
 50
 51 //航班
 52 typedef struct Flight{
 53     double Fare;                                        //票价
 54     int Seat_Number;                                    //座位数
 55     int Vacant_Seat;                                    //空余座位数
 56     TCHAR Discount[16];                                    //折扣
 57     TCHAR Flight_Number[16];                            //航班号
 58     TCHAR Departure[16];                                //出发地
 59     TCHAR Destination[16];                                //目的地
 60     TCHAR Date[16];                                        //出发日期
 61     TCHAR TakeOff_Time[16];                                //起飞时间
 62     TCHAR Landing_Time[16];                                //降落时间
 63     struct Flight *Next;
 64 }Flight;
 65
 66 //航班链表
 67 typedef struct FlightLinkList{
 68     Flight *head;                                        //头结点
 69     Flight *tail;                                        //尾结点
 70     int Flight_Number;                                    //航班数目
 71 }FilghtLinkList;
 72
 73
 74 // 全局变量:
 75 HICON hIcon;
 76 HINSTANCE hInst;                                        //当前实例
 77 static TCHAR szBuffer[256];                                //缓冲区
 78 static PsgLinkList psglink;                                //所有账户_链表
 79 static Passenger *passenger;                            //登陆账户信息
 80 static AllOrderLink allorder;                            //所有订单_链表
 81 static FilghtLinkList flightlink;                        //所有航班_链表
 82
 83
 84
 85 //函数声明
 86 BOOL AccountLogIn(HWND);                                        //账户登陆
 87 BOOL AccountRegister(HWND);                                        //注册账户
 88 BOOL ReadFlightData(HWND);                                        //读入航班信息
 89 BOOL ReadAccountData(HWND);                                        //读入账户资料
 90 BOOL ReadAccountOrder(HWND,Passenger*);                            //读入所有订单、账户订单
 91 BOOL SearchFlight(HWND);                                        //查询航班
 92 BOOL BookTickets(HWND);                                            //订票
 93 BOOL _Book_Tickets(HWND,Flight*,int);                            //订票
 94 BOOL Recommend(HWND,Flight*,int);                                //航班建议
 95 BOOL ReturnTickets(HWND);                                        //退票
 96 BOOL EntryFlight(HWND);                                            //录入航班
 97 BOOL ModifyFlight(HWND);                                        //修改航班信息
 98 BOOL PrintFlight(HWND, Flight*);                                //输出航班信息
 99 BOOL WriteFlightData(HWND);                                        //保存航班信息
100 BOOL WriteAccountData(HWND);                                    //保存账户资料
101 BOOL WriteOrderData(HWND);                                        //保存订单信息
102 BOOL CALLBACK LogInDlgProc(HWND, UINT, WPARAM, LPARAM);            //登陆窗口窗口过程
103 BOOL CALLBACK MainDlgProc(HWND, UINT, WPARAM, LPARAM);            //主界面窗口过程
104 BOOL CALLBACK NameDlgProc(HWND, UINT, WPARAM, LPARAM);            //获取新注册用户姓名窗口过程
105 BOOL CALLBACK FlightNumDlgProc(HWND, UINT, WPARAM, LPARAM);        //获取用户输入机票数量窗口过程
106 BOOL CALLBACK EntryFlightProc(HWND, UINT, WPARAM, LPARAM);        //录入航班窗口过程
107 BOOL CALLBACK ModifyFlightProc(HWND, UINT, WPARAM, LPARAM);        //修改航班信息窗口过程

数据结构定义

因为采用的是windows API,所以首先要了解windows程序的消息机制。

Windows是一个以消息为导向的系统,程序只能被动地等待用户操作的消息,不能主动地去读键盘、鼠标等的状态,也就是说,每当键盘上有个键被按下,或者鼠标在屏幕某个位置点击以后,系统就会发出一个消息(Message)给窗口,告诉它某个键被按下去了或是鼠标按键的点击状态。当鼠标点击了程序的某个按钮只要鼠标移动一下,系统也会发出相应的消息,并把鼠标的坐标信息传给窗口。

当我们鼠标点击了我们程序的某个按钮时,会向系统的消息队列发送一个消息(Mseeage),此消息包含了你鼠标点击的位置、该程序的句柄以及鼠标点击时的状态(如是否按住ctrl键等等)。程序中每个窗口在程序代码都有对应的一个窗口过程,即处理由该窗口所产生的消息的函数,而我们写代码的主要工作就在这里了。

我程序的主函数代码如下:

1 //主函数
2 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
3 {
4
5     hInst = hInstance;
6     InitCommonControls();
7     hIcon=LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
8     return DialogBox(hInst, MAKEINTRESOURCE(IDD_LOGINDLG), NULL, (DLGPROC)LogInDlgProc);
9 }//WinMain

其中,下面这行代码用来加载程序图片:

hIcon=LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));

下面贴出各个窗口的窗口过程:

 1 //登陆窗口_窗口过程
 2 BOOL CALLBACK LogInDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 3 {
 4     switch (uMsg)
 5     {
 6         //WM_INITDIALOG是当其对话框和子控件全部创建完毕,将要显示内容的时候发送的消息
 7         //因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改
 8         case WM_INITDIALOG:
 9         {
10             if (hIcon)
11                 SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
12             ReadAccountData(hwndDlg);                    //登陆对话框初始化时读入账户资料
13             ReadFlightData(hwndDlg);                    //登陆对话框初始化时读入航班信息
14         }//WM_INITDIALOG
15         return TRUE;
16
17         case WM_CLOSE:
18         {
19             EndDialog(hwndDlg, 0);
20         }//WM_CLOSE
21         return TRUE;
22
23         case WM_COMMAND:
24         {
25             switch (LOWORD(wParam))
26             {
27             case IDC_LOGIN:
28                 AccountLogIn(hwndDlg);                    //登陆
29                 break;
30             case IDC_REGISTER:
31                 AccountRegister(hwndDlg);                //注册
32                 break;
33             }//switch
34         }//WM_COMMAND
35         return TRUE;
36
37     }//switch
38     return FALSE;
39 }//LogInDlgProc()

其中,下面这行代码用来加载程序标题栏图标

if (hIcon) SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);

然后继续贴代码:

 1 //主界面_窗口过程
 2 BOOL CALLBACK MainDlgProc(HWND hMainDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){
 3     switch (uMsg)
 4     {
 5     case WM_INITDIALOG:
 6     {
 7         if (hIcon)
 8             SendMessage(hMainDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
 9     }//WM_INITDIALOG
10         return TRUE;
11
12     case WM_CLOSE:
13     {
14         //关闭程序时将信息保存
15         if (WriteOrderData(hMainDlg) && WriteAccountData(hMainDlg) && WriteFlightData(hMainDlg))
16             EndDialog(hMainDlg, 0);
17         else
18             MessageBox(hMainDlg, TEXT("保存信息错误!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
19     }//WM_CLOSE
20         return TRUE;
21
22     case WM_COMMAND:
23     {
24         switch (LOWORD(wParam))
25         {
26         case IDC_SEARCH:
27         {
28             SearchFlight(hMainDlg);                        //查找航班
29             break;
30         }
31         case IDC_TICKET:
32         {
33             BookTickets(hMainDlg);                        //订票
34             break;
35         }
36         case IDC_RETURNTICKET:
37         {
38             ReturnTickets(hMainDlg);                    //退票
39             break;
40         }
41         case IDC_ENTRY:
42         {                                                //录入航班对话框
43             DialogBox(hInst, MAKEINTRESOURCE(IDD_ENTRY), NULL, (DLGPROC)EntryFlightProc);
44             break;
45         }
46         case IDC_MODIFYFLIGHT:
47         {                                                //修改航班信息对话框
48             DialogBox(hInst, MAKEINTRESOURCE(IDD_MODIFYFLT), NULL, (DLGPROC)ModifyFlightProc);
49             break;
50         }
51         }//switch
52     }//WM_COMMAND
53         return TRUE;
54     }//switch
55     return FALSE;
56 }//MainDlgProc()

 1 //获取用户输入机票数量_窗口过程
 2 BOOL CALLBACK FlightNumDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){
 3     switch (uMsg)
 4     {
 5
 6     case WM_INITDIALOG:
 7     {
 8         if (hIcon)
 9             SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
10     }//WM_INITDIALOG
11     return TRUE;
12
13     case WM_CLOSE:
14     {
15         wsprintf(szBuffer, TEXT("\0"));
16         EndDialog(hwndDlg, FALSE);
17     }//WM_CLOSE
18     return TRUE;
19
20     case WM_COMMAND:
21     {
22         switch (LOWORD(wParam))
23         {
24         case IDOK:
25             wsprintf(szBuffer, TEXT("\0"));
26             GetDlgItemText(hwndDlg, IDC_TICKETNUM, szBuffer, 256);
27             EndDialog(hwndDlg, TRUE);
28             break;
29         }//switch
30     }//WM_COMMAND
31     return TRUE;
32
33     }//switch
34     return FALSE;
35 }

 1 //录入航班_窗口过程
 2 BOOL CALLBACK EntryFlightProc(HWND hEntryDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){
 3     switch (uMsg)
 4     {
 5     case WM_INITDIALOG:
 6     {
 7         if (hIcon)
 8             SendMessage(hEntryDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
 9     }
10     return TRUE;
11
12     case WM_CLOSE:
13     {
14         EndDialog(hEntryDlg, 0);
15     }//WM_CLOSE
16     return TRUE;
17
18     case WM_COMMAND:
19     {
20         switch (LOWORD(wParam))
21         {
22         case IDC_ADDFLT:
23         {
24             EntryFlight(hEntryDlg);                        //录入航班
25             break;
26         }//GETNAME
27         case IDC_QUIT:
28         {
29             EndDialog(hEntryDlg, FALSE);
30             break;
31         }//GETNAMECANCEL
32
33         }//stitch
34
35     }//WM_COMMAND
36     return TRUE;
37
38     }//stitch
39
40     return FALSE;
41 }
42
43
44 //修改航班信息_窗口过程
45 BOOL CALLBACK ModifyFlightProc(HWND hModifyDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){
46     switch (uMsg)
47     {
48     case WM_INITDIALOG:
49     {
50         if (hIcon)
51             SendMessage(hModifyDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
52     }
53     return TRUE;
54
55     case WM_CLOSE:
56     {
57         EndDialog(hModifyDlg, 0);
58     }//WM_CLOSE
59     return TRUE;
60
61     case WM_COMMAND:
62     {
63         switch (LOWORD(wParam))
64         {
65         case IDC_MODIFY:
66         {
67             ModifyFlight(hModifyDlg);                    //修改航班信息
68             break;
69         }//GETNAME
70         case IDC_QUIT:
71         {
72             EndDialog(hModifyDlg, FALSE);
73             break;
74         }//GETNAMECANCEL
75
76         }//stitch
77
78     }//WM_COMMAND
79     return TRUE;
80     }//stitch
81
82     return FALSE;
83 }//ModifyFlightProc()

在此给出了几个窗口的窗口过程,其中所调用的函数的实现将在下一篇博文中给出。

转载于:https://www.cnblogs.com/z941030/p/4495711.html

windows API 开发飞机订票系统 图形化界面 (二)相关推荐

  1. windows API 开发飞机订票系统 图形化界面 (一)

    去年数据结构课程设计的作品,c语言实现,图形化界面使用windows API实现. 首发在我csdn博客:http://blog.csdn.net/u013805360/article/details ...

  2. 飞机订票系统 python实现(大二上数据结构课设)

    说明: 本博客是从课设报告中截取的重要部分.这个飞机订票系统是本人大二上的数据结构课设,功能相对完善,界面相对美观.图形界面,本来想用Qt5(python中一个图形界面的类库,风格偏向于win10)去 ...

  3. 【性能测试】Loadrunner12.55(二)-飞机订票系统-脚本录制

    1.1 飞机订票系统 Loadrunner 12.55不会自动安装飞机订票系统,要自己手动安装. 我们需要下载Web Tools以及一个小插件strawberry https://marketplac ...

  4. 软件自动化测试订飞机票,飞机订票系统自动化测试方案[教学知识]

    <飞机订票系统自动化测试方案[教学知识]>由会员分享,可在线阅读,更多相关<飞机订票系统自动化测试方案[教学知识](18页珍藏版)>请在人人文库网上搜索. 1.飞机订票系统自动 ...

  5. 软件测试剧场订票系统背景,软件测试教学资源学生作品飞机订票系统的功能测试项目报告...

    软件测试教学资源学生作品飞机订票系统的功能测试项目报告 <软件测试>课程项目库学生作品 项目名称飞机订票系统的功能测试 院 系计算机与软件学院 专 业 软件技术(测试) 班 级软件 093 ...

  6. 课程设计---飞机订票系统

    1. 题目 本课程设计的题目为:飞机订票系统. 2. 项目描述 基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票 ...

  7. Java版飞机订票系统

    数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能: 录入:可以录入航班情况(数据存储在一个数据文件中,数据结构和具体数据自定) 查询:可以查 ...

  8. Loadrunner12检查点之飞机订票系统

    在上一篇文章中(https://blog.csdn.net/VEclipses/article/details/88662287),我们录制了登录功能的脚本,那我们现在就为脚本添加检查点. 什么是检查 ...

  9. 基于ssh的航空订票系统-飞机订票系统javaweb-机票订购课程设计java代码(源码+数据库文件+文档)

    基于ssh的航空订票系统-飞机订票系统javaweb-机票订购java代码(源码+数据库文件+文档) 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言: ...

最新文章

  1. Guidance Package Manager button doesn’t appear in the VS menu
  2. sqoop 1.4.5 增量导入hive 0.12.0
  3. slice 和 splice 区别
  4. 【转】Javascript面向对象编程(二):构造函数的继承
  5. 感觉很好的IT自学参考教程收集
  6. TensorFlow学习笔记(十九) 基本算术运算和Reduction归约计算
  7. LINUX REDHAT第十单元文档
  8. UDP(发短信:简单模拟)
  9. php5.6获取文件名,PHP 5.6:headers_sent间歇性地返回true,空文件名和第0行
  10. Windows下的修改Tomcat的可用内存
  11. 【大规模深度强化学习(一) 】深度强化学习中的异步方法(A3C)
  12. 解析rtcm32报文工具_RTCM数据格式实时处理方法应用
  13. WPS全部常用快捷键
  14. 如何开始使用 Java 机器学习
  15. mysql 性能优化方向
  16. 深入理解蓝牙BLE之“BQB认证”
  17. Simulink选择器模块(Selector)
  18. 正易判讀 6-1 韓長庚 著
  19. 企业微信/skype sdk demo
  20. 股票代码中OF与SZ的区别

热门文章

  1. Mysql CURD复习(数据库、表、数据)
  2. 虚拟dom与diff算法 分析
  3. 学习面试题Day08
  4. python模块之lib2to3(py2转py3自动化工具)
  5. 你们计算机专业的学生应该看看这篇文章
  6. 在腾讯云轻量云服务器上搭建mysql数据库
  7. c++设置不适用预编译头
  8. 逆波兰计算器android源码简书,计算器的核心算法-JavaScript实现(逆波兰表达式)...
  9. html5支持udp协议吗,HTML5的TCP和UDP Web Socket API草案定稿
  10. 信息收集——DNS域名系统