[C] 用c/gtk实现的火车票预订 →→→→→进入此内容的聊天室

来自 , 2020-09-14, 写在 C, 查看 111 次.
URL http://www.code666.cn/view/063e26c6
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <gtk/gtk.h>
  6. #include "myDataType.h"
  7.  
  8. #define BOOK_WINDOW_SIZE 320
  9. #define MAXSTATIONS 100
  10. #define MAXTRAINLINES 100
  11. #define MAXPASSENGERS 100
  12.  
  13. /*file.c*/
  14. extern int GetStation(struct station_tag myStations[]);
  15. extern int GetTrainLine(struct trainline_tag myTrainLines[], struct station_tag stations[]);
  16.  
  17. extern double CalTicketPrice(int stationDif, int i_kindOfLine, int i_kindOfSeat);
  18. extern struct station_tag *FindStation(const char *stationname, struct station_tag myStations[], int length);
  19.  
  20. extern void TurnTrainLineIntoString(char des[][20], struct trainline_tag *srcTrainLine);
  21. extern void TurnTicketIntoString(char des[][20], struct trainline_tag *srcTrainLine);
  22. extern int TurnSeatIntoKind(const char *text);
  23. extern int GetStationDif(const struct trainline_tag *trainLine_ptr, const struct station_tag *startStation, const struct station_tag *endStation_ptr);
  24. /**end file.c**/
  25.  
  26. /*list.c*/
  27. extern struct head_tag *CreatList(void);
  28. extern struct head_tag *InsertNode(struct head_tag *head_ptr, struct node_tag *node_ptr);
  29. extern int FreeList(struct head_tag *head_ptr);
  30. extern struct head_tag *FindStationInTrainLine(struct trainline_tag trainLines[], int length, const struct station_tag *startStation_ptr, const struct station_tag *endStation_ptr);
  31. extern struct head_tag *FindTrainLine(struct trainline_tag trainLines[], int length, const struct trainline_tag *samTrainline_ptr, int timeMode);
  32. extern void fft_ShowList(const struct head_tag *head);
  33. /**end list.c**/
  34.  
  35. /*client.c*/
  36. extern void ModifyPassenger(struct passenger_tag passengers[],int *length, struct pastemp_tag *pastemp_ptr);
  37. extern struct passenger_tag *FindPassenger(struct passenger_tag passengers[], int length, struct pastemp_tag *pastemp_ptr);
  38. extern int ReturnTicket(struct passenger_tag *passenger_ptr, int index);
  39. extern struct trainline_tag *BookTickets(int kindofseat, struct trainline_tag *trainLine_ptr);
  40. /**end client.c**/
  41.  
  42. /*my gtk*/
  43. int quit(GtkButton *button, gpointer data);
  44.  
  45. int about(GtkButton *button, gpointer data);
  46.  
  47. int book(GtkButton *button, gpointer data);
  48. int book_check_button_on_click(GtkWidget *button, gpointer data);
  49. int book_clist_row_on_click(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data);
  50. int book_sure_buttn_clicked(GtkWidget *button, struct trainline_tag* data);
  51. int book_final_button_clicked(GtkWidget *button, struct trainline_tag *data);
  52.  
  53. int check(GtkWidget *button, gpointer data);
  54. int check_check_button_on_click(GtkWidget *button, gpointer data);
  55. int check_return_button_on_click(GtkWidget *button, gpointer data);
  56. /**end my gtk**/
  57.  
  58. /*global variable*/
  59. GtkWidget *g_book_start_station_entry;
  60. GtkWidget *g_book_end_station_entry;
  61. GtkWidget *g_book_date_entry;
  62. GtkWidget *g_book_clist;
  63.  
  64. GtkWidget *g_book_sure_name_entry;
  65. GtkWidget *g_book_sure_id_entry;
  66. GtkWidget *g_book_sure_tel_entry;
  67. GtkWidget *g_book_sure_seat_combo;
  68. GtkWidget *g_book_book_window;
  69. GtkWidget *g_book_sure_window;
  70.  
  71. GtkWidget *g_check_name_entry;
  72. GtkWidget *g_check_id_entry;
  73. GtkWidget *g_check_tel_entry;
  74. GtkWidget *g_check_check_window;
  75. GtkWidget *g_check_return_notebook;
  76.  
  77. struct head_tag *g_book_check_button_head = NULL;
  78. struct pastemp_tag g_pastemp;
  79. struct passenger_tag *g_passenger_return_ticket;
  80.  
  81. struct station_tag g_myStations[MAXSTATIONS];
  82. int g_slen = 0;
  83. struct trainline_tag g_myTrainLines[MAXTRAINLINES];
  84. int g_tlen = 0;
  85. struct passenger_tag g_myPassengers[MAXPASSENGERS];
  86. int g_plen = 0;
  87. /**end global variable**/
  88.  
  89. int main(int argc, char *argv[])
  90. {
  91.         GtkWidget *window;
  92.         GtkWidget *hello_window;
  93.         GtkWidget *main_menu_book_button;
  94.         GtkWidget *main_menu_check_button;
  95.         GtkWidget *main_menu_return_button;
  96.         GtkWidget *main_menu_about_button;
  97.         GtkWidget *main_menu_quit_button;
  98.         GtkWidget *button_box;
  99.         GtkWidget *down_box;
  100.         GtkWidget *whole_box;
  101.         GtkWidget *up_image_box;
  102.         GtkWidget *down_image_box;
  103.         GtkWidget *up_image;
  104.         GtkWidget *down_image;
  105.  
  106.         int i;
  107.  
  108.         gtk_init(&argc, &argv);
  109.  
  110.     /*read file*/
  111.     g_slen = GetStation(g_myStations);
  112.     g_tlen = GetTrainLine(g_myTrainLines, g_myStations);
  113.     /**end read file**/
  114.  
  115.         up_image = gtk_image_new_from_file("up.png");
  116.         up_image_box = gtk_hbox_new(FALSE, 0);
  117.         gtk_box_pack_start(GTK_BOX(up_image_box), up_image,FALSE, FALSE, 0);
  118.         down_image = gtk_image_new_from_file("side.png");
  119.         down_image_box = gtk_hbox_new(FALSE, 0);
  120.         gtk_box_pack_start(GTK_BOX(down_image_box), down_image,FALSE, FALSE, 0);
  121.  
  122.         main_menu_book_button = gtk_button_new_with_mnemonic(g_convert("预订车票(_B)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  123.         main_menu_check_button = gtk_button_new_with_mnemonic(g_convert("查询订票信息(_C)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  124.         main_menu_return_button = gtk_button_new_with_mnemonic(g_convert("退票(_R)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  125.         main_menu_about_button = gtk_button_new_with_mnemonic(g_convert("关于(_A)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  126.         main_menu_quit_button = gtk_button_new_with_mnemonic(g_convert("退出(_Q)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  127.  
  128.     /*button_box init*/
  129.     button_box = gtk_vbox_new(TRUE, 21);
  130.     gtk_box_pack_start(GTK_BOX(button_box), main_menu_book_button, FALSE, TRUE, 0);
  131.     gtk_box_pack_start(GTK_BOX(button_box), main_menu_check_button, FALSE, TRUE, 0);
  132.     gtk_box_pack_start(GTK_BOX(button_box), main_menu_return_button, FALSE, TRUE, 0);
  133.     gtk_box_pack_start(GTK_BOX(button_box), main_menu_about_button, FALSE, TRUE, 0);
  134.     gtk_box_pack_start(GTK_BOX(button_box), main_menu_quit_button, FALSE, TRUE, 0);
  135.     /**end button_box init**/
  136.  
  137.     /*down_box init*/
  138.     down_box = gtk_hbox_new(FALSE, 47);
  139.     gtk_box_pack_start(GTK_BOX(down_box), down_image_box, FALSE, TRUE, 0);
  140.     gtk_box_pack_start(GTK_BOX(down_box), button_box, FALSE, TRUE, 0);
  141.     /**end down_box init**/
  142.  
  143.     /*whole_box*/
  144.     whole_box = gtk_vbox_new(FALSE, 7);
  145.     gtk_box_pack_start(GTK_BOX(whole_box), up_image_box, FALSE, FALSE, 0);
  146.     gtk_box_pack_start(GTK_BOX(whole_box), down_box, FALSE, FALSE, 0);
  147.     /**end whole_box**/
  148.  
  149.     /*window init*/
  150.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  151.         gtk_window_set_title(GTK_WINDOW(window), g_convert("火车售票系统", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  152.         gtk_window_set_default_size(GTK_WINDOW(window), 600, 450);
  153.         g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
  154.         gtk_container_set_border_width(GTK_CONTAINER(window), 20);
  155.         gtk_container_add(GTK_CONTAINER(window), whole_box);
  156.     /**end window init**/
  157.  
  158.         g_signal_connect(G_OBJECT(main_menu_about_button), "clicked", G_CALLBACK(about), NULL);
  159.         g_signal_connect(G_OBJECT(main_menu_quit_button), "clicked", G_CALLBACK(quit), NULL);
  160.         g_signal_connect(G_OBJECT(main_menu_book_button), "clicked", G_CALLBACK(book), NULL);
  161.         g_signal_connect(G_OBJECT(main_menu_check_button), "clicked", G_CALLBACK(check), NULL);
  162.  
  163.         gtk_widget_show_all(window);
  164.         gtk_main();
  165.         return FALSE;
  166. }
  167.  
  168. int quit(GtkButton *button, gpointer data)
  169. {
  170.         GtkWidget *window;
  171.         GtkWidget *button1;
  172.         GtkWidget *button2;
  173.         GtkWidget *box1;
  174.         GtkWidget *box2;
  175.         GtkWidget *label;
  176.  
  177.         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  178.         gtk_window_set_title(GTK_WINDOW(window), "");
  179.         gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  180.         gtk_container_set_border_width(GTK_CONTAINER(window), 30);
  181.         g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_widget_destroy), window);
  182.  
  183.         box2 = gtk_vbox_new(TRUE, 0);
  184.         box1 = gtk_hbox_new(TRUE, 0);
  185.         gtk_container_add(GTK_CONTAINER(window), box2);
  186.         gtk_box_pack_end(GTK_BOX(box2), box1, TRUE, TRUE, 5);
  187.         label = gtk_label_new(NULL);
  188.         gtk_label_set_markup(GTK_LABEL(label), g_convert("<big><i>是否要退出售票系统?</i></big>", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  189.         gtk_box_pack_end(GTK_BOX(box2), label, FALSE, FALSE, 5);
  190.         button1 = gtk_button_new_from_stock(GTK_STOCK_OK);
  191.         gtk_box_pack_start(GTK_BOX(box1), button1, TRUE, TRUE, 5);
  192.         g_signal_connect(G_OBJECT(button1), "clicked", G_CALLBACK(gtk_main_quit), FALSE);
  193.         button2 = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
  194.         gtk_box_pack_start(GTK_BOX(box1), button2, TRUE, TRUE, 5);
  195.         g_signal_connect_swapped(G_OBJECT(button2), "clicked", G_CALLBACK(gtk_widget_destroy), window);
  196.         gtk_widget_show_all(window);
  197.         return 0;
  198. }
  199.  
  200. int about(GtkButton *button, gpointer data)
  201. {
  202.         GtkWidget *window;
  203.     GtkWidget *notebook;
  204.     GtkWidget *label;
  205.     GtkWidget *page;
  206.     GtkWidget *fixed;
  207.     GtkWidget *image;
  208.     GtkWidget *vbox, *imagevbox, *hbox, *box;
  209.     GtkWidget *hsep;
  210.     GtkWidget *frame;
  211.  
  212.     /**窗口**/
  213.         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  214.     gtk_window_set_title(GTK_WINDOW(window), g_convert("关于", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  215.     g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
  216.     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  217.     gtk_window_set_default_size(GTK_WINDOW(window), 300, 400);
  218.     gtk_container_border_width(GTK_CONTAINER(window), 5);
  219.  
  220.     /**盒子**/
  221.         hbox = gtk_hbox_new(FALSE, 0);
  222.     gtk_container_add(GTK_CONTAINER(window), hbox);
  223.  
  224.         vbox = gtk_vbox_new(FALSE, 0);
  225.     gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
  226.  
  227.         imagevbox = gtk_vbox_new(FALSE, 0);
  228.      gtk_box_pack_start(GTK_BOX(vbox), imagevbox, FALSE, FALSE, 0);
  229.         box = gtk_vbox_new(FALSE, 0);
  230.  
  231.     /**图片**/
  232.         image = gtk_image_new_from_file("about.png");
  233.     gtk_box_pack_start(GTK_BOX(imagevbox), image, FALSE, FALSE, 0);
  234.  
  235.     /**分割线**/
  236.         hsep = gtk_hseparator_new();
  237.     gtk_box_pack_start(GTK_BOX(vbox), hsep, TRUE, TRUE, 8);
  238.  
  239.     /**笔记本**/
  240.         notebook = gtk_notebook_new();
  241.     gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
  242.  
  243.     /**框架**/
  244.         frame = gtk_frame_new(NULL);
  245.     gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0);
  246.  
  247.     /**笔记本-信息**/
  248.         page = gtk_vbox_new(FALSE, 0);
  249.     gtk_container_add(GTK_CONTAINER(frame), page);
  250.  
  251.     /**自由布局**/
  252.         fixed = gtk_fixed_new();
  253.     gtk_fixed_set_has_window(GTK_FIXED(fixed), TRUE);
  254.     gtk_container_add(GTK_CONTAINER(page), fixed);
  255.  
  256.         label = gtk_label_new(g_convert("软件名称:火车票预订系统", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  257.     gtk_fixed_put(GTK_FIXED(fixed), label, 10, 2);
  258.  
  259.         label = gtk_label_new(g_convert("版本信息:1.0.0.0", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  260.     gtk_fixed_put(GTK_FIXED(fixed), label, 10, 22);
  261.  
  262.         label = gtk_label_new(g_convert("开发团队:软工-1207-Item9", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  263.     gtk_fixed_put(GTK_FIXED(fixed), label, 10, 42);
  264.  
  265.         label = gtk_label_new(g_convert("发布时间:20130323", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  266.     gtk_fixed_put(GTK_FIXED(fixed), label, 10, 96);
  267.  
  268.         label = gtk_label_new(g_convert("联系方式:471766436", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  269.     gtk_fixed_put(GTK_FIXED(fixed), label, 10, 116);
  270.  
  271.         label = gtk_label_new(g_convert("信息", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  272.     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);
  273.  
  274.      /**笔记本-描述**/
  275.         page = gtk_vbox_new(FALSE, 0);
  276.  
  277.         label = gtk_label_new(NULL);
  278.     gtk_label_set_markup(GTK_LABEL(label), "<span><big>This is a programe!</big></span>");
  279.     gtk_box_pack_start(GTK_BOX(page), label, FALSE, FALSE, 0);
  280.         label = gtk_label_new(g_convert("描述", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  281.     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label);
  282.  
  283.     gtk_widget_show_all(window);
  284.     return 0;
  285. }
  286.  
  287. int book (GtkButton *button, gpointer data)
  288. {
  289.     GtkWidget *window;
  290.     GtkWidget *start_station_label;
  291.     GtkWidget *end_station_label;
  292.     GtkWidget *date_label;
  293.     GtkWidget *check_button;
  294.     GtkWidget *start_station_box;
  295.     GtkWidget *end_station_box;
  296.     GtkWidget *date_box;
  297.     GtkWidget *se_box;
  298.     GtkWidget *dc_box;
  299.     GtkWidget *sedc_box;
  300.     GtkWidget *hwhole_box;
  301.  
  302.     time_t rawtime;
  303.     struct tm *timeInfo;
  304.     char timeInfoArr[30];
  305.     const char *timeInfoPtr = timeInfoArr;
  306.  
  307.     time(&rawtime);
  308.     timeInfo = localtime(&rawtime);
  309.     sprintf(timeInfoArr, "%d-%d-%d", 1900+timeInfo->tm_year, 1+timeInfo->tm_mon, timeInfo->tm_mday);
  310.  
  311.     /*window init*/
  312.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  313.     gtk_window_set_title(GTK_WINDOW(window), g_convert("车票预订", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  314.     gtk_window_set_default_size(GTK_WINDOW(window), BOOK_WINDOW_SIZE, BOOK_WINDOW_SIZE);
  315.     gtk_container_border_width(GTK_CONTAINER(window), 10);
  316.     g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
  317.     /**end window init**/
  318.  
  319.     /*start_station_label init*/
  320.     start_station_label = gtk_label_new(g_convert("*出发站点:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  321.     gtk_label_set_justify (GTK_LABEL (start_station_label), GTK_JUSTIFY_LEFT);
  322.     /**end start_station_label init**/
  323.     /*start_station_entry init*/
  324.     g_book_start_station_entry = gtk_entry_new();
  325.     /**end start_station_entry init**/
  326.     /*start_station_box*/
  327.     start_station_box = gtk_hbox_new(FALSE, 0);
  328.     gtk_box_pack_start(GTK_BOX(start_station_box), start_station_label, FALSE, FALSE, 0);
  329.     gtk_box_pack_start(GTK_BOX(start_station_box), g_book_start_station_entry, FALSE, FALSE, 0);
  330.     /**end start_station_box**/
  331.  
  332.     /*end_station_label init*/
  333.     end_station_label = gtk_label_new(g_convert("*终到站点:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  334.     gtk_label_set_justify (GTK_LABEL (end_station_label), GTK_JUSTIFY_LEFT);
  335.     /**end end_station_label init**/
  336.     /*end_station_entry init*/
  337.     g_book_end_station_entry = gtk_entry_new();
  338.     /**end end_station_entry init**/
  339.     /**end_station_box**/
  340.     end_station_box = gtk_hbox_new(FALSE, 0);
  341.     gtk_box_pack_start(GTK_BOX(end_station_box), end_station_label, FALSE, FALSE, 0);
  342.     gtk_box_pack_start(GTK_BOX(end_station_box), g_book_end_station_entry, FALSE, FALSE, 0);
  343.     /**end end_station_box**/
  344.  
  345.     /*date_label init*/
  346.     date_label = gtk_label_new(g_convert("*出发日期:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  347.     gtk_label_set_justify (GTK_LABEL (date_label), GTK_JUSTIFY_LEFT);
  348.     /**end date_label init**/
  349.     /*date_entry init*/
  350.     g_book_date_entry = gtk_entry_new();
  351.     gtk_entry_set_text(GTK_ENTRY(g_book_date_entry), timeInfoPtr);
  352.     /**end date_entry init**/
  353.     /*date_box*/
  354.     date_box = gtk_hbox_new(FALSE, 0);
  355.     gtk_box_pack_start(GTK_BOX(date_box), date_label, FALSE, FALSE, 0);
  356.     gtk_box_pack_start(GTK_BOX(date_box), g_book_date_entry, FALSE, FALSE, 0);
  357.     /**end date_box**/
  358.  
  359.     /*check_button*/
  360.     check_button = gtk_button_new_with_mnemonic(g_convert("查询(_C)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  361.     g_signal_connect(G_OBJECT(check_button), "clicked", G_CALLBACK(book_check_button_on_click), NULL);
  362.     /**end check_button**/
  363.  
  364.     /*g_book_clist init*/
  365.     g_book_clist = gtk_clist_new(10);
  366.     /*set title*/
  367.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 0, g_convert("车次", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  368.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 1, g_convert("始发站(发车时间)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  369.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 2, g_convert("终点站", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  370.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 3, g_convert("商务座", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  371.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 4, g_convert("特等座", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  372.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 5, g_convert("一等座", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  373.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 6, g_convert("二等座", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  374.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 7, g_convert("软卧", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  375.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 8, g_convert("硬卧", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  376.     gtk_clist_set_column_title(GTK_CLIST(g_book_clist), 9, g_convert("无座", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  377.     /**end set title**/
  378.     gtk_clist_column_titles_show(GTK_CLIST(g_book_clist));
  379.     gtk_signal_connect(GTK_OBJECT(g_book_clist), "select_row", GTK_SIGNAL_FUNC(book_clist_row_on_click), NULL);
  380.     /**end g_book_clist init**/
  381.  
  382.     /*put in box*/
  383.     /*start and end station box*/
  384.     se_box = gtk_hbox_new(FALSE, 0);
  385.     gtk_box_pack_start(GTK_BOX(se_box), start_station_box, FALSE, FALSE, 0);
  386.     gtk_box_pack_end(GTK_BOX(se_box), end_station_box, FALSE, FALSE, 0);
  387.     /**start and end station box**/
  388.  
  389.     /*date box and check_button*/
  390.     dc_box = gtk_hbox_new(FALSE, 0);
  391.     gtk_box_pack_start(GTK_BOX(dc_box), date_box, FALSE, FALSE, 0);
  392.     gtk_box_pack_end(GTK_BOX(dc_box), check_button, FALSE, FALSE, 0);
  393.     /**end date box and check_button**/
  394.  
  395.     /*se dc and clist box*/
  396.     sedc_box = gtk_vbox_new(FALSE, 0);
  397.     gtk_box_pack_start(GTK_BOX(sedc_box), se_box, FALSE, FALSE, 0);
  398.     gtk_box_pack_start(GTK_BOX(sedc_box), dc_box, FALSE, FALSE, 0);
  399.     gtk_box_pack_start(GTK_BOX(sedc_box), g_book_clist, FALSE, FALSE, 0);
  400.     /**end se dc and clist box**/
  401.  
  402.     hwhole_box = gtk_hbox_new(FALSE, 0);
  403.     gtk_box_pack_start(GTK_BOX(hwhole_box), sedc_box, FALSE, FALSE, 0);
  404.     /**end put in box**/
  405.  
  406.     gtk_container_add(GTK_CONTAINER(window), hwhole_box);
  407.  
  408.     gtk_widget_show(g_book_clist);
  409.     gtk_widget_show_all(window);
  410.  
  411.     return FALSE;
  412. }
  413.  
  414. int book_check_button_on_click(GtkWidget *button, gpointer data)
  415. {
  416.     int i;
  417.     const gchar *start_station_string = g_convert(gtk_entry_get_text(GTK_ENTRY(g_book_start_station_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  418.     const gchar *end_station_string = g_convert(gtk_entry_get_text(GTK_ENTRY(g_book_end_station_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  419.  
  420.     struct station_tag *startStation = FindStation(start_station_string, g_myStations, g_slen);
  421.     struct station_tag *endStation = FindStation(end_station_string, g_myStations, g_slen);
  422.  
  423.     struct head_tag *head = FindStationInTrainLine(g_myTrainLines, g_tlen, startStation, endStation);
  424.     struct node_tag *p;
  425.     char text[10][20];
  426.     char *text_ptr[10] = {text[0], text[1], text[2], text[3], text[4], text[5], text[6], text[7], text[8], text[9]};
  427.  
  428.     gtk_clist_clear(GTK_CLIST(g_book_clist));
  429.     if (NULL == head) return 0;
  430.     if (NULL != g_book_check_button_head) FreeList(g_book_check_button_head);
  431.     g_pastemp.ticket.startStation_ptr = startStation;
  432.     g_pastemp.ticket.endStation_ptr = endStation;
  433.     g_book_check_button_head = head;
  434.     p = head->next_ptr;
  435.     for (i=0; i<head->numOfNode; i++)
  436.     {
  437.         if (i>7) break;
  438.         TurnTrainLineIntoString(text, p->trainLine_ptr);
  439.         gtk_clist_append(GTK_CLIST(g_book_clist), text_ptr);
  440.         p = p->next_ptr;
  441.     }
  442.     return 0;
  443. }
  444.  
  445. int book_clist_row_on_click(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data)
  446. {
  447.     int i;
  448.     static int prerow = -1;
  449.     struct node_tag *p;
  450.     GtkWidget *name_label;
  451.     GtkWidget *name_box;
  452.     GtkWidget *id_label;
  453.     GtkWidget *id_box;
  454.     GtkWidget *tel_label;
  455.     GtkWidget *tel_box;
  456.     GtkWidget *seat_label;
  457.     GtkWidget *seat_box;
  458.     GtkWidget *sure_button;
  459.     GtkWidget *sure_box;
  460.     GtkWidget *whole_box;
  461.     GList *list = NULL;
  462.     gchar combo_text[7][20];
  463.  
  464.     /*clicked*/
  465.     if (prerow != row)
  466.     {
  467.         prerow = row;
  468.         return 0;
  469.     }
  470.     else
  471.     {
  472.         prerow = -1;
  473.     }
  474.     /**end clicked**/
  475.  
  476.     if (NULL == g_book_check_button_head) return -1;
  477.     p = g_book_check_button_head->next_ptr;
  478.     for (i=0; i<row; i++)
  479.     {
  480.         p = p->next_ptr;
  481.     }
  482.     //printf ("%s\n", p->trainLine_ptr->lineName);
  483.  
  484.     g_pastemp.ticket.trainLine_ptr = p->trainLine_ptr;
  485.  
  486.     /*name_box init*/
  487.     /*name_label init*/
  488.     name_label = gtk_label_new(g_convert("乘客姓名:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  489.     /**end name_label init**/
  490.     /*g_book_sure_name_entry init*/
  491.     g_book_sure_name_entry = gtk_entry_new();
  492.     /**end g_book_sure_name_entry init**/
  493.     name_box = gtk_hbox_new(FALSE, 0);
  494.     gtk_box_pack_start(GTK_BOX(name_box), name_label, FALSE, FALSE, 0);
  495.     gtk_box_pack_start(GTK_BOX(name_box), g_book_sure_name_entry, FALSE, FALSE, 0);
  496.     /**end name_box init**/
  497.  
  498.     /*id_box init*/
  499.     /*id_label init*/
  500.     id_label = gtk_label_new(g_convert("身份证号:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  501.     /**end id_label init**/
  502.     /*g_book_sure_id_entry init*/
  503.     g_book_sure_id_entry = gtk_entry_new();
  504.     /**end g_book_sure_id_entry init**/
  505.     id_box = gtk_hbox_new(FALSE, 0);
  506.     gtk_box_pack_start(GTK_BOX(id_box), id_label, FALSE, FALSE, 0);
  507.     gtk_box_pack_start(GTK_BOX(id_box), g_book_sure_id_entry, FALSE, FALSE, 0);
  508.     /**end id_box init**/
  509.  
  510.     /*tel_box init*/
  511.     /*tel_label init*/
  512.     tel_label = gtk_label_new(g_convert("电话号码:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  513.     /**end tel_label init**/
  514.     /*g_book_sure_tel_entry init*/
  515.     g_book_sure_tel_entry = gtk_entry_new();
  516.     /**end g_book_sure_tel_entry init**/
  517.     tel_box = gtk_hbox_new(FALSE, 0);
  518.     gtk_box_pack_start(GTK_BOX(tel_box), tel_label, FALSE, FALSE, 0);
  519.     gtk_box_pack_start(GTK_BOX(tel_box), g_book_sure_tel_entry, FALSE, FALSE, 0);
  520.     /**end tel_box init**/
  521.  
  522.     /*seat_box init*/
  523.     /*seat_label*/
  524.     seat_label = gtk_label_new(g_convert("订票种类:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  525.     /**end seat_label**/
  526.     /*g_book_sure_seat_combo init*/
  527.     g_book_sure_seat_combo = gtk_combo_new();
  528.     TurnTicketIntoString(combo_text, p->trainLine_ptr);
  529.     list = g_list_append(list, combo_text[0]);
  530.     list = g_list_append(list, combo_text[1]);
  531.     list = g_list_append(list, combo_text[2]);
  532.     list = g_list_append(list, combo_text[3]);
  533.     list = g_list_append(list, combo_text[4]);
  534.     list = g_list_append(list, combo_text[5]);
  535.     list = g_list_append(list, combo_text[6]);
  536.     gtk_combo_set_popdown_strings(GTK_COMBO(g_book_sure_seat_combo), list);
  537.     /*****************************************/
  538.     /*********** ADD EDITABLE! ***************/
  539.     /*****************************************/
  540.     g_list_free(list);
  541.     /**end g_book_sure_seat_combo init**/
  542.     seat_box = gtk_hbox_new(FALSE, 0);
  543.     gtk_box_pack_start(GTK_BOX(seat_box), seat_label, FALSE, FALSE, 0);
  544.     gtk_box_pack_start(GTK_BOX(seat_box), g_book_sure_seat_combo, FALSE, FALSE, 0);
  545.     /**end seat_box init**/
  546.  
  547.     /*sure_box init*/
  548.     /*sure_button*/
  549.     sure_button = gtk_button_new_with_mnemonic(g_convert("确认(_Y)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  550.     g_signal_connect(G_OBJECT(sure_button), "clicked", G_CALLBACK(book_sure_buttn_clicked), p->trainLine_ptr);
  551.     /**end sure_button**/
  552.     sure_box = gtk_hbox_new(FALSE, 0);
  553.     gtk_box_pack_start(GTK_BOX(sure_box), sure_button, FALSE, FALSE, 80);
  554.     /**end sure_box init**/
  555.  
  556.     /*whole_box init*/
  557.     whole_box = gtk_vbox_new(FALSE, 0);
  558.     gtk_box_pack_start(GTK_BOX(whole_box), name_box, FALSE, FALSE, 0);
  559.     gtk_box_pack_start(GTK_BOX(whole_box), id_box, FALSE, FALSE, 0);
  560.     gtk_box_pack_start(GTK_BOX(whole_box), tel_box, FALSE, FALSE, 0);
  561.     gtk_box_pack_start(GTK_BOX(whole_box), seat_box, FALSE, FALSE, 0);
  562.     gtk_box_pack_start(GTK_BOX(whole_box), sure_box, FALSE, FALSE, 0);
  563.     /**end whole_box init**/
  564.  
  565.     /*g_book_book_window init*/
  566.     g_book_book_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  567.     gtk_window_set_title(GTK_WINDOW(g_book_book_window), g_convert("预订", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  568.     gtk_window_set_default_size(GTK_WINDOW(g_book_book_window), 200, 200);
  569.     g_signal_connect(G_OBJECT(g_book_book_window), "destroy", G_CALLBACK(gtk_widget_destroy), g_book_book_window);
  570.     gtk_container_border_width(GTK_CONTAINER(g_book_book_window), 20);
  571.     gtk_container_add(GTK_CONTAINER(g_book_book_window), whole_box);
  572.     /**end g_book_book_window init**/
  573.  
  574.     gtk_widget_show_all(g_book_book_window);
  575.     return 0;
  576. }
  577.  
  578. int book_sure_buttn_clicked(GtkWidget *button, struct trainline_tag *data)
  579. {
  580.     GtkWidget *sure_button;
  581.     GtkWidget *cancel_button;
  582.     GtkWidget *imfor_label;
  583.     GtkWidget *button_box;
  584.     GtkWidget *whole_box;
  585.     GtkWidget *hwhole_box;
  586.     GtkWidget *frame;
  587.     struct trainline_tag *p = data;
  588.     const gchar *passenger_name = g_convert(gtk_entry_get_text(GTK_ENTRY(g_book_sure_name_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  589.     const gchar *passenger_id = g_convert(gtk_entry_get_text(GTK_ENTRY(g_book_sure_id_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  590.     const gchar *passenger_tel = g_convert(gtk_entry_get_text(GTK_ENTRY(g_book_sure_tel_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  591.     const gchar *passenger_seat = g_convert(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(g_book_sure_seat_combo)->entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  592.     char passenger_imfor_string[100];
  593.  
  594.     gtk_widget_destroy(g_book_book_window);
  595.  
  596.     strcpy(g_pastemp.pasName, passenger_name);
  597.     strcpy(g_pastemp.idNum, passenger_id);
  598.     strcpy(g_pastemp.telNum, passenger_tel);
  599.     g_pastemp.ticket.kindOfSeat = (enum kindOfSeat_tag)TurnSeatIntoKind(passenger_seat);
  600.     g_pastemp.ticket.stationDif = GetStationDif(g_pastemp.ticket.trainLine_ptr, g_pastemp.ticket.startStation_ptr, g_pastemp.ticket.endStation_ptr);
  601.     g_pastemp.ticket.price = CalTicketPrice(g_pastemp.ticket.stationDif, p->kindOfLine, g_pastemp.ticket.kindOfSeat);
  602.  
  603.     /*g_book_sure_window init*/
  604.     g_book_sure_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  605.     gtk_window_set_title(GTK_WINDOW(g_book_sure_window), g_convert("确认预订", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  606.     //gtk_window_set_default_size(GTK_WINDOW(g_book_sure_window), 200, 200);
  607.     g_signal_connect(G_OBJECT(g_book_sure_window), "destroy", G_CALLBACK(gtk_widget_destroy), g_book_sure_window);
  608.     gtk_container_border_width(GTK_CONTAINER(g_book_sure_window), 20);
  609.     /**end g_book_sure_window init**/
  610.  
  611.     /*sure_button init*/
  612.     sure_button = gtk_button_new_from_stock(GTK_STOCK_OK);
  613.     g_signal_connect(G_OBJECT(sure_button), "clicked", G_CALLBACK(book_final_button_clicked), data);
  614.     /**end sure_button init**/
  615.  
  616.     /*cancel_button init*/
  617.     cancel_button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
  618.     g_signal_connect_swapped(G_OBJECT(cancel_button), "clicked", G_CALLBACK(gtk_widget_destroy), g_book_sure_window);
  619.     /**end cancel_button init**/
  620.  
  621.     /*imfor_label init*/
  622.     sprintf(passenger_imfor_string, "乘客姓名:%s\n身份证号:%s\n电话号码:%s\n车票种类:%s\n车票价格:%d", passenger_name, passenger_id, passenger_tel, passenger_seat, (int)g_pastemp.ticket.price);
  623.     imfor_label = gtk_label_new(g_convert(passenger_imfor_string, -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  624.     /**end imfor_label init**/
  625.  
  626.     /*button_box init*/
  627.     button_box = gtk_hbox_new(FALSE, 0);
  628.     gtk_box_pack_start(GTK_BOX(button_box), sure_button, FALSE, FALSE, 0);
  629.     gtk_box_pack_end(GTK_BOX(button_box), cancel_button, FALSE, FALSE, 0);
  630.     /**end button_box init**/
  631.  
  632.     /*frame init*/
  633.     frame = gtk_frame_new(g_convert("乘客信息:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  634.     gtk_container_add(GTK_CONTAINER(frame), imfor_label);
  635.     /**end frame init**/
  636.  
  637.     /*whole_box init*/
  638.     whole_box = gtk_vbox_new(FALSE, 0);
  639.     gtk_box_pack_start(GTK_BOX(whole_box), frame, FALSE, FALSE, 0);
  640.     gtk_box_pack_start(GTK_BOX(whole_box), button_box, FALSE, FALSE, 0);
  641.     /**end whole_box init**/
  642.  
  643.     /*hwhole_box init*/
  644.     hwhole_box = gtk_hbox_new(FALSE, 0);
  645.     gtk_box_pack_start(GTK_BOX(hwhole_box), whole_box, FALSE, FALSE, 0);
  646.     /**end hwhole_box init**/
  647.  
  648.     gtk_container_add(GTK_CONTAINER(g_book_sure_window), hwhole_box);
  649.     gtk_widget_show_all(g_book_sure_window);
  650.     return 0;
  651. }
  652.  
  653. int book_final_button_clicked(GtkWidget *button, struct trainline_tag *data)
  654. {
  655.     GtkWidget *dialog;
  656.     gtk_widget_destroy(g_book_sure_window);
  657.     ModifyPassenger(g_myPassengers, &g_plen, &g_pastemp);
  658.     BookTickets(g_pastemp.ticket.kindOfSeat, data);
  659.     dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, g_convert("预订成功!", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  660.     gtk_dialog_run(GTK_DIALOG(dialog));
  661.     gtk_widget_destroy(dialog);
  662.     return 0;
  663. }
  664.  
  665. int check(GtkWidget *button, gpointer data)
  666. {
  667.     GtkWidget *window;
  668.     GtkWidget *name_label;
  669.     GtkWidget *name_box;
  670.     GtkWidget *id_label;
  671.     GtkWidget *id_box;
  672.     GtkWidget *tel_label;
  673.     GtkWidget *tel_box;
  674.     GtkWidget *check_button;
  675.     GtkWidget *check_box;
  676.     GtkWidget *whole_box;
  677.  
  678.     /*name_box init*/
  679.     /*name_label init*/
  680.     name_label = gtk_label_new(g_convert("乘客姓名:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  681.     /**end name_label init**/
  682.     /*g_check_name_entry init*/
  683.     g_check_name_entry = gtk_entry_new();
  684.     /**end g_check_name_entry init**/
  685.     name_box = gtk_hbox_new(FALSE, 0);
  686.     gtk_box_pack_start(GTK_BOX(name_box), name_label, FALSE, FALSE, 0);
  687.     gtk_box_pack_start(GTK_BOX(name_box), g_check_name_entry, FALSE, FALSE, 0);
  688.     /**end name_box init**/
  689.  
  690.     /*id_box init*/
  691.     /*id_label init*/
  692.     id_label = gtk_label_new(g_convert("身份证号:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  693.     /**end id_label init**/
  694.     /*g_check_id_entry init*/
  695.     g_check_id_entry = gtk_entry_new();
  696.     /**end g_check_id_entry init**/
  697.     id_box = gtk_hbox_new(FALSE, 0);
  698.     gtk_box_pack_start(GTK_BOX(id_box), id_label, FALSE, FALSE, 0);
  699.     gtk_box_pack_start(GTK_BOX(id_box), g_check_id_entry, FALSE, FALSE, 0);
  700.     /**end id_box init**/
  701.  
  702.     /*tel_box init*/
  703.     /*tel_label init*/
  704.     tel_label = gtk_label_new(g_convert("电话号码:", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  705.     /**end tel_label init**/
  706.     /*g_check_tel_entry init*/
  707.     g_check_tel_entry = gtk_entry_new();
  708.     /**end g_check_tel_entry init**/
  709.     tel_box = gtk_hbox_new(FALSE, 0);
  710.     gtk_box_pack_start(GTK_BOX(tel_box), tel_label, FALSE, FALSE, 0);
  711.     gtk_box_pack_start(GTK_BOX(tel_box), g_check_tel_entry, FALSE, FALSE, 0);
  712.     /**end tel_box init**/
  713.  
  714.     /*check_button init*/
  715.     check_button = gtk_button_new_with_mnemonic(g_convert("查询(_C)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  716.     g_signal_connect(G_OBJECT(check_button), "clicked", G_CALLBACK(check_check_button_on_click), NULL);
  717.     /**end check_button init**/
  718.  
  719.     /*check_box init*/
  720.     check_box = gtk_hbox_new(FALSE, 0);
  721.     gtk_box_pack_start(GTK_BOX(check_box), check_button, FALSE, FALSE, 80);
  722.     /**end check_box init**/
  723.  
  724.     /*whole_box init*/
  725.     whole_box = gtk_vbox_new(FALSE, 0);
  726.     gtk_box_pack_start(GTK_BOX(whole_box), name_box, FALSE, FALSE, 0);
  727.     gtk_box_pack_start(GTK_BOX(whole_box), id_box, FALSE, FALSE, 0);
  728.     gtk_box_pack_start(GTK_BOX(whole_box), tel_box, FALSE, FALSE, 0);
  729.     gtk_box_pack_start(GTK_BOX(whole_box), check_box, FALSE, FALSE, 0);
  730.     /**end whole_box init**/
  731.  
  732.     /*window init*/
  733.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  734.     gtk_window_set_title(GTK_WINDOW(window), g_convert("查询订票讯息", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  735.     //gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
  736.     g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_widget_destroy), window);
  737.     gtk_container_border_width(GTK_CONTAINER(window), 20);
  738.     gtk_container_add(GTK_CONTAINER(window), whole_box);
  739.     /**end window init**/
  740.  
  741.     gtk_widget_show_all(window);
  742.     return 0;
  743. }
  744.  
  745. int check_check_button_on_click(GtkWidget *button, gpointer data)
  746. {
  747.     int i;
  748.     GtkWidget *page;
  749.     GtkWidget *page_name_label;
  750.     GtkWidget *info_label;
  751.     GtkWidget *return_button;
  752.     GtkWidget *return_button_box;
  753.     GtkWidget *whole_box;
  754.     GtkWidget *hwhole_box;
  755.     struct passenger_tag *passenger_ptr;
  756.     char info[100];
  757.     const gchar *passenger_name = g_convert(gtk_entry_get_text(GTK_ENTRY(g_check_name_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  758.     const gchar *passenger_id = g_convert(gtk_entry_get_text(GTK_ENTRY(g_check_id_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  759.     const gchar *passenger_tel = g_convert(gtk_entry_get_text(GTK_ENTRY(g_check_tel_entry)), -1, "GB2312", "UTF-8", NULL, NULL, NULL);
  760.  
  761.     strcpy(g_pastemp.pasName, passenger_name);
  762.     strcpy(g_pastemp.idNum, passenger_id);
  763.     strcpy(g_pastemp.telNum, passenger_tel);
  764.  
  765.     passenger_ptr = FindPassenger(g_myPassengers, g_plen, &g_pastemp);
  766.  
  767.     if (NULL == passenger_ptr || 0 == passenger_ptr->numOfTickets)
  768.     {
  769.         g_check_check_window = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, g_convert("您未订票!", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  770.         gtk_dialog_run(GTK_DIALOG(g_check_check_window));
  771.         gtk_widget_destroy(g_check_check_window);
  772.         return 0;
  773.     }
  774.  
  775.     g_passenger_return_ticket = passenger_ptr;
  776.  
  777.     /*g_check_return_notebook init*/
  778.     g_check_return_notebook = gtk_notebook_new();
  779.     /**end g_check_return_notebook init**/
  780.  
  781.     /*pagr init*/
  782.     for (i=0; i<passenger_ptr->numOfTickets; i++)
  783.     {
  784.         sprintf(info, "车次:%s\n%s 到 %s\n乘车人:%s\n身份证号:%s\n票价:%d"
  785.                 , passenger_ptr->tickets[i].trainLine_ptr->lineName
  786.                 , passenger_ptr->tickets[i].startStation_ptr->stationName
  787.                 , passenger_ptr->tickets[i].endStation_ptr->stationName
  788.                 , passenger_ptr->pasName
  789.                 , passenger_ptr->idNum
  790.                 , (int)passenger_ptr->tickets[i].price);
  791.         info_label = gtk_label_new(g_convert(info, -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  792.  
  793.         sprintf(info, "车票%d", i+1);
  794.         page_name_label = gtk_label_new(g_convert(info, -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  795.         page = gtk_vbox_new(FALSE, 0);
  796.         gtk_box_pack_start(GTK_BOX(page), info_label, FALSE, FALSE, 0);
  797.         gtk_notebook_append_page(GTK_NOTEBOOK(g_check_return_notebook), page, page_name_label);
  798.     }
  799.     /**end pagr init**/
  800.  
  801.     /*return_button*/
  802.     return_button = gtk_button_new_with_mnemonic(g_convert("退票(_R)", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  803.     g_signal_connect(G_OBJECT(return_button), "clicked", G_CALLBACK(check_return_button_on_click), (gpointer)gtk_notebook_get_current_page(GTK_NOTEBOOK(g_check_return_notebook)));
  804.     return_button_box = gtk_hbox_new(FALSE, 0);
  805.     gtk_box_pack_start(GTK_BOX(return_button_box),return_button, FALSE, FALSE, 70);
  806.     /**end return_button**/
  807.  
  808.     /*whole_box init*/
  809.     whole_box = gtk_vbox_new(FALSE, 0);
  810.     gtk_box_pack_start(GTK_BOX(whole_box), g_check_return_notebook, FALSE, FALSE, 0);
  811.     gtk_box_pack_start(GTK_BOX(whole_box), return_button_box, FALSE, FALSE, 0);
  812.     gtk_container_border_width(GTK_CONTAINER(whole_box), 20);
  813.     /**end whole_box init**/
  814.  
  815.     hwhole_box = gtk_hbox_new(FALSE, 0);
  816.     gtk_box_pack_start(GTK_BOX(hwhole_box), whole_box, FALSE, FALSE, 0);
  817.  
  818.     /*g_check_check_window init*/
  819.     g_check_check_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  820.     gtk_window_set_title(GTK_WINDOW(g_check_check_window), g_convert("查询结果", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  821.     g_signal_connect(G_OBJECT(g_check_check_window), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
  822.     gtk_window_set_position(GTK_WINDOW(g_check_check_window), GTK_WIN_POS_CENTER);
  823.     //gtk_g_check_check_window_set_default_size(GTK_WINDOW(g_check_check_window), 400, 300);
  824.     gtk_container_add(GTK_CONTAINER(g_check_check_window), hwhole_box);
  825.     gtk_container_border_width(GTK_CONTAINER(g_check_check_window), 5);
  826.     gtk_widget_show_all(g_check_check_window);
  827.     /**end g_check_check_window init**/
  828.  
  829.     return 0;
  830. }
  831.  
  832. int check_return_button_on_click(GtkWidget *button, gpointer data)
  833. {
  834.     GtkWidget *dialog;
  835.     ReturnTicket(g_passenger_return_ticket, gtk_notebook_get_current_page(GTK_NOTEBOOK(g_check_return_notebook)));
  836.     gtk_widget_destroy(g_check_check_window);
  837.     dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, g_convert("退票成功!", -1, "UTF-8", "GB2312", NULL, NULL, NULL));
  838.     gtk_dialog_run(GTK_DIALOG(dialog));
  839.     gtk_widget_destroy(dialog);
  840.     return 0;
  841. }
  842.  

回复 "用c/gtk实现的火车票预订"

这儿你可以回复上面这条便签

captcha