我试图在switch case中使用函数admin,但它显示错误。我正在使用Visual Studio 2017

时间:2018-04-26 09:44:56

标签: c

如何在交换机内部使管理功能正常工作?

我尝试过这样做,但使用Visual Studio 2017仍然出错

我的计划是创建一个药房管理系统,该系统具有2个访问权限,分别是admin和user。管理员可以添加或更新或删除,用户可以搜索或查看到期日期。

错误C1075'':找不到匹配的令牌

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int admin(int1);
int main()
{
    char username[50];
    int password;
    int choice;
    int mainmenu = 1;
    printf(" \n\n\n\t\t\t\t\tWELCOME TO THE PHARMACY MANAGMENT SYSTEM\t\t\t\t\t");

    while (mainmenu == 1) {
        printf("\n\n\n\nPlease choose from the current choices\n \n1.ADMIN \n\n2. "
               "CUSTOMER\n\n3. EXIT\n\n");
        scanf("%d", &choice);
        do {
            switch (choice) {
            case 1:
                admin(1);
                break;
            case 2:
                break;
            case 3:
                printf(
                    "\n System Closes ...Press Any Key to turn off the system ....");

                mainmenu = 0;
                break;
            }
        }

        while (choice = 1);
        {
            printf("\nplease enter your username\t");
            scanf("%s", username);
            printf("\nplease enter your password\t");
            scanf("%d", &password);
            if ((strcmp(username, "admin") == 0) && (password == 123123)) {
                printf("\n\n\t\t\tYou have logged in succefully....\t\t\n");
                break;
            } else {
                printf("\n\t\tThe username or password is incorrect.\n\t\tPlease "
                       "verify that CAPS LOCK is not on,and then retype the current "
                       "username and password.\n\n \a");
            }
            getch();
            return (0);
        }
    }

2 个答案:

答案 0 :(得分:0)

你的循环存在一些问题,我认为你希望他们做一些不同的事情。

while (mainmenu == 1)

这会循环程序,直到输入“3”。这看起来很好。

 do {
     ...
    }

    while (choice = 1);

我认为你需要查看do-while循环是如何工作的。此循环将永远不会退出,因为您将选项指定为1而不是将其与1进行比较。

while (choice = 1);
    {
     ...
    }

这不是循环。 while(choice = 1)属于前一个do-while循环。因此,您只需要一个代码块(由于前一个循环永不退出,因此永远不会执行)。

这里的代码块似乎也是 admin(int)函数,(你没有包含它,所以我认为这应该是它)。< / p>

您最好的选择是在线查找有关while和do-while循环如何工作的教程,以及有关编写和使用函数的教程。

答案 1 :(得分:0)

您至少有以下问题(重要性降低):

  • 最初的}在progran的最后缺失
  • 您已经声明了函数int admin(int1),但您还没有实现该函数。
  • int admin(int1)应声明为int admin(int)
  • getch的警告是因为您忘记包含conio.h标题。此标头是Microsoft特定的。

还要考虑platinum95的答案。