鱼C论坛

 找回密码
 立即注册
查看: 893|回复: 8

[已解决]注册登录功能没有实现,代码可以运行,不知道那里出错,劳烦各位帮我看看

[复制链接]
发表于 2023-6-19 10:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Jianbaiyi 于 2023-6-19 16:11 编辑

注册登录功能没有实现,代码可以运行,不能把注册的账号储存在文件中,还可以注册重复账号,其他功能该怎么做到,我用的是vs studio
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#define N 100
#define M 1000
typedef struct userinfo
{
        char Accont[N]; //账号
        char Password[N];//密码
        char ID[N]; //身份证号
        char People_name[N];//用户姓名
}USER;
void MainMenu();//登录注册主菜单界面
void Sign_up_Menu();//注册菜单界面
void Log_in_Menu();//登录菜单界面
void BMainMenu();//B端主菜单界面
void CMainMenu();//C端主菜单界面
void Register_system();//用户登记注册菜单函数
void Log_in();//系统用户登录函数
void Sign_in();//新用户注册函数
int sign = 0;
char ACCOUNT[N];
int main()
{
        int n;
        USER user[M];
        Register_system();
        return 0;
}
//登录注册主菜单界面
void MainMenu()
{
        system("cls");
        printf("-----------------------------------\n");
        printf("|                                 |\n");
        printf("|欢迎使用ofo共享单车借车系统      |\n");
        printf("|1:用户登录                      |\n");
        printf("|2:用户注册                      |\n");
        printf("|0:退出系统                      |\n");
        printf("|                                 |\n");
        printf("-----------------------------------\n");
}
//B端主菜单界面
void BMainMenu()
{
        system("cls");
        printf("-----------------------------------\n");
        printf("|                                 |\n");
        printf("| 请选择你需要的服务              |\n");
        printf("| 1:按单车号查询                 |\n");
        printf("| 2:按借车时间查询               |\n");
        printf("| 3:按照还车时间查询             |\n");
        printf("| 4:按使用者查询                 |\n");
        printf("| 0:退出                         |\n");
        printf("|                                 |\n");
        printf("-----------------------------------\n");

}
//C端主菜单界面
void CMainMenu()
{
        system("cls");
        printf("-----------------------------------\n");
        printf("|                                 |\n");
        printf("| 请选择你需要的服务              |\n");
        printf("| 1:租车                         |\n");
        printf("| 2:还车                         |\n");
        printf("| 3:充值                         |\n");
        printf("| 4:余额查询                     |\n");
        printf("| 5:租车查询                     |\n");
        printf("| 0:退出                         |\n");
        printf("|                                 |\n");
        printf("-----------------------------------\n");

}
//注册菜单界面
void Sign_up_Menu()
{
        system("cls");
        printf("-----------------------------------\n");
        printf("|                                 |\n");
        printf("| 请选择你需要的服务              |\n");
        printf("| 1:注册账号                     |\n");
        printf("| 2:返回*用户登录注册界面*       |\n");
        printf("| 0:退出                         |\n");
        printf("|                                 |\n");
        printf("-----------------------------------\n");
}
//登录菜单界面
void Log_in_Menu()
{
        system("cls");
        printf("-----------------------------------\n");
        printf("|                                 |\n");
        printf("| 请选择你需要的服务              |\n");
        printf("| 1:登录账号                     |\n");
        printf("| 2:返回*用户登录注册界面*       |\n");
        printf("| 0:退出                         |\n");
        printf("|                                 |\n");
        printf("-----------------------------------\n");

}

//用户登记注册函数菜单
void Register_system()
{
        int select;
        MainMenu();
        scanf_s("%d", &select);
        switch (select)
        {
        case 0:
                printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
                exit(0);
        case 1:
                Log_in();
                return;
        case 2:
                Sign_in();
                return;
        default:
                printf("\n输入错误,输入任意键返回 *登录注册主菜单界面* ...\n");
                scanf_s("%*c%*c");
                system("cls");
                Register_system();
                return;
        }
}

//新用户注册函数
void Sign_in()
{
        int select;
        char Accont[N], Password1[N], Password2[N], ID[N], People_name[N];
        FILE* fp;
        Sign_up_Menu();
        if (fopen_s(&fp, "userinfo.dat", "r") != 0)
        {
                printf("无法找到该文件\n");
                exit(0);
        }

        fclose(fp);
        scanf_s("%d", &select);
        switch (select)
        {
        case 1:
                while (1)
                {
                        FILE* fp;
                        int i;
                        char Accont1[N], password1[N], ID[N], People_name[N];
                        int sign1 = 0;
                        system("cls");
                        printf("请输入注册账号(九位数数字):\n");
                        scanf_s("%s", Accont, N);
                        if (fopen_s(&fp, "userinfo.dat", "r") != 0)
                        {
                                printf("无法找到该文件\n");
                                exit(0);
                        }
                        for (i = 0; Accont[i] != '\0'; i++) // 检查是否为九位账号
                        {
                                if (isdigit(Accont[i]) == 0)  // 检查账号是否为数字账号
                                {
                                        sign1 = 1; break;
                                }
                        }
                        if (i >= 10 || sign1 == 1 || i < 9)
                        {
                                sign1 = 1;
                                printf("未按要求注册账号,请重新注册! \n");
                                printf("\n输入任意键返回 *新用户注册界面* ...\n");
                                scanf_s("%*c%*c");
                                fflush(stdin);
                                Sign_in();
                                return;
                        }
                        while (!feof(fp))
                        {
                                fscanf_s(fp, "%s  %s   %s  %s", &Accont1, &password1, &ID, &People_name);

                                if (strcmp(Accont, Accont1) == 0)
                                {
                                        fclose(fp);
                                        printf("该账号已被注册,请重新注册!\n");
                                        printf("\n输入任意键返回 *新用户注册界面* ...\n");
                                        scanf_s("%*c%*c");
                                        sign1 = 1;
                                        fflush(stdin);
                                        Sign_in();
                                        return;
                                }
                        }
                        fclose(fp);
                        if (i == 9 && sign1 == 0)
                        {
                                printf("注册账号符合要求。\n");
                                break;
                        }
                }
                if (fopen_s(&fp, "userinfo.dat", "a") != 0)
                {
                        printf("无法找到该文件\n");
                        exit(0);
                }
                printf("请输入你的身份证号:\n");
                scanf_s("%s", ID, N);
                printf("请输入你的姓名:\n");
                scanf_s("%s", People_name, N);
                printf("请输入账号密码:\n");
                scanf_s("%s", Password1, N);
                printf("请再次输入密码:\n");
                scanf_s("%s", Password2, N);
                if (strcmp(Password1, Password2) == 0)
                {
                        fprintf(fp, "\n%s  %s   %s  %s\n", Accont, Password1, ID, People_name);
                        fclose(fp);
                        printf("****新用户创建成功( ̄▽ ̄)**** \n");
                        printf("\n输入任意键返回 *登录注册主菜单界面* ...\n");
                        scanf_s("%*c%*c");
                        system("cls");
                        MainMenu();
                        return;
                }
                else
                {
                        fflush(stdin);
                        printf("\n****两次输入密码不一致!!!! 请重新注册****\n");
                        printf("\n输入任意键返回 *系统用户注册界面* ...\n");
                        scanf_s("%*c%*c");
                        Sign_in();
                        return;
                }
        case 2:
                printf("\n按任意键返回*用户登录注册界面*\n");
                scanf_s("%*c%*c");
                system("cls");
                Register_system();
                return;

        case 0:
                printf("\n成功退出系统!期待你的下次使用O(∩_∩)O,祝你生活愉快!\n");
                exit(0);

        default:
                printf("\n输入错误,无该菜单,输入任意键返回 *系统用户注册界面* ...\n");
                scanf_s("%*c%*c");
                system("cls");
                Sign_in();
                return;
        }

}

//系统用户登录函数
void Log_in()
{
        int select;
        char Accont[N], Password[N];
        char Accont1[N], Password1[N], ID1[N], People_name1[N];
        FILE* fp;
        if (fopen_s(&fp, "userinfo.dat", "a") != 0)
        {
                printf("无法找到该文件\n");
                exit(0);
        }
        fclose(fp);
        Log_in_Menu();
        scanf_s("%d", &select);
        switch (select)
        {
        case 1:
                if (fopen_s(&fp, "userinfo.dat", "r") != 0)
                {
                        printf("无法找到该文件\n");
                        exit(0);
                }
                printf("请输入账号:\n");
                scanf_s("%s", Accont, N);
                printf("请输入密码:\n");
                scanf_s("%s", Password, N);
                while (!feof(fp))
                {
                        fscanf_s(fp, "%s %s", Accont1, Password1);
                        if (strcmp(Accont, "000000") == 0 && strcmp(Password, "000000") == 0)
                        {
                                sign = 1;   //系统管理员标识符
                                fclose(fp);
                                printf("账号登录成功!!尊敬的无敌帅气管理员欢迎你使用\n *欢迎主子使用ofo共享单车借车系统* \n");
                                printf("\n输入任意键前往 *系统管理员功能菜单界面* ...\n");
                                scanf_s("%*c%*c");
                                return;
                        }
                        if (strcmp(Accont, Accont1) == 0 && strcmp(Password, Password1) == 0)
                        {
                                strcpy_s(ACCOUNT, Accont);
                                sign = 2;  //普通用户标识符
                                fclose(fp);
                                printf("账号登录成功!!尊敬的用户欢迎你使用 *欢迎使用ofo共享单车借车系统*\n");
                                printf("\n输入任意键前往 *系统用户功能菜单界面* ...\n");
                                scanf_s("%*c%*c");
                        }
                }
        case 2:
                printf("\n按任意键返回*用户登录注册界面*\n");
                scanf_s("%*c%*c");
                system("cls");
                Register_system();
                return;

        case 0:
                printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
                exit(0);

        default:
                printf("\n输入错误,输入任意键返回 *登录菜单界面* ...\n");
                scanf_s("%*c%*c");
                system("cls");
                Log_in();

        }
        if (sign == 0)
        {
                printf("账号密码错误!! 请重新输入......\n");
                printf("如若忘记账号密码,请联系管理员\n");
                printf("\n输入任意键返回 *系统用户登录界面* ...\n");
                scanf_s("%*c%*c");
                Log_in();
                return;
        }

}
最佳答案
2023-6-19 15:54:33
修改后的代码
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <time.h>
  6. #define N 100
  7. #define M 1000

  8. typedef struct userinfo
  9. {
  10.     char Account[N]; // 账号
  11.     char Password[N]; // 密码
  12.     char ID[N]; // 身份证号
  13.     char People_name[N]; // 用户姓名
  14. } USER;

  15. void MainMenu();
  16. void Sign_up_Menu();
  17. void Log_in_Menu();
  18. void Register_system();
  19. void Log_in();
  20. void Sign_in();
  21. int checkDuplicateAccount(const char* account);

  22. int main()
  23. {
  24.     Register_system();
  25.     return 0;
  26. }

  27. void MainMenu()
  28. {
  29.     system("cls");
  30.     printf("-----------------------------------\n");
  31.     printf("|                                 |\n");
  32.     printf("| 欢迎使用ofo共享单车借车系统     |\n");
  33.     printf("| 1:用户登录                     |\n");
  34.     printf("| 2:用户注册                     |\n");
  35.     printf("| 0:退出系统                     |\n");
  36.     printf("|                                 |\n");
  37.     printf("-----------------------------------\n");
  38. }

  39. void Sign_up_Menu()
  40. {
  41.     system("cls");
  42.     printf("-----------------------------------\n");
  43.     printf("|                                 |\n");
  44.     printf("| 请选择你需要的服务              |\n");
  45.     printf("| 1:注册账号                     |\n");
  46.     printf("| 2:返回用户登录注册界面         |\n");
  47.     printf("| 0:退出                         |\n");
  48.     printf("|                                 |\n");
  49.     printf("-----------------------------------\n");
  50. }

  51. void Register_system()
  52. {
  53.     int select;
  54.     MainMenu();
  55.     scanf("%d", &select);
  56.     switch (select)
  57.     {
  58.         case 0:
  59.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  60.             exit(0);
  61.         case 1:
  62.             Log_in();
  63.             return;
  64.         case 2:
  65.             Sign_in();
  66.             return;
  67.         default:
  68.             printf("\n输入错误,输入任意键返回登录注册主菜单界面...\n");
  69.             fflush(stdin);
  70.             getchar();
  71.             system("cls");
  72.             Register_system();
  73.             return;
  74.     }
  75. }

  76. void Sign_in()
  77. {
  78.     int select;
  79.     char Account[N], Password1[N], Password2[N], ID[N], People_name[N];
  80.     FILE* fp;
  81.     Sign_up_Menu();
  82.     if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  83.     {
  84.         printf("无法找到该文件\n");
  85.         exit(0);
  86.     }
  87.     fclose(fp);
  88.     scanf("%d", &select);
  89.     switch (select)
  90.     {
  91.         case 1:
  92.             while (1)
  93.             {
  94.                 FILE* fp;
  95.                 int i;
  96.                 char Account1[N], password1[N], ID[N], People_name[N];
  97.                 int sign1 = 0;
  98.                 system("cls");
  99.                 printf("请输入注册账号(九位数数字):\n");
  100.                 scanf("%s", Account);
  101.                 if (fopen_s(&fp, "userinfo.dat", "r") != 0)
  102.                 {
  103.                     printf("无法找到该文件\n");
  104.                     exit(0);
  105.                 }
  106.                 for (i = 0; Account[i] != '\0'; i++) // 检查是否为九位账号
  107.                 {
  108.                     if (!isdigit(Account[i]))  // 检查账号是否为数字账号
  109.                     {
  110.                         sign1 = 1;
  111.                         break;
  112.                     }
  113.                 }
  114.                 if (i >= 10 || sign1 == 1 || i < 9)
  115.                 {
  116.                     sign1 = 1;
  117.                     printf("未按要求注册账号,请重新注册! \n");
  118.                     printf("\n输入任意键返回新用户注册界面...\n");
  119.                     fflush(stdin);
  120.                     getchar();
  121.                     Sign_in();
  122.                     return;
  123.                 }
  124.                 while (!feof(fp))
  125.                 {
  126.                     fscanf_s(fp, "%s %s %s %s", Account1, password1, ID, People_name);

  127.                     if (strcmp(Account, Account1) == 0)
  128.                     {
  129.                         fclose(fp);
  130.                         printf("该账号已被注册,请重新注册!\n");
  131.                         printf("\n输入任意键返回新用户注册界面...\n");
  132.                         fflush(stdin);
  133.                         getchar();
  134.                         sign1 = 1;
  135.                         Sign_in();
  136.                         return;
  137.                     }
  138.                 }
  139.                 fclose(fp);
  140.                 if (i == 9 && sign1 == 0)
  141.                 {
  142.                     printf("注册账号符合要求。\n");
  143.                     break;
  144.                 }
  145.             }
  146.             if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  147.             {
  148.                 printf("无法找到该文件\n");
  149.                 exit(0);
  150.             }
  151.             printf("请输入你的身份证号:\n");
  152.             scanf("%s", ID);
  153.             printf("请输入你的姓名:\n");
  154.             scanf("%s", People_name);
  155.             printf("请输入账号密码:\n");
  156.             scanf("%s", Password1);
  157.             printf("请再次输入密码:\n");
  158.             scanf("%s", Password2);
  159.             if (strcmp(Password1, Password2) == 0)
  160.             {
  161.                 fprintf(fp, "%s %s %s %s\n", Account, Password1, ID, People_name);
  162.                 fclose(fp);
  163.                 printf("新用户创建成功( ̄▽ ̄) \n");
  164.                 printf("\n输入任意键返回登录注册主菜单界面...\n");
  165.                 fflush(stdin);
  166.                 getchar();
  167.                 system("cls");
  168.                 MainMenu();
  169.                 return;
  170.             }
  171.             else
  172.             {
  173.                 fflush(stdin);
  174.                 printf("\n两次输入密码不一致!!!! 请重新注册\n");
  175.                 printf("\n输入任意键返回系统用户注册界面...\n");
  176.                 fflush(stdin);
  177.                 getchar();
  178.                 Sign_in();
  179.                 return;
  180.             }
  181.         case 2:
  182.             printf("\n按任意键返回用户登录注册界面\n");
  183.             fflush(stdin);
  184.             getchar();
  185.             system("cls");
  186.             Register_system();
  187.             return;
  188.         case 0:
  189.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  190.             exit(0);
  191.         default:
  192.             printf("\n输入错误,无该菜单,输入任意键返回系统用户注册界面...\n");
  193.             fflush(stdin);
  194.             getchar();
  195.             system("cls");
  196.             Sign_in();
  197.             return;
  198.     }
  199. }

  200. void Log_in()
  201. {
  202.     int select;
  203.     char Account[N], Password[N];
  204.     char Account1[N], Password1[N], ID1[N], People_name1[N];
  205.     FILE* fp;
  206.     if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  207.     {
  208.         printf("无法找到该文件\n");
  209.         exit(0);
  210.     }
  211.     fclose(fp);
  212.     Log_in_Menu();
  213.     scanf("%d", &select);
  214.     switch (select)
  215.     {
  216.         case 1:
  217.             if (fopen_s(&fp, "userinfo.dat", "r") != 0)
  218.             {
  219.                 printf("无法找到该文件\n");
  220.                 exit(0);
  221.             }
  222.             printf("请输入账号:\n");
  223.             scanf("%s", Account);
  224.             printf("请输入密码:\n");
  225.             scanf("%s", Password);
  226.             while (!feof(fp))
  227.             {
  228.                 fscanf_s(fp, "%s %s", Account1, Password1);
  229.                 if (strcmp(Account, "000000") == 0 && strcmp(Password, "000000") == 0)
  230.                 {
  231.                     sign = 1;   // 系统管理员标识符
  232.                     fclose(fp);
  233.                     printf("账号登录成功!尊敬的管理员欢迎你使用\n");
  234.                     printf("\n输入任意键前往系统管理员功能菜单界面...\n");
  235.                     fflush(stdin);
  236.                     getchar();
  237.                     return;
  238.                 }
  239.                 if (strcmp(Account, Account1) == 0 && strcmp(Password, Password1) == 0)
  240.                 {
  241.                     strcpy_s(ACCOUNT, Account);
  242.                     sign = 2;  // 普通用户标识符
  243.                     fclose(fp);
  244.                     printf("账号登录成功!尊敬的用户欢迎你使用\n");
  245.                     printf("\n输入任意键前往系统用户功能菜单界面...\n");
  246.                     fflush(stdin);
  247.                     getchar();
  248.                 }
  249.             }
  250.             break;
  251.         case 2:
  252.             printf("\n按任意键返回用户登录注册界面\n");
  253.             fflush(stdin);
  254.             getchar();
  255.             system("cls");
  256.             Register_system();
  257.             return;
  258.         case 0:
  259.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  260.             exit(0);
  261.         default:
  262.             printf("\n输入错误,输入任意键返回登录菜单界面...\n");
  263.             fflush(stdin);
  264.             getchar();
  265.             system("cls");
  266.             Log_in();
  267.             return;
  268.     }
  269.     if (sign == 0)
  270.     {
  271.         printf("账号密码错误,请重新输入\n");
  272.         printf("如若忘记账号密码,请联系管理员\n");
  273.         printf("\n输入任意键返回系统用户登录界面...\n");
  274.         fflush(stdin);
  275.         getchar();
  276.         Log_in();
  277.         return;
  278.     }
  279. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-6-19 10:57:36 | 显示全部楼层

注册登录功能没有实现,代码可以运行,不能把注册的账号储存在文件中,麻烦了

本帖最后由 Jianbaiyi 于 2023-6-19 11:25 编辑

如果能帮我实现其他功能就更好了,我使用的是vs studio
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-19 15:01:11 | 显示全部楼层

回帖奖励 +5 鱼币

你是不是把帖子的悬赏设置错了,变成别人要看问题还得向你支付鱼币了,这有些大牛都看不到,还要购买主题才能看见
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-19 15:52:19 | 显示全部楼层

回帖奖励 +5 鱼币

1在代码中,你定义了一个USER结构体来表示用户信息,但没有实际的注册逻辑来将新用户的信息存储起来
2在注册功能中,你打开了userinfo.dat文件,但在写入新用户信息之前,没有使用fclose(fp)来关闭文件
3可以注册重复账号:在注册功能中,你并没有检查新注册的账号是否已经存在于文件中。你需要在注册时检查账号是否已经存在,并给出相应的提示或处理。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-19 15:54:33 | 显示全部楼层    本楼为最佳答案   
修改后的代码
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <time.h>
  6. #define N 100
  7. #define M 1000

  8. typedef struct userinfo
  9. {
  10.     char Account[N]; // 账号
  11.     char Password[N]; // 密码
  12.     char ID[N]; // 身份证号
  13.     char People_name[N]; // 用户姓名
  14. } USER;

  15. void MainMenu();
  16. void Sign_up_Menu();
  17. void Log_in_Menu();
  18. void Register_system();
  19. void Log_in();
  20. void Sign_in();
  21. int checkDuplicateAccount(const char* account);

  22. int main()
  23. {
  24.     Register_system();
  25.     return 0;
  26. }

  27. void MainMenu()
  28. {
  29.     system("cls");
  30.     printf("-----------------------------------\n");
  31.     printf("|                                 |\n");
  32.     printf("| 欢迎使用ofo共享单车借车系统     |\n");
  33.     printf("| 1:用户登录                     |\n");
  34.     printf("| 2:用户注册                     |\n");
  35.     printf("| 0:退出系统                     |\n");
  36.     printf("|                                 |\n");
  37.     printf("-----------------------------------\n");
  38. }

  39. void Sign_up_Menu()
  40. {
  41.     system("cls");
  42.     printf("-----------------------------------\n");
  43.     printf("|                                 |\n");
  44.     printf("| 请选择你需要的服务              |\n");
  45.     printf("| 1:注册账号                     |\n");
  46.     printf("| 2:返回用户登录注册界面         |\n");
  47.     printf("| 0:退出                         |\n");
  48.     printf("|                                 |\n");
  49.     printf("-----------------------------------\n");
  50. }

  51. void Register_system()
  52. {
  53.     int select;
  54.     MainMenu();
  55.     scanf("%d", &select);
  56.     switch (select)
  57.     {
  58.         case 0:
  59.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  60.             exit(0);
  61.         case 1:
  62.             Log_in();
  63.             return;
  64.         case 2:
  65.             Sign_in();
  66.             return;
  67.         default:
  68.             printf("\n输入错误,输入任意键返回登录注册主菜单界面...\n");
  69.             fflush(stdin);
  70.             getchar();
  71.             system("cls");
  72.             Register_system();
  73.             return;
  74.     }
  75. }

  76. void Sign_in()
  77. {
  78.     int select;
  79.     char Account[N], Password1[N], Password2[N], ID[N], People_name[N];
  80.     FILE* fp;
  81.     Sign_up_Menu();
  82.     if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  83.     {
  84.         printf("无法找到该文件\n");
  85.         exit(0);
  86.     }
  87.     fclose(fp);
  88.     scanf("%d", &select);
  89.     switch (select)
  90.     {
  91.         case 1:
  92.             while (1)
  93.             {
  94.                 FILE* fp;
  95.                 int i;
  96.                 char Account1[N], password1[N], ID[N], People_name[N];
  97.                 int sign1 = 0;
  98.                 system("cls");
  99.                 printf("请输入注册账号(九位数数字):\n");
  100.                 scanf("%s", Account);
  101.                 if (fopen_s(&fp, "userinfo.dat", "r") != 0)
  102.                 {
  103.                     printf("无法找到该文件\n");
  104.                     exit(0);
  105.                 }
  106.                 for (i = 0; Account[i] != '\0'; i++) // 检查是否为九位账号
  107.                 {
  108.                     if (!isdigit(Account[i]))  // 检查账号是否为数字账号
  109.                     {
  110.                         sign1 = 1;
  111.                         break;
  112.                     }
  113.                 }
  114.                 if (i >= 10 || sign1 == 1 || i < 9)
  115.                 {
  116.                     sign1 = 1;
  117.                     printf("未按要求注册账号,请重新注册! \n");
  118.                     printf("\n输入任意键返回新用户注册界面...\n");
  119.                     fflush(stdin);
  120.                     getchar();
  121.                     Sign_in();
  122.                     return;
  123.                 }
  124.                 while (!feof(fp))
  125.                 {
  126.                     fscanf_s(fp, "%s %s %s %s", Account1, password1, ID, People_name);

  127.                     if (strcmp(Account, Account1) == 0)
  128.                     {
  129.                         fclose(fp);
  130.                         printf("该账号已被注册,请重新注册!\n");
  131.                         printf("\n输入任意键返回新用户注册界面...\n");
  132.                         fflush(stdin);
  133.                         getchar();
  134.                         sign1 = 1;
  135.                         Sign_in();
  136.                         return;
  137.                     }
  138.                 }
  139.                 fclose(fp);
  140.                 if (i == 9 && sign1 == 0)
  141.                 {
  142.                     printf("注册账号符合要求。\n");
  143.                     break;
  144.                 }
  145.             }
  146.             if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  147.             {
  148.                 printf("无法找到该文件\n");
  149.                 exit(0);
  150.             }
  151.             printf("请输入你的身份证号:\n");
  152.             scanf("%s", ID);
  153.             printf("请输入你的姓名:\n");
  154.             scanf("%s", People_name);
  155.             printf("请输入账号密码:\n");
  156.             scanf("%s", Password1);
  157.             printf("请再次输入密码:\n");
  158.             scanf("%s", Password2);
  159.             if (strcmp(Password1, Password2) == 0)
  160.             {
  161.                 fprintf(fp, "%s %s %s %s\n", Account, Password1, ID, People_name);
  162.                 fclose(fp);
  163.                 printf("新用户创建成功( ̄▽ ̄) \n");
  164.                 printf("\n输入任意键返回登录注册主菜单界面...\n");
  165.                 fflush(stdin);
  166.                 getchar();
  167.                 system("cls");
  168.                 MainMenu();
  169.                 return;
  170.             }
  171.             else
  172.             {
  173.                 fflush(stdin);
  174.                 printf("\n两次输入密码不一致!!!! 请重新注册\n");
  175.                 printf("\n输入任意键返回系统用户注册界面...\n");
  176.                 fflush(stdin);
  177.                 getchar();
  178.                 Sign_in();
  179.                 return;
  180.             }
  181.         case 2:
  182.             printf("\n按任意键返回用户登录注册界面\n");
  183.             fflush(stdin);
  184.             getchar();
  185.             system("cls");
  186.             Register_system();
  187.             return;
  188.         case 0:
  189.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  190.             exit(0);
  191.         default:
  192.             printf("\n输入错误,无该菜单,输入任意键返回系统用户注册界面...\n");
  193.             fflush(stdin);
  194.             getchar();
  195.             system("cls");
  196.             Sign_in();
  197.             return;
  198.     }
  199. }

  200. void Log_in()
  201. {
  202.     int select;
  203.     char Account[N], Password[N];
  204.     char Account1[N], Password1[N], ID1[N], People_name1[N];
  205.     FILE* fp;
  206.     if (fopen_s(&fp, "userinfo.dat", "a") != 0)
  207.     {
  208.         printf("无法找到该文件\n");
  209.         exit(0);
  210.     }
  211.     fclose(fp);
  212.     Log_in_Menu();
  213.     scanf("%d", &select);
  214.     switch (select)
  215.     {
  216.         case 1:
  217.             if (fopen_s(&fp, "userinfo.dat", "r") != 0)
  218.             {
  219.                 printf("无法找到该文件\n");
  220.                 exit(0);
  221.             }
  222.             printf("请输入账号:\n");
  223.             scanf("%s", Account);
  224.             printf("请输入密码:\n");
  225.             scanf("%s", Password);
  226.             while (!feof(fp))
  227.             {
  228.                 fscanf_s(fp, "%s %s", Account1, Password1);
  229.                 if (strcmp(Account, "000000") == 0 && strcmp(Password, "000000") == 0)
  230.                 {
  231.                     sign = 1;   // 系统管理员标识符
  232.                     fclose(fp);
  233.                     printf("账号登录成功!尊敬的管理员欢迎你使用\n");
  234.                     printf("\n输入任意键前往系统管理员功能菜单界面...\n");
  235.                     fflush(stdin);
  236.                     getchar();
  237.                     return;
  238.                 }
  239.                 if (strcmp(Account, Account1) == 0 && strcmp(Password, Password1) == 0)
  240.                 {
  241.                     strcpy_s(ACCOUNT, Account);
  242.                     sign = 2;  // 普通用户标识符
  243.                     fclose(fp);
  244.                     printf("账号登录成功!尊敬的用户欢迎你使用\n");
  245.                     printf("\n输入任意键前往系统用户功能菜单界面...\n");
  246.                     fflush(stdin);
  247.                     getchar();
  248.                 }
  249.             }
  250.             break;
  251.         case 2:
  252.             printf("\n按任意键返回用户登录注册界面\n");
  253.             fflush(stdin);
  254.             getchar();
  255.             system("cls");
  256.             Register_system();
  257.             return;
  258.         case 0:
  259.             printf("\n成功退出系统!期待你的下次使用O(∩_∩)O ,祝你生活愉快!\n");
  260.             exit(0);
  261.         default:
  262.             printf("\n输入错误,输入任意键返回登录菜单界面...\n");
  263.             fflush(stdin);
  264.             getchar();
  265.             system("cls");
  266.             Log_in();
  267.             return;
  268.     }
  269.     if (sign == 0)
  270.     {
  271.         printf("账号密码错误,请重新输入\n");
  272.         printf("如若忘记账号密码,请联系管理员\n");
  273.         printf("\n输入任意键返回系统用户登录界面...\n");
  274.         fflush(stdin);
  275.         getchar();
  276.         Log_in();
  277.         return;
  278.     }
  279. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-6-19 16:11:51 | 显示全部楼层
面对巨人 发表于 2023-6-19 15:01
你是不是把帖子的悬赏设置错了,变成别人要看问题还得向你支付鱼币了,这有些大牛都看不到,还要 ...

蛙趣  还真是 我本来是想设置悬赏的  没仔细看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-19 16:50:05 | 显示全部楼层

还是不行 是不是我的编译器问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-19 17:14:39 | 显示全部楼层

回帖奖励 +5 鱼币

C语言??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-19 17:54:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-11 05:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表