#include <stdio.h> #include <string.h> #include <stdlib.h> #include <dos.h> #include <conio.h> #include <time.h> #define FALSE 0 #define TRUE 1 void mainmenu(void); //主菜单函数 void InputMessage(void);//输入信息函数 void ShowMessage(void);//显示信息函数 void SearchMessage(void);//查询信息函数 void searchbynumber();//根据班次号查询函数 void searchbyaddress();//根据终点站查询的函数 void TicketManagement(void);//选择订票/退票的函数 void TicketOrder();//订票实现函数 void TicketDelete();//退票实现函数 int FLAG;//标志 struct time//时间结构体 { int hour; int minutes; }; struct ticket//车票的结构体 { int carnumber;//车次 struct time setout; char beginpoint[20];//起点站 char endpoint[20];//终点站 float lasttime;//行车时间 int fixnumber;//额定载量 int fixednumber;//已定票的人数 }car[4]; int main() {int FLAG=FALSE; do{mainmenu(); }while(FLAG=FALSE); return 0; } void mainmenu() {char functioNnumber; printf("\n\n\n\n\n\t\t\t\t\t\t车站售票管理系统\n\n"); printf("\t\t\t=============================================================\n"); printf(" \t\t\t\t\t\t1.录入班次信息\t\n"); printf("\t\t\t\t\t\t2.浏览班次信息\t\n"); printf("\t\t\t\t\t\t3.查询行车路线\t\n"); printf("\t\t\t\t\t\t4.售票与退票系统\t\n"); printf("\t\t\t\t\t\t5.退出该系统\t\n"); printf("\t\t\t=============================================================\n"); printf("\t\t\t请选择你所需要的功能:"); scanf("%s",&functioNnumber);switch(functioNnumber) { case '1': {system("cls");InputMessage(); printf("\n按任意键返回主菜单\n"); getchar(); getchar(); mainmenu(); };break; case '2':{ system("cls");ShowMessage(); printf("\n按任意键返回主菜单\n"); getchar(); getchar(); mainmenu(); };break; case '3': { system("cls");SearchMessage(); printf("\n按任意键返回主菜单\n"); getchar(); getchar(); mainmenu(); };break; case '4': {system("cls");TicketManagement(); printf("\n按任意键返回主菜单\n"); getchar(); getchar(); mainmenu(); };break; case '5':FLAG=TRUE; printf("*****************************感谢使用本系统***********************************************"); exit(0); break; default: { printf("对不起你的输入有误,请确保你的输入为1-5.\n"); printf("按任意键返回主菜单\n"); getchar(); getchar(); mainmenu(); }; }; F
时间: 2023-12-08 12:06:01 浏览: 66
#include <stdio.h>
4星 · 用户满意度95%
这段代码存在一些问题:
1. `main` 函数中定义的 `FLAG` 变量和全局变量 `FLAG` 重名,导致 `main` 函数中修改的是局部变量,而不是全局变量。应该将 `main` 函数中的 `FLAG` 变量声明为局部变量。
2. `scanf("%s",&functioNnumber)` 应该改为 `scanf("%c", &functioNnumber)`,因为 `functioNnumber` 是一个字符类型变量。
3. `do{mainmenu(); }while(FLAG=FALSE)` 应该改为 `do{mainmenu(); }while(FLAG==FALSE)` 或者 `do{mainmenu(); }while(!FLAG)`,因为 `=` 是赋值操作符,应该使用 `==` 进行判断。
4. 函数中的注释应该放在函数定义之前。
5. 程序中的头文件 `dos.h` 已经过时,应该使用 `windows.h`。
6. 应该添加缺少的函数的定义,如 `InputMessage`、`ShowMessage`、`SearchMessage` 和 `TicketManagement`。
7. 在 `main` 函数中,应该将 `mainmenu()` 函数的返回值赋给 `FLAG` 变量,即 `FLAG = mainmenu()`。
8. `main` 函数中应该声明 `int main(void)` 或者 `int main(int argc, char *argv[])`。
9. 应该将结构体 `time` 和 `ticket` 的定义放在函数外部,以便其他函数可以访问它们。
10. `case` 语句中应该添加 `break` 语句,以防止程序执行到下一个 `case` 语句。
11. `scanf("%c", &functioNnumber)` 之后应该添加一个 `getchar()`,以消耗输入缓冲区中的换行符。
综上所述,修改后的代码如下:
阅读全文